| Commit message (Collapse) | Author | Age | |
|---|---|---|---|
| * | Chart power vs time for official climb attempts | Martin Kagamino Lehoux | 2026-09-25 |
| | | | | | 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. | ||
| * | Match official climbs against their recorded sample | Martin Kagamino Lehoux | 2026-09-24 |
| | | | | | | | | | | | | | | | | | | | | | | | 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. | ||
| * | Persist official climb attempts with climbs pages | Martin Kagamino Lehoux | 2026-09-13 |
| | | | | | | | | | | | | | | 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. | ||
| * | Preview: analyze a raw GPX or FIT file without persisting it | Martin Kagamino Lehoux | 2026-09-06 |
| | | |||
| * | Display Cotacol in the ride detail summary | Martin Kagamino Lehoux | 2026-09-01 |
| | | |||
| * | Rename rides.type to external_sport_type, infer bike type from Strava sport ↵ | Martin Kagamino Lehoux | 2026-08-28 |
| | | | | | type and display categories in UI | ||
| * | Add Strava external link to ride detail | Martin Kagamino Lehoux | 2026-08-27 |
| | | |||
| * | Use radio inputs and collapsible curation on ride detail | Martin Kagamino Lehoux | 2026-08-27 |
| | | | | | | | Replace dropdowns with vertical radio groups for bike and ride type. Make curation block collapsible (details/summary) collapsed by default and expanded when both categories are empty. | ||
| * | Lint & fix | Martin Kagamino Lehoux | 2026-08-27 |
| | | |||
| * | analytics grouping | Martin Kagamino Lehoux | 2026-08-25 |
| | | |||
| * | Ride type multiselect filter with a checkbox group across library and analytics | Martin Kagamino Lehoux | 2026-08-24 |
| | | |||
| * | Add type filtering, drop hard-coded filters and route filter, tune backtest | Martin Kagamino Lehoux | 2026-08-24 |
| | | |||
| * | Add data quality bulk categorisation page | Martin Kagamino Lehoux | 2026-08-24 |
| | | |||
| * | Add hardcore ride categorisation with bike and ride types | Martin Kagamino Lehoux | 2026-08-23 |
| | | |||
| * | Add normalized difficulty versus moving duration to analytics | Martin Kagamino Lehoux | 2026-08-23 |
| | | | | | | | | Extend analytics with a second scatter plotting Cotacol per 100 km against moving hours, keep speed versus Cotacol as first chart, render both canvases from shared points, open ride detail in a new tab on dot click, and keep all website copy in English. | ||
| * | 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. | ||
| * | Add distance filter to analytics and go fix to the check gate | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | Componentize and isolate the ride range filter | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | Add global analytics scatter chart | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | Add global analytics page shell and split server.go by concern | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | feat(web): add sortable average speed column to ride library | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | feat(ride): persist canonical moving time, preserve Strava reference | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | feat(web): add ride library filters | Martin Kagamino Lehoux | 2026-08-18 |
| | | |||
| * | feat(web): display nearby passes on ride maps | Martin Kagamino Lehoux | 2026-08-17 |
| | | |||
| * | refactor(web): tidy climb matching controls | Martin Kagamino Lehoux | 2026-08-17 |
| | | |||
| * | feat(web): improve official climb profile | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | refactor(web): establish JavaScript module tooling | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | refactor(web): extract testable profile logic | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | refactor(web): derive climb display groups | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | refactor(web): split official climb profile script | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | feat(web): improve ride detail climb profiles | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | feat: add official climb workflow | Martin Kagamino Lehoux | 2026-08-14 |
| | | |||
| * | refactor(web): extract ride detail script | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | refactor(web): centralize OKLCH palette | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | refactor(web): extract embedded stylesheet | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | feat: add interactive ride profile | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | fix: Continue Strava import after invalid activities | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | feat: Add Strava import progress | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | feat: Add ride detail map | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | feat: Add ride table sorting | Martin Kagamino Lehoux | 2026-08-07 |
| | | |||
| * | feat: Add web ride library with Strava sync | Martin Kagamino Lehoux | 2026-08-05 |
