webviews: one fix for the feat-cmux-next base reds (format, layers, pane-english, races, model picker side)

Merged
TE
23d ago
+183-45

One combined fix for the feat-cmux-next base reds in web / react-apps-check (coordinator: #20464, #20475, #20470 and #20436 each fixed part, and each failed on the others' reds). Fixed forward under the standing rule for cmux-next base reds.

What it fixes

  1. Formatting (vp fmt). d9ce210e and d77476fd left modelPickerLayout.ts, App.tsx, subagents.gallery.ts, SubagentStatusList.tsx and cardState.ts unformatted (from #20470 and #20475).
  2. check:layers. d77476fd gave .acpmux-summary-card a raw z-index: 3. It now uses var(--layer-sticky): over the transcript, under file search (20). The diff panel and Inspector already hide the card. The summary card's auto-open checkbox also gets an accessible name (lint warning, from #20475).
  3. pane-english. The Cmd-I workspace context string goes through the pane's strings (from #20436).
  4. Test races in new-tab-style-switch and agent-pane-chat-column (from #20436).
  5. new-tab-picker-clip was a real clip. After d9ce210e (the picker's 220 px floor), a menu that opened before its models loaded measured short, so it stayed above the chip. Then it grew past the room, 94 px off the top of the window. The coordinator's call (reversible): keep Lawrence's floor and keep the menu inside the page.
    • The shared anchor (src/ui/anchor.ts) takes a minHeight and chooses the side for it. The picker passes its floor, so it opens below the chip when only that side fits.
    • Only when neither side fits does the menu take the larger room and scroll inside.
    • The test now also asserts the menu keeps its 220 px floor in its window.
  6. model-picker-height asserted d9ce210e's old pinned style.height. It now asserts the bounds: no pinned height; at most the room and 480 px; at least the height it opened at, steady while filtering; re-measured on a new opening; the 220 px floor for an opening before the models arrive.

Verification

  • Red: the base's react-apps-check (every feat PR).
  • Local: model-picker-height, composer-menu-width, pane-english, new-tab-style-switch and theme-colors pass. check-layers, check-type-scale, check-system-blue, check-text-focus-rings and vp fmt --check (all webviews) pass.
  • The Chromium tests (new-tab-picker-clip, agent-pane-chat-column) run in CI.
  • In-app before/after of the New Tab model menu: fleet DEV builds of the base and this head are building. The recording follows in a comment.

Changelog

  • Fixed: The model menu on a New Tab page no longer runs off the top of a short window; it opens below the chip when there is no room above.

🤖 Generated with Claude Code