v2026.03.22 — 2026-03-22
Homepage onboarding simplified around local FIT drop + demo ride.
Added
- One-click Try a demo ride path from the homepage drop zone.
- Bundled demo FIT asset based on a sanitized race file (realistic power/HR/elevation profile).
Changed
- Homepage hero and checklist copy rewritten to the physiology-first tone.
- Drop zone moved left in the two-column layout and now carries the primary onboarding flow.
- Markdown action label updated to Copy ride as markdown.
- Empty-state screenshots replaced with AVIF assets for smaller payloads.
Fixed
- Decoupling caution language now distinguishes metric interpretability from sensor faults.
- Demo ride keeps threshold reference so IF and default VT estimates render correctly.
Removed
- Homepage export-instruction accordion (Garmin/Strava/etc.) from the primary path.
- Legacy JPG empty-state screenshots superseded by AVIF versions.
v2026.03.21 — 2026-03-21
Tone and edge-case pass on ride detail.
Added
- More in-place metric context in ride detail tooltips.
- Better handling for virtual GPX-derived rides in detail rendering.
Changed
- Ride detail copy rewritten to match the physiology-first tone.
Fixed
- Several GPX edge cases where expected route fields were missing.
Removed
- Residual coaching-style phrasing in ride detail UI copy.
v2026.03.20 — 2026-03-20
Launch asset and metadata cleanup.
Added
- Full favicon set, Apple touch icon, and social preview image.
- Canonical + Open Graph + Twitter metadata for homepage and ride detail.
Changed
- Brand assets tightened (logo weight and sizing).
Fixed
- Leftover deploy artifacts and ignore rules.
Removed
- Temporary
/intervals prototype page.
- Stale analysis draft file from the web root.
v2026.03.17 — 2026-03-17
Architecture reset: homepage + dedicated ride detail.
Added
- Dedicated
/ride/ page with modular metric/rendering code.
- Topo map style toggle and stronger empty-state screenshots.
Changed
- Homepage and ride detail UX flow tightened for faster scanning.
- Color system moved to OKLCH; grade and elevation palettes separated.
Fixed
- Detail page interaction and layout issues after the split.
Removed
- Monolithic single-page implementation.
- Mallorca route files and GPX-to-FIT script from the production bundle.
v2026.03.16 — 2026-03-16
Route and tooling experiment release.
Added
- Prototype route pages (
/mallorca, /intervals).
- Sample Mallorca route assets (GPX and FIT).
gpx-to-fit-course conversion script and Wrangler config.
Changed
- Project scope briefly expanded from pure ride inspection to route utilities.
Fixed
- Deploy ignore rules for cleaner Cloudflare Pages artifacts.
v2026.03.09 — 2026-03-09
Shift from static report to context-aware ride analysis.
Added
- Race Execution panel (hourly pacing + match analysis + elevation split).
- Ride as Markdown export for AI workflows.
- Metric tooltips and dynamic zones with editable lab context (FTP, VT1/VT2, FatMax, HR, weight).
- IndexedDB persistence with auto-restore of the last ride.
Changed
- Settings split into quick values vs. advanced lab fields.
- Wahoo flow simplified to a single “Pull last ride” action and marked sandbox/beta.
- FatMax visually highlighted in the power zone graph.
Fixed
- Gap handling in timed record construction.
- Zone rendering edge cases in mixed ride files.
v2026.03.08 — 2026-03-08
First production deploy day. Multiple deploys, one long refactor loop.
Added
- Browser-only FIT viewer with ride summary, map, and laps table.
- Wahoo OAuth PKCE integration to pull recent workouts in sandbox mode.
- Core metric stack: NP, TSS, cadence, max power/HR, work, decoupling, VI, and data quality flags.
- Power duration curve with peak markers and threshold reference lines.
- Gradient-colored route rendering and initial mobile layout support.
Changed
- Summary cards grouped by analysis category.
- Ride fetching changed from YTD scans to last-10 calls to reduce API load.
- Drop zone and provider connect panel merged into one front-page layout.
Fixed
- Work (kJ) now computed from power records, not calorie conversion.
- OAuth callback/token lifecycle issues (verifier fallback, revoke on disconnect, listener stacking).
- Power-curve axis overlap and several SVG/icon regressions.
Removed
- Avg Power card (NP retained as primary).
- eFTP experiment and vanity metric section.