12c66d676a
The scroll-position memory introduced in 0.17.2 still produced a visible "chat appears at the top then jumps" frame when switching back into a conversation. Cause: both scroll-affecting effects (auto-bottom on new messages, restore on chat re-entry) used useEffect, which fires AFTER the browser paints the freshly-committed DOM. So users saw scrollTop=0 for one frame before the effect ran and corrected it. Switching both to useLayoutEffect moves the scroll write into the same commit phase as the message-list DOM update, so the very first paint already shows the correct position — single paint, no flicker. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>