Skip to content

fix(web): steered turns read like a chat with one fold at the end - #29589

Merged
maria-rcks merged 2 commits into
pingdotgg:maria/redesign/2-composer-timelinefrom
flamboh:t3/redesign-fix-steer-chat-folds
Nov 2, 2026
Merged

maria-rcks merged 2 commits into
pingdotgg:maria/redesign/2-composer-timelinefrom
flamboh:t3/redesign-fix-steer-chat-folds

Conversation

@flamboh

@flamboh flamboh commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Note

🤖 Claude Opus 5.5 on behalf of Oliver

Fix for the redesign stack, targets layer 2 (#28840).

Replaces the per-segment fold rows from #29040, which is merged into layer 2. Supersedes #29076.

Problem

Steering a turn breaks it into segments, and each one gets its own "Continued for …" fold with its own diff totals. A turn with two steers shows three folds. The agent's replies between steers get folded away too. So you can't read the back-and-forth, and every steer label shows a time offset that doesn't help anyone.

Fix

A steered turn now reads like a chat: user, agent, user, agent, with one fold at the end.

  • Steers sent before the agent has written anything stack together, with one steer label and no fold between them.
  • The agent's last text before each steer stays visible. The work around it doesn't get its own fold.
  • The turn has one fold, right after the last steer, where an unsteered turn's fold would sit before the final answer. It covers the whole turn: total time and the whole turn's diff totals. A stopped, failed or limited turn shows its ending on that fold.
  • Opening the fold lists all the turn's work right under it, in order. Earlier work isn't put back between the steers further up.
  • While the turn runs there are no folds. The Working bar sits after the latest steer and counts from the start of the turn. When the turn ends, the bar turns into the fold in the same spot.
  • The steer label is now just "steer", with no time.
  • A reply between steers no longer leaves extra space under itself while the turn runs.

Before / after

Before (layer 2) After
Before: two back-to-back steers sit between a Worked for 15s fold and a Continued for 1m 37s fold, and each steer label shows a time After: the prompt and both steers read as one chat, with a single Worked for 1m 52s fold above the final response
Before: with steer, agent text, steer, agent text, the agent replies are hidden in Worked for 38s and Continued for 20s folds between the steers After: agent text and steers alternate like a chat, with one Worked for 2m 30s fold before the final response
Before: with edits spread across the turn, three folds (Worked for 29s, Continued for 41s, Continued for 52s) each show their own diff totals, and the mid-turn agent text is folded away After: steers and the mid-turn agent text stay visible, with one Worked for 2m 16s fold showing +80 -50 above the final response
Before: opening the last fold, Continued for 52s, shows only that segment's work, Changed 1 file and ran 1 command After: opening the single Worked for 2m 16s fold shows all the turn's work, Changed 3 files, ran 1 command, and performed 1 other action
Before: while running, the mid-turn agent text drops under the Working bar between work rows, and the first work row is clipped under the header After: while running, the agent text stays above the last steer, and the Working bar follows that steer with the full work list right under it

Validation

  • MessagesTimeline.logic.test.ts: I rewrote the per-segment steer cases for the new rule. They cover back-to-back steers stacking, replies between steers staying visible with no fold, one fold whose diff totals come from the turn's checkpoint, like the changed-files card, a stopped ending on that one fold, opened work listed under the fold, and a live turn with no folds and replies kept above the bar. The new cases fail on layer 2.
  • MessagesTimeline.browser.test.tsx passes.
  • vp run check:changed origin/maria/redesign/2-composer-timeline passes after merging layer 2 (with fix(web): steered turns' fold rows each show their own time and edits #29040) into this branch.
  • I rendered fixture turns through the real MessagesTimeline and checked the settled, opened and live layouts.

Made with Claude Opus 5.5 in Claude Code (via T3 Code).

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Nov 2, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Nov 2, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs Human Approval

Macroscope's review found this PR requires human approval — Steered conversations now show preceding replies as chat and consolidate work into one fold after the latest steer, while removing steer timestamps. This changes the default conversation presentation and requires human confirmation of that product choice.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeapp
macroscopeapp Bot dismissed their stale review November 2, 2026 21:24

Dismissing prior approval to re-evaluate 45d6568

@flamboh flamboh closed this Nov 2, 2026
@flamboh flamboh reopened this Nov 2, 2026
@maria-rcks
maria-rcks merged commit 931342c into pingdotgg:maria/redesign/2-composer-timeline Nov 2, 2026
67 of 70 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants