Repository navigation
cmux next: the model menu shows harness, model, effort and account at once - #32980
Conversation
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Yours to fix: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: green on the base 4447d97; do not merge until green; see lane-rules Shipped in:
|
|
Found 10 test failures on Blacksmith runners: Failures
|
ultracode carries as extra high; a level picked here carries to the next model. the chip focus waits a task where a page has no frames.
…profile # Conflicts: # webviews/src/agent-session/acpmux/ComposerPickers.tsx
a quiet row packed to its end lines the menu up with the chip's end; the effort column has a fixed width. a reopen keeps the keyboard in the search field.
a second pick of a model still on its way keeps its level; fast turns off on a model just picked; end alignment looks past the chip's own wrapper.
Independent review (HQ #6236 / brief 20) — P2: columns menu drops selected-target auth evidenceScope: read-only source review of this PR at exact head Reproducer / observable contract breakThe preceding compact menu preserved an always-visible selected-target auth note, recovery copy, and Check again action, including during model search ( The replacement For a selected, installed harness whose global health is Unknown (so
Strongest false-ready case: set a selected route to The full picker still uses Small fix / proof requested on this PRRender one selected-chat readiness row under the search field (outside the filtered model list and independently of the browsed harness tab), using the existing Please add mounted rendered regressions for Evidence level: exact-head source inspection and executed transcription of the branch predicates (7 synthetic cases); no mounted UI green/red claim. #31689, #31703, #31736, and #31694 have already closed adjacent pre-send bugs. Please keep this repair in the current owner PR to avoid a parallel picker implementation. |
the search field takes focus only as it mounts; a star's hover leaves its row as it was; tests follow the columns and the carried level.
…mns use it listbox, tablist, their rows and an inline card in src/ui/, so the columns set no popup role by hand (#33701).
the old menu's auth note, sign in again and check again (#31689), for every verdict, on every tab and during a search; review by leo.
Carries #32829's consumer onto the current base: QuickModelMenu describes itself over the native popup protocol wherever the page has a native host, in the placement Settings chose. Since #32980 it draws only as the columns menu's fallback (no rail, or a harness that picks its own model), so that fallback is native too. Conflict with base: kept base's scroll-edge import and dropped the reset of the removed `scrolled` state. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-627034dbf10a04318c5c
QuickModelColumns (#32980: harness rail, models, then the shown model's effort, providers and Fast, with the account avatar in the search row) describes itself over the native popup protocol's columns layout wherever the page has a native host; the browser gallery keeps the web popover. Every pick goes through the web columns' own paths: a click lands at once and keeps the menu open, Return (submit) runs the highlighted row and closes, the keyboard's highlight on a model shows its settings and on a rail tab shows that tab, and a digit on the empty field picks its row. The account card opens beside the menu. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-627034dbf10a04318c5c
…+ draws at 12px (#34494) * base red: Settings' progress fill is not a surface; the model menu's + draws at 12px render.test.tsx's 'no rule declares a background other than transparent or the two interaction tokens' failed on .app-update-progress's value fill (var(--text)), added by #33176: a progress bar's value is not a container, so the test now exempts only the progress-value pseudo-elements. check-icon-scale failed on QuickModelColumns.tsx's PlusIcon at 11px (#32980, which landed an hour after the check, #33595). 12 is on the scale, matches its viewBox and the CheckIcon beside it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-dfc0ecf416bf21757d6b * render.test.tsx: formatter layout Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-dfc0ecf416bf21757d6b --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ard at once model-pick-prompt-focus's 'a compact menu reopened before a pick's focus lands still closes to the model button' (New Tab) timed out since #32980: a pick closes the columns menu, Base UI keeps the closed popup mounted until a frame, and a reopen then (⌘⌃M in the fade) reuses the same search field, so its mount ref never runs again and focus waited on Base UI's frame-late initialFocus. The field now also takes the keyboard in a layout effect as the menu opens. composer-menu-dismiss's settle now reports the open chips, the focus and the popups when it does not settle, instead of a bare timeout, for the columns-menu switch red in the same file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-dfc0ecf416bf21757d6b
…ard at once (#34513) * base red: the model columns menu reopened in its fade takes the keyboard at once model-pick-prompt-focus's 'a compact menu reopened before a pick's focus lands still closes to the model button' (New Tab) timed out since #32980: a pick closes the columns menu, Base UI keeps the closed popup mounted until a frame, and a reopen then (⌘⌃M in the fade) reuses the same search field, so its mount ref never runs again and focus waited on Base UI's frame-late initialFocus. The field now also takes the keyboard in a layout effect as the menu opens. composer-menu-dismiss's settle now reports the open chips, the focus and the popups when it does not settle, instead of a bare timeout, for the columns-menu switch red in the same file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-dfc0ecf416bf21757d6b * composer-menu-dismiss: settle still fails when unsettled, after saying what it saw Review follow-up (router-review SHIP at 70b144e): swallowing the timeout let a stale or input-intercepting popup pass the expect, which reads only aria-expanded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-dfc0ecf416bf21757d6b * ci: re-run the webview verdict (new-tab-live-resize webkit passed then failed in the same job, run 41767390605) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-dfc0ecf416bf21757d6b --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Awareness note from an agent lane that does not own this PR; it is not a review or a request to take the PR over. For awareness: #34749 fixes the composer Folder → Model chip switch regression seen after the columns picker landed here. At 760 px, a single Model press could leave both the Folder and Model popovers open. It preserves the columns design and closes both location-picker implementations within the same composer before Model opens. The existing |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
The model button's menu asked for one thing at a time: a harness on the rail, a model, then effort in a side menu, Fast in a checkbox row and the account in a submenu. This PR replaces that menu, wherever it has a harness rail, with columns: the harness rail, the harness's models, then the shown model's effort and Fast. The account is an avatar in the search row's corner, as a browser's profile button.
QuickModelColumns.tsx,quickModelColumns.css): the rail (Starred always first), the models with their Legacy ones under a caption, and an Effort column (levels highest first, "None" when a model has none, provider rows for a model several providers serve, then Fast). Each column scrolls on its own and fades the edge that has more rows. The menu keeps its largest size while open, so its far edge never jumps.ModelPickerrendersQuickModelColumns; with no rail (a started chat with no fork target) or for the Chief, it falls back toQuickModelMenu, which is unchanged apart from exports and an optionalaccountFamilyonQuickFamily.src/ui/DrivenList.tsx, new):DrivenList(alistboxortablist),DrivenRow(option,tab,radio,switch,button) andInlineCard(a non-modaldialoginside a popup), for lists a search field drives (it keeps the keyboard and names the active row). Base UI 1.8 has no such list, asDrillListnotes, so the columns set no popup role by hand (cmux NEXT webviews: fail hand-set popup roles and raw design values in new code outside ui/ #33701).Localizable.xcstrings, all 21 languages. 4 of them cut from existing translations.Unchanged: the full picker,
RetryModelMenu, and the list menu where there is no rail. The list menu's layout settings (harnessPlacement,effortLook, the effort slider,routeLayout,widthLook) do not apply to the columns.Changelog
Tests
src/agent-session/acpmux/QuickModelColumns.test.tsx(new): Starred always first and its blank avatar; the session's levels with the current one checked; "None"; arrows highlight without landing; a click lands at once and keeps the menu open; model, then level, then Fast each land at once; the carried or recommended level, a level picked here carried to the next model, Ultracode carried as Extra High; Fast flips at once; the account card's rows and Add account; a missing harness's blank avatar; the Escape order; session levels when the running model has no row.model-menu-compact,model-menu-started-chat-fork,new-tab-deferred-pickers,new-tab-ask-model,new-tab-harness-rail,model-menu-providers,model-menu-short-list,model-picker-all-harnesses,model-picker-idle,signed-out-rail,ultracode-rides-effort,auth-health-gallery.picker-row-geometry,model-menu-bounded-height,model-search.browser,model-menu-density.browser,composer-search-row-geometry,model-menu-submenu-up,new-tab-menu-over-suggestions,new-tab-picker-clip,pane-menus-styled,retry-model-menu,reasoning-menu-checkandcomposer-footer-harnesspassed locally withCMUX_BROWSER_TESTS=1before the base stopped Playwright on Macs.composer-chip-press,composer-menu-dismiss,composer-type-scale,menu-pointer-close-focus,model-menu-update-footer,model-pick-prompt-focusandmodel-picker-round-railrun in CI only.src/ui/DrivenList.test.tsx(new): roles and names, Tab only on tabbable rows, a press keeps the field's focus, Return and Space pick.QuickModelColumns.test.tsxalso: a re-render never takes the keyboard back from a control outside the menu (fails with the old inline ref).classic-new-tab-pickers,agent-pane-no-capsules(the avatar, its badge and the Fast track are round on purpose), and the browser testsagent-pane-harness-catalog,agent-pane-model-sticks,reasoning-own-control,model-search.browser.invariant-baseline.jsonlists the "More models" row in the density states (they now open the list menu) and the menu width ofauth-health#expired(now the columns), as its sibling states do. The New Tabcomposer-openplay waits for either menu.model-menu-compact.agent-pane.model-picker,agent-pane.new-tab,agent-pane.composerandagent-pane.auth-healthopen the columns menu;agent-pane.model-menu-densitykeeps the list menu (harnessFixed).Observed / Not run
bun run typecheck,scripts/web-lint.sh,prepush-gate.py, every test file that touches the model menu (each on its own), and the browser tests above. The non-browser tests all pass exceptagent-pane-no-capsules(1 case), which fails the same way on the base. Two read-only reviews: no P0 or P1; the P2s are fixed.signed-out-railonly);QuickModelMenu's own layouts against the columns in the full gallery sweep.cmux-next checksred (a fleet host name inHarnessStatusCard.gallery.tsx) is on the base too.Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
The model button's menu now shows harness, model, effort, and Fast mode side by side in columns, with the account as an avatar in the corner. Previously each was picked one at a time through submenus.
Behavior
Wiring
src/ui/DrivenListlist parts; started chats with no rail and the Chief fall back to the unchanged list menu.Written for commit 99fa239. Summary will update on new commits.