Files
zzg 47fbe583dc Make the Insights tab respect the selected time range
The Insights tab ignored the time-range picker in the upper right: clicking
'15 minutes' still showed findings from the analyzer's fixed background
window (WindowDays, e.g. 7 days), because /api/insights always returned the
cached background result regardless of what range the UI requested.

- internal/insights/analyzer.go: split Refresh()'s logic into a shared
  analyze(from, to) core, and add a public AnalyzeRange(from, to) that runs
  the detectors on demand for an arbitrary window without disturbing the
  cached background result used by Latest() and the Stop-hook/surfacing
  path.
- internal/web/insights.go: handleInsights now honors optional from/to query
  params, calling AnalyzeRange for that window instead of Latest() when
  present.
- internal/web/static/app.js: loadInsights() sends the current
  state.rangeMicros as from/to, and the window label now renders
  minutes/hours/days appropriately (windowLabel()) instead of always
  rounding up to whole days, so a 15-minute selection reads as '15 minutes'
  rather than '1 day'.
2026-09-19 21:15:47 -07:00
..
…