Shipped
-
Session reliability
- Added session expiry helpers (TTL + last-activity detection)
- Improved active session management and localStorage synchronization
- Added clearer user feedback when sessions expire or desync
-
Better workout execution data
- Added per-exercise timing fields (
started_at,ended_at,duration_seconds) in workout executions - Introduced hooks/utilities to manage exercise timing consistently
- Added metadata for timer states and manual duration overrides (with reasons)
- Added per-exercise timing fields (
-
Quick workout upgrades
- Added new setup steps for bands + duration selection
- Improved TimerHeader controls (e.g., tracking failed reps via dropdown)
- Expanded supporting UI components for a more coherent setup flow
-
Testing system (big reliability win)
- Added Playwright (dev dependency) and created a demo smoke test suite for core flows
- Introduced combined test commands for unit + smoke tests
- Added deterministic seed strategy using a synthetic export bundle
- Expanded testing/debugging documentation and agent commands to keep QA repeatable
-
Equipment + mapping
- Added settings/management pages for band and dumbbell equipment
- Implemented routine band mapping dialog for shared routines
Why
- Reliable sessions prevent “lost workouts” and reduce user anxiety during training
- Timing + overrides make conditioning and interval work measurable and auditable
- Deterministic smoke tests protect demo-worthiness and prevent regressions as the engine expands
Notes
- This release strengthens the foundation for non-lifting modalities (time-based work, intervals, conditioning).
Next
- Continue tightening the workout player UX around timing and intervals
- Expand test coverage to builder flows and draft recovery