Skip to content

[Bug]: Mobile composer doesn't show which account a thread uses (web shows the account badge) #15910

Description

@vitalyiegorov

Before submitting

  • 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

  1. Set up two accounts of one provider, for example two Claude instances named "Personal" and "Work".
  2. Open a thread on the Work account on web and on mobile.
  3. 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:

Web composer: WO badge on the Claude glyph next to Claude Opus 5.5

Mobile (iOS 26.5 simulator):

Mobile composer: bare Claude glyph next to Claude Opus 5.5, no account badge

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.

Impact

Minor bug or occasional failure

Version or commit

main at a1d9d72

Environment

iOS 26.5 simulator (iPhone 17) and web, against one Linux host with two Claude accounts.

Workaround

Open the model sheet and read the instance name.

Related

Activity

  1. juliusmarminge commented on Oct 5, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Triage

    Thanks for the thorough surface-by-surface table, @vitalyiegorov!

    What I found

    • On current main (unchanged since a1d9d72), the composer, model sheet, and subagent bar still render ProviderIcon. 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.
    • 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.
    • Whether the subagent avatar and environment list should match web's narrower rules or badge everywhere is a separate choice. fix(mobile): account badges no longer clip wide initials like WO #15908's layout fix would carry over automatically once these use the shared component.

    A maintainer will decide on the fix direction.

  2. added
    bugSomething is broken or behaving incorrectly.
    via-triageFiled through npx t3 triage
    on Oct 5, 2026
  3. 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
  4. vitalyiegorov commented on Oct 5, 2026

    @vitalyiegorov
    ContributorAuthor

    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.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions