Repository navigation
feat(dashboard): page transitions, dialog motion and layout fixes - #90
ALikesToCode wants to merge 3 commits into
Conversation
Saving the Limits dialog sent official_only: false for a key with no restriction. Storage keeps that as 0, and a non-null official_only marks the account as controlled, so every save turned on key-control handling for keys the operator never restricted. A clear box now sends null.
Same-origin navigations now cross-fade: the signed-in header holds still and the current-page underline slides to the new link. Dialogs rise in over a fading backdrop, the mobile menu fades in, and buttons press in slightly. Reduced motion cancels the page-transition animations and the press effects. The @view-transition opt-in is inline in base.html. Chromium missed it in shell.css whenever that stylesheet was still being revalidated, and static files are no-cache, so most navigations skipped the transition. The page CSP allows exactly that rule by its sha256 hash; there is still no unsafe-inline. Fixes found in a desktop and phone review: - Dialogs opened in the top-left corner because the base reset zeroes the margin that centres a modal dialog. They are centred again, scroll within the viewport and keep their action row in view. - The child-safety and cascade panels had no form layout; they now use the shared form stack, checkbox field and field classes, and JSON editors are monospace. - The model catalog heading tag overflowed on phones; it now wraps. - Bare disclosure summaries get a 40 px hit area. - Root font smoothing. Changed assets get new ?v= versions and the service worker cache moves to multillm-proxy-v14.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
The new base.html comment used the bare word that Tailwind reads as its transition utility, which added an unused rule to style.css and failed the committed-assets check.
|
Closing without merging; the owner decided not to ship this change. |
Summary
Adds page transitions and motion to the dashboard, and fixes UI issues found in a desktop and mobile review of the preview server.
Motion
prefers-reduced-motion, the page-transition animations are cancelled, and the press scale and menu-button press are disabled.Fixes
official_only = 0for keys left unrestricted. Saving Limits with the box clear sentfalse, which made the row count as controlled (official_only != null). It now sendsnullunless the box is ticked.margin: autocentring for<dialog>. Dialogs are centred again, scroll inside the viewport, and keep their action row visible at the bottom.Why the opt-in is inline
Chromium missed a
@view-transitionopt-in that sat in a stylesheet still being revalidated. Static files areno-cache, and production assets take about 0.7 s each, so in testing the transition was skipped on most navigations. With the rule inline (<style>@view-transition{navigation:auto}</style>), the transition fired on every navigation, even with 800 ms of simulated revalidation latency. The page CSP allows exactly that rule by its sha256 hash (routes/dashboard_security.py). The policy still has nounsafe-inline, and the animations stay inshell.css.Changed assets get new
?v=versions, and the service worker cache moves tomultillm-proxy-v14.Testing
node --test tests/test_dashboard_scripts.mjs tests/test_cascades_dashboard.mjs tests/test_child_safety_dashboard.mjs tests/test_frontend_build.mjs tests/test_operations_dashboard.mjspytest tests/test_control_plane_ui.py tests/test_key_controls.py tests/test_dashboard_sso.pypytest -q: 5,328 passed and 1 failed. The failure was the outbound inventory hash forroutes/dashboard_security.py, whose diff touches no transport. After updating the reviewed hash intests/outbound_inventory.json,tests/test_outbound_inventory.pypasses.npm run test:worker: 2,024 passed (with the project venv'spython3onPATH).nodeandpythonjobs fail at the dependency audits, the same as onmain(certifi, pillow and wrangler's undici). The audits skip the CI test steps, so the local runs above are the test evidence.cloudflare-buildandintegrationpass.scripts/preview_ui.py, at desktop and phone widths:Not deployed. Production deploys are manual with
scripts/deploy.shwhile Workers Builds is disconnected.