You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Load long Conversation transcripts around the read position #2568
The dashboard Conversation page loads and renders every transcript row from the latest event backward. With read positions (#2513), it often opens in the middle of the transcript, but it still loads and renders from the end.
Current behavior
The detail request returns the latest 500 events (limit default in conversationDetailQuerySchema).
Older pages load only when the reader scrolls near the top, through an IntersectionObserver sentinel (useAutoLoadPreviousPage). Nothing loads in the background.
Every loaded row stays mounted. There is no list virtualization, so render and layout work grows with the transcript.
The event API pages only backward (before cursor). It has no page that starts at a given seq.
Gap
A reader whose read position is far behind still waits for the latest page, then scrolls back through it to reach the "New" marker.
If the read position is older than the first loaded page, the marker shows at the top of the loaded rows, not at the first unread row.
Long-lived Conversations keep all loaded rows in the DOM, which can cause jank.
Cap how far toward the present the first load goes, based on the known read position. Load the rest piece by piece in the background after first paint.
Cap how far back into the past the page loads, and use a virtual list.
Activity