Coach that reads the room. And a picker that respects your order.
Big one. Planche Coach precision took three rounds of tuning against real-athlete facit videos and comes out with thresholds that finally read like a real coach. The Custom Program editor learned to remember the order you dragged your exercises into. And the whole exercise picker stops silently hiding things from you.
Planche Coach — three rounds of facit-tuning
The v1.14 Coach launch shipped planche thresholds that were educated guesses. This release replaces those guesses with data.
Over the past two weeks we captured debug dumps from six clean planche holds — two straddle clips, one full-planche hold, two tuck-planche holds (including one from Andriy Strong, an athlete known for pristine form), plus a deliberately-collapsed "bad protraction" reference clip. Every number that Coach grades against now traces back to an actual measured hold rather than an author's assumption.
Concrete threshold changes:
- Arm lockout: 175° ±8° across all variants (was 170° ±15°). Real straight-arm planche holds cluster at 174-177° — 5° tighter than the old assumption.
- Torso lean: 85° ±8° for straddle, one-leg, full — AND now tuck + advanced tuck. Original assumption that "tuck is easier so torso stays upright" was wrong. Tuck is easier because the mass sits closer to the shoulder (shorter lever arm), not because the body doesn't horizontalize. Both athletes we tested held clean tucks with torso at 90°.
- Shoulder protraction: 45° ±15° for straight-body variants (was 55° ±20°). Tuck-family gets a variant override at 65° because tuck geometry naturally reads higher — the deep knee-tuck lifts the hip above shoulder level, which biases the angle calculation. Without the override, well-protracted tuck planches were scoring as "retracted".
- Hip angle: straddle 165° (was 145° — the old target was calibrated against a single bad clip). Full 175°. Tuck 45°.
- Knee angle: tuck 75° (was 40° — 40° assumed a maximally-compact beginner tuck; real athletes need space between chest and thigh, so knees open toward 75-80°).
Also new — over-extension detection. Hips can be too extended (arching the low back). The "Hips X° folded" cue now correctly says "over-extended" when your reading passes above the target instead of confusingly reading "folded" in the wrong direction.
Coach reads the video better
Three quiet fixes to the analysis pipeline itself:
Stable-hold detection actually works now. The previous velocity threshold was set below Vision's own per-frame keypoint jitter, so real static holds registered as "moving" and Coach fell back to averaging the entire clip — including any transitions into and out of the hold. Now a clean 2s hold registers as a stable window, and the aggregate reflects the hold itself.
Two-signal quality gate. The old warning banner triggered on any planche clip because planche naturally scores lower Vision confidence than handstand (the model was trained on upright bodies). Now the banner needs BOTH low mean confidence AND a joint with low individual confidence before flagging — false positives dropped to near zero.
First and last 100ms trimmed. Motion blur on frame zero and partial-pose at the tail routinely produced joint outliers that skewed the aggregate. Defensive trim now cuts those without touching anything else.
Custom programs remember your order
You could drag-and-drop exercises to reorder them in the Create Program editor — and after Save, the order silently reset to whatever the database happened to return. The database didn't have anywhere to store position.
Fixed at the database layer: a new order column on custom program exercises, backfilled from the physical row order for programs created before this release. Reorder, tap Save, close the app, come back — the order sticks.
Exercise picker stops hiding things
The exercise picker had three difficulty chips — Beginner, Intermediate, Advanced — and defaulted to Beginner. Search for "Deadlift" (level 3, Intermediate) as a new user, and you got zero results with no explanation for why.
Added an All chip as the new default. If you want to narrow to a difficulty band, you still can. But by default, when you're building a custom program, you see the full catalog.
Coach — how to film
New illustrated setup guide on the Coach analysis screen showing a bird's-eye view of camera position, distance, and side-profile framing. Also good-vs-bad framing thumbnails — profile view (green checkmark) next to front view (orange warning). Camera angle is the single largest noise source in Coach analysis. This is v0 of a longer "compare to a pro" arc — future releases will layer pro reference videos on top of the guide.
What else
- Cue direction now respects
trendDirection. Metrics like shoulder protraction are "lower-is-better" — a reading below target should count as a win, not fire an "over" warning. Fixed. - 24 new unit tests covering the variantHint resolver, drag-reorder semantics, All-difficulty edge cases, and direction-aware cues.
What's next
v1.17 will bring the Coach text feedback layer to life. Apple shipped a new on-device Foundation Models generation at WWDC26 (AFM 3 Core Advanced — 20B sparse), and it's the first Apple model plausibly capable of producing coaching-quality narrative from your analysis data. If pilot testing goes well, sessions will end with a real coach-voice review — "Your straddle held well through the first half; second half your shoulders dropped 8° — try shorter reps with explicit protraction focus" — instead of just numbers on a page.
Bug reports and feature ideas: support@zenmotion.app.
Train well.