CollapsibleBody kept its collapsed flag in component state, which the timeline's windowed rendering throws away when a row unmounts. A module-level Set<eventId> (never persisted, cleared on reload) now seeds the state, so scrolling away and back, or a re-render, keeps an expanded message open. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA