cmux NEXT model picker: Fast mode and the effort column on every tab, Codex included
Merged
TE
6d ago+138+138+012345678901234567890123456789-9-9-0123456789
Leo (2026-10-31): "WHY THE F*** IS THERE NO FING FAST MODE FOR FIGN CODEX"
The model menu's Codex tab (in a chat or New Tab running Claude) listed GPT-6.1 Sol, GPT-6 Astra and the rest with no Fast mode row and no visible effort column, while the Claude tab had both. The Fast row was drawn only on the chat's own tab, and other rows hid their effort item until hovered.
What changes
- A tab other than the chat's own draws the same Fast mode row when its models honor Fast (the catalog's
fast; Codex's Sol and Astra do). Nothing runs there yet, so the row holds the choice for that tab. It is off each time the menu opens, so defaults are unchanged. A model picked from that tab lands with Fast through the existing combo path (onCombo({ fast }), the same one a typed "gpt fast" search uses), which maps it onto codex-acp'sfast-modeoption once the new session reports it. - The chat's own tab keeps the session's option, so its toggle reflects the session's current state as before.
- Rows of such a tab show their effort item at rest, naming the catalog's recommended level (
defaultEffort), like the running row on the chat's tab names its level. The chat's own non-running rows still reveal it on hover.
Spec
design/model-picker.md (leo-workspace): fast mode and effort for every family. The picker checklist update lands in its own leo-workspace PR.
Tests
QuickModelMenu.test.tsx: another tab whose models honor Fast draws the Fast row and the effort column, and its pick lands withfast: true.cmux-ci test: QuickModelMenu, started-chat fork and layout suites, 75 pass.tscshows only base'stest/latency/probe.tserror.
Risk: low. The change is webview only, off by default, and limited to tabs that start a new chat.
Agent session: agent session
š¤ Generated with Claude Code