Repository navigation
fix(chat): show account badges on subagent avatars - #25031
juliusmarminge wants to merge 5 commits into
Conversation
With more than one account for a provider, subagent avatars in the chat timeline and workflow rows looked identical. They now render the existing ProviderInstanceIcon account badge under the shared shouldShowInstanceBadge rule, and the web status dot moves top-left when the badge is shown. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y visible Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a localized chat UI bug fix that adds existing provider-account badges to web and mobile subagent avatars while preserving the default avatar path. The remaining changes only handle badge-aware status-dot placement and stacking, with no schema, infrastructure, or product-default changes. You can add or adjust custom eligibility rules. Learn more. |
Thread transfer impact
This comment will update automatically after the next completed run. |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Web lifecycle avatar badges apps/web/src/components/chat/V2LifecycleRow.tsx |
Lifecycle avatars derive provider-instance badge data and pass it to ProviderInstanceIcon. The status dot moves to the upper-left when a badge appears. |
Mobile grouped avatar badges apps/mobile/src/features/threads/thread-subagent-group.tsx, apps/web/src/components/chat/TimelineV2EventRow.tsx |
Mobile grouped avatars use provider-instance data to display eligible badges. Grouped avatars on both surfaces stack earlier avatars above later ones. |
Priority:
Estimated code review effort: 2 (Simple) | ~12 minutes
Change: Bug fix · Severity of issue fixed: Low
Possibly related issues
#24831— Reports the same account-identification gap in the lineage panel; this change addresses sibling subagent-avatar surfaces, not the lineage panel.
Possibly related PRs
- pingdotgg/t3code#24898 — Implements account badges for web and mobile subagent avatars; this PR continues that behavior with provider-instance data and avatar stacking.
- pingdotgg/t3code#24833 — Uses the same provider-instance badge behavior for lineage, workflow, and mobile agent rows.
Suggested labels: bugfix, size:M
Suggested reviewers: maria-rcks, t3dotgg
Merge Risk: 
Minimal · up to aafc7
-
The account-badge changes appear ready to merge after normal checks; no actionable regression was established.
Pre-merge checks: 
4
-
Full details: Title check
-
Explanation
The title "fix(chat): show account badges on subagent avatars" follows conventional commit format and matches the main change. The diff adds provider-instance account badges to web and mobile subagent avatars, and the objectives confirm this is the primary goal. The title is specific and concise, and it names the affected surface (subagent avatars).
Full details: Description check
-
Explanation
The description follows the template's main sections (Problem, Change, Scope and approval, Verification). Problem and Change are clear and specific. Scope links issue
#24896and states it was triaged through the automated issue flow. Verification is extensive, with before/after captures and a coverage matrix. It also discloses incomplete proof: native M1/M2, absent-driver fallback, sole-account runtime provenance, and W3 settling remain unverified. The Verification section is very long and dense, and it relies on external links for much of the evidence. The template asks for a model and harness note, and the description includes one. The scope section also relies on a 'bugfix handoff' and 'dispatcher' process that the template does not define. Still, the required information is present and the description is mostly complete.
Full details: Linked Issues check
-
Explanation
Issue
#24896is active and requires account identification on web subagent headers, expanded rows, workflow members, and mobile grouped avatars. The diff passes provider-instance display data andshouldShowInstanceBadgeinto webSubagentAvatarand usesProviderInstanceIconfor mobile grouped avatars. Web status dots move to the top-left when a badge is shown. Web and mobile grouped avatars change stacking order so badges remain visible. Environment-scoped provider derivation and ACP registry identity handling remain in the implementation. The PR reports passing affected checks and focused tests.
Full details: Out of Scope Changes check
-
Explanation
The changes stay within issue
#24896. They modify web subagent avatar rendering and stacking, mobile grouped-header rendering and stacking, and shared provider-instance eligibility data flow needed for those views. The changes do not modify contracts, server behavior, or adapters. The reported ACP identity and environment-scoping adjustments support the requested account identification behavior.
-
Finishing Touches: 💡 1
-
🛠️ Fix failing CI checks: 💡
-
- Commit to this branch
- Create a new PR
📝 Generate docstrings
-
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Comment @coderabbitai help to get the list of available commands.
Problem
With two accounts for the same provider, chat subagent avatars show identical provider logos and hide the account identity. Reproduced lifecycle rows in the web dev app by launching subagents with the default Claude account and a yellow-accented second Claude account. Synthetic grouped fixtures in the same real app confirm the grouped avatars also omit the established initials badges.
Change
Reuse the existing provider-instance badges and eligibility rules in web subagent avatars and mobile grouped-header avatars. Preserve environment-scoped account availability and ACP agent identity. Move web status dots to the opposite corner when a badge is present, and stack grouped avatars so adjacent circles do not cover the initials.
Scope and approval
Fixes #24896
GitCafe: #24896
Triaged bug via the automated issue flow. This restores existing account identification on chat subagent avatars.
Verification
vp run check:changed: format, lint, knip, affected-package typechecks and nearby tests passed.bugfixhandoff label remain pending for the dispatcher.Visual proof remains incomplete: native M1/M2, absent-driver fallback, sole-account runtime registry provenance, clean W1 full-screen comparisons, and a fully settled W3 fixture require follow-up. The captures include unrelated W1 composer differences; they are disclosed below and are outside this patch.
Proof audit
Independent proof audit: full matrix INSUFFICIENT for the coverage limits below. The independent final-commit rebuild reproduced the complete timeline exactly (zero changed pixels); its full-frame difference is confined to the composer. Rebuild metrics.
Evidence
Actual app with synthetic projection fixtures, not recreated component markup. Before: 01fe8d9188. After: exact aafc777fe6. Baseline is not merge base e3592efe7f; affected renderer blobs are identical between baseline and merge base (hashes in handoff).
Environment: isolated local Linux dev checkout, Vite web5821/backend13861, environment191ee865-3fdb-4c33-a67b-e389302d0c46. CSS1440x900 -> PNG1280x800 (8/9 scale); CSS390x900 -> PNG780x1800 (2x); desktop recordings2880x1800 (2x). Every still pair uses same raster dimensions. Fonts loaded, reduced motion, no toast; twins500ms apart. SHA256 and DOM text metadata in manifest.
Coverage and limitations
Complete evidence index, captures, recordings, and stability comparisons
Reproduction assets
Before/after still comparisons
Zero diff: every RGB channel difference>0, amplified8x. Threshold diff: max RGB channel difference>16/255, magenta mask. No ignored pixels or region exclusion. All originals and diffs visually inspected via full-frame and difference-region sheets; clips inspected via sampled frames.
01fe8d9188
aafc777fe6
Visible changes: W1 adds CL/VY account badges to stack and expanded members; status dots move opposite badges, +1 remains foreground-safe; composer differences disclosed above. W2Yellow adds yellow VY badge and moves green status dot to upper-left. W2Plain no visible changes. W3 adds provider-account badge to each workflow member and moves green/red status dots to upper-left. W4 no visible changes.
Disclosure recordings
Implemented with Claude Opus 5.5 through the Claude Code harness; triage and proof review with GPT-6.1-Sol through the Codex harness.