cmux NEXT model picker: Fast mode and the effort column on every tab, Codex included

Merged
TE
6d ago
+138-9

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's fast-mode option 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 with fast: true.
  • cmux-ci test: QuickModelMenu, started-chat fork and layout suites, 75 pass. tsc shows only base's test/latency/probe.ts error.

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