| Commit message (Collapse) | Author | Age | |
|---|---|---|---|
| * | Suppress overlapping detected climbs when official claims are unsorted | Martin Kagamino Lehoux | 2026-08-23 |
| | | |||
| * | Merge ride and rides packages into ride/store following mountain_pass structure | Martin Kagamino Lehoux | 2026-08-23 |
| | | | | | | | | | Consolidate persistence (Save, List, Backfill) into ride/store.go alongside ride.go/climb.go/moving_time.go, rename rides.Ride to ride.StoredRide to avoid collision with parsed ride.Ride, update all web/cli consumers and RideView to use named Ride field, adjust templates and regenerate templ files, and remove rides directory. | ||
| * | Require a 3.5% minimum slope on detected climbs, re-segmenting gentler stretches | Martin Kagamino Lehoux | 2026-08-21 |
| | | | | | | | | | | | | | | | A detected climb must now average at least 3.5% slope with re-segmentation: gentle drags are split into their qualifying steeper parts instead of being reported wholesale or dropped. Qualifying climbs keep their previous boundaries exactly; only regions whose classic best climb averages below the threshold get re-segmented (full-scan for the best qualifying sub-segment, found=false when none exists). QA: A/B across data/rides (362 rides) went from 137 to 133 climbs, 23 rides changed; the 7 fully-dropped rides were audited to contain zero qualifying sub-segments. Example-ride tests updated for the new behavior; the resolved "minimum slope" TODO was removed. | ||
| * | feat: bound climb detection by matched official climbs | Martin Kagamino Lehoux | 2026-08-21 |
| | | | | | | | | | | | | | | | | 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 | ||
| * | refactor(ride): express category thresholds as inclusive min scores | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | refactor(ride,mountain_pass): remove dead code identified by deadcode analyzer | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | refactor(ride,rideanalysis): replace magic numbers with named constants | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | feat(ride): skip rides without track points in backtest | Martin Kagamino Lehoux | 2026-08-20 |
| | | |||
| * | chore(bench): exclude rides with low moving time ratio | Martin Kagamino Lehoux | 2026-08-20 |
| | | |||
| * | chore(bench): exclude rides under 10 km | Martin Kagamino Lehoux | 2026-08-20 |
| | | |||
| * | chore(bench): exclude short rides | Martin Kagamino Lehoux | 2026-08-20 |
| | | |||
| * | fix(ride): use effort metrics for moving time | Martin Kagamino Lehoux | 2026-08-20 |
| | | |||
| * | fix(ride): improve moving time against Strava | Martin Kagamino Lehoux | 2026-08-20 |
| | | |||
| * | feat(ride): compute moving time from GPX with backtest | Martin Kagamino Lehoux | 2026-08-20 |
| | | | | | | | | | Add ride.MovingTime, a speed-threshold algorithm over track timestamps. Add a -backtest CLI command comparing computed values against Strava's reference across all stored rides, with a percentile distribution summary. Baseline: mean err 3.9%, p50 1.6, p75 4.6, p90 8.4, p95 12.1, p99 44.9. | ||
| * | fix(web): use Cotacol for climb difficulty | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | feat: add official climb workflow | Martin Kagamino Lehoux | 2026-08-14 |
| | | |||
| * | chore: remove legacy chart rendering | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | feat: Persist Cotacol ride values | Martin Kagamino Lehoux | 2026-08-08 |
| | | |||
| * | feat: Add Strava stream metrics | Martin Kagamino Lehoux | 2026-08-07 |
| | | |||
| * | refactor: Store rides in columns | Martin Kagamino Lehoux | 2026-08-07 |
| | | |||
| * | feat: Add web ride library with Strava sync | Martin Kagamino Lehoux | 2026-08-05 |
| | | |||
| * | feat: Detect mountain pass crossings, name climbs after passes, render ride ↵ | Martin Kagamino Lehoux | 2026-08-03 |
| | | | | | | | | | | | charts - osmpass: extract mountain_pass=yes nodes from an OSM PBF, enrich centcols passes with OSM coordinates, resumable -fetch-osm download - mountain_pass: DetectCrossings for a ride, MatchClimb to name a climb after the pass it tops - ride: expose Points(), add Climb.Top() and Climb.Name - chart: -chart renders elevation profile with climb bands and pass markers - commands: -fetch-osm, -extract-osm, -import-cached, -enrich | ||
| * | feat: Add Cotacol difficulty score to climbs | Martin Kagamino Lehoux | 2026-08-01 |
| | | |||
| * | feat: Add Cotacol difficulty score for rides | Martin Kagamino Lehoux | 2026-08-01 |
| | | |||
| * | feat: Download mountain passes from centcols into SQLite | Martin Kagamino Lehoux | 2026-08-01 |
| | | |||
| * | Cleanup parsing | Martin Kagamino Lehoux | 2025-04-21 |
| | | |||
| * | Implement climb score | Martin Kagamino Lehoux | 2025-04-21 |
| | | |||
| * | First implem of similar KOM | Martin Kagamino Lehoux | 2025-04-21 |
| | | |||
| * | Add more data in climb & point | Martin Kagamino Lehoux | 2025-04-21 |
| | | |||
| * | Add some more tests | Martin Kagamino Lehoux | 2025-04-20 |
| | | |||
| * | chore: Add test & cleanup logs | Martin Kagamino Lehoux | 2024-12-30 |
| | | |||
| * | fix: Remove too short outliers | Martin Kagamino Lehoux | 2024-08-07 |
| | | |||
| * | fix: One more iteration to find the best climb | Martin Kagamino Lehoux | 2024-07-28 |
| | | |||
| * | test: Add failing test for climb inside long false flat | Martin Kagamino Lehoux | 2024-07-28 |
| | | |||
| * | fix: Fix climb finder when climb is not highest | Martin Kagamino Lehoux | 2024-07-28 |
| | | |||
| * | test: Add some test to fix behavior | Martin Kagamino Lehoux | 2024-07-28 |
