Repository navigation
feat(desktop): plans, tasks and subagents catch up with the ledger - #1069
Conversation
A plan over 10 lines or 900 characters shows its first lines after its heading, with Expand plan / Collapse plan, as the web's ProposedPlanCard. Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Ymit24 <christianryansmith@gmail.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… above the composer The composer names the plan ready (its heading), offers Implement or, with feedback typed, Refine, and says why a follow-up was not sent. The agent's task list shows as a summary with its current step and progress, opening to every step with its status and time. Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: maria <maria@kuuro.net> Co-authored-by: Ymit24 <christianryansmith@gmail.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…og open on a refusal
The save dialog starts from the plan's file name, refuses an empty path,
sends one write at a time and publishes planSave {saving, saved} so the
dialog closes only once a write went through. With no workspace it says
so at once, as the web does. A RapidCheck property holds it to that.
Co-authored-by: Ymit24 <christianryansmith@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Steps for the plan preview, banner, follow-up, save and task summary scenarios; the desktop's @backlog comes off the 19 of them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…to timeline-plans-subagents-backlog
…line-plans-subagents-backlog # Conflicts: # features/timeline/plans-and-subagents.feature
…' into timeline-plans-subagents-backlog # Conflicts: # apps/desktop-qt/src/native/TimelineModel.cpp # apps/desktop-qt/src/native/TimelineModel.h
…hone The phone's agents list now shows a subagent's title the way the timeline does (a model slug becomes its name), and the phone runs the group-count and title scenarios it shares with the desktop. Its plan-save step types over the file name the dialog now starts from, and expects no dialog without a workspace, as the desktop does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…' into timeline-plans-subagents-backlog # Conflicts: # apps/desktop-qt/src/native/ThreadStore.cpp
…' into timeline-plans-subagents-backlog
…' into timeline-plans-subagents-backlog # Conflicts: # apps/desktop-qt/src/native/ThreadStore.cpp # apps/desktop-qt/src/native/TimelineModel.h # apps/desktop-qt/tests/native/features/DesktopUpdateSteps.cpp # apps/desktop-qt/tests/native/features/ThemeSteps.cpp # features/timeline/plans-and-subagents.feature
A plan of more than 900 characters on ten lines or fewer passed the length gate, but its preview was the whole plan, so "Expand plan" changed nothing. The preview is now empty unless lines are hidden, and the ledger's example says so. The preview reaches the phone through the shared timeline, so its scenarios run there too; the phone terminal's catch-all "the user chooses" step now only takes "Select All". Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nts-backlog # Conflicts: # apps/desktop-qt/src/native/TimelineModel.cpp
olafura
left a comment
There was a problem hiding this comment.
Approved
1 finding: 1 low.
Brings the desktop plan card's long-plan preview with Expand/Collapse, the Plan ready banner with implement/refine, the task summary above the composer, a stricter plan save to the workspace, and phone subagent titles and counts in line with the ledger. The code does what it says, and I found no correctness bugs. The main risk is the description, not the code. It says ThreadStore now passes pending background tasks to the timeline, and it lists the TUI and the MC as surfaces. The diff touches no ThreadStore, TUI or MC code. Either that change is missing from the branch, or the description should drop the claim. The PR also rewrites two ledger expectations without mentioning it: the 1,000-characters-on-5-lines example now shows the whole plan, and the file name is fix-cartts-finally.md. Both match the implementation and upstream's sanitizePlanFileSegment, but they belong in the description.
Not run
- desktop and phone tst_Features, and tst_PlanSaveProp: This checkout has no Qt build directory, and building the Qt clients for a review is too heavy. The PR reports these passing.
Ran 4 checks
git diff b4a1d153..HEAD (read every source, QML and feature change): Reviewed TimelineModel planPreview, PreviewRole and ExpandedRole, toggle, PlanController save and workspaceRoot, ComposerController turnState tasks and planAction, the TurnRequests banner, task card and save dialog, and the phone TurnAgents and stepsgrep of the MC's turn_writer.ex and the contracts' OrchestrationV2PlanStep: The todo_list plan's runId, status, steps text/status and durationMs match what turnState readsgrep of McClient::call: A disconnect or not-ready state fails pending calls, so PlanController's m_saving always clearsgit diff --stat b4a1d153..HEAD: No ThreadStore, apps/tui or apps/server-ex changes, unlike the description says
…cenarios Neither surface shows a finished task's result apart from the replies or the result waiting to wake the parent yet, so the ledger keeps saying so. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
olafura
left a comment
There was a problem hiding this comment.
Approved
No findings.
The PR adds the plan preview, Plan ready banner, task summary and plan save to the desktop, and gives the phone the desktop's subagent display rules. The one new commit since my last review (bdaf6ea) fixes my previous finding. The two delegated-task scenarios at features/timeline/plans-and-subagents.feature:317 and :343 are tagged @backlog-mobile again, and :343 also @backlog-tui, so the ledger still records that the phone and TUI lack them. The tags now name @mobile and @tui as surfaces, which follows the @desktop @mobile @backlog-mobile form in features/README.md. I found no new problems in this commit.
Not run
- tst_Features, TUI runner and mix features on plans-and-subagents.feature: The new commit only changes tags. The
@backlog-*tags keep the phone and TUI runners from running these scenarios, and the desktop and MC tagging did not change, so a run would not settle anything a read doesn't.
Ran 2 checks
git diff 46dee58f8 HEAD: One commit; it changes only the tags on two scenarios in features/timeline/plans-and-subagents.feature.git show b4a1d1531:features/timeline/plans-and-subagents.feature (original tags) and grep features/README.md for the backlog tag form: The new tags keep the base's backlog markers for the phone and TUI and follow the form features/README.md documents.
features/timeline/plans-and-subagents.featurestill had 77 scenarios tagged@backlogor@backlog-<surface>. They cover what upstream added in pingdotgg/t3code#2829 and #13572: plan follow-ups, saving plans, long-plan previews, the task summary, and subagent titles and counts. Neither the desktop nor the phone had these.Fix
TimelineModel::planPreview, and thePreviewRoleandExpandedRoleroles).subagents::displayTitle). Steps were added to the phone'stst_Featuresfor the shared bricks.@desktop @mobile. Two delegated-task scenarios stay@backlog-mobile(one also@backlog-tui) until those surfaces gain them (Phone and TUI: delegated-task results waiting on the parent #1070). Two expectations changed to match upstream and the implementation: a plan of 1,000 characters on 5 lines shows whole (the preview counts lines), and a saved plan's file name follows upstream'ssanitizePlanFileSegment(fix-cartts-finally.md).Several commits carry over upstream code, so they credit its authors (Julius Marminge, maria, Ymit24) with Co-authored-by. One gap: Theo Browne should also have been credited on a TUI commit that already merged through #1053, and that history can't be rewritten now.
Screenshots
On main, none of these exist. After this PR, taken from the desktop
tst_Featuresbricks offscreen:Verification
tst_Featuresontimeline/plans-and-subagents.feature: 130 passed, 0 failed.tst_Features: 57 passed, 0 failed. The phone's terminal feature also passes: 95 passed, 0 failed.mix features timeline/plans-and-subagents.feature: 11 passed.Code changes are in the desktop and the phone. The TUI and MC runs confirm their scenarios in this file still pass, with no changes to either. No contract changes. The plan actions are reachable from both the banner and the plan card.
Done by Claude Opus 5.5 (1M context) in Claude Code, running in HAL-C2.
🤖 Generated with Claude Code