Shipped
-
Exercise edit modal overhaul
- Modularized modal sections (General / Progression / Load Logic) for clearer organization
- Added a dedicated Load Logic tab to isolate load-related settings
- Improved Create Exercise dialog validation (including laterality handling)
- Enhanced DraftNumberInput precision for more accurate weight entry
- Standardized weight unit selection by replacing DropdownMenu with MenuSelect
-
Variations + ladders become first-class
- Added
ExerciseAlternativesSectionfor managing swappable variations cleanly - Added
ExerciseLadderSectionfor bodyweight ladder progressions with improved layout and interaction - Improved drag-and-drop reordering of ladder rungs (smoother UX + better accessibility)
- Wrapped these under
ExerciseVariationsSectionwhile preserving the existing API
- Added
-
Schema tightening + data integrity
- Removed “amrap” as a selectable set type to prevent misuse and keep schemas clean
- Updated performance schema options accordingly (no “amrap” path)
- Added new utilities for validating + normalizing exercise schemas during routine management
- Streamlined weight resolution by removing unused base-weight dialog state in Play/Timer
- Added validation for duration/load in Quick Workout to prevent invalid inputs
- Introduced
RoutineLoadsDialogto review/adjust base loads from routine management
Why
- Exercise editing is high-frequency and complex—modular sections reduce cognitive load and reduce bugs
- Alternatives and ladders need proper UI primitives; “one more field” doesn’t scale
- Strong normalization/validation prevents silent corruption as the engine grows more expressive
Notes
- This is a clarity + correctness pass: fewer ambiguous options, more explicit rules.
Next
- Improve swaps UX further (smart defaults + same-modality constraints)
- Continue tightening player UX around load resolution transparency (when anchors/references apply)