<feed xmlns='http://www.w3.org/2005/Atom'>
<title>biking_home/strava, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.kagamino.dev/biking_home/atom?h=main</id>
<link rel='self' href='https://git.kagamino.dev/biking_home/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/'/>
<updated>2026-08-28T20:38:57Z</updated>
<entry>
<title>Rename rides.type to external_sport_type, infer bike type from Strava sport type and display categories in UI</title>
<updated>2026-08-28T20:38:57Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-28T20:38:57Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=827b55f610119d553b965ceb4d3631f0481bbb3b'/>
<id>urn:sha1:827b55f610119d553b965ceb4d3631f0481bbb3b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>modernize</title>
<updated>2026-08-28T08:52:03Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-28T08:52:03Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=ff57ebcbe4949b7b53e7c42ecc7916b601a67213'/>
<id>urn:sha1:ff57ebcbe4949b7b53e7c42ecc7916b601a67213</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add dual GPX/FIT exporter and backfill for rides</title>
<updated>2026-08-27T17:03:34Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-27T17:03:34Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=d7b93325d4f70eeab369fa8a3c4cce9f0c4e0081'/>
<id>urn:sha1:d7b93325d4f70eeab369fa8a3c4cce9f0c4e0081</id>
<content type='text'>
Phase 1 writes both .gpx and .fit on Strava import, adds fit_path
column, renames storage.gpx_dir to storage.rides_dir, and backfills
missing FIT files from existing GPX without breaking CLI progress.
FIT files are gitignored.
</content>
</entry>
<entry>
<title>Lint &amp; fix</title>
<updated>2026-08-27T06:05:58Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-27T06:05:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=1e8efcdb7e7747072e83bda3d4a7f0b3810a439d'/>
<id>urn:sha1:1e8efcdb7e7747072e83bda3d4a7f0b3810a439d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove per-index ride accessors now dead after the component migration</title>
<updated>2026-08-25T09:34:27Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-25T09:34:27Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=e54e2b313a37c2d2af4e3e537ad4e64e8c816e86'/>
<id>urn:sha1:e54e2b313a37c2d2af4e3e537ad4e64e8c816e86</id>
<content type='text'>
The DistanceM, ElevationM, Coord, Timestamp and optional metric index
accessors (HeartRateBpm, CadenceRpm, PowerW) are no longer used by any
production code now that algorithms and consumers read ride components.
Tests that asserted metric parsing and coordinates now read the component
slices (Distances, Coords, HeartRates, Cadences, Powers).
</content>
</entry>
<entry>
<title>Apply go fix modernizations and refresh TODO list</title>
<updated>2026-08-23T11:13:30Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-23T11:13:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=1125e0b7086dd2b71e0558aaf641c23dea02f200'/>
<id>urn:sha1:1125e0b7086dd2b71e0558aaf641c23dea02f200</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Handle Strava rate limiting with abort, retry time and daily usage display</title>
<updated>2026-08-23T09:44:41Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-23T09:44:41Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=d0875a51b2f07766b339b34a580d4e6e9fab348d'/>
<id>urn:sha1:d0875a51b2f07766b339b34a580d4e6e9fab348d</id>
<content type='text'>
Strava sync for 167 rides exceeds the 100/15-min read limit (2 calls per ride).
Previously a 429 was treated as a skipped ride, so every remaining ride also
failed silently. Now GetJSON returns a typed RateLimitError with RetryAfter
computed from Retry-After/Date and X-RateLimit headers (15-min window resets
at :00/:15/:30/:45, daily at midnight UTC) and tracks Read/Overall usage.
syncRides aborts on 429 with partial progress instead of skipping, and
handleSync emits an SSE error with retry time, daily usage vs limit and
structured rateLimit snapshot; progress and complete events also carry the
snapshot for the UI to display. Frontend shows Read daily/15-min usage in
progress details and on completion.
</content>
</entry>
<entry>
<title>Upgrade to Go 1.27 and apply go fix modernization</title>
<updated>2026-08-21T13:52:02Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-21T13:52:02Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=d25c2cba801cbaa9f9c0d5a92b90f153630ffe24'/>
<id>urn:sha1:d25c2cba801cbaa9f9c0d5a92b90f153630ffe24</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Save Strava activities without routes</title>
<updated>2026-08-11T12:33:27Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-11T12:33:27Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=3f91689bc9a4560b29bac1b48ac81aebe83e3c2a'/>
<id>urn:sha1:3f91689bc9a4560b29bac1b48ac81aebe83e3c2a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: Continue Strava import after invalid activities</title>
<updated>2026-08-11T12:19:01Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-11T12:19:01Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=7d13374eec8c33c4e14cc5b0c3de36e4f620ce0e'/>
<id>urn:sha1:7d13374eec8c33c4e14cc5b0c3de36e4f620ce0e</id>
<content type='text'>
</content>
</entry>
</feed>
