Repository navigation
Fix the combined model picker's harness list and sizing - #25796
Conversation
|
Bead |
6aab090 to
dff2ef3
Compare
|
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)
Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on c5dd46c to compare; do not merge until green; see lane-rules Tour of Gallery before/after for
States
Pick other states with a |
|
Found 8 test failures on Blacksmith runners: Failures
|
Lock the opening side and update production regression contracts for content sizing, launch profiles, and the Fast switch. Agent-Session: https://cmux.com/deeplink/agent?id=aid-d48ea6eaf00b604dac18
dff2ef3 to
9ce57d0
Compare
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Shipped in:
|
#25796 and #26071 made the model chip open the combined picker, 480px wide and centred on the chip, so it lies over Steer, the trash can and the more button alike. The model/more open-chip case could no longer press an uncovered control. Replace it with a check that the picker covers every action and a press there stays in the picker; the access-menu cases keep covering the menuPressGuard regression.
…dth (#25796) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd
…ts rows), one tab per harness pinned (#30194) * cmux NEXT model picker: as wide as the rows it shows, effort and keys close to the name; gallery widths and Leo's routes rail Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd * Compact looks drop the rail's fixed 480px; fit sizes to the open tab, stable to every tab Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd * Width test: compare the compact band with the fixed menu's Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd * Default to the stable compact width: a tab switch keeps the menu's width (#25796) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd * A compact menu keeps its widest width while open, so a tab switch never narrows it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd * Hold the compact width with a ResizeObserver on the rail's popup Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd * vp fmt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd * Default to fit: as wide as the open tab's rows, held while open Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd * The held width never passes the pane's available width Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3cf6bed67d0bb92a21bd --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Summary
The compact model menu can gain peer-machine harness rows and a blank block below Fast mode. Keep the bottom chip, list each current-machine harness once in a horizontal strip, size the menu to its visible content and window, and keep its opening side as tabs shrink. Fast mode is now a visible switch.
Leo's requirement (relayed): “harness list current machine only, each harness once; machines stay in machine chip.” Launch configurations such as claude-sr now live under Profile; Account keeps the existing signed-in subscription/API-key route choices. Before a session exists, the account API is unavailable, so New Tab offers profiles without inventing account identities.
Cause and related work
At original reproduction base
80818cb07d6b8cab7dd0622f39c5259d9bf72956; the rebased PR base isc5dd46c48719bb4403ec517e76b32a8c85da62ed, modelCatalog.ts:12,43–45 explicitly promotes probe-only IDs, including peers. direct.ts:5573–5579 merges local harness names with those model probes. The picker now admits only named local harnesses and ignores peer probes.The vertical rail introduced by
c61789058e363stretches the short model list: modelPicker.css:265,308,327–332. The downward Claude browser reproduction leaves 131px after Fast with ten harnesses. Downward New Tab already hasholdHeight=falseon this base; its gap comes from the rail. Chat also reserves hidden tallest-tab rows. Both sizing paths are replaced here with content sizing and a strip at the chip-facing edge. The separate full picker'sd9ce210eheight floor is not involved.I read the full #24194 diff at
724ea2ddd590960b5131bd415e2557a94234b433. This PR supersedes its tallest-tab/spacer sizing approach for the compact picker while retaining its no-jump intent through fixed opening side and chip-facing harness controls. No changes were made to #24194 or Lucas's branch. Requested lucasr1b review.Takeback rationale
Takes back #24224: replace its bare Fast Off/On state text with the owner-requested accessible switch; the underlying Fast mode behavior and coverage remain.
Testing
On GCP
gcp-agent-lane-1, worktree/home/cmux/Projects/checkouts/cmux/lane--nx-model-picker-toggle:Fast modeOff; downward Claude leaves 131px; midpoint tall→short tabs change top→bottom. The repaired discriminators pass.scripts/web-lint.sh --base c5dd46c48719bb4403ec517e76b32a8c85da62ed --new-onlyand the exact-head prepush gate pass. Two formatter findings are unchanged on the base.picker.profiletext has 21 nonempty translations. The broad localization audit is blocked by existing catalog parity debt.9ce57d085312549d6e1386c9e00c4104f7f71116; both initial review blockers repaired and re-reviewed.Observed / Not run
Real Chromium renders and records the shipped component through its existing gallery fixture; five final variants pass with no page errors. This is browser evidence, not a native app capture. Native builds/tests were not run locally.
A combined four-file JSDOM invocation fails the Effort-slider focus assertion. Restoring the exact base QuickModelMenu reproduces that same focus failure; each of the four suites passes in its own process.
Changelog
Fixed: The model picker shows local harnesses once, distinguishes profiles from accounts, and fits its content without jumping across the composer chip.
Proof
Matched
cmux-design-references/apps/claude/live/model-picker-open.png: compact model/effort rows, quiet chip and a proper Fast switch. Before uses base picker source; after uses exact head9ce57d085312549d6e1386c9e00c4104f7f71116. Gallery states include downward Claude, ten-harness stress, combined chat, Fast on, signed out, Profile and Account submenus. The shared gallery fixture supplies deterministic route identities; pre-session production API availability remains as described above.Media upload was attempted through `scripts/pr-media.py`; the broker accepted the plan but did not return a write receipt before the bounded wait. Exact-head screenshots and recordings are retained under `/tmp/nx-picker-evidence` for the owner to attach through the media helper.\n\n
Agent session: agent session