Shipped
- Bumped version to v0.7.1 to reflect the latest UX + styling improvements
- Upgraded exercise selection:
- Searchable input
- Category filter chips
- Clearable inputs + responsive header/card styles
- Stable selector height during filtering
- Modal titles now clearly reflect create vs edit states
- Rolled out ProtocolModal across the app for consistent modal styling/behavior:
- Exercise edit modal
- Unsaved changes dialog
- Routine management dialogs
- Enhanced unsaved-changes-dialog with proper modal layout and Obsidian styling
- Standardized dialog close button positioning across the application
- Introduced DraftNumberInput for clearable numeric inputs (prevents premature commits), applied across set rows/inputs
- Refined button + dropdown styling (borders/hover feedback) and improved layout/spacing for consistency
Why
- Exercise selection and editing are high-frequency actions — small friction here compounds fast
- A shared modal primitive reduces UI drift and recurring bugs across dialogs
- Draft-friendly numeric inputs improve data entry (especially on mobile) without accidental commits
- Polished, consistent styling builds trust in a system that’s doing serious training logic
Notes
- This is a cohesion release: fewer one-off patterns, more shared primitives.
- Merged modal state workflow improvements as part of this consolidation.
Next
- Finish consolidating any remaining legacy dialogs onto ProtocolModal
- Keep tightening builder editing UX (ranges, validation messaging, power-user toggles)