You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Mobile composer doesn't show which account a thread uses (web shows the account badge) #15910
I searched existing issues and did not find a duplicate.
I included enough detail to reproduce or investigate the problem.
Area
apps/mobile
Steps to reproduce
Set up two accounts of one provider, for example two Claude instances named "Personal" and "Work".
Open a thread on the Work account on web and on mobile.
Compare the model control in the composer.
Expected behavior
The mobile composer shows the account badge (WO) next to the model, as web does. That's how you can tell which account the next message will use.
Actual behavior
Mobile shows only the bare provider glyph, so the same thread looks identical on Personal and on Work. You only find out which account it uses by opening the model sheet. Same thread, same moment:
Web:
Mobile (iOS 26.5 simulator):
Cause
ThreadComposer.tsx (renderIcon) draws the plain ProviderIcon. Mobile already has the shared ProviderInstanceIcon and the shouldShowInstanceBadge rule, which the thread rows use since #9898 → #9899.
The other mobile places that pick or show a thread's account have the same gap: the new-task draft (NewTaskDraftScreen.tsx), the thread settings sheet (ThreadSettingsSheet.tsx), and subagent rows (SubagentRow.tsx, thread-subagent-group.tsx). On web, each of these has the badge.
Composer:ThreadComposer and NewTaskDraftScreen pass ProviderIcon into the model control, and the label is the model name, so two Claude accounts look identical. Web's ProviderModelPicker uses ProviderInstanceIcon with shouldShowInstanceBadge.
Subagent bar: mobile ProviderSubagentBar only receives { driver, iconUrl }. Web's bar gets the instance entry and showInstanceBadge from ChatView.
Model sheet header:ThreadSettingsSheet is a bare glyph, and providerDisplayLabel in apps/mobile/src/lib/modelOptions.ts returns displayName whenever it's set, so two instances named "Claude" stay indistinguishable. Web's ModelPickerSidebar badges and names the instance with resolveProviderInstanceDisplayName.
A few of the cited spots follow a different treatment on web too:
SubagentRow already prefixes resolveProviderInstanceDisplayName. Web's subagent tooltip adds the account name when shouldShowInstanceBadge is true.
Web's SubagentAvatar (V2LifecycleRow.tsx) is also a bare glyph, like mobile's in thread-subagent-group.tsx.
The web environment provider list only badges when an accent color is set (ProviderInstanceCard, showBadge={Boolean(accentColor)}). Mobile's SettingsEnvironmentDetailRouteScreen never badges.
ProviderInstanceIcon draws the glyph at 60% opacity even when showBadge is false, which is worth keeping in mind when swapping it in.
Likely fix area
Switching the composer, new-task draft, model sheet header, and subagent bar to ProviderInstanceIcon with shouldShowInstanceBadge, and passing the instance entry into mobile ProviderSubagentBar.
Optionally using resolveProviderInstanceDisplayName for the model sheet header to match web.
changed the title [-][Bug]: Mobile composer, model sheet and subagent rows show a bare glyph where web shows the account badge[/-][+][Bug]: Mobile composer doesn't show which account a thread uses (web shows the account badge)[/+]on Oct 5, 2026
PR opened: #15922. The composer and new-task draft draw the account badge using the shared shouldShowInstanceBadge rule and ProviderInstanceIcon. Before and after screenshots of the same thread are in the PR.
Activity
juliusmarminge commentedon Oct 5, 2026
Note
Grok responding on behalf of Julius.
Triage
Thanks for the thorough surface-by-surface table, @vitalyiegorov!
What I found
main(unchanged since a1d9d72), the composer, model sheet, and subagent bar still renderProviderIcon. This is separate from [Bug]: Switching accounts mid-thread shows the handoff as "Claude Opus 5.5 → Claude Opus 5.5" #15476/fix(clients): handoffs between accounts show which account is on each side #15477 and from fix(mobile): account badges no longer clip wide initials like WO #15908.ThreadComposerandNewTaskDraftScreenpassProviderIconinto the model control, and the label is the model name, so two Claude accounts look identical. Web'sProviderModelPickerusesProviderInstanceIconwithshouldShowInstanceBadge.ProviderSubagentBaronly receives{ driver, iconUrl }. Web's bar gets the instance entry andshowInstanceBadgefromChatView.ThreadSettingsSheetis a bare glyph, andproviderDisplayLabelinapps/mobile/src/lib/modelOptions.tsreturnsdisplayNamewhenever it's set, so two instances named "Claude" stay indistinguishable. Web'sModelPickerSidebarbadges and names the instance withresolveProviderInstanceDisplayName.SubagentRowalready prefixesresolveProviderInstanceDisplayName. Web's subagent tooltip adds the account name whenshouldShowInstanceBadgeis true.SubagentAvatar(V2LifecycleRow.tsx) is also a bare glyph, like mobile's inthread-subagent-group.tsx.ProviderInstanceCard,showBadge={Boolean(accentColor)}). Mobile'sSettingsEnvironmentDetailRouteScreennever badges.ProviderInstanceIcondraws the glyph at 60% opacity even whenshowBadgeis false, which is worth keeping in mind when swapping it in.Likely fix area
ProviderInstanceIconwithshouldShowInstanceBadge, and passing the instance entry into mobileProviderSubagentBar.resolveProviderInstanceDisplayNamefor the model sheet header to match web.A maintainer will decide on the fix direction.
[-][Bug]: Mobile composer, model sheet and subagent rows show a bare glyph where web shows the account badge[/-][+][Bug]: Mobile composer doesn't show which account a thread uses (web shows the account badge)[/+]vitalyiegorov commentedon Oct 5, 2026
PR opened: #15922. The composer and new-task draft draw the account badge using the shared
shouldShowInstanceBadgerule andProviderInstanceIcon. Before and after screenshots of the same thread are in the PR.fix(mobile): the model sheet and subagent bar show the account badge too
fix(mobile): the model sheet and subagent bar show the account badge too
fix(mobile): the composer shows which account a thread uses
fix(mobile): the model sheet and subagent bar show the account badge too
fix(mobile): the composer shows which account a thread uses
fix(mobile): the model sheet and subagent bar show the account badge too