Skip to content

fix(web): stop mid-turn timeline overlap on streaming tool groups - #12909

Open
macodev00 wants to merge 3 commits into
pingdotgg:mainfrom
macodev00:cursor/mid-turn-timeline-overlap-9712
Open

macodev00 wants to merge 3 commits into
pingdotgg:mainfrom
macodev00:cursor/mid-turn-timeline-overlap-9712

Conversation

@macodev00

@macodev00 macodev00 commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

What

  • Keep streaming tool-group / live work rows from overlapping mid-turn by measuring expandable agent-spawn work-live rows (unpinned fixed size) and remasuring when spawn expand changes.

Why

Fixes #12094

Redo of closed #12734 addressing Macroscope Not-approved / Medium: mechanical LegendList sizing + expandedSpawnEntryIds in list extraData; avoid oversized layout policy rewrite.

UI

Desktop chat timeline: live agent-spawn expand should not overlap the following Working row.

Checklist

  • I read CONTRIBUTING.md and kept this small / bug-only
  • What + why explained above
  • Followed AGENTS.md documentation rules (no new docs)
  • No unrelated changes
  • CLA / AI-reviewed standing override for macodev00 auto-contrib

Summary by CodeRabbit

  • Bug Fixes
    • Improved chat timeline behavior when new user messages appear during an active turn.
    • Stabilized live activity group placement and identity across timeline updates.
    • Improved timeline refreshing and row measurement when live groups or expanded agent activity change.
    • Preserved accurate sizing for working, live activity, user, and expanded detail rows.
    • Improved rendering consistency when agent-spawn activity expands or changes.
    • Improved timeline performance and visual stability during updates.

Keep live tool-group identity across a steer so LegendList does not remount
the row at the 90px estimate. Pin chrome sizes, leave agent-spawn work-live
unpinned, and remasure via extraData when expanded groups grow or spawn
details expand.

Co-authored-by: maco <macodev00@users.noreply.github.com>
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Sep 21, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a58096c

Macroscope's review found this PR approvable — The PR makes a localized fix to existing web timeline virtualization: it preserves live-row identity and remasures variable-height streaming groups to prevent overlap. It adds focused regression tests without changing product defaults, APIs, security-sensitive code, or static-analysis settings.

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

@coderabbitai

coderabbitai Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: ba1a3f5b-f91e-4d85-a33a-a68ba54e887d

📥 Commits

Reviewing files that changed from the base of the PR and between 36a3b86 and cc75a2a.

📒 Files selected for processing (3)
  • apps/web/src/components/chat/MessagesTimeline.logic.test.ts
  • apps/web/src/components/chat/MessagesTimeline.logic.ts
  • apps/web/src/components/chat/MessagesTimeline.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • apps/web/src/components/chat/MessagesTimeline.logic.test.ts
  • apps/web/src/components/chat/MessagesTimeline.logic.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 2 remain after this review.


📝 Walkthrough

Walkthrough

The timeline keeps live activity rows stable across mid-turn steers. LegendList now uses row-specific fixed sizes and height signatures that include expanded activity and spawn content.

Changes

Timeline overlap and row sizing

Layer / File(s) Summary
Live activity stability
apps/web/src/components/chat/MessagesTimeline.logic.ts
Activity groups remain active when only user messages follow. Active live rows receive a stable identity.
Row sizing and height signatures
apps/web/src/components/chat/MessagesTimeline.logic.ts
The timeline adds fixed heights for eligible rows. Expanded activity and agent-spawn rows remain measured. Extra-data signatures track expanded content and spawn expansion state.
LegendList integration and validation
apps/web/src/components/chat/MessagesTimeline.tsx, apps/web/src/components/chat/MessagesTimeline.logic.test.ts
LegendList receives the computed row-size helper and extra-data value. The component uses a memoized view. Existing test assertions use named helpers without behavior changes.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix · Severity of issue fixed: Low

Suggested reviewers: maria-rcks

Merge Risk: ⚪ Minimal · up to cc75a

The desktop timeline now preserves live-row identity and refreshes expanded-row measurements, addressing overlap during streaming without a remaining merge-blocking risk.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR meets the coding requirements in [#12094] and [#12734]. MessagesTimeline.logic.ts keeps live activity identity stable across mid-turn user messages. It includes expanded group entries and `ex…
Out of Scope Changes check ✅ Passed The changes stay within [#12094] and [#12734]. They modify chat timeline projection, live-row identity, LegendList row sizing and refresh inputs, and focused timeline tests. These changes directly sup…
Docstring Coverage ✅ Passed Docstring coverage is 87.50% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 24 functions across 3 files.
Title check ✅ Passed The title clearly describes the primary fix: preventing mid-turn timeline overlap during streaming tool groups.
Description check ✅ Passed The description explains the change, the reason, the affected UI behavior, and the issue reference. It is focused and mostly complete, although it uses shortened section headings and does not include …
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@macodev00

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Already reviewed the last commit. Use @coderabbitai full review to rerun a review of the entire changeset.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@macodev00

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Already reviewed the last commit. Use @coderabbitai full review to rerun a review of the entire changeset.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

cursoragent and others added 2 commits September 22, 2026 06:31
CodeRabbit requires 80% docstring coverage on functions this diff
touches (was 38.46%). Comment the row projector, list owner, and steer
fixtures instead of adding an internals page.

Co-authored-by: maco <macodev00@users.noreply.github.com>
Lift the list owner out of memo, name extraData computation, replace
the live-row .some() callback, and document steer fixtures so
CodeRabbit coverage clears 80%.
@macodev00

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@macodev00

Copy link
Copy Markdown
Contributor Author

@macroscope-app review

@macroscopeapp

macroscopeapp Bot commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@macodev00

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@macodev00

Copy link
Copy Markdown
Contributor Author

@macroscope-app review

@macroscopeapp

macroscopeapp Bot commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown

Rate Limit Exceeded

@macodev00 have exceeded the limit for the number of chat messages per hour. Please wait 24 minutes and 44 seconds before sending another message.

@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown

Rate Limit Exceeded

@macodev00 have exceeded the limit for the number of chat messages per hour. Please wait 23 minutes and 20 seconds before sending another message.

@macodev00

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Already reviewed the last commit. Use @coderabbitai full review to rerun a review of the entire changeset.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@macodev00

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Already reviewed the last commit. Use @coderabbitai full review to rerun a review of the entire changeset.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

This branch has not been deployed

No deployments
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:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

2 participants