| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
| |
Run deadcode with -test and without the vendored node_modules package so the
check reports only genuinely unreachable code instead of test-only helpers and
vendored functions. Remove the three web helpers it still flagged (formatBikeType,
formatRideType, dataQualityURL) that had no callers. Apply the go fix
modernizations the check gate performs (range-over-int loops and embedded-field
composite literals) that the gate had rewritten in the working tree.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move climb detection, slope, and Cotacol scoring out of ride into a new
climb package that operates on a geometry-only Route (distances, elevations,
coords). Ride embeds climb.Route and keeps its timing and telemetry columns.
- climb.Detect returns []DetectedClimb (Climb + ride-absolute Start).
- Climb owns its sliced geometry; indices are local, with Start reported at
the detection boundary for absolute position.
- Detected bounds use core.Interval; freeRegions claim suppression fixed.
- ride no longer builds slices: ClimbFromDist/ClimbFromIndexes/climbFrom and
ride.Climb/Interval/Range are removed; rideanalysis, mountain_pass MatchClimb,
and web views are rewired to climb types.
- New internal/routetest builds climb.Route from the ride DSL; ridetest reuses
it and adds timestamps and telemetry.
- Tests moved to climb (synthetic detection and difficulty) and kept in ride
for GPX-example integration; ride.comparison detection coverage retained.
- mountain_pass.nearestCrossing now reuses geo.Nearest.
|
| |
|
|
|
|
|
|
| |
Add internal/ridetest parsing "2km at 7% | 1km at -7%" sections into a
ride.Ride, with Sampling, StartCoord, StartTime and StartElevation options,
plus per-section hr/cad/w metrics. Replace the package-private RideBuilder in
climb/difficulty tests and export FromColumnsWithMetrics so metric columns
can be built outside the ride package.
|
| |
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
|
|
| |
they read
Ride now exposes its columns as component getters (Distances, Elevations,
Coords, Timestamps, and the optional Powers, Cadences, HeartRates) with the
coords field unexported. difficultyScore, movingTime, Slope and the climb
detection internals are pure functions over the specific slices they use,
and Climb carries only the component slices it needs instead of a whole
Ride.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|