improvement(ui): give the two full-screen takeovers named design-system layers - #6829
Conversation
…stem layer Both the session-expired screen and the desktop minimum-version gate are full-screen takeovers, but they disagreed on every piece of chrome: an ad-hoc z-[9999] against a z-50 that sat below --z-dropdown, --bg against --surface-1, a legacy Button against a Chip, and muted grey on their failure copy. The z-index was a real bug, not just an inconsistency. At z-50 the session-expired takeover rendered underneath the desktop browser panel's replacement snapshot, which paints at calc(var(--z-modal) - 1). Adds --z-takeover to the z-scale as the layer above every popper, points both takeovers at it, and aligns their background, primary action, body-copy and error tokens. Also corrects the z-scale in the design-review skill, which listed --z-toast at 500 when it has long been 150.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
PR SummaryLow Risk Overview Session-expired and desktop update gate now use those tokens, share Reviewed by Cursor Bugbot for commit c809b1d. Configure here. |
Greptile SummaryThe PR aligns the session-expired and desktop-version takeovers on a shared design-system layer.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| apps/sim/app/_shell/desktop-update-gate.tsx | Moves the desktop update gate onto the shell-gate layer and aligns its action and error styling with the shared takeover design. |
| apps/sim/app/workspace/[workspaceId]/components/session-expired/session-expired.tsx | Moves the session-expired screen onto the takeover layer and applies state-specific semantic copy colors. |
| apps/sim/app/_styles/globals.css | Defines explicit z-index tokens for in-app takeovers and the higher-priority desktop shell gate. |
| .agents/skills/emcn-design-review/SKILL.md | Updates the documented z-index scale to match the application tokens. |
Reviews (2): Last reviewed commit: "fix(ui): keep the shell gate above in-ap..." | Re-trigger Greptile
…t click capture Tying both takeovers to one layer let document order decide which wins, and the desktop update gate mounts earlier than the session-expired screen, so the session overlay silently started covering it — reversing the precedence the old z-[9999] vs z-50 pair had. Names the precedence instead: --z-shell-gate sits above --z-takeover, because an incompatible shell invalidates everything the web app renders inside it. Both takeovers also hid their pre-paint state with opacity, which still hit-tests, so a full-viewport surface could swallow clicks before it painted. Switches them to the visibility toggle ModalContent already uses for the same handshake.
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit c809b1d. Configure here.
Summary
z-[9999]against az-50that sat below--z-dropdown,--bgagainst--surface-1, a legacyButtonagainst aChip, and muted grey on their failure copy.z-50the session-expired takeover rendered underneath the desktop browser panel's replacement snapshot, which paints atcalc(var(--z-modal) - 1).--z-takeover: 500for in-app takeovers,--z-shell-gate: 600for the desktop shell gate. The gate mounts earlier in the tree than the session screen, so a single shared layer would have let document order decide which wins — silently reversing the precedence the oldz-[9999]/z-50pair had. An incompatible shell invalidates everything the web app renders inside it, so it outranks.opacity: 0, which still hit-tests, so a full-viewport surface could swallow clicks before it painted. They now use thevisibilitytoggleModalContentalready uses for the same handshake.--z-toastat 500 when it has long been 150.Type of Change
Testing
bun run type-check,bun run lint,bun run check:audits(29/29) and the block-registry check all pass:root, so they resolve in both themes, and that--text-error/--text-secondaryexist in bothz-[9999]andz-50, so this is not a regression — worth a separate cleanupChecklist