Releases: ejfox/moto-gpx
Release list
v0.5.0 — built-for-decades docs pass
Documentation-only release. Every source module now carries a contract header, typedefs, section banners, named constants, JSDoc on every export, and algorithm-level comments. No behavior changes. See CHANGELOG.md for full details.
v0.4.0 — superlatives
Every run now ends with a "superlatives" banner — the fun facts you'd actually want to read after a ride, printed to console and stashed in stats.json.superlatives.
Core stats from GPX alone
- fastest mile split + pace
- longest non-stop streak (min + miles)
- highest / lowest point with lat/lon
- biggest single climb and descent with avg grade
- steepest sustained grade
- longest straightaway
- turns per mile (twistiness index)
- compass extremes (N/S/E/W with timestamps)
- time in each speed bucket
- time of day distribution
F1-style telemetry
- top speed with coordinates
- 0-60 mph time
- % time above 60 mph
- peak cornering G (computed via 3-point curvature × v²/r)
- hardest braking G
- biggest launch G
- smoothness score 1-10
When OSM and Weather were enriched
- "town signs you passed" — chronological list of places along the route
- hottest / coldest / windiest stage
Equivalencies
Distance and climb translated into universally-relatable units: football fields, marathons, Empire State Buildings, Eiffel Towers, Kilimanjaros.
Default on. Pass --no-superlatives to skip.
v0.3.1 — real-data bug fixes
Testing against a real Garmin file (5689-point Hudson Valley loop) surfaced three bugs:
Fixed
- max_speed_mph false spikes from GPS jitter. Adjacent 1s Garmin samples with a 50m coordinate hiccup were reporting as 100+ mph. Now computed over a 5-second sliding window — single-point jitter averaged across multiple real samples.
- OSRM routes on loop rides. A ride that starts/ends at the same driveway was routing start→end via 13 meters with
extra_distance_pct: 707752. Now detects loops (start/end within 200m) and routes via the farthest trkpt as a waypoint. New props:is_loop,waypoint. - Misleading DEM summary line printed "vrt" even when gdalbuildvrt failed. Now prints only what actually built.
- Empty media folders no longer produce an empty
media.geojson.
v0.3.0 — QGIS mise en place
Big jump. Tool now preps a full set of QGIS-ready layers for hand-making
motorcycle trip maps, with optional network enrichments and SRTM DEM.
New layers (default on)
- stops.geojson — rest stops and overnights as labeled Points
- speedbins.geojson — LineString chunks colored by speed bucket
- markers.geojson — pre-labeled stage/day start/end markers
- days-merged/ — one unbroken LineString per day
- styles/*.qml — QGIS symbology auto-loads via sibling-file convention
New: DEM subsystem (--dem)
AWS Terrain Tiles (SRTM 30m, free, no auth) → seamless VRT via gdalbuildvrt,
optional hillshade GeoTIFF, optional vector contour lines.
New: opt-in enrichments (--enrich ...)
- weather — Open-Meteo historical per stage
- osm — Overpass roads/places/POIs + per-stage road names
- routes — OSRM "what a car would've done" comparison
- crossings — state/province transition Points (US/CA/MX ships)
- sun — media tagged with sun altitude/azimuth, golden hour flag
Structure
Refactored into src/ modules. Zero runtime deps preserved. exiftool and
gdal remain the only external binaries, and only when the features that
need them are enabled.