Repository navigation
fix(server): Claude 5 task lists reach the tasks drawer - #14964
Merged
Yash-Singh1 merged 5 commits intoOct 10, 2026
Merged
Conversation
Contributor
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a bounded Claude adapter fix that maps opt-in Claude task-tool results into the existing tasks drawer without changing default environment behavior or stored schemas. The production change is isolated and extensively covered by adapter and replay tests. Notes:
You can add or adjust custom eligibility rules. Learn more. |
Mnigos
force-pushed
the
claude-task-tools-reach-tasks-drawer
branch
from
October 3, 2026 05:47
1c15d1a to
aedddc4
Compare
sandscooling
pushed a commit
to sandscooling/t3code
that referenced
this pull request
Oct 3, 2026
…s drawer) Carried until it lands upstream: Claude's TaskCreate, TaskUpdate and TaskList calls become the same todo_list plan TodoWrite produces, so the tasks drawer and the hover progress meter show them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
sandscooling
pushed a commit
to sandscooling/t3code
that referenced
this pull request
Oct 3, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Yash-Singh1
requested changes
Oct 10, 2026
The reviewer asked that T3 Code not override the default, so CLAUDE_CODE_ENABLE_TODO_TOOLS is only set when the user configures it.
Yash-Singh1
approved these changes
Oct 10, 2026
sandscooling
pushed a commit
to sandscooling/t3code
that referenced
this pull request
Oct 10, 2026
…ream landed it Upstream pingdotgg#14964 landed without the CLAUDE_CODE_ENABLE_TODO_TOOLS=1 default the fork carried from an earlier revision, so the default and its duplicated executable-path tests go. The variable still reaches Claude from the user's settings or the instance environment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
github-actions Bot
added a commit
to omarcresp/t3code-flake
that referenced
this pull request
Oct 11, 2026
## What's Changed * fix(pi): preserve tool images and structured results by @StiensWout in pingdotgg/t3code#17851 * fix(server): Claude 5 task lists reach the tasks drawer by @Mnigos in pingdotgg/t3code#14964 * fix(web): find bar and thread details panel stop covering each other by @MatthewFeroz in pingdotgg/t3code#17858 * fix(web): use server metadata for file chip icons by @Yash-Singh1 in pingdotgg/t3code#17923 * fix(desktop): copy images from HTML previews by @Bil0000 in pingdotgg/t3code#17555 * docs(pi): update installation and remote login guidance by @StiensWout in pingdotgg/t3code#17836 * fix(pi): preserve native abort outcomes by @StiensWout in pingdotgg/t3code#17853 * fix(pi): keep thinking defaults specific to each model by @StiensWout in pingdotgg/t3code#17835 * fix(pi): preserve shell command exit codes by @StiensWout in pingdotgg/t3code#17834 * fix(pi): expire and cancel extension approvals by @StiensWout in pingdotgg/t3code#17840 * feat(pi): include native sessions in usage reports by @StiensWout in pingdotgg/t3code#17848 * fix(server): route Copilot ACP subagent output into subagent threads by @maria-rcks in pingdotgg/t3code#17714 * fix(web): composer banner titles truncate beside their icon instead of wrapping by @maria-rcks in pingdotgg/t3code#17699 * fix(server): Muse turns no longer fail on Windows by @ntindle in pingdotgg/t3code#17163 * fix(pi): allow known read-only T3 tools without approval by @StiensWout in pingdotgg/t3code#17852 * fix: worktree threads keep their worktree when the agent starts, and messages sent during setup queue by @maria-rcks in pingdotgg/t3code#17654 * fix(server): keep Claude workflows alive while they report progress by @maria-rcks in pingdotgg/t3code#17715 * fix(web): media preview centers its content and pins the close button by @maria-rcks in pingdotgg/t3code#17951 * fix(server): threads without a project no longer need Git installed by @t3dotgg in pingdotgg/t3code#17959 * fix(web): toggling tools and thinking at the bottom keeps you at the bottom by @t3dotgg in pingdotgg/t3code#17954 * fix(web): Compact chip follows Claude's real prompt cache TTL by @t3dotgg in pingdotgg/t3code#17945 * fix(usage): bound OpenCode history reads to prevent backend OOM by @Yash-Singh1 in pingdotgg/t3code#17961 * refactor: format diff line counts through one shared helper by @maria-rcks in pingdotgg/t3code#17948 * fix: new projects start their first thread in the project folder, not a worktree by @t3dotgg in pingdotgg/t3code#17371 ## New Contributors * @ntindle made their first contribution in pingdotgg/t3code#17163 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261010.2948...v0.0.46-nightly.20261011.2955 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261011.2955
github-actions Bot
added a commit
to davidvanderklay/t3code-flake
that referenced
this pull request
Oct 11, 2026
## What's Changed * fix(pi): preserve tool images and structured results by @StiensWout in pingdotgg/t3code#17851 * fix(server): Claude 5 task lists reach the tasks drawer by @Mnigos in pingdotgg/t3code#14964 * fix(web): find bar and thread details panel stop covering each other by @MatthewFeroz in pingdotgg/t3code#17858 * fix(web): use server metadata for file chip icons by @Yash-Singh1 in pingdotgg/t3code#17923 * fix(desktop): copy images from HTML previews by @Bil0000 in pingdotgg/t3code#17555 * docs(pi): update installation and remote login guidance by @StiensWout in pingdotgg/t3code#17836 * fix(pi): preserve native abort outcomes by @StiensWout in pingdotgg/t3code#17853 * fix(pi): keep thinking defaults specific to each model by @StiensWout in pingdotgg/t3code#17835 * fix(pi): preserve shell command exit codes by @StiensWout in pingdotgg/t3code#17834 * fix(pi): expire and cancel extension approvals by @StiensWout in pingdotgg/t3code#17840 * feat(pi): include native sessions in usage reports by @StiensWout in pingdotgg/t3code#17848 * fix(server): route Copilot ACP subagent output into subagent threads by @maria-rcks in pingdotgg/t3code#17714 * fix(web): composer banner titles truncate beside their icon instead of wrapping by @maria-rcks in pingdotgg/t3code#17699 * fix(server): Muse turns no longer fail on Windows by @ntindle in pingdotgg/t3code#17163 * fix(pi): allow known read-only T3 tools without approval by @StiensWout in pingdotgg/t3code#17852 * fix: worktree threads keep their worktree when the agent starts, and messages sent during setup queue by @maria-rcks in pingdotgg/t3code#17654 * fix(server): keep Claude workflows alive while they report progress by @maria-rcks in pingdotgg/t3code#17715 * fix(web): media preview centers its content and pins the close button by @maria-rcks in pingdotgg/t3code#17951 * fix(server): threads without a project no longer need Git installed by @t3dotgg in pingdotgg/t3code#17959 * fix(web): toggling tools and thinking at the bottom keeps you at the bottom by @t3dotgg in pingdotgg/t3code#17954 * fix(web): Compact chip follows Claude's real prompt cache TTL by @t3dotgg in pingdotgg/t3code#17945 * fix(usage): bound OpenCode history reads to prevent backend OOM by @Yash-Singh1 in pingdotgg/t3code#17961 * refactor: format diff line counts through one shared helper by @maria-rcks in pingdotgg/t3code#17948 * fix: new projects start their first thread in the project folder, not a worktree by @t3dotgg in pingdotgg/t3code#17371 ## New Contributors * @ntindle made their first contribution in pingdotgg/t3code#17163 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261010.2948...v0.0.46-nightly.20261011.2955 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261011.2955
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.
Fixes #14322.
Problem
A Claude 5 session never shows its task list in the tasks drawer on V2, for the two reasons the triage confirmed:
TaskCreate,TaskUpdateandTaskList(their replacement forTodoWrite) when the session setsCLAUDE_CODE_ENABLE_TODO_TOOLS. T3 Code leaves that choice to the user: it can be set in the Claude instance's Environment variables, and it reaches the session unchanged.ClaudeAdapterV2only projects atodo_listplan for a top-levelTodoWrite, which Claude 5 no longer has.TaskCreate,TaskUpdateandTaskListresults are dropped, and the drawer only readstodo_listplans.Change
Both in
apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:CLAUDE_CODE_ENABLE_TODO_TOOLS. Users who want the task tools setCLAUDE_CODE_ENABLE_TODO_TOOLS=1in the Claude instance's Environment variables (or the server's environment); the adapter passes the configured environment through unchanged. This follows the review on this PR; the triage had suggested a default of1, which an earlier revision implemented.TaskCreate,TaskUpdateorTaskListcall updates one task list per native session and emits it as atodo_listplan, one plan per turn, updated in place.TaskCreatetakes the id and subject from the tool result;TaskUpdatechanges status or subject bytaskId(in_progressshows as running,deletedremoves the task);TaskListreplaces the list. A failed call, an update for an unknown id, and a subagent's task tools leave the list alone.TodoWritehandling is unchanged for models that still have it.Scope and approval
Triaged bug #14322, following the triage comment. This is the adapter mapping only. It does not touch when the drawer is shown: the list is visible while the run is active and leaves when the turn settles, as for the other providers; keeping unfinished lists after a turn is #14327 and is not part of this PR (the reason #14337 was closed). Server only, Claude adapter only.
Verification
Real web client, before and after. Headless Chromium at 1400×900 against
vp run dev,mainat cc1e634 versus this branch, isolated state, a synthetic project and a stand-inclaudebinary (no account or model call). The stand-in emits the same SDK frames on both builds: twoTaskCreatecalls with their results, aTaskUpdatetoin_progress, a pause, then aTaskUpdatetocompletedand one toin_progressfor the second task. It also logs whetherCLAUDE_CODE_ENABLE_TODO_TOOLSis in its environment.main), mid-turn: no Tasks controltodo_listplan: outline completed, summary running. The drawer is gone, as it is for every provider once the run settlesTests.
ClaudeAdapterV2.test.tsgains: the variable not being injected by default, and a user-setCLAUDE_CODE_ENABLE_TODO_TOOLS=1(instance or host environment) reaching the SDK;TaskCreateandTaskUpdateprojected into one plan per turn that a later turn supersedes; deletion without resurrection; no update for aTaskUpdatethat reportssuccess: false, an error result or an unknown id;TaskListreplacing the list, including an empty one; a subagent's task tools kept out of the parent's plan; and the persistedtodo_listprojection from inline task-tool frames. 171 tests pass across the adapter and replay files; with the adapter reverted, 9 fail. Server typecheck, targeted lint, format and knip are clean.Not checked: a live Claude 5 session. The stand-in shows what the adapter does with these frames and that the variable reaches the process; it does not show the real CLI exposing the tools. The frame shapes come from the issue's recorded sequence, the triage and the Agent SDK types (0.3.276). I did not add a Claude transcript to
testkit/fixtures/todo_list/, since the files there are provider recordings and making one needs a live session. Opting in through the provider's Environment variables setting is covered by the test, not exercised in the client.Implemented with Claude Code (Claude Opus 5.5, coordinated by Claude Fable 5.1); tests, independent review and evidence capture by GPT-6 Astra via Codex.