cmux-next: web popups cast the native popup shadow; classic New Tab suggestions are menu rows (coherence pass 2)
Merged
TE
23d ago+34+34+01234567890123456789-6-6-0123456789
Second batch of Leo's 10-13 coherence pass (cx-iif6y): one popup depth across the web and the native app, and the classic New Tab template's suggestions match the rest.
What changes
- Web popups cast the native popup shadow.
--ui-popup-shadow(webviews/src/ui/popupSurface.css) returns toPopupStyle's0 2px 8pxblack at 12%, plus its hairline edge.- The deeper two-layer shadow (
0 8px 24pxat 18% plus0 1px 3pxat 14%) came with the translucent glass popups (#19008). Popups have been solid since 10-12, and POLISH asks for subtle shadows and one shared elevation. - So a menu now has the same depth in a page, in an agent chat and over the native chrome.
- The deeper two-layer shadow (
- Classic New Tab suggestions are menu rows. The
classictemplate's omnibar dropdown (.acpmux-omni) takes the shared popup radius (8 instead of 16) and inset. Its rows take the shared row height (28 instead of 40), corners and control type, the same as the default template's suggestions since #20188.
Verification
- Red then green:
popup-surface.test.ts"the web popup shadow is the native popup shadow" reads the numbers fromPopupStyle.swift, which holds the two in step;new-tab-field-on-art.test.tscovers the classic rows and corners.
- Locally with
CMUX_BROWSER_TESTS=1, all of these pass:popup-surface,popup-surface-dev,new-tab-field-on-art,selected-row-accent,composer-menu-width,new-tab-picker-clip,suggestion-lists-floatandpopup-escape. bun run checkis clean except for the base lint warning inNewTabScreen.tsx:476(cx-d0d.80), which #20207/#20208 fix. The type-scale baseline drops by one.- Before/after: the gallery render for this PR.
Changelog
- Changed: Menus and popovers cast a lighter shadow that matches the app's native menus.
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Coherence pass batch 2: web popups cast the native popup shadow, and classic New Tab suggestions render as shared menu rows.
--ui-popup-shadowreturns toPopupStyle's subtle0 2px 8pxblack at 12% plus a hairline edge, replacing the deeper two-layer shadow that came with the glass popups (#19008). The omnibar dropdown and its rows now use the shared popup radius, inset, row height, corners, and control font, matching the default template's suggestions.- Adds regression tests: one reads the shadow numbers from
PopupStyle.swiftso the two stay in step; another compares the classic omnibar's metrics against the shared menu.