Repository navigation
Agent pane (Labs): live todo card and activity line (cx-ncc.102) - #20833
teamleaderleo wants to merge 39 commits into
Conversation
…ne (cx-ncc.102) Red: turns.ts has no Labs option or ACTIVITY_LINE yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude Code desktop's in-session status, harness-agnostic: with preview features on, a running turn's todo list (Claude TodoWrite, Codex's plan, any ACP plan) draws as a quiet card under the work, where a dashed circle waits, a spinner runs and a filled check is done (no heading, strike or bold). Under it one activity line names the running tool call (a command as itself), else the todo in progress, and ticks the turn's time, in the "Working for" status's place. While the answer streams the card stays above it and the line goes. Labs off draws as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(cx-ncc.102)
A transcript row's class is `acpmux-row acpmux-${kind}`, so the todo list
row was also `.acpmux-plan`, the composer's Plan toggle: its 28px height,
flex centering and nowrap applied to the row, whose paint containment
then clipped the list to about one item (the gallery's running variant
showed no heading and no third item). The toggle's unscoped rules now
name the button.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- The activity line's label is computed with the turn and is its text and version, so a call whose paths arrive after its title redraws the line, and the row carries no items, so Find no longer counts the running call's output on a line that cannot show it. - The Plan toggle's scoped rules use `:where(button)`, keeping a class's specificity: hovering the pressed toggle keeps its accent color again. - A first-layout estimate for the activity line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
|
Unclear: CI failed on
Not re-run automatically: Written by |
|
Agents: |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cursors/cx-ncc.102-plan-card
|
Real cmux NEXT capture from a DEV build of this PR on a fleet capture slot, with a fake ACP agent sending a plan. This is the before (Labs off), unchanged from today: Blocked: no Labs-on capture yet. With 🤖 Generated with Claude Code |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cursors/cx-ncc.102-plan-card
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cursors/cx-ncc.102-plan-card
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds the agent.sessionStatus Debug Settings tunable (off by default), the inert AgentPaneView.sessionStatus property, the sessionStatus page event and the page's store, plus a Swift test that the toggle reaches an open agent page and a new one, and a web test that the host event sets the store. Nothing delivers it yet, so both tests fail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each AgentPaneView follows the agent.sessionStatus tunable (Observation) and pushes each change to its page: the sessionStatus event on the page host, cmuxAcpmuxBridge.applySessionStatus on the old host, replayed on load, ready and page-host resubscribe. The page keeps it in sessionStatus.ts (useSessionStatus) for the plan and recap cards; the gallery's agent pane variant takes sessionStatus. Nothing visible changes yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cursors/cx-ncc.102-plan-card # Conflicts: # webviews/src/gallery/format.ts # webviews/src/gallery/frame/agentPane.ts
…cursors/cx-ncc.102-plan-card
The live todo card and activity line now follow the Debug Settings toggle agent.sessionStatus (useSessionStatus) instead of Labs preview features. turnView's option is statusCards, and the gallery variant status-card turns the toggle on through sessionStatus. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
- regenerated schemas/defaults/cmux-next.json Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/38700555873
|
Found 28 test failures on Blacksmith runners: Failures
...and 18 more test failures. View all on Blacksmith: run 39365096029, run 39365096040
|
Review on #20953: the task was only weakly tied to the view, and the ObservationStream fallback never wakes on deallocation, so each closed tab left a suspended task. Also hoist the store's subscribe. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cursors/cx-ncc.102-plan-card
…cursors/cx-ncc.102-plan-card
…cursors/cx-ncc.102-plan-card # Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneTunables.swift
…cursors/cx-ncc.102-plan-card # Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneTunables.swift # webviews/src/agent-session/acpmux/App.tsx
|
The card part of this PR is now unflagged in #21623, which also brings over this PR's |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Pending: CI is running on Last result: Unclear: Written by web and size checks: green
Agents: |
[Medium impact] The PR appears safe to merge, with the earlier non-blocking stopped-step animation issue still open. Findings
SummaryAdds a live todo card and activity line behind
Reviews (3) · Last reviewed commit: "Merge branch 'feat-cmux-next' into op-ne..." · Reviewed by Greptile |
| }) { | ||
| return ( | ||
| <ShortcutsContext.Provider value={shortcuts}> | ||
| <PlanCardStyle.Provider value={planCard}>{children}</PlanCardStyle.Provider> |
There was a problem hiding this comment.
The pane-wide PlanCardStyle also turns finished turns' lists into live cards. If a turn stops or fails with an in_progress step, that step keeps spinning after the agent stops, including in older turns.
Limit the live animation to running turns and add a stopped-turn test with an unfinished step.
|
|
|
|
…card (#21623) * test(agent-pane): the todo list draws as a card with Claude's marks Red on feat-cmux-next: the row takes the composer Plan toggle's 28px height and clips the list, the progress is a visible heading, done steps are struck through, the step in progress is bold and nothing spins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(agent-pane): the todo list draws as Claude's quiet card, unclipped The composer Plan toggle's rules matched the transcript's todo row, which is also .acpmux-plan, so the row took the toggle's 28px height and its paint containment cut the list to about one step. The toggle's rules now name the button, as #20833 did. The list itself draws as Claude desktop's card: a filled check is done, a thin spinner runs and a dashed circle waits, with no visible heading, strike-through or bold. A step left in progress stops spinning once its turn ends. Screen readers still hear the progress and each state. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Test that every ended turn's plan stops spinning Four ways a turn ends still leave its plan row live: the last turn without a summary, an earlier one with no other work, and a plan sent after the answer or after the summary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(agent-pane): every ended turn's plan stops spinning; wrap long steps A plan row in the last turn without a summary, in an earlier one with no other work, or sent after the answer or the summary now ends with its turn. An ended in-progress step is a plain ring, not a frozen arc. Long step text wraps under its first line, with the mark beside that line. The row height estimate matches the card (40 + 24 per step). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux NEXT: test that Static stops the todo list spinner Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux NEXT: the todo list spinner holds still under Static status indicators Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(next): PR autofix at 2e1857a - vp fmt webviews/src/agent-session/acpmux/replyHref.ts - vp fmt webviews/src/pages/markdown/README.md - vp fmt webviews/src/pages/markdown/links.ts - vp fmt webviews/test/markdown-cmux-app-links.test.ts Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/39210635038 * test(agent-pane): an earlier turn without a summary ends a plan sent after its answer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * agent pane: an earlier turn's late plan stops spinning; Static stops the arc by selector, not source order settledWithoutSummary returned the rows from the answer on without endedPlan, so a plan sent after the answer of a summary-less turn with folded work kept spinning. The spinner rule now carries the Static condition itself, and the default-mode loops check asserts the plan spinner is among the running loops. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: a live turn's plan after the summary keeps spinning (fails) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(agent-pane): a live turn's plan after the summary keeps spinning Review finding: rows after a turn summary were marked turnEnded even while the turn was live, so a plan the agent started on its own stopped spinning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: cmux-autofix[bot] <cmux-autofix[bot]@users.noreply.github.com>
…22028) * test(agent-pane): the todo list draws as a card with Claude's marks Red on feat-cmux-next: the row takes the composer Plan toggle's 28px height and clips the list, the progress is a visible heading, done steps are struck through, the step in progress is bold and nothing spins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(agent-pane): the todo list draws as Claude's quiet card, unclipped The composer Plan toggle's rules matched the transcript's todo row, which is also .acpmux-plan, so the row took the toggle's 28px height and its paint containment cut the list to about one step. The toggle's rules now name the button, as #20833 did. The list itself draws as Claude desktop's card: a filled check is done, a thin spinner runs and a dashed circle waits, with no visible heading, strike-through or bold. A step left in progress stops spinning once its turn ends. Screen readers still hear the progress and each state. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Test that every ended turn's plan stops spinning Four ways a turn ends still leave its plan row live: the last turn without a summary, an earlier one with no other work, and a plan sent after the answer or after the summary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(agent-pane): every ended turn's plan stops spinning; wrap long steps A plan row in the last turn without a summary, in an earlier one with no other work, or sent after the answer or the summary now ends with its turn. An ended in-progress step is a plain ring, not a frozen arc. Long step text wraps under its first line, with the mark beside that line. The row height estimate matches the card (40 + 24 per step). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux NEXT: test that Static stops the todo list spinner Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux NEXT: the todo list spinner holds still under Static status indicators Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(next): PR autofix at 2e1857a - vp fmt webviews/src/agent-session/acpmux/replyHref.ts - vp fmt webviews/src/pages/markdown/README.md - vp fmt webviews/src/pages/markdown/links.ts - vp fmt webviews/test/markdown-cmux-app-links.test.ts Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/39210635038 * test(agent-pane): an earlier turn without a summary ends a plan sent after its answer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * agent pane: an earlier turn's late plan stops spinning; Static stops the arc by selector, not source order settledWithoutSummary returned the rows from the answer on without endedPlan, so a plan sent after the answer of a summary-less turn with folded work kept spinning. The spinner rule now carries the Static condition itself, and the default-mode loops check asserts the plan spinner is among the running loops. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Agent pane: tests for the activity line under the todo list (red) With agent.sessionStatus on, a running turn with a todo list shows one line under the list naming the running call (a command as itself, an edit by file name) or the todo in progress, and the turn's time, in the Working for status's place. Red: turns.ts has no activity line yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Agent pane: activity line under the todo list (agent.sessionStatus) With the Debug Settings toggle agent.sessionStatus on, a running turn with a todo list draws the list under its work and one line under it naming what the agent is doing now, with the turn's time ticking from the prompt (••• Edit ProductGrid.module.css 26s). The running tool call reads as its row names it (a command as itself, an edit by file name), else the todo in progress. The line takes the Working for status's place and goes away while the answer streams. Toggle off draws as before. The line's dots stop under static status indicators and Reduce Motion. Recut of #20833 (activity line only; the todo card is #21623). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: a live turn's plan after the summary keeps spinning (fails) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(agent-pane): a live turn's plan after the summary keeps spinning Review finding: rows after a turn summary were marked turnEnded even while the turn was live, so a plan the agent started on its own stopped spinning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: cmux-autofix[bot] <cmux-autofix[bot]@users.noreply.github.com>
|
owner: 01a15bbf-a30f-7992-abba-3e3ca6f5adc1 |
|
Superseded on
Merging base into this branch would leave nothing new: the PR's diff against its merge base touches only webviews files, and base has rewritten each one. I'm leaving the PR open for its owner to close. |
|
Owned by an agent session · session |
|
Superseded on current |

Claude Code desktop's in-session status (its 10-14 release, video 5), harness-agnostic, behind the Debug Settings toggle
agent.sessionStatus(bead cx-ncc.102).With the Debug Settings toggle In-session status (
agent.sessionStatus, off by default) on, a running turn changes in two ways:planupdate) draws as a quiet card under the work. Steps show a dashed circle while waiting, a spinner while running and a filled check when done. There is no heading, strike-through or bold, and a screen reader still hears progress and each step's state.••• Edit ProductGrid.module.css 26s. It shows the running tool call as its row names it (a command shows as itself), else the todo in progress. It takes the "Working for" status's place. While the answer streams, the card stays above the answer and the line goes away.With the toggle off, or for a turn without a list, nothing changes.
Base fix included: the todo list row is also
.acpmux-plan(rows areacpmux-row acpmux-${kind}), the composer's Plan toggle class. The toggle's 28px height and flex centering applied to the row, and the row's paint containment clipped the existing list to about one item. The toggle's unscoped rules now name the button.Captures
Real cmux NEXT: a DEV build of this PR merged with #20878, taken while the opt-in was still the Labs preview flag (it now reads the Debug toggle; the cards are unchanged), on a fleet capture slot, with a fake ACP agent sending a plan and tool calls. These were taken before the last commit: the activity line now names the file only (
Edit ProductGrid.module.css) instead of its full path.Toggle on, live: the card moves through its steps while the activity line names each call.
Full quality: real-plan-card-clip.mp4
Toggle off (before), real app
Gallery (
agent-pane.plan-list, sbx Linux Chromium, dark):Toggle on: live todo card and activity line
Toggle off, base: the existing list clipped to about one item (no heading, no third item)
Toggle off, this PR: the existing list whole again
Depends on #20953 (the
agent.sessionStatusDebug toggle and its page event). #20878 has landed.Testing
bun test test/transcript-plan-card.test.ts test/transcript-worked-fold.test.ts(sbx): 13 pass, including a file-name test that was red before its fix. The first commit adds the new test, which is red without the change (nostatusCardsoption orACTIVITY_LINEin turns.ts).vp check(format, lint, typecheck) is clean on sbx, and check-type-scale, check-layers and check-system-blue pass.Follow-ups
activeForm: cx-ncc.105, next PR.›on the line (jump to the running call) is left out until the transcript can reveal a row by id.Changelog
Added: Debug Settings toggle: a running agent turn shows its todo list as a live card with the current activity under it.
🤖 Generated with Claude Code