Skip to content

feat(web): show which provider instance is active in the model picker - #33323

Closed
genesiscz wants to merge 2 commits into
pingdotgg:mainfrom
genesiscz:feat/2026-11-09-active-instance-marker
Closed

genesiscz wants to merge 2 commits into
pingdotgg:mainfrom
genesiscz:feat/2026-11-09-active-instance-marker

Conversation

@genesiscz

@genesiscz genesiscz commented Nov 9, 2026 •

Copy link
Copy Markdown

Problem

With several instances of one driver (for example one Claude Code instance per account), the main thread does not show which instance it runs on. The composer model button shows only "Opus 5.5 Medium" and has no tooltip. The picker rail highlights only the instance being browsed, and with favorites it opens on Favorites, so the active instance is out of view.

Change

  • ModelPickerSidebar takes the thread's activeInstanceId. That instance's rail icon gets a small success-colored dot, "· Active" in its tooltip, and aria-current="true". The dot stays while another instance is browsed.
  • ProviderModelPicker adds the instance display name to the trigger's accessible name, and shows a hover card when same-driver instances could be confused (the existing shouldShowInstanceBadge rule). The card reuses ThreadHoverCard, the card of the agents panel: the model as the title, the instance with its icon and badge, then effort and the shortcut. With one instance per driver, the composer button keeps the no-tooltip behavior from fix(web): model picker stays open until dismissed, with a Show more row #28076.
  • Mobile has its own picker and is not changed here; the discussion proposes it as a follow-up.

Scope and approval

Proposed in #33322 (Ideas), which follows up #17506. Draft until a maintainer approves the direction and scope there. Per-instance icons and badge labels are out of scope; they are covered by #15185 and #26236.

Verification

  • ProviderModelPicker.browser.test.tsx: the existing two-instance case now asserts that the active instance keeps aria-current="true" while the other instance is browsed. It fails without the rail change (aria-current missing) and passes with it.
  • vp run check:changed passes (format, lint, knip, typecheck, tests, React compiler).
  • Manual check in a dev server with three placeholder Claude Code instances (work-a, work-b, work-c), work-b active, favorites set:
Before After
Hover on the composer model button
Picker open on Favorites, hovering the active instance

Not checked: the desktop app build (it wraps the same web components) and mobile (unchanged).

With several instances of one driver (one Claude Code instance per account), nothing said which one a thread runs on. The picker rail now marks the active instance with a dot and an "Active" tooltip, even while another instance is browsed. When same-driver instances could be confused, the composer model button names the instance in its tooltip and accessible name.
@github-actions github-actions Bot added vouch:unvouched Author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Nov 9, 2026
The composer model button's hover now uses the same ThreadHoverCard as the
agents panel when same-driver instances could be confused: the model as the
title, the instance with its icon and badge, then effort and the shortcut.
Other pickers keep the plain tooltip.
@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Nov 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

This has been a draft with no activity for more than three days, so it is being closed: the open pull requests are kept to work that is ready to be looked at.

Nothing is lost, the branch stays. When the work is ready, open a new pull request for it; this one will not be reopened.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched Author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants