Dashboard
- Fix
ReferenceError: cutoff is not definedin the hourly filter that blanked the entire dashboard (#73, thanks @thomasleveil) - Fix hourly chart ignoring the range upper bound for
week/month/prev-monthranges - Fix 404 on dashboard URLs containing query strings (
?range=...&models=...) so reloads and bookmarks work, with regression tests (#81, thanks @jakduch) - Fix blank dashboard for users whose data only contains non-billable / unknown models, or rows with empty model names:
COALESCE(NULLIF(model, ''), 'unknown')normalises empty-string models (in both SELECT and GROUP BY so mixed NULL + '' rows collapse to a single "unknown" group), and the default selection falls back to all models when no billable models exist (#109, thanks @HaydenHaines) - Use
ThreadingHTTPServerso a slow/api/datano longer blocks other dashboard requests (#79, thanks @jakduch) - Add a
Todayrange button (#112, thanks @Fruhji)
Scanner
- Fix incremental scan not updating
first_timestampwhen a newly discovered session's records arrive out of order (#111, thanks @Fruhji)
Project / docs
- Adopt
AGENTS.mdas the canonical agent guide (shared with Codex);CLAUDE.mdis now a thin@AGENTS.mdimport - Codify the rule that future PR merges must preserve original-author commits (
merge --no-fffor full merges,cherry-pickfor partial,Co-Authored-Bytrailers when applying hunks manually) - Drop unused
.claude/launch.json