Repository navigation
fix(web): unfinished task lists stay in the composer after the turn ends - #14341
TonybynMp4 wants to merge 2 commits into
Conversation
The composer tasks drawer only showed a plan while its own turn was running, so a list with open items vanished when the turn ended and stayed hidden on follow-up turns. Show the latest plan whenever it has an unfinished step, and hide it once every step is completed. Fixes pingdotgg#14327 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
TaskUpdate with status "deleted" was read as pending, so deleted tasks stayed in the list until Claude called TaskList. Remove them instead, and emit the list when it becomes empty so the composer clears it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a narrowly scoped, well-tested bug fix that keeps unfinished task lists visible across turns and correctly clears them when tasks are completed or deleted. It does not alter schemas, defaults, deployment behavior, or sensitive/security-related code. You can add or adjust custom eligibility rules. Learn more. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: pingdotgg/t3code/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 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. 📝 WalkthroughWalkthroughClaude task updates can remove tasks and emit empty plans. The composer now derives progress from unfinished steps in the active plan, including plans retained from earlier turns. ChangesTask plan lifecycle and composer progress
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix · Severity of issue fixed: Medium Suggested reviewers: Merge Risk: ⚪ Minimal · up to The change keeps unfinished task lists visible in the composer and clears deleted or emptied Claude task lists. No blocking risks were found. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change remains scoped to task visibility and clearing within the same conversation. No new access or execution capability was identified. Event ordering and recovery after interrupted updates are not fully established. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Match main (pingdotgg#14341): the composer tasks tab no longer hides once the run settles or a newer run starts. It stays while any step is pending or in progress, and goes away when the agent completes or clears the list. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Match main (pingdotgg#14341): the composer tasks tab no longer hides once the run settles or a newer run starts. It stays while any step is pending or in progress, and goes away when the agent completes or clears the list. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Note This comment is posted by Julius' dot Keeping unfinished task lists visible across settled and later turns changes the drawer's lifetime, including lists left behind after interruption. #14327 explicitly identifies that tradeoff as a product choice, but it has no maintainer scope approval. Please agree on the direction with a maintainer and link the approval under the prior-approval rule for reconsideration. The disappearing-list report remains useful. |
Fixes #14327
The composer tasks drawer only showed a task list while the turn that wrote it was still running. When the turn ended, a list with open items disappeared, and it stayed hidden on later turns until the agent updated it. Claude 5 keeps one task list for the whole session, so between turns there was nowhere to see it.
deriveComposerTasksProgressinsession-logic.ts. Onmain, the plan state only feeds the drawer, so no working label or progress text changes. The server'sThreadPlanProgressindicator is unchanged.TaskUpdatewith statusdeletedwas read aspending, so deleted tasks stayed in the list until Claude calledTaskList. Deleted tasks are now removed. When the list becomes empty (every task deleted, orTaskListreturns nothing), the adapter now sends the empty list, which clears the drawer and the progress indicator.A list the agent leaves unfinished, for example after an interrupted turn, stays in the collapsed tasks tab until the agent completes or clears it. The issue asks for exactly that.
Mobile has no task list UI on
main, so it has nothing to change. Orchestrator v2 has its own copy of the drawer check and will need a follow-up after #14337.Before: see the video in #14327.

After:
Tests:
session-logic.test.ts: covers the drawer rule.ClaudeAdapter.test.ts: covers task deletion and an emptied list.🤖 Generated with Claude Code