Repository navigation
fix(clients): running subagent cards stay visible after their parent turn settles - #16878
Conversation
…turn settles Once a turn settled, its fold hid every subagent card before the final answer without checking the child's status, while the waiting footer kept counting the same children. Subagent cards whose turn item is still active now stay out of turn folds on web and mobile, and out of superseded-attempt folds on web. A grouped launch batch stays visible while any member is live. Finished children still fold as before. Fixes #16621 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (5)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe change adds a runtime predicate for active subagent turn items and uses it to keep live subagent activity visible when parent-turn activity is folded in the web and mobile timelines. ChangesSubagent visibility
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix · Severity of issue fixed: Low Suggested reviewers: Merge Risk: ⚪ Minimal · up to Running subagent cards now stay visible after their parent turn settles, while finished children still fold as before. No merge-blocking risk was identified. The mobile client was not checked in a simulator, which is a normal validation gap. 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a narrowly scoped client-side bug fix that keeps active subagent cards visible while their parent turn folds, with completed and failed children retaining existing behavior. The shared status check and targeted web/mobile regression tests keep the runtime impact contained and verifiable. You can add or adjust custom eligibility rules. Learn more. |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
## What's Changed * fix(web): replace Lineage timers with Stop on hover by @Bil0000 in pingdotgg/t3code#16791 * fix(clients): running subagent cards stay visible after their parent turn settles by @juliusmarminge in pingdotgg/t3code#16878 * feat: MCP apps render and run inline in threads by @juliusmarminge in pingdotgg/t3code#16236 * fix(server): a background Claude subagent's work shows while its parent is idle by @Vantrongs in pingdotgg/t3code#16486 * fix(mobile): hide threads from switched-off environments by @entity in pingdotgg/t3code#16886 * fix(server): a refused Claude turn no longer throws away its session by @SunkenInTime in pingdotgg/t3code#16287 * fix(web): onboarding Continue no longer locks on computers that won't connect by @juliusmarminge in pingdotgg/t3code#16887 * fix(server): worktree cleanup no longer deletes files hidden by showUntrackedFiles=no by @SunkenInTime in pingdotgg/t3code#15834 * fix(server): merged-worktree cleanup removes worktrees after squash merges by @tris203 in pingdotgg/t3code#14847 * fix(server): free worktrees for terminal thread statuses by @ANSHSINGH050404 in pingdotgg/t3code#15150 * fix(server): Windows worktrees with long paths no longer fail or strand by @That1Drifter in pingdotgg/t3code#14917 * fix(server): main typechecks again after a test used renamed helpers by @juliusmarminge in pingdotgg/t3code#16895 * fix(server): Claude prompts no longer hang on a uuid the session already holds by @juliusmarminge in pingdotgg/t3code#16897 ## New Contributors * @Vantrongs made their first contribution in pingdotgg/t3code#16486 * @entity made their first contribution in pingdotgg/t3code#16886 * @ANSHSINGH050404 made their first contribution in pingdotgg/t3code#15150 * @That1Drifter made their first contribution in pingdotgg/t3code#14917 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261007.2774...v0.0.46-nightly.20261007.2787 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261007.2787
## What's Changed * fix(web): replace Lineage timers with Stop on hover by @Bil0000 in pingdotgg/t3code#16791 * fix(clients): running subagent cards stay visible after their parent turn settles by @juliusmarminge in pingdotgg/t3code#16878 * feat: MCP apps render and run inline in threads by @juliusmarminge in pingdotgg/t3code#16236 * fix(server): a background Claude subagent's work shows while its parent is idle by @Vantrongs in pingdotgg/t3code#16486 * fix(mobile): hide threads from switched-off environments by @entity in pingdotgg/t3code#16886 * fix(server): a refused Claude turn no longer throws away its session by @SunkenInTime in pingdotgg/t3code#16287 * fix(web): onboarding Continue no longer locks on computers that won't connect by @juliusmarminge in pingdotgg/t3code#16887 * fix(server): worktree cleanup no longer deletes files hidden by showUntrackedFiles=no by @SunkenInTime in pingdotgg/t3code#15834 * fix(server): merged-worktree cleanup removes worktrees after squash merges by @tris203 in pingdotgg/t3code#14847 * fix(server): free worktrees for terminal thread statuses by @ANSHSINGH050404 in pingdotgg/t3code#15150 * fix(server): Windows worktrees with long paths no longer fail or strand by @That1Drifter in pingdotgg/t3code#14917 * fix(server): main typechecks again after a test used renamed helpers by @juliusmarminge in pingdotgg/t3code#16895 * fix(server): Claude prompts no longer hang on a uuid the session already holds by @juliusmarminge in pingdotgg/t3code#16897 ## New Contributors * @Vantrongs made their first contribution in pingdotgg/t3code#16486 * @entity made their first contribution in pingdotgg/t3code#16886 * @ANSHSINGH050404 made their first contribution in pingdotgg/t3code#15150 * @That1Drifter made their first contribution in pingdotgg/t3code#14917 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261007.2774...v0.0.46-nightly.20261007.2787 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261007.2787
Closes #16621.
Problem
A subagent can keep working after the turn that launched it settles. The "Waiting on N subagents" footer counts it, but its card folded away under "Worked for", so the thread showed nothing for the work the footer said it was waiting on. This happened for app-owned children (
delegate_task) and provider-native ones alike.This is a regression. #11474 kept subagent rows out of turn folds. The V2 orchestrator merge (#2829) rewrote the fold logic and that exception didn't come over. The only remaining test covered a finished child, so nothing failed.
Fix
A subagent card stays outside its turn's fold while its own status is active. The check is
isOrchestrationV2WorkActive, the same one the footer uses, so the card and the footer always agree. Finished children still fold as before.isLiveSubagentTurnIteminpackages/client-runtime/src/state/subagentRuntime.ts, used by both clients.MessagesTimeline.logic.ts): live cards stay out of the "Worked for" fold and the "Superseded attempt" fold. A steer supersedes the attempt but doesn't stop its children, so that fold hid live children too. Adjacent cards from the same run and provider turn render as one grouped row, so that group stays visible while any member is live and is never shown half folded.threadActivity.ts): an activity group with a live subagent stays visible.The footer and the server are unchanged.
Before and after
The same live thread on one dev server: a Claude parent launched a background subagent that is still working after the turn settled.
Before (main): the footer says it is waiting on the subagent, but there is no card.
After (this PR): the running card stays visible next to the footer that counts it.
Verification
MessagesTimeline.logic.test.ts: a running app-owned child, a running provider-native child, a mixed group (one done, one running), and a running child of a superseded attempt all stay visible while the turn's other settled work still folds. Completed and failed children still fold. Mobile has the equivalent case inthreadActivity.test.ts. All five new live-child tests fail on main.vp test runon both files: 230 passed.tsc --noEmitfor web, mobile and client-runtime, plusvp lintandvp fmt --checkon the changed files, are clean.Model and harness: Claude Opus 5.5, Claude Code in T3 Code.
🤖 Generated with Claude Code