Skip to content

fix(workflows): Lineage remembers Workflow choices, folds completed agents and shows models - #13

Closed
only21mil wants to merge 3 commits into
maria-rcks:t3code/investigate-orchestrator-subagentsfrom
only21mil:feat/workflow-lineage-sidebar
Closed

only21mil wants to merge 3 commits into
maria-rcks:t3code/investigate-orchestrator-subagentsfrom
only21mil:feat/workflow-lineage-sidebar

Conversation

@only21mil

@only21mil only21mil commented Oct 4, 2026 •

Copy link
Copy Markdown

Problem

The Lineage phase tree from b42165b forgets what the user opened. Collapsing the card, switching threads or reloading puts the card back to collapsed and every phase back to its default. An open phase also lists every agent, so a Build phase with one live agent and five finished ones fills the 13.5rem Lineage list. The panel rows also hide which model each agent ran.

Change

Three stacked commits, each with its own tests. You can stop after any of them.

  1. fix(workflows): Lineage remembers a Workflow's open phases. A small persisted Zustand store, apps/web/src/workflowLineageViewStore.ts, keeps the user's choices per environment and coordinator subagent. It follows the diffPanelStore.ts pattern and keeps the 200 most recently changed Workflows. WorkflowCard takes an optional lineageViewKey. Lineage passes it to both the parent's row and the Workflow thread's own card, so a choice made in one shows in the other. The chat card passes no key and stores nothing, but its phase toggles now live on the card instead of in each phase, so they also survive collapsing the card.
  2. fix(workflows): Lineage folds a phase's completed agents. In the panel variant, completed agents in an open phase sit behind "Show N completed". Failed, stopped, running and queued agents stay listed. The fold is stored per phase next to the phase toggle, so it stays as the user set it when the heading closes and reopens or when the phase's last live agent settles.
  3. fix(workflows): Lineage Workflow agents show their model. Panel rows get a second line with the reported model. It goes through resolveSubagentMetadata with the coordinator's provider, the helper the agent tooltips already use, so a catalog name wins over the raw slug. T3 reports no reasoning effort for Workflow agents, so the line names the model only. Rows without a reported model stay one line, and the chat card shows no model line. The line uses the muted tone of the Workflow's status line and dims with a completed agent's label, so it is never brighter than the label above it.

Scope and approval

This targets pingdotgg#15559's branch, not main, and sits on 0a9a726 with its banner rows and status marks unchanged. It changes the shared WorkflowCard from b42165b and a few steps in your live/retained Lineage test. Almost all of it applies to the panel variant only. The chat card sees one side effect: its phase toggles survive collapsing the card. The commits stack, so you can keep the first, the first two or all three. There are no contract or server changes. It is web only. Desktop gets it through the web client, and mobile has no Workflow phase tree on this branch.

Verification

Focused checks from apps/web on 56ddc5baf:

  • vp test run --project unit src/workflowLineageViewStore.test.ts src/components/chat/ThreadRelationshipsControl.agents.test.tsx src/components/chat/ThreadRelationshipsControl.test.tsx passed, 3 files and 18 tests. Commits 1 and 2 pass the same command on their own, with 15 and 17 tests.
  • vp exec tsc --noEmit is clean.
  • vp fmt --check and vp lint --report-unused-disable-directives on the five touched files are clean.
  • knip --workspace apps/web --exports is clean.

The new tests check that the open card and phase choices survive a remount, a store rehydrate standing in for a reload, and a move to the Workflow's own thread, and that a collapsed card stays collapsed after a reload. For the fold, they check reveal and hide, that the heading closing and reopening leaves it alone, that a held-open phase stays folded when its last live agent completes, that a revealed fold survives a reload, and that the chat card still lists completed agents. For the model line, they check the catalog name, the readable slug fallback and the one-line row when no model is reported. In your live/retained test, Inspect now stays open after the card collapses, and completed members are revealed through "Show 1 completed".

Screenshots come from a local dev server on an isolated --home-dir with a neutral acme-web project and a seeded running Workflow, release-check. Plan has 2 of 2 done, Build 5 of 6 with one running, Review one failed and two queued, and Verify is upcoming. Every agent reports claude-opus-5-5. Headless Chromium at 1280x900 and 2x, dark theme, each frame cropped to [data-thread-relationships-panel].

Step Before (0a9a726) After
Workflow opened, Build open by default lineage-before-1-open.png lineage-after-1-open.png
Build closed, Review opened lineage-before-2-review-open.png lineage-after-2-review-open.png
Same Workflow from its own thread lineage-before-3-workflow-thread.png lineage-after-3-workflow-thread.png
After a page reload lineage-before-5-after-reload.png lineage-after-5-after-reload.png
Build reopened, "Show 5 completed" clicked every row already listed in frame 1 lineage-after-6-show-completed.png

Not checked: the light theme, the desktop shell, and the settle transition in a running app. The seeded rows are static, so settling is covered by the focused test only. Lineage keeps its 13.5rem list cap, so open phases scroll inside it in these frames. List height is a separate problem and this PR leaves it alone.

Claude Opus 5.5 (xhigh), Claude Code in T3 Code

only21mil and others added 3 commits October 4, 2026 17:49
The Lineage Workflow card and its phase headings kept their open state in
component state, so a thread switch, a reload or collapsing the card reset
them to the defaults. A small persisted store keyed by environment and
coordinator now holds the user's choices, shared by the parent's row and
the Workflow thread's own card. Without a key, the chat card keeps its
phase toggles on the card, so they also survive collapsing it. Nothing
is stored.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
An open Lineage phase listed every agent, so a phase with one live agent
and many finished ones filled the small Lineage list. Completed agents now
sit behind "Show N completed" in each open phase; failed and stopped
agents stay listed. The choice is remembered per phase with the rest of
the Workflow's Lineage view, so it holds when the phase closes and
reopens and when its last live agent settles. The chat card still lists
every agent.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
In Lineage, a Workflow agent row showed only its label; the model sat in
the tooltip. Each row now has a second line with the model T3 reports,
named through the same catalog-aware helper the agent tooltips use. Rows
without a reported model stay one line, and the chat card shows no model
line.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@only21mil
only21mil force-pushed the feat/workflow-lineage-sidebar branch from 0012edb to 56ddc5b Compare October 4, 2026 23:30
@only21mil

Copy link
Copy Markdown
Author

Note

🤖 Opus 5.5 replying on behalf of Victor.

Closing: this no longer applies in this form. Its base branch tracked pingdotgg/t3code#15559, which closed unmerged on 2026-10-09. Upstream no longer has the WorkflowCard component this PR changes (its Workflow lineage now lives in ThreadLineageWorkflowRow), and the branch conflicts with its base.

@only21mil only21mil closed this Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant