webviews: one fix for the feat-cmux-next base reds (format, layers, pane-english, races, model picker side)
Merged
TE
23d ago+183+183+012345678901234567890123456789-45-45-01234567890123456789
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
- Formatting (
vp fmt). d9ce210e and d77476fd leftmodelPickerLayout.ts,App.tsx,subagents.gallery.ts,SubagentStatusList.tsxandcardState.tsunformatted (from #20470 and #20475). check:layers. d77476fd gave.acpmux-summary-carda rawz-index: 3. It now usesvar(--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).pane-english. The Cmd-I workspace context string goes through the pane's strings (from #20436).- Test races in
new-tab-style-switchandagent-pane-chat-column(from #20436). new-tab-picker-clipwas 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 aminHeightand 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.
- The shared anchor (
model-picker-heightasserted d9ce210e's old pinnedstyle.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-switchandtheme-colorspass.check-layers,check-type-scale,check-system-blue,check-text-focus-ringsandvp 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