Repository navigation
v0.40.6 — decompose IntervalHistory into hooks
Tech-debt batch 5b (epic #161). Behavior-preserving decomposition.
- #156 —
IntervalHistory.tsx1424→899 LOC; extracteduseIntervalFetch/useOverscanLoad/useChartNavigationhooks (pure window math stays inintervalZoom.ts). Explicitly guarded every payload deref against the loading/null state (the v0.40.2 #150 crash class); preserved fresh-curWindowRef, horizontal-wheel pan + stopPropagation, and the justified exhaustive-deps disable.
Verified: Docker test 983 / build green; staging force-mount probe (cleared layout → all interval widgets mount) renders clean, 0 console errors. No schema change. Gesture interactions (zoom/pan/drag-select) are byte-equivalent code — confirm on the live dashboard.