<feed xmlns='http://www.w3.org/2005/Atom'>
<title>biking_home/ride, 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-09-27T09:41:08Z</updated>
<entry>
<title>Parse FIT Course files as rides</title>
<updated>2026-09-27T09:41:08Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-27T09:41:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=36f0c229310a0527beaf24b4880b25f9afe437c2'/>
<id>urn:sha1:36f0c229310a0527beaf24b4880b25f9afe437c2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Apply go fix modernizations</title>
<updated>2026-09-25T06:57:10Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-25T06:57:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=0eadc1fde03153ff4b60655f15ed86367dc6a3d3'/>
<id>urn:sha1:0eadc1fde03153ff4b60655f15ed86367dc6a3d3</id>
<content type='text'>
Embedded composite literals and min/max clamp idioms, as rewritten by the go fix step of mise check.
</content>
</entry>
<entry>
<title>Persist official climb attempts with climbs pages</title>
<updated>2026-09-13T19:55:59Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-13T19:55:59Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=e3d0beee5be3dd2854b0f4fc10905a4fcdc08f47'/>
<id>urn:sha1:e3d0beee5be3dd2854b0f4fc10905a4fcdc08f47</id>
<content type='text'>
Record one attempt row per (ride, climb, occurrence) when a ride detail
loads, snapshotting distance, elevation gain, slope, cotacol and attempt
timestamps; a climbs-backfill CLI command seeds all existing rides.

New /climbs list page aggregates attempts (medians computed in Go, best
time as min duration) with sortable columns, and /climbs/{id} shows the
median scalar stats, a median normalized elevation profile (50 steps
over each attempt's own length), the full-precision recorded route of
the median-distance attempt on an OSM map, and every attempt with time
at second precision.
</content>
</entry>
<entry>
<title>Split cli.go into per-domain command files</title>
<updated>2026-09-06T14:40:17Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-06T14:40:17Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=db4d2b40895db41ce188549f49a6f277ba95c890'/>
<id>urn:sha1:db4d2b40895db41ce188549f49a6f277ba95c890</id>
<content type='text'>
Move each CLI command into its owning package (mountain_pass, ride, web)
with dispatch and usage in main.go; remove the cli package.
</content>
</entry>
<entry>
<title>feat: Analyse and fix elevation issues</title>
<updated>2026-09-01T13:32:38Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-01T13:32:38Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=7b6bd3ae858c5d7877f9ef137a3ff3d6f71ce1fc'/>
<id>urn:sha1:7b6bd3ae858c5d7877f9ef137a3ff3d6f71ce1fc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add GPX vs FIT parsing benchmark over full ride corpus</title>
<updated>2026-08-29T05:24:55Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-29T05:24:55Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=29a56e6fcc92388c218185682a554bc54f6c98bf'/>
<id>urn:sha1:29a56e6fcc92388c218185682a554bc54f6c98bf</id>
<content type='text'>
</content>
</entry>
<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 touring ride type for cyclotourisme</title>
<updated>2026-08-28T08:19:15Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-28T08:19:15Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=10806900a46b4eba197af9fc768928c57bd33982'/>
<id>urn:sha1:10806900a46b4eba197af9fc768928c57bd33982</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Swap ride read path from GPX to FIT for performance</title>
<updated>2026-08-27T17:07:33Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-27T17:07:33Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=4a61f3eb3103aa512bef1b0d82295403bc4bc977'/>
<id>urn:sha1:4a61f3eb3103aa512bef1b0d82295403bc4bc977</id>
<content type='text'>
Always use FIT for detail, official climb creation and backtest;
keep GPX fallback for legacy rides pending backfill. FIT is 10-20x
smaller and parses without XML.
</content>
</entry>
</feed>
