| Commit message (Collapse) | Author | Age | |
|---|---|---|---|
| * | Lint & fix | Martin Kagamino Lehoux | 2026-08-27 |
| | | |||
| * | Migrate cross-package ride test fixtures to the ridetest DSL | Martin Kagamino Lehoux | 2026-08-25 |
| | | | | | | | | | | | | Replace raw FromColumns 4-array blocks in official_climb, mountain_pass and web test rides with ridetest.MustRide strings. Add a Heading option to ridetest for routes whose points are spaced differently per kilometer (e.g. the mountain_pass expanded-bounds route at 0.1 degrees/km). Lap, direction and cluster tests in official_climb keep FromColumns: the DSL generates monotonic northeast coords and cannot express per-point loops or reversals. | ||
| * | analytics grouping | Martin Kagamino Lehoux | 2026-08-25 |
| | | |||
| * | Remove per-index ride accessors now dead after the component migration | Martin Kagamino Lehoux | 2026-08-25 |
| | | | | | | | | | The DistanceM, ElevationM, Coord, Timestamp and optional metric index accessors (HeartRateBpm, CadenceRpm, PowerW) are no longer used by any production code now that algorithms and consumers read ride components. Tests that asserted metric parsing and coordinates now read the component slices (Distances, Coords, HeartRates, Cadences, Powers). | ||
| * | Make mountain pass and web consumers take ride components instead of a whole ↵ | Martin Kagamino Lehoux | 2026-08-25 |
| | | | | | | | | | | | Ride rideBounds, nearestCrossing and DetectCrossings now accept the coordinate, distance and elevation component slices they read. LoadMountainPassesAroundRide takes the coords slice only. Web ride view builders and the official climb creation path iterate ride components (Coords, Distances, Elevations) rather than per-index accessors on Ride. | ||
| * | 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 on-demand pprof profiling grouped by route | Martin Kagamino Lehoux | 2026-08-23 |
| | | | | | Expose pprof at /debug/pprof via -pprof flag, tag each handler with runtime/pprof route label, add handleRoute helper to avoid repeating patterns, and document UI workflow in README. | ||
| * | Apply go fix modernizations and refresh TODO list | Martin Kagamino Lehoux | 2026-08-23 |
| | | |||
| * | Handle Strava rate limiting with abort, retry time and daily usage display | Martin Kagamino Lehoux | 2026-08-23 |
| | | | | | | | | | | | | | | Strava sync for 167 rides exceeds the 100/15-min read limit (2 calls per ride). Previously a 429 was treated as a skipped ride, so every remaining ride also failed silently. Now GetJSON returns a typed RateLimitError with RetryAfter computed from Retry-After/Date and X-RateLimit headers (15-min window resets at :00/:15/:30/:45, daily at midnight UTC) and tracks Read/Overall usage. syncRides aborts on 429 with partial progress instead of skipping, and handleSync emits an SSE error with retry time, daily usage vs limit and structured rateLimit snapshot; progress and complete events also carry the snapshot for the UI to display. Frontend shows Read daily/15-min usage in progress details and on completion. | ||
| * | 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 |
| | | |||
| * | fix: ride detail summary stats fit on one line | Martin Kagamino Lehoux | 2026-08-21 |
| | | | | | | | | The summary dl used a 3-column grid, so the 4th stat (elevation) wrapped to a second line. Switch to flex with space-around and a smaller gap so all four stats share one line while still wrapping gracefully on very narrow screens. | ||
| * | Upgrade to Go 1.27 and apply go fix modernization | Martin Kagamino Lehoux | 2026-08-21 |
| | | |||
| * | Use OSM as the single source of mountain passes | Martin Kagamino Lehoux | 2026-08-21 |
| | | | | | | | | Replace the centcols CSV download/enrichment pipeline with OSM PBF extraction as the primary (only) source: merge osmpass into mountain_pass, drop the centcols table and model fields, filter to named passes with elevation, and remove the centcols CLI flags. | ||
| * | 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): mark climb boundaries on ride maps | Martin Kagamino Lehoux | 2026-08-17 |
| | | |||
| * | feat(web): display nearby passes on ride maps | Martin Kagamino Lehoux | 2026-08-17 |
| | | |||
| * | feat(web): add official climb chart grids | Martin Kagamino Lehoux | 2026-08-17 |
| | | |||
| * | refactor(web): tidy climb matching controls | Martin Kagamino Lehoux | 2026-08-17 |
| | | |||
| * | refactor(web): split ride detail rendering concerns | Martin Kagamino Lehoux | 2026-08-17 |
| | | |||
| * | feat(web): refine ride profile climb labels | Martin Kagamino Lehoux | 2026-08-17 |
| | | |||
| * | chore(web): add Stylelint CSS checks | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | feat(web): improve official climb profile | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | fix(web): use Cotacol for climb difficulty | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | refactor(web): migrate browser code to TypeScript | Martin Kagamino Lehoux | 2026-08-16 |
| | | |||
| * | refactor(web): split ride detail JavaScript | 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 |
| | | |||
| * | refactor: centralize test database setup | Martin Kagamino Lehoux | 2026-08-14 |
| | | |||
| * | refactor: extract ride analysis | Martin Kagamino Lehoux | 2026-08-14 |
| | | |||
| * | 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 |
| | | |||
| * | chore: Update Go tooling configuration | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | feat: Save Strava activities without routes | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
| * | fix: Continue Strava import after invalid activities | Martin Kagamino Lehoux | 2026-08-11 |
| | | |||
