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
View jumping while you read scrolled-up - the output list now follows the stream only when the viewport sits at the very bottom, enforced by a write-time position gate that is immune to state-machine races: the moment you scroll up even a few pixels, the next auto-scroll write is refused. Re-arming happens only at the very bottom (was a 150px zone that re-armed while you were still reading just above the stream).
History refresh yanking the viewport - a mid-turn session refresh no longer swaps live rows for their persisted twins under your reading point; the applied history is held frozen while you read scrolled-up and lands when you return to the bottom, send a message, or switch agents (a prepended older page still applies immediately).
Streaming growth dragging the view down - anchor corrections are skipped for the last row while you read scrolled-up, so a large streaming response growing at its bottom no longer pulls the viewport with it.
Sending your own message - sending now explicitly pins the view to the bottom, since the sticky-bottom write gate would otherwise refuse the jump while the viewport is up.
Technical Details
VirtualizedOutputList adds a stickyBottomRef write-time gate (latched from live scroll position, distanceFromBottom <= 8px) checked by the item-count and totalSize auto-scroll effects, plus a shouldAdjustScrollPositionOnItemSizeChange override that skips anchor correction for the last row while scrolled-up.
AgentTerminalPane freezes applied history (frozenHistoryRef) while shouldAutoScroll is off, keyed on the head entry uuid so prepended older pages still apply; re-arm zone tightened to <= 8px; handleSendCommand and AgentPanel send now set pinToBottom to force the jump.