Shipped
-
Builder productivity
- Added
DayExercisesTransferDialogto duplicate/move exercises between routine days - Integrated into builder flow (target day selection) and aligned related dialogs for consistency
- Added
-
Time schema upgrade (minutes → seconds)
- Migrated
durationMinutes→durationSecondsacross models, hooks, and components for consistent time representation - Introduced a new
TimeDurationcomponent for human-friendly H/M/S entry and display - Updated cardio/weighted/mindbody set definitions to match the new duration schema
- Migrated legacy logs and validation logic to preserve backward compatibility
- Updated docs to reflect the new canonical time rules
- Migrated
-
Insights Hub (user-facing)
- Shipped a new Insights page with tabs: Progress / Body / Tools
- Added cards for consistency, strength trends, weight trend, and measurements
- Updated routing and navigation terminology to reflect Insights replacing Analytics
- Continued UI and accessibility improvements across Profile/Preferences surfaces
-
Builder responsiveness + clarity
- Improved ExerciseSetsTable/UnifiedSetRow layout and responsiveness
- Added tooltips for AMRAP/offset availability and improved Tooltip portal rendering
- Expanded/collapsed behavior in TimeDuration for clearer time input UX
Why
- Seconds-based duration is a clean canonical foundation for intervals, holds, and mixed modality work
- Insights replaces generic analytics with real “what do I care about today?” signals
- Builder day-to-day exercise transfer reduces friction when programming evolves mid-build
Notes
- This release includes a meaningful migration; legacy logs continue to work safely.
Next
- Tighten Insights calculations and empty states (day-1 value, no crashes)
- Improve interval execution UX in the player (work complete + rest timer patterns)
- Add small visual regression checks for Play/Builder since styling is now more utility-driven