<feed xmlns='http://www.w3.org/2005/Atom'>
<title>biking_home, 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-27T18:10:39Z</updated>
<entry>
<title>Link ride detail official climbs to climb detail</title>
<updated>2026-09-27T18:10:39Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-27T18:10:39Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=e82599233fa579f665c62636389ab2dc27b10d2a'/>
<id>urn:sha1:e82599233fa579f665c62636389ab2dc27b10d2a</id>
<content type='text'>
</content>
</entry>
<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>Chart power vs time for official climb attempts</title>
<updated>2026-09-25T06:46:58Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-25T06:46:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=077aa1700fbcaf3f499c2178e0e58e89ae9dcaf8'/>
<id>urn:sha1:077aa1700fbcaf3f499c2178e0e58e89ae9dcaf8</id>
<content type='text'>
Snapshot average power per attempt in a nullable average_power_w column (backfilled from stored rides), plot each powered attempt on the climb page as duration vs average watts with ride hover and click-through, and show avg power in the attempts table.
</content>
</entry>
<entry>
<title>Match official climbs against their recorded sample</title>
<updated>2026-09-24T06:37:33Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-24T06:37:33Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=90614736f2a0c556f31eca5361b3c032f5f309f6'/>
<id>urn:sha1:90614736f2a0c556f31eca5361b3c032f5f309f6</id>
<content type='text'>
An official climb matched on endpoint coordinates alone. On a loop ridden
the other way the route meets the climb's top before its bottom, so pairing
each start with the first end inside its lap window credited a 5.9 km
passage as the 850 m Chemin de la Tour Pey Blanc, and a 49 km one on
another ride.

Climbs now keep the sample of the segment they were created from: the
recorded length and elevation gain of the selected route points, captured
by the ride detail and preview handlers and stored NOT NULL. Matching takes
the whole route and drops any candidate outside ±50% of that sample on
either axis, and attempts are refreshed by upsert and prune so re-analyzing
a ride keeps the recorded-at stamp of the passages that survive.

The backfill leaves the web package: backfill.Run recomputes ride values
then official climb attempts as a single `go run . backfill` command
(climbs-backfill is gone), rideanalysis owns the attempt snapshot, and the
mountain-pass loading margin is shared. Applied to the stored rides it
stamps 78 samples, drops the four bogus attempts and leaves ride 800 with
its three Pont Rout passages.
</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>Preview: analyze a raw GPX or FIT file without persisting it</title>
<updated>2026-09-06T10:38:16Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-06T10:38:16Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=8e0c55230ef59869bda1ca19ca8697b447d57698'/>
<id>urn:sha1:8e0c55230ef59869bda1ca19ca8697b447d57698</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Display Cotacol in the ride detail summary</title>
<updated>2026-09-01T13:44:10Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-09-01T13:44:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=28a7c9f281c16d1928b37dd1afdfe8399b7a03f8'/>
<id>urn:sha1:28a7c9f281c16d1928b37dd1afdfe8399b7a03f8</id>
<content type='text'>
</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>
</feed>
