Heatmap -> Journal drill-down (PrimeBAT only):
- clicking an Activations-by-hour/day cell jumps to the Journal filtered to
that recurring day-of-week + hour (new query.filterDow/filterHour session
props; same local-time bucketing as calc.heatmap)
- Journal shows a "Time filter: Thu 12:00-12:59" chip with an X to clear;
filter composes with existing filters and is included in CSV export
- getJournalPage clamps out-of-range pages when a filter shrinks the set
Layout:
- filter bar moved below the tab strip so the tabs no longer shift when the
bar hides on Overview (tab bar y verified pixel-stable across tabs)
- popup titles (AlarmDetail/EventDetail) auto-shrink their font to fit long
source paths on one line without colliding with the state/priority chips
Alarm health -> B (score ~88):
- alarmsim gains a MODE flag: "healthy" (default) generates ~12 activations/hr
with an 80/15/5 priority mix and no chatter/standing/fleeting/floods;
"chaos" restores the original stress profile
- SimHarness gains a SimReset one-shot timer (disabled) that clears all sim
tags; probe P3 reports health-grade ground truth for the 8h window
- Dashboard onStartup now re-anchors relative range presets (4h/8h/24h/7d)
to now on session start - fixes stale Designer-baked startMs/endMs pinning
every new session to an old window
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>