mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-25 13:10:13 +00:00
da15079f34
The progressive paged event fetch replaced the list with the first 200 rows on every SignalR/30s refresh, then re-grew it page by page. On sessions with >200 events this shrink-then-grow changed the page height repeatedly, making the scrollbar/viewport jump while reading and dropping open "Details" panels. Make the event list append-only and monotonic via mergeNewEvents: only genuinely new events (keyed identically to the React row key) are appended at the bottom; existing rows are never replaced. When a refresh brings nothing new the same array reference is returned, so React skips the re-render and scroll position + open details stay put. Native scroll anchoring then keeps the viewport pinned as new events append below. Session telemetry is append-only/immutable, so keeping existing rows is safe. The transient-empty-refresh guard is now subsumed by the merge; the dead sessionIdRef param (only used by the removed warning) is dropped. Adds mergeNewEvents unit tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>