Skip to content

Improve ride controls, session history, and device pairing#2

Merged
lookfirst merged 3 commits into
mainfrom
feat/overnight-session-history
Jul 19, 2026
Merged

Improve ride controls, session history, and device pairing#2
lookfirst merged 3 commits into
mainfrom
feat/overnight-session-history

Conversation

@lookfirst

Copy link
Copy Markdown
Collaborator

Summary

  • clarify overnight session history ranges and improve live ride-control feedback
  • add a multi-device pairing panel for the trainer, heart-rate monitor, and two Zwift Click V2 controllers
  • add automatic Click side identification, concurrent reconnects, persistent retry behavior, held shifting, and per-controller activity feedback
  • switch to a 1–24 virtual gear interface while Click controllers are paired
  • record, chart, summarize, restore, and export virtual gear data while preserving legacy resistance sessions
  • show aggregate device connection progress in the dashboard

Why

The previous single-device connection flow could not represent multiple independent sensors or Click controllers. Click notifications may also be duplicated across channels or mirrored across controller connections, so learning controller identity from whichever notification arrived first caused incorrect labels, double shifts, and misleading connection state. This change identifies physical sides from their Bluetooth manufacturer data, locks event routing to the matching side, and keeps each connection lifecycle independent.

User impact

Riders can manage all supported devices from one panel, reconnect remembered hardware automatically, use Click V2 for virtual shifting, and see gear data throughout live and saved sessions. Existing resistance-only sessions remain supported.

Validation

  • bun run ci
  • 98 tests passing
  • TypeScript check passing
  • production build passing

@lookfirst
lookfirst merged commit c7cfb7a into main Jul 19, 2026
1 check passed
@lookfirst
lookfirst deleted the feat/overnight-session-history branch July 19, 2026 06:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant