cmux-next: one popup elevation, and the New Tab field sits solid on art (coherence pass)
Merged
TE
24d ago+176+176+012345678901234567890123456789-33-33-01234567890123456789
First batch of Leo's 10-13 coherence pass: the New Tab field, plus one shared popup elevation in the agent pane.
What changes
- One popup elevation. Every menu and popover in the agent pane now draws
--acpmux-popup-elevation: the composer's hairline over the shared--ui-popup-shadow, using--ui-popup-radiusand no border of its own.- Before this, several surfaces drew their own. The New Tab suggestions had a deeper, darker shadow (
0 16px 40px). The effort menu had radius 10 and a 1px border. The model picker and context popovers had a 1px border. Model submenus had radius 12 and their own shadow. - Tailwind's
--shadow-menunow reads the same token. - A Base UI popup with no surface class of its own gets the token too, and so does a menu portaled straight to the body (
ui/ContextMenu.tsx). Neither has the composer edge, so they take the shared hairline instead. Before, that menu's shadow was invalid there and it drew flat.
- Before this, several surfaces drew their own. The New Tab suggestions had a deeper, darker shadow (
- The New Tab box sits solid on art. Its fill mixed the text color into the page background, which is transparent on a wallpaper theme, so the box was a thin film over the art. It is now the composer tint over the theme's solid surface (
--cmux-surface-solid). Plain themes don't change, because their page background is already opaque. - Suggestion rows are menu rows. They use the shared row height (28 instead of 32), row corners and list inset.
- Focus steps toward the theme accent. In both the New Tab box and the chat composer, the focused edge is a 1px step toward the theme accent. Under the default neutral accent that is the text color.
Coordination: op-next-steering (suggestions behavior) and op-next-appstore (#20148, New Tab composer) own behavior. This PR changes visual properties only and leaves their lines alone. Lawrence's omnibar files (cx-d0d.80) are untouched.
Verification
- Red then green:
popup-surface.test.ts("every menu and popover in the agent pane casts the one popup elevation") and the newnew-tab-field-on-art.test.ts. Both are browser-lane tests that run in react-apps-check. The red is the first commit's CI run on this PR. bun run checkandtest/ui-rules.test.tspass locally. WithCMUX_BROWSER_TESTS=1, these pass locally too:popup-surface,new-tab-field-on-art,composer-menu-width,selected-row-accent,new-tab-picker-clipandpopup-surface-dev.- A review subagent caught one defect: on the first fix commit the elevation test still failed for a bare popup and the model picker. The last fix commit addresses it.
- Not in this batch: the legacy
.acpmux-omnidropdown keeps its 16px radius and 40px rows. - Before/after: the gallery render for this PR.
Changelog
- Changed: Menus and popovers in agent chats share one shadow and corner, and the New Tab search field stays solid over a wallpaper.
🤖 Generated with Claude Code