The details
Three sharp edges from the first-run UX audit — tips that covered the buttons you needed to tap, a timer that started before you did, and a workout that looked like three different sessions across three screens. All fixed.
Tips out of the way
The first-workout coach tips (the ones that show a new user where the Start button is, how to log a set, when to use the rest timer, how to skip warm-up) used to render as popovers. iPhone's popover style covered the very control they pointed at — and worse, on a couple of surfaces the little × close-button overlapped the actual CTA underneath. Tap to dismiss the tip, tap Save workout by mistake.
We've moved every first-workout tip inline. The tip now sits above or below the button it's talking about, the anchor stays fully tappable, and VoiceOver can still see the workout screen while a tip is showing. Same rule silences it after your first completed session — you never see the tips again once you know the app.
Two copy fixes rode along:
- Rest timer tip said "Tap Skip when you're ready sooner." The button is actually an × icon. Users looked for a "Skip" button that didn't exist. Now it says "Tap × when you're ready sooner."
- Finish-workout tip said "Tap Finish and you're done." The button on that screen is labelled "Save workout." Now the tip matches the label.
The timer waits until you do
Before v1.44, the moment you tapped Start on a workout the elapsed-time counter in the toolbar started ticking. If you read the exercise instructions for two minutes, walked over to the pull-up bar, chalked up, and started your first rep at 2:45 — the app said 2:45 was 45 seconds of training.
Now the toolbar shows Ready until you actually train. Log your first rep or start a hold timer and the clock anchors right then. Everything else about the timer behaves the same: pause/resume works, background-tolerance works, cold-start restore works. It just refuses to pretend that reading counts as training.
Small side effect: your session durations in history should read a bit shorter and much more truthful. Before was inflated by however long you spent in the "getting ready" state.
Same workout, every screen
Foundations users used to see three different names for the same session:
- Home hero: "Today's workout · Upper body"
- Preview screen: "Foundations Library · Level 1 · 10 exercises"
- Save screen: "Foundations Library"
Three surfaces, three labels, and a "10 exercises" promise that included warm-ups you were about to skip. Not a bug that broke anything — a bug that quietly told you the app didn't know what it was showing you.
Now all three surfaces render through one helper. Foundations sessions read as "Foundations · Upper body" everywhere. The exercise count is main-work only, so what the app promises matches what you'll actually train. Skill splits, strength splits, and calibrations still show their program name as before — the template suffix is Foundations-only by design.
Also in this release
Two smaller fixes bundled from v1.43.1:
- Press to Handstand's skill-picker icon rendered as an empty square. Now shows the same arrow-up-circle that its calibration uses — consistent within the family.
- The diagnostic's last-step copy used to say "just one step left" when there were still four screens to come (skill picker, journey preview, plan reveal, calibration prompt). Now it says how many diagnostic steps remain and hints that more onboarding follows.
Third pass through the First-Run UX audit findings — H3 (tip placement), H4 (timer honesty), H6 (session name consistency). Wave 4 looks at the remaining Medium-severity findings and any accessibility follow-ups. Feedback welcome at support@zenmotion.app.