Expand workout management and harden virtual shifting#7
Merged
Conversation
Remember the open devices, workouts, or history tray across reloads and clear it when closed. Remove decorative modal eyebrow labels, add focused overlay coverage, and document the direct-header design rule.
Add rename, persistent drag ordering, name and difficulty search, whole-tray GPX drop import, and BikeGPX discovery. Label undescribed routes from a cached starting-city lookup with attribution. Preserve open GPX tracks as point-to-point courses, infer loops from nearby endpoints, migrate legacy generated return legs, and keep route progress fixed at the finish. Update workout UI, exports, documentation, validation, and coverage.
- add precise insertion-line reordering with an up/down drag handle - persist tray scroll position and keep feedback in a stable footer - save geocoded starting locations and link route bounds on OpenStreetMap - streamline workout renaming and expand persistence and rendering coverage
Use vertically constrained sortable workout cards with animated insertion space and persisted ordering. Open imported GPX routes in an in-app Leaflet dialog beside the tray, fit the full route, show endpoints, and animate a standard bicycle marker even when Chromium reports reduced motion. Update project guidance, documentation, dependencies, and coverage for the revised interactions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Why
The workout library had grown beyond simple selection and needed durable organization and route context. At the same time, Click controller sessions could expire or report stale connection state, and the dashboard needed to preserve both recorded control data and user navigation state.
Impact
Riders can organize and inspect imported routes more naturally, resume exactly where they left off in Sessions and Workouts, rely on more realistic virtual ratios, and keep Click controllers connected only while riding without losing controller event reliability.
Validation
bun run ci