Skip to content

feat(web): show a turn's subagents as one collapsible card - #12839

Merged
juliusmarminge merged 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
maria-rcks:maria/subagent-card-current
Sep 21, 2026
Merged

juliusmarminge merged 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
maria-rcks:maria/subagent-card-current

Conversation

@maria-rcks

@maria-rcks maria-rcks commented Sep 21, 2026 •

Copy link
Copy Markdown
Collaborator

consecutive subagent launches were split by duplicate delegate_task rows in the work log. this groups matched launches into one collapsible card with stacked provider avatars, status, progress/results, and the existing child-thread link and tooltip. failed and unmatched delegation calls remain visible.

the card follows the pr tab's collapsed-comments block and the agents panel: round provider avatars with the panel's status dots, an overlapped stack in the collapsed header with status counts (1 done · 2 failed) and elapsed time, one row per subagent inside a single bordered card with the panel's status words instead of the raw child-task sentence, and a single truncated result line with markdown stripped. static dots only, no repainting animation. grouping, persisted expansion state, and child-thread navigation are unchanged.

verified: web typecheck, scoped lint, and 197 existing timeline tests on blacksmith; real persisted provider data through the dev server/client in dark and light, full width and with the right panel open, expand/collapse, and child-thread navigation. a live working subagent was not exercised. native desktop and mobile are not in scope.

before: interleaved subagent and delegation rows, dark

before: the first grouped card, dark, expanded

after: collapsed card, dark

after: expanded card with one done and one stopped subagent, dark

after: expanded card with one done and two failed subagents, dark

after: expanded card with the right panel open, dark

after: collapsed card, light

after: expanded card, light

expand and collapse the card

Written by gpt-6-astra (Codex) and claude-fable-5-1 (Claude Code) in T3 Code

🤖 Generated with Claude Code

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Sep 21, 2026
Comment thread apps/web/src/components/chat/MessagesTimeline.logic.ts Outdated
Comment thread apps/web/src/components/chat/MessagesTimeline.logic.ts Outdated
Comment thread apps/web/src/components/chat/MessagesTimeline.tsx Outdated
Comment thread apps/web/src/components/chat/V2LifecycleRow.tsx
@macroscopeapp

This comment has been minimized.

@macroscopeapp

macroscopeapp Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the production chat timeline by filtering delegation rows and replacing existing subagent rendering with a live collapsible card containing new status, timing, result, and navigation behavior. The multi-file user-facing change is broader than a bounded additive option and merits human review.

You can add or adjust custom eligibility rules. Learn more.

Comment thread apps/web/src/components/chat/V2LifecycleRow.tsx
@macroscopeapp

macroscopeapp Bot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

UI consistency review posted one inline finding.

Posted via Macroscope — UI Consistency

@maria-rcks

Copy link
Copy Markdown
Collaborator Author

Note

Written by claude-fable-5-1 on behalf of Maria

taking over this pr for a design pass on the card. plan before touching code:

  • avatars: round size-6 tiles (bg-muted, ring-2 ring-background) with the provider glyph centred at size-3.5, plus a status dot in the agents panel's colours (bg-info working, bg-success done, bg-destructive failed, muted for stopped). the collapsed header overlaps up to three of them like the pr timeline's actor stack.
  • collapsed header: same trigger as the pr tab's collapsed comments block (py-2, text-xs font-semibold title, text-[10px] muted status line, 55% opacity until open, chevron rotates). title is 3 subagents, status line is counts in the agents panel's words (2 working · 1 done, 1 failed, 2 stopped), elapsed time right-aligned with the agents panel's AgentElapsed so it ticks by dom writes while live and freezes when settled.
  • expanded rows: one row per subagent inside a single rounded-lg border-border/60 bg-card/30 container, no per-row borders. row = avatar with dot, medium-weight truncated title, one muted line with progress or result (middle-truncated so paths keep their file name), a status word only when the dot alone is ambiguous (working / failed / stopped), per-row elapsed, and a chevron when the child thread can be opened. Child task ended with status interrupted. becomes Stopped. tooltip with the full result stays.
  • rhythm: card sits in a WorkLogBlock so it spaces like neighbouring work rows instead of its own mb-3.
  • live state: static dots and counts only, no repainting animation.
  • grouping, persisted expand state, open-thread action, and the existing tests stay; tests are only updated for the new labels.

@macroscopeapp

This comment has been minimized.

Comment thread apps/web/src/components/chat/V2LifecycleRow.tsx Outdated
maria-rcks and others added 7 commits September 21, 2026 13:22
round provider avatars with the agents panel's status dots, an overlapped
stack in the collapsed header with status counts and elapsed time, one
clean row per subagent inside a single bordered card, and the agents
panel's status words instead of the raw child-task sentence.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
AgentsPanel was removed on v2, so the status visuals and elapsed timer the
card reused now live in V2LifecycleRow and AgentElapsed; the hover card from
pingdotgg#12842 is kept inside the new SubagentAvatar rows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@juliusmarminge
juliusmarminge force-pushed the maria/subagent-card-current branch from 99e49fa to a629461 Compare September 21, 2026 20:26
@juliusmarminge

Copy link
Copy Markdown
Member

Rebased this PR onto t3code/codex-turn-mapping at 4a4c22b29c. The branch previously carried a merge commit, so I cherry-picked only the six content commits (d209db761c..eceefcd605) onto current v2 instead of keeping the merge; the history is now linear and your commits are untouched apart from the rebase.

Conflicts resolved

  • apps/web/src/components/AgentsPanel.tsx was removed on v2 (refactor(web): remove the agents right panel #12835). The STATUS_VISUALS table and subagentStatusVisual helper the card imported from there now live in V2LifecycleRow.tsx, and the Pick<RuntimeSubagent, "status" | "startedAt" | "completedAt"> widening of AgentElapsed is applied to v2's apps/web/src/components/chat/AgentElapsed.tsx, which is the same thing your merge commit had landed on.
  • V2LifecycleRow.tsx: v2 (feat(web): give lineage subagent hovers the thread hover card #12842) replaced the subagent tooltip with ThreadHoverCardPopup and passes an elapsed node into SubagentTooltipContent. That hover-card behavior is kept inside the new SubagentAvatar rows. A duplicated cn import from the auto-merge was dropped.

These are in one extra commit on top (a629461a3e), nothing else was changed.

Verified

  • vp test run src/components/chat/MessagesTimeline.logic.test.ts in apps/web: 131 passed
  • vp test run src/state/subagentDisplay.test.ts in packages/client-runtime: 5 passed
  • vpr typecheck in apps/web: clean

Notes for reviewers

  • Macroscope's comment that the plainDetail regex still strips inline asterisks is stale: eceefcd605 on this branch already restricts the match to a -/* at line start (/^[ \t]*[-*][ \t]+/gm).

Rebased and touched up by a maintainer's agent; a human will re-review.

@macroscopeapp

This comment has been minimized.

1 similar comment
@macroscopeapp

macroscopeapp Bot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

All clear

Posted via Macroscope — UI Consistency

@juliusmarminge
juliusmarminge merged commit 5ccb2a5 into pingdotgg:t3code/codex-turn-mapping Sep 21, 2026
24 checks passed
juliusmarminge added a commit that referenced this pull request Sep 23, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 23, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 23, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 23, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 23, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 23, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 24, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 24, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 24, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Sep 25, 2026
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants