First-workout sweep — runner, health, video, library

Four waves of fixes and additions from a first end-to-end workout — runner polish, HealthKit + Strava routing, in-session form video, bundled routines, and a skippable onboarding quiz.

← All changes

What shipped

  • Runner. Auto-advance when the last set’s rest ends; “SET N OF M” in the hero; drag-to-minimize rest timer; propagate reps/weight/duration edits to remaining sets with Undo; working duration editor with a Start button and overtime display; single coral Finish on the last set.
  • HealthKit + Strava. The phone now owns the canonical HKWorkout (wall-clock start/end), which fixes the 16-second workout bug. New StravaUploadSource setting (Direct / Via Apple Health / Off) avoids double-counting.
  • Watch handoff. Phone auto-launches the watch app via startWatchApp. Watch haptics take over the last-ten tick and the zero gong when paired; phone audio is gated behind a setting.
  • Form video. Optional in-session recording per set (60s cap, flip camera), stored under Documents/Videos/{sessionId}/, surfaced as chips on the summary. Off by default.
  • Library + onboarding. Five bundled routines (Beginner A/B, GZCLP Press, PPL Push, Bodyweight Full-body). Three-stage onboarding: welcome → path (Quiz / Browse / AI) → six-question quiz, every card skippable.

Why

Running through a complete first workout surfaced a long tail of small frictions. Rather than ship them one-by-one, they land together as a single “first-workout feels right” pass.