Skip to content

fix(web): chat timeline no longer overlaps mid-turn tool groups - #18

Draft
macodev00 wants to merge 5 commits into
mainfrom
cursor/fix-timeline-overlap-0164
Draft

macodev00 wants to merge 5 commits into
mainfrom
cursor/fix-timeline-overlap-0164

Conversation

@macodev00

@macodev00 macodev00 commented Sep 20, 2026

Copy link
Copy Markdown
Owner

A live expanded tool-call group can be much taller than LegendList’s 90px estimate. A mid-turn user message (steer) remounted that group under a new key, so the following user bubble and Working-for pill were placed on top of the streaming commands.

This keeps live-activity-row identity when a steer only moves the working header, pins chrome row sizes, and puts an expanded-group height signature in list extraData so growing tool rows remasure before new tail rows are placed.

Follow-up: getFixedMessagesTimelineItemSize also pinned every work-live row, including expandable AgentSpawnRows. Spawn members grow in place via expandedSpawnEntryIds, so following rows overlapped. Those spawn rows are now measured instead of treated as fixed chrome.

Tracked as pingdotgg#12094. No upstream PR.

Tests: vp test run --project unit src/components/chat/MessagesTimeline.logic.test.ts src/components/chat/MessagesTimeline.test.tsx (192 passed).

Open in Web Open in Cursor 

A steer during a streaming expanded tool-call group remounted the live
header under a new key, so LegendList placed the following user row and
Working-for pill with a 90px estimate on top of a much taller details row.

Keep the live-activity-row identity across that splice, pin chrome row
sizes, and include an expanded-group height signature in list extraData
so growing tool rows remasure before new tail rows are placed.
CodeRabbit docstring coverage on the mid-turn tool-group fix was 33%.
Add one-line TSDoc on every function in that diff so coverage clears 80%.

Co-authored-by: maco <macodev00@users.noreply.github.com>
getFixedMessagesTimelineItemSize treated every work-live row as fixed
chrome. Expanded AgentSpawnRow members grow in place via
expandedSpawnEntryIds, so following rows overlapped.

Leave expandable spawn work-live rows measured instead.

Co-authored-by: maco <macodev00@users.noreply.github.com>
CodeRabbit docstring coverage on the mid-turn tool-group fix was 75%.
Use function-declaration TSDoc on the test helpers and remaining
touched functions so coverage clears 80%.
getFixedMessagesTimelineItemSize returns undefined for work-live rows
with agentSpawn so AgentSpawnRow is measured instead of pinned to chrome
height. Include expandedSpawnEntryIds in LegendList extraData and derive
the live spawn row in the overlap test.

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant