agent pane: a Claude workflow's card in the transcript where it started (Labs)
Leo, 2026-10-24, sharing reference screenshots of dynamic workflows: "It's just a basic one, but presumably we can, like, expand this a lot more. I mean, like we already did some part of this, right? I didn't really see or test it out yet."
Gallery: agent-pane.workflow-card/running, agent-pane.workflow-card/finished
Builds on #24953 (the Session Info panel, landed).
What changed
Behind Labs (workflowLabs, off by default), each workflow that a subagent group started now draws as a card in the group's place, running or ended. Without Labs, it would have been a tray line and later a done line. The card shows:
- the workflow's name;
- "Workflow · 6 agents · 13s";
- a dot per agent (done filled, running the accent, queued an outline, failed red), live while it runs.
A click opens Session Info's Background tasks, which lists its phases and agents (#24953). The workflow also leaves the tray, so it has two homes: the card where it started and the panel.
It stays in view. The card stays out of a finished turn's "Worked for" fold, as a started chat's card does.
The transcript never moves. Each workflow is its own row, and the card's height is fixed at three lines. The dots stay on one line and clip at the card's edge for a large run. Its row estimate (model.ts) matches, so a running clock or a new agent never shifts the transcript. A pause alone redraws the card.
Implementation.
withSubagentLinestakesworkflowCards. With it, a workflow in a group becomes aWORKFLOW_CARDrow in the group's place and leaves no done line; plain subagents keep theirs.- The dot styles move to
summary/workflowDots.css, which the card and the panel share. - The card's opener is set when the pane's Inspector comes and goes (
configureWorkflowCardOpen), the same way the tray's switch is set. That avoids nesting another provider around the transcript, which would have re-indented about 85 lines ofApp.tsx. A page holds one pane, so a module-level setter is safe.
No change with Labs off: withSubagentLines and the tray behave exactly as before. A new test covers that.
Risk: low. It's Labs-only.
No /workflow-authoring row is added. The reference's "Ran skill /workflow-authoring" row is the transcript's existing collapsed skill row, and the live to-do checklist is the existing plan card.
Review: Codex (xhigh, read-only) blocked the first version on three points, all fixed:
- the card folded under "Worked for";
- a pause alone didn't redraw it;
- two workflows shared one row estimated for one.
Testing
bun test test/workflow-tasks.test.tsx: 4 new tests.- The card names the workflow, its size and time, with a dot per agent.
- With Labs, a workflow in a group becomes a card in the group's place and leaves no done line, while a plain subagent keeps its line. Without Labs, the workflow is a done line as before. A pause alone changes the row's version.
- Each workflow in a group is its own row.
- A finished turn's fold keeps the card out. This test fails without the fix.
bun teston the workflow, fold and tray tests: 38 passed.vp fmt --check,vp lint(deny warnings),check-design-tokensandtsc --noEmitreport nothing in the changed files.prepush-gateis clean.- Rendered locally with the gallery matrix runner (Chromium, dark and light): the running and finished cards.
Agent session: huge-blue
🤖 Generated with Claude Code