Skip to content

Kai v2.3.1

Choose a tag to compare

@gertybot gertybot released this 29 Sep 04:04
· 29 commits to main since this release
be0503e

Bug fix release: tyre mileage tracking now uses the athlete's own local date, not UTC. Additive: no commands, paths or credentials change from v2.3.0.

Fixed

  • tyre-mileage.sh compared a tyre's fitted_date against activities' UTC timestamps instead of the athlete's own local date (#22):

    • East of UTC (e.g. Sydney): a ride on the local morning of the fit day could have a UTC timestamp before UTC midnight of that date, so it was never fetched from Strava at all and silently missed.
    • West of UTC (e.g. the Americas): a ride the evening before the fit day could fall after UTC midnight and be wrongly counted.

    The fix compares each activity's own start_date_local (which Strava already provides, per-activity, from its GPS-detected timezone) against fitted_date directly — no machine or ledger timezone configuration needed. The filtering logic moved into a small, independently tested module (tyre_activity_filters.py); the Strava after= fetch keeps a generous margin for efficiency only, with the local-date compare doing the real filtering afterwards.

    Verified against live data: a real early-morning ride in Sydney that the old code fetched zero times is now correctly counted, and a same-fetch-window ride from the day before is still correctly excluded.

Known issues

  • FIT downloads from the Garmin skill are saved as a ZIP, so analyze/parse on them fails (#15).
  • SECURITY.md holds Kai's own agent rules on handling credentials, but GitHub treats that filename as the repo's vulnerability-reporting policy (#24; fix in review).
  • The Hermes Agent and Codex setups are still untested against live installs.

Full changelog: v2.3.0...v2.3.1