Composer model menu: the Account switcher is back (Cmux under a Provider heading)

Merged
TE
6d ago
+78-46

Leo, 2026-10-29: "Why the f*** did you remove the f***ing account switcher?"

What happened

#27151 ("Picker: choose Cmux as a provider, not an agent harness") renamed the composer model menu's Account row to Provider. Its order was "user should pick harness, and change provider to cmux"; nothing asked for the Account row to go. The account choices were still inside, but the row the composer had called Account (CLI login, Work Max, …) no longer said Account, so the switcher read as gone. Leo's later relayed ask (ask-067e9aa217) still wanted "accounts and variants inside" each harness.

Takes back #27151: only its renaming of the composer's Account row to Provider (and the gallery/test selectors that followed it), because Leo asked for the account switcher back; #27151's Cmux-as-provider choice stays, under a Provider heading inside Account.

What changed

  • The composer model menu's account row is Account again (picker.account, already translated in all 21 locales), in the submenu and inline layouts.
  • Cmux routers (cmux-router, local-coderouter) stay in that submenu, now under a Provider heading by default, so "change provider to cmux" still reads as a provider choice. Nothing is removed: the same rows, the same route callback, refusal handling and the model-offer Provider row (providers: "row") are unchanged.
  • Gallery plays and the Playwright layout test look for the Account row again.

Test

webviews/test/model-menu-compact.test.tsx: new test "the composer keeps its Account switcher, with Cmux routers under a Provider heading", and the existing route tests open the Account row again.

  • Red, test commit fb83d868da8 with base's menu: bun test test/model-menu-compact.test.tsx 33 pass, 8 fail (every Account-row test, including the new one: no row starts with "Account").
  • Green, head 0e42761fbb5: 41 pass, 0 fail. src/agent-session/acpmux/QuickModelMenu.test.tsx 29 pass. vp fmt --check and vp lint clean on the changed files.

Risk

Low: a label and default grouping in one web menu. Any selector that looks for /^Provider/ on this row would miss; the repo's gallery plays and tests are updated.

Gallery: agent-pane.model-picker/started-chat-accounts, agent-pane.model-picker/quick-menu-many-profiles, new-tab.quick-model-menu/provider-submenu

Changelog

Fixed: the composer's model menu shows its Account switcher again; Cmux providers sit under a Provider heading inside it.

Agent session: agent session

šŸ¤– 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

Restores the composer model menu's Account switcher, which was unintentionally hidden when #27151 renamed the Account row to Provider.

  • The Account row is back in the submenu and inline layouts, using the already-translated picker.account label.
  • Cmux routers stay inside the Account submenu under a Provider heading, so choosing Cmux still reads as a provider choice.
  • Gallery plays and Playwright layout tests target the Account row again.