← Back to updates

Coach sees your progress now

A month after Handstand Coach shipped, the follow-up patch. Coach now surfaces your form trend across every session (biggest change), calibration accepts an honest 0-rep result, and the Account tab gets a tidier Contact section.

Your form has a trend now

Coach used to be a per-session snapshot: analyze a video, see five angles, move on. Great for the moment. Bad for the story — "am I actually getting better at handstands?" required opening the history list and squinting at old sessions side-by-side.

New in v1.14.1: a Progress section on the Coach tab. Sits between the "New analysis" button and your session list. For every angle Coach tracks, you see:

  • Direction arrow — improving (teal), regressing (orange), or stable (grey), with a 1.5° tolerance so a fluky reading doesn't flip the arrow.
  • First → latest reading — "158° → 172°" so you see the change in your primary angle at a glance.
  • Improvement pill — signed and direction-aware: "+14°" means you moved toward the target across the window, regardless of whether the angle is toward-target or higher-is-better.
  • Personal best chip — your all-time best on that angle, from the personal-bests already tracked since v1.14.

Switch the window between 7d / 30d / 90d / All via the picker in the section header. Server pre-computes the direction, slope, and delta — the app just renders what it gets, so tuning the "stable" threshold or the slope math is a server-side change we can do without an app update.

The Coach beta has been running for a few weeks now and the shift is real: users who log 8+ sessions on the same movement suddenly get to see "shoulders opened 14° over 30 days" as a single line, instead of scrolling through 8 detail views. Small feature, big story.

Calibration accepts "0" now

Bug reported that hurt a class of new users: run a Pull-Up Calibration, discover you can't actually do one full pull-up, tap the check-off to log 0 reps — nothing happens. The check-off silently rejected 0-rep commits because in regular training that's a no-op that leaves contradictory UX (green check + exercise "not really done"). Fair for training. Wrong for a max-effort test.

Fixed. On calibration programs, 0 is a legitimate outcome — it's your honest current max. The check-off accepts it, the exercise completes, the "Next test" button appears, and the backend stores the honest number so recommendations reflect where you actually are.

Everything outside calibration is unchanged — regular training still rejects 0-rep commits so the check-off keeps meaning "I did this set".

A tidier Contact section

The Account tab's Contact row expanded into a Contact & support section with three affordances:

  • Follow @zenmotion_app — Instagram deep-link, straight into the profile.
  • Rate ZenMotion — opens the App Store page with the review composer pre-focused. If you already like the app, this is the fast path.
  • Email support — the existing mailto for anything that doesn't fit the other channels.

Separately, if you've completed three workouts and haven't been asked yet, ZenMotion will politely nudge iOS to show you its standard review dialog once. Apple caps how often the dialog actually appears (3× per year per app across the entire OS), so this is a "we did our part" ask, not a repeated pester.

Under the hood

  • New GET /v1/api/coach/trends?window=<7|30|90|all> endpoint on the backend, with 31 unit tests covering the pure trend math (mean-of-thirds, direction-aware improvement delta, linear regression slope, personal-best threading, defensive skip on unknown angle keys).
  • ADR-006 (Foundation Models integration for Coach copy) shelved after a POC — on-device LLM hallucinated arithmetic on trivial input (180 − 175 = 15) and produced clinical copy vs the rule-based fallback's coach-language phrasing. The trends endpoint above is now the primary Coach-narrative data source and will feed the LLM narrative layer if we revisit Foundation Models when Apple ships a more mature model release.

What's next

  • Watch companion (ADR authored, not scheduled) — hold timers on your wrist for handstand + lever holds.
  • Wedge D Phase D — migrate strength splits to the rung model, which unlocks retiring experienceLevel as a stored field.
  • Composed sessions (v2.0+) — the multi-quarter arc toward "the app composes your next session for you, not just tracks the one you picked".

Bug reports and feature ideas: support@zenmotion.app.

Train well.