- Fix nil pointer dereference in clock.go (guard GetOrCreateSettings and
GetOrCreateRPGStats errors before accessing fields)
- Fix timezone bug in handleSetBreakMsg (was using system time.Now()
instead of user's configured timezone)
- Remove dead code: sendExportMonthPicker (unused wrapper)
- Simplify xpForWorkSeconds (xpPerSecond=1, inline to just return sec)
- Extract computeStreakFromDates as pure testable function from
recalcAggregates; add 6 tests covering empty, current, gaps,
no-today, long streak, longest-not-current edge cases
- Update README with full feature documentation: RPG, League, Salary,
Burnout, Work Types, Inline History Editing, all missing commands
- Restore TotalWorkSeconds, CurrentStreak, LongestStreak writes in
computeAndAwardXP and updateStreak (incremental on clock out)
- Add recalcDayWorkSeconds and recalcAggregates for event edit path
(recompute day + total + streak from scratch when events change)
- Call recalcAggregates after editEventTimeSet, deleteEventConfirm,
addEventDo in calendar.go
- Remove runtime computeStreaks and totalWorkSeconds (N+1 scan)
from RPG display, burnout, and clockOut
- Add SetDailyWorkSeconds, SumDailyWorkSeconds store methods
- Clean up unused dead functions and dead code in rpg.go