Transcript: copy once per turn and keep pre-steer replies visible
Carries the stranded transcript footer work from #29636 into a recoverable lane and fixes the copied turn ordering around interim steers.
Leo, 2026-10-31: “this is so stupid didn't i say this over an hour ago just remove the copy paste blocks the inherent capability to do so from the stupid interim chatter.” He also said: “claude code doesn't have individual copy pastable things for the entire thing, only the bottom. ironically we have literally the complete opposite. so let's invert our behaviour.”
Takes back #27313: replace its per-reply action rows with one turn footer so interim chatter has no copy affordance, as Leo requested.
Leo also clarified: “i literally said dont fold the steer” and “THE FACT THAT YOUR INTERIM MESSAGE YOU SENT BETWEEN STEERS GOT COLLAPSED IS [bad].”
What changes
- Keeps a personal steer and the assistant reply before it expanded when the turn finishes; ordinary interim chatter still collapses.
- Keeps one action footer at the bottom of an assistant turn; interim assistant chatter has no individual Copy affordance, while the final footer remains copyable.
- Carries #29636's whole-turn Copy behavior, including top-level tool lines, and keeps tool runs before and after an interim steer separate so copied text follows transcript order.
- Updates
design/chat-transcript.mdin teamleaderleo/leo-workspace#2001 with the one-footer/interim-chatter rule. - Renders a complete multi-message turn in a regression test and asserts exactly one footer, with interim dialogue both expanded and collapsed.
The notification-only turn fold is not included because Leo's earlier ask did not name it.
Risk is limited to completed-turn presentation. The existing fold anchor, expanded row order, turn identity, and final footer are preserved.
Validation
cmux-ci test -- bash -lc 'cd webviews && bun run test test/agent-pane-reply-actions.test.tsx test/agent-pane-reply-actions-frame.test.tsx test/transcript-completed-fold.test.ts test/transcript-steer-continuous.test.tsx test/agent-pane-turn-token-split.test.tsx'- The prior
react-apps-base-check (1)failure was split: the changed footer test is fixed by preserving tool-run boundaries;pane-english.test.tsremains the same base red (sessionPages.tsEnglish strings).
Changelog
Changed: Interim assistant chatter no longer has per-message copy affordances; one turn footer copies the ordered turn.
Agent session: agent session
🤖 Generated with Claude Code