The list's animated maintainScrollAtEnd is single-flight and re-pins only within a tenth of the viewport, so in a narrow viewport (VS Code sidebar) each revealed block — several screens tall there — left the reader a second behind and multiple screens above the live edge. The timeline hook now follows growth itself: glide when within a viewport of the end, otherwise jump to one screen above the end and glide the rest. Measured at 420x640: time spent >40px behind dropped from 45% to 11%, max distance from 1682px to 382px. Claude-Session: https://claude.ai/code/session_017TK5JAYDfT3Fotc23UEg98