Core ride logic, FTMS client, FIT encoder and probe CLI

Adds backing state for Resistance and Erg control modes, which had no
value to hold and so could never satisfy FR-4.3/FR-4.6.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-05 13:34:27 +02:00
co-authored by Claude Opus 5
parent 3e106de2c5
commit 7c17ca6158
61 changed files with 20933 additions and 55 deletions
+3 -2
View File
@@ -491,9 +491,10 @@ tests, and removes dependence on the trainer's internal mass assumptions.
| ID | Requirement | Priority |
|----|-------------|----------|
| FR-9.5 | Large, legible readouts (power, cadence, speed, gradient, gear, elapsed) readable at ~1 m | Must |
| FR-9.5 | Large, legible readouts readable at ~1 m. **The screen is route-led, not power-led** — ETA, distance remaining, speed, gradient and elevation take visual priority; power, cadence and heart rate are present but subordinate | Must |
| FR-9.6 | Live streaming charts of power and gradient/target | Must |
| FR-9.7 | Route elevation profile or waveform preview with current position marked | Must |
| FR-9.7 | **The route elevation profile with current position marked is the primary visual element** of the ride screen, not a supporting chart. For waveform profiles, the profile preview serves the same role | Must |
| FR-9.15 | **Estimated time to finish (ETA)**, alongside distance covered and remaining | Must |
| FR-9.8 | Prominent display of active mode, current gear, and current target | Must |
| FR-9.9 | Visible feedback on every button press, so the rider knows input registered | Must |
| FR-9.10 | On-screen and keyboard equivalents for all controller actions | Must |