This repository was archived by the owner on Sep 13, 2026. It is now read-only.
v0.3.16
Fixed
- Usage: active-minutes undercount — the idle-skip in daily
downsampling compared all 28 ambient fields, but time-derived fields
(window_remaining_minutes,window_resets_at) change every poll,
preventing the skip from ever firing. AddedactivityKey()comparing
only 4 traffic-indicator fields (concurrent_sessions,
tokens_in,tokens_out,tokens_cached) so idle periods are
correctly detected and excluded. Gap detection and degradation burden
still use the full 28-fieldambientKey(unchanged). - Dashboard: heatmap brush reset on poll — the Recharts
Brush
startIndex/endIndexwere plain constants recomputed every render.
Whenrowschanged on each 60s poll,getDerivedStateFromProps
reset the brush to full range. Converted touseStatewith a
useEffectthat resets only when the date preset changes. - Dashboard: tooltip lag —
TooltipProvider delay={300}caused a
300ms open delay on all 63 tooltips. Changed todelay={0}(instant
open) withcloseDelay={150}to prevent flicker on rapid crossings. - Dashboard: degradation bands extend past resolution —
buildDegradationBandsfiltered outresolvedevents, causing bands
to extend tolastTsinstead of stopping at the resolution
timestamp. Rewrote to walk all events (onset + morph + resolved):
morph pushes the current band and re-anchors; resolved closes the
band at the resolved timestamp; unresolved extends tolastTs.