Repository navigation
fix: thread state and timeline fixes (upstream G4) - #997
Merged
Merged
Conversation
…972) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit bb7997709dd5ed91a3aa18c091286f5f5331b0ef) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 3a7058da50c91906158c89fc3f845e6c04379414) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…059) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit db514607f4026cd2bbb7b96674168bb227ac043a) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…waiting (#15114) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit a5b34b25378fbbf90ce36ee101a11528ccf11c7e) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ion (#14910) Co-authored-by: Theo Browne <me@t3.gg> (cherry picked from commit f68e24fb419c985269cd0acb841e203af1419c43) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 44b49650170a76e6171642d6f8de946cf1d1c821) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…lt (#15194) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit a0bf1eee48d1537ec38e0f1fa5243f10ffd4e870) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
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. |
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports upstream group G4 (thread state and timeline) from T3 Code. The main behavior change: a thread whose agent finished but left a command running, such as a dev server, no longer reads as Waiting. It now shows as completed and unread. Only subagents and monitors still hold a thread at Waiting, because they will wake the agent again. The group also fixes three timeline and layout problems and shows the remote machine in the thread panel.
Sources
bb7997709dthread panel shows the remote machine a thread runs on (#14972)shouldShowEnvironmentIndicator. A lone non-primary environment gets a static label.3a7058da50new worktree threads no longer flicker while starting (#15019)ChatView.logic.tsimportsComposerSubmissionIntentonly, so I kept that import and addedderivePhase. Pylon'sderivePhaseis identical to upstream's.db514607f4sending on an older thread no longer jumps to the top (#15059)a5b34b2537a dev server left running no longer says the thread is waiting (#15114)f68e24fb41a thread that left a shell running shows its unseen completion (#14910)44b4965017reduce the gap above the draft composer (#15196)a0bf1eee48mobile: dev server running no longer shows the waiting bolt (#15194)FloatingWorkingStatuswaiting→backgroundwith awaitingflag. It had no other Pylon consumers.Pylon adaptations (
f68e24fb41)ThreadNotificationCoordinator.tsx: skipped the upstream hunk and kept Pylon's version. Pylon's notifications go throughprojectAwarenessStates/reconcileAwarenessNotificationsinpackages/shared/src/agentAwareness.ts. That code reads the raw shellactivityRunStatus ?? statusand already usesbackgroundWorkHoldsCompletionto treat a command-only roster as completed. Notification behavior and auto-settle are unchanged.Sidebar.logic.ts: minimal edits, kept well apart from G1's working-timer code.resolveThreadStatusPillchange (backgroundWorkHoldsCompletionreplaces the non-empty roster check).isSidebarThreadWorkingalone. It keeps the feat(web): beta Working sidebar section (upstream) #991hasUnseenCompletionearly return and the delegating/monitoring folding.Sidebar.logic.test.ts: adapted the upstreamunseen completion with background worktest. Upstream expects a monitor-waiting thread with an unseen completion in the Working shelf. Pylon's Working section (feat(web): beta Working sidebar section (upstream) #991) keeps every unseen completion in the inbox, so the test expectsisSidebarThreadWorking === falsefor both rosters. The pill, top-status and recede expectations are unchanged.models.tsshellRuntime,threadExecution.tsderiveThreadRuntime) and mobilethreadListV2.ts: adopted as upstream. A command-only roster no longer parks the runtime atidle.Docs
docs/user/status-indicators.md: explains that subagents, monitors and other background tasks keep a thread at Waiting, while commands left running (a dev server) do not. Such a thread shows as completed, unread until you open it.Review follow-up
backgroundStatusSymbolinfloating-working-status.tsand added a test for it.apps/mobilefloating-working-status.test.tspasses (6 tests) andvp run -F @t3tools/mobile typecheckreports no errors.Verification
vp test run apps/web/src/components/ChatView.logic.test.ts apps/web/src/components/chat/MessagesTimeline.logic.test.ts apps/web/src/components/Sidebar.logic.test.ts packages/client-runtime/src/state/threadExecution.test.ts packages/client-runtime/src/state/entities.test.ts packages/shared/src/agentAwareness.test.ts packages/shared/src/orchestrationV2PendingBackgroundWork.test.ts: 7 files, 588 tests passed.apps/mobile:vp test run src/features/threads/threadListV2.test.ts src/lib/threadActivity.test.ts src/features/threads/floating-working-status.test.ts: 3 files, 185 tests passed.vp run -F @t3tools/web typecheck,vp run -F @t3tools/mobile typecheckandvp run -F @t3tools/client-runtime typecheck: each rantsc --noEmitwith no errors. Client-runtime printed only existing Effect suggestions in untouched tests.vp linton the changed files: 7 warnings, the same 7 as onorigin/pylon. None are in changed lines.vp fmt --checkon the changed files passes, with one exception. When checked together with files from other packages,apps/mobile/src/features/threads/threadListV2.tsis flagged. It passes undervp fmt --check apps/mobile, and the unchanged base file is flagged the same way in that combined run.Not verified
44b4965017)3a7058da50)bb7997709d)a0bf1eee48)apps/desktopwas not typechecked because it was not touched.Part of upstream cycle #996.
🤖 Generated with Claude Code