cmux NEXT model picker: list every harness, installed or not (Install… row)
Leo-ask: ask-0f0e9e4d6c
Leo, 2026-10-26: "show all harnesses, all models (pi, opencode, prime intellect, etc…)"
What changes
The model picker dropped every model-catalog harness this Mac does not have (composerPickerEntries marks them pickable: false, and uniqueHarnesses skipped them). So Pi, OpenCode, Gemini CLI and Vercel AI Gateway never appeared unless installed.
Now they are flagged notInstalled and listed after the installed harnesses:
- Compact menu: the tab shows the harness's catalog models (greyed out, not pickable), a "Not installed" note and an Install… row that opens the Harnesses page. The tab's tooltip reads "Gemini CLI · Not installed".
- Full picker: the tab shows the note and Install….
- The picker's face (the default harness for a new chat), search, Starred and every pick path skip them, so a pick can never start a chat on a harness that isn't installed.
Design spec: leo-workspace design/model-picker.md (no settled rule is changed; this adds tabs, it removes none).
Follow-up (separate PR, needs a model-catalog data migration): add catalog rows for the other harnesses acpmux runs but the catalog doesn't name yet (Prime Intellect, oh-my-pi, Grok, Cursor, Hermes, DeepSeek), so they also show when not installed. When installed, acpmux already lists them.
Verification
bun test test/model-picker-all-harnesses.test.tsx: red on base (2 of 3 fail), green on head.- Neighbouring picker suites (
test/model-menu-*.test.tsx,test/model-picker-*.test.tsx,QuickModelMenu.test.tsx,modelCatalog.local.test.ts): 94 pass. bun run typecheckandvp lintclean.check:design-tokens/check:type-scaleare red on base in files this PR doesn't touch.
Observed / Not run
Observed: the JSDOM tests above. Not run: a DEV build. No capture: Leo tries the build.
Changelog
- Changed: The model picker lists every harness, including ones not installed yet, with an Install… row.
risk: normal (picker UI, one component area)
Agent session: agent session
🤖 Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
The model picker now lists catalog harnesses even when they aren’t installed, instead of hiding them. Both picker views show their catalog models as unavailable, with a “Not installed” note and an Install… action that opens the Harnesses page.
- Uninstalled harnesses remain excluded from the default selection, search, Starred, and all chat and model pick paths.
- Adds tests for default selection, composer flags, and the compact menu’s disabled models and Install action.