cmux-next: web popups cast the native popup shadow; classic New Tab suggestions are menu rows (coherence pass 2)

Merged
TE
23d ago
+34-6

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 to PopupStyle's 0 2px 8px black at 12%, plus its hairline edge.
    • The deeper two-layer shadow (0 8px 24px at 18% plus 0 1px 3px at 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.
  • Classic New Tab suggestions are menu rows. The classic template'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 from PopupStyle.swift, which holds the two in step;
    • new-tab-field-on-art.test.ts covers 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-float and popup-escape.
  • bun run check is clean except for the base lint warning in NewTabScreen.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


View with [code]smith Autofix with [code]smith
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-shadow returns to PopupStyle's subtle 0 2px 8px black 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.swift so the two stay in step; another compares the classic omnibar's metrics against the shared menu.