<feed xmlns='http://www.w3.org/2005/Atom'>
<title>biking_home/geo, 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-27T10:07:11Z</updated>
<entry>
<title>clenaup</title>
<updated>2026-08-27T10:07:11Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-27T10:07:11Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=522512197de372aa9b9c5584711619a76a5546d8'/>
<id>urn:sha1:522512197de372aa9b9c5584711619a76a5546d8</id>
<content type='text'>
</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: bound climb detection by matched official climbs</title>
<updated>2026-08-21T13:30:51Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-08-21T13:30:51Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/biking_home/commit/?id=5e3d39cda5250cb55bc8324bcf96b0ab4b36c47f'/>
<id>urn:sha1:5e3d39cda5250cb55bc8324bcf96b0ab4b36c47f</id>
<content type='text'>
Detected climbs no longer absorb an official climb's range: official climbs
matched to the route by coordinates claim their stored start/end range, and
climb detection now runs only in the free regions around them. On ride 263 a
single absorbed Cat 2 ascent is split so creating a first-half official climb
lets the second half be detected on its own.

- ride: add Range, freeRegions, and DetectClimbs(claimed); exclude claimed
  ranges so a climb never overlaps one
- official_climb: MatchClimb now bounds-matches purely by coordinates without
  needing a detected climb; extract geo.Nearest shared helper
- rideanalysis: Analyze builds claimed climbs from matched official climbs and
  detects only in free regions; render official vs unmatched climbs separately
</content>
</entry>
</feed>
