Skip to content

cmux NEXT model picker: list every harness, installed or not (Install… row) - #31498

Merged
teamleaderleo merged 10 commits into
feat-cmux-nextfrom
lane/picker-all-harnesses
Nov 2, 2026
Merged

teamleaderleo merged 10 commits into
feat-cmux-nextfrom
lane/picker-all-harnesses

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

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 typecheck and vp lint clean. check:design-tokens / check:type-scale are 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 Autofix with [code]smith
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.

Written for commit e7e7cb1. Summary will update on new commits.

View guided diff Turn on auto-fix

Leo 2026-10-26: "show all harnesses, all models (pi, opencode, prime intellect, etc…)".

The picker dropped every catalog harness this machine does not have
(pickable false), so Pi, OpenCode, Gemini CLI and Vercel AI Gateway never
showed unless installed. They now list after the installed harnesses: the
compact menu shows the tab's catalog models (not pickable) with a
"Not installed" note and an Install… row that opens the Harnesses page;
the full picker shows the note and Install…. The picker's face, search,
Starred and every pick path skip them.

Test: webviews/test/model-picker-all-harnesses.test.tsx (red on base: 2 of 3
fail; green on head). Neighbouring picker suites: 94 pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-c22e30882ee62fabd987
@cursor

cursor Bot commented Nov 2, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 1ec5688: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr31498 -f ref=lane/picker-all-harnesses -f platform=macos -f backend_mode=local

Gallery before/after for e7e7cb1: 16 states rendered, 0 images differ, 1327 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41503184156 -R manaflow-ai/cmux -n gallery-advisory-31498-e7e7cb1590932879568b759c48be56cb02ce9065 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.composer-pickers/closed Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/closed Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/pill-rail Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/pill-rail Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/model-menu Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/model-menu Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/model-more Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/model-more Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/model-focus Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/model-focus Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/model-press-drag-release Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/model-press-drag-release Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/effort-menu Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/effort-menu Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/effort-focus Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-pickers/effort-focus Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/claude-auto Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/claude-auto Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/grid-running Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/grid-running Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/grid-draft Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/grid-draft Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/grid-draft-lines Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/grid-draft-lines Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/long-model Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/long-model Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/leo-report Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/leo-report Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/granted Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/granted Apple System Colors unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/fast-off Apple System Colors Light unchanged 0% own QuickModelMenu.tsx
agent-pane.composer-row/fast-off Apple System Colors unchanged 0% own QuickModelMenu.tsx

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

Unclear: web / react-apps-base-check (7) failed: no known signature; failed step: Run base reds and compare.

CI failed on 6a58b849f4 (run 41483726384 attempt 1): 2 unknown.

Job Verdict Why
web / react-apps-base-check (7) unknown no known signature; failed step: Run base reds and compare
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Not re-run automatically: web / react-apps-base-check (7), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

web and size checks: green

Shipped in:

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 1ec5688

No path lets a not-installed harness be picked, start a chat, switch the harness or become the picker face; every gate uses needsSetup; hook deps complete. 12 picker test files green.

Follow-ups:

  • [follow-up] QuickModelMenu: show the "Not installed" note on a tab with rows even without setUp (no onAddAgent host).
  • [follow-up] ModelPicker rail: skip onHarnessHint (chat.harness.hint) for notInstalled tabs.
  • [follow-up] familyTabs brand grouping could fold a not-installed route into an installed harness's tab of the same brand.
  • [follow-up] With nothing installed and no chat harness, current falls back to a not-installed entry for the chip mark.

@blacksmith-sh

This comment has been minimized.

teamleaderleo added a commit that referenced this pull request Nov 2, 2026
…installed (#31499)

Leo 2026-10-26: "show all harnesses, all models (pi, opencode, prime intellect, etc…)".

The catalog named six harnesses; acpmux also runs Prime Intellect's
prime-agent, oh-my-pi, Grok, Cursor, Hermes Agent and DeepSeek (dsh)
(config/discover.rs). Each gets a probe-source catalog row with its acpmux
family, so the model picker (#31498) and the Harnesses page list it before
it is installed; once installed its acpmux profile joins the row by family.

overrides.ts, the 20261007120000 seed (new databases) and the bundled
snapshot plus acpmux's identical copy gain the six rows (the snapshot rows
equal projectCatalog's output for them). 20261102000000 adds them to an
already-seeded database with ON CONFLICT DO NOTHING, as
20261013040000_model_catalog_gemini_fable did for Gemini.

Test: bun test tests/model-catalog.test.ts, 29 pass (3 fail before the
seed/test updates: the harness list, the snapshot list, seed == overrides).


Agent-Session: https://cmux.com/deeplink/agent?id=aid-c22e30882ee62fabd987

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Nov 2, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 01:48 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 01:48 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 4c81f27

The independent SHIP at 1ec5688 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 03:51 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 03:57 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 67fc16a

The independent SHIP at 1ec5688 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base 99367ba to this head): SHIP at 67fc16a

[P2] [follow-up] webviews/src/agent-session/acpmux/composerPickerEntries.ts:27 - An uninstalled catalog entry with pickable: false is never marked notInstalled, so uniqueHarnesses still filters it out and the picker omits it. Derive notInstalled from !entry.installed independently of pickable.
[P2] [follow-up] webviews/src/agent-session/acpmux/ModelPicker.tsx:1622 - The full picker replaces a missing harness’s catalog model rows with only “Not installed” and “Install…”; users cannot see those models there, unlike the compact menu. Render the catalog models as disabled rows alongside the install action.

@cursor

cursor Bot commented Nov 2, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 05:57 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 05:58 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at fcbfd6a

The independent SHIP at 67fc16a carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 07:59 Inactive
@cursor

cursor Bot commented Nov 2, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 08:00 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 6fb8bb2

The independent SHIP at 67fc16a carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base 35647a2 to this head): SHIP at 6fb8bb2

[P2] [follow-up] webviews/src/agent-session/acpmux/ModelPicker.tsx:1622 - selecting a not-installed harness in the full picker hides all of its catalog models, despite the new behavior promising to list them as disabled - render choicesFor(selected) as disabled rows and keep the Install action alongside them.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 10:16 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 10:18 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 5957d92

The independent SHIP at 6fb8bb2 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 12:27 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 3e799ad

The independent SHIP at 6fb8bb2 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@cursor

cursor Bot commented Nov 2, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 14:32 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 14:33 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at e2ec3bd

The independent SHIP at 6fb8bb2 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 16:40 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 16:40 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 6a58b84

The independent SHIP at 6fb8bb2 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 18:42 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 18:43 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at e7e7cb1

The independent SHIP at 6fb8bb2 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (2c9af087592ccfb2) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@blacksmith-sh

blacksmith-sh Bot commented Nov 2, 2026

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
test_every_compile_job_names_its_warm_sources (main.ThisTree.test_every_compile_job
_names_its_warm_sources)/
test_every_compile_job_names_its_warm_sources (main.ThisTree.test_every_compile_job
_names_its_warm_sources)
View Logs
the short nightly decide gate must use the pooled Linux route with a Blacksmith fallbac
k/
the short nightly decide gate must use the pooled Linux route with a Blacksmith fallbac
k
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

This branch was previously deployed

1 inactive deployment
ci-routing-agent — e7e7cb15 Deployed Nov 2, 2026 by cmux-bot[bot] via wait for same-key tree publisher #102295
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant