← Back to updates

Rhythm you didn't know you had.

Most releases add a new tool. This one adds a tempo — the pause between sessions, the Sunday-evening reflection, the glance at the home screen before you leave for the gym. Six changes that fill the quiet parts of the training week instead of the loud ones.

Widget Small and Large. A weekly rollup push on Sunday evenings. Rest days that don't scold you. A calibration-first path for new users who aren't sure which skill to chase yet. A descending band-drop pyramid on Skill Practice days. And a fix for the "Legs for Line" day that was silently CNS-frying you before the actual leg work.

Two more widget sizes

v1.12 shipped Medium. v1.13 adds Small and Large.

Small (2x2) — for the phone-user who wants their next workout in the corner of the home screen. It trims aggressively: eyebrow ("PUSH FOCUS DAY 2 OF 5" reads "PUSH FOCUS · 2/5"), title, one line of subtitle. No dots row, no metadata strip — those don't survive at that size. Tap opens straight into StartProgram like Medium does.

Large (4x4) — for the widget-stack user. Same content shape as Medium but with breathing room: centered play icon at the top, title stack below, divider, metadata strip along the bottom (streak days, duration, cycle position). Feels like a proper card on the home screen instead of a compressed tile.

All three sizes share the same three states — Ready, Continue session, Rest day — with the same visual language. If you're on a rest day, all three widgets show a moon icon and calm framing. If a workout is paused, all three show orange "Continue" framing.

Pick whichever fits your home screen. Or install all three — they're just different projections of the same next-workout snapshot.

Sunday-evening rollup

New: an automatic push notification on Sunday evenings that summarizes your week. Not "you missed 2 days" scolding. A reflection.

Copy varies based on what happened. A rung bump wins the headline ("You crushed Straddle Front Lever Hold this week 🎉"). No bump but a hold-length PR gets it ("Longest Straddle Planche hold: 4s — up from 2s"). No PRs but consistent training gets a count ("3 sessions this week — steady as it comes"). Zero training in the last 14 days? No push at all — nudging dormant users just cements the churn.

The push routes to the Stats tab so you land on the heatmap + Athlete Profile + skills summary. If the point is reflection, Home would be the wrong destination (Home is about the next session, not the past week).

Opt out via Profile → Notifications → "Weekly rollup". On by default. Deliberately Sunday 18:00 UTC so it lands during evening downtime for most European timezones, not during dinner or right when people are trying to sleep.

Rest days that don't scold

If you're a Foundations user and today's a scheduled rest day, Home used to show nothing — a blank "no workout today" state that quietly implied "you're not training". Not quite hostile, but not warm either.

Now Home shows a rest-day hero card — moon icon, gentle background, alternating copy per week:

Even weeks: "Your body adapts between sessions. Today's the adaptation."

Odd weeks: "You've done today's work by not doing it. Come back tomorrow."

The card is non-tappable and doesn't compete with the streak counter. It exists to say: rest is programmed. It counts. Because it does — you can't build the pattern without recovery, and the app shouldn't punish you for a day it scheduled.

Only Foundations (Tier 1) shows this today. Focus Split users don't have server-authored rest days yet — every day of a Focus Split is a training day, and users skip at their own cadence.

The descending band-drop pyramid

Skill Practice day used to give you two skill slots: peak effort (unassisted variant) plus one back-down (rungOffset -1). That's fine but it leaves volume on the table.

New pattern: three consecutive skill slots — peak → -1 → -2. For a user at Straddle Planche R18, that's:

  1. Straddle Planche Unassisted 3×2s (top set)
  2. Straddle Planche Light Assist 3×5s (light band volume)
  3. Straddle Planche Heavy Assist 3×8s (thick band volume)

Classic band-drop pyramid — start at your ceiling, work down through progressively easier tiers for accumulation. Builds skill memory at three positions in one session instead of one. All 11 skill families got the same treatment (Planche, FL, BL, Handstand, PtH, Muscle-Up, Elbow Planche, Human Flag, Hefesto, One-Arm Pull-Up, V-Sit).

For nine of the eleven families, this expanded the Skill Practice template from 7 slots to 8 (net +1 exercise per Skill Practice session). PtH and Elbow Planche kept 7 by replacing a push accessory. Advanced trainers see a real change; beginners at low rungs see roughly the same session because the -2 offset floors at rung 1.

"Legs for Line" isn't a leg-CNS-crush anymore

Reported from an actual training session this week: the "Legs for Line" day on Planche Focus Split was serving peak Straddle Planche as the first exercise, then expecting you to squat and hinge afterwards. Peak-effort skill work fried the CNS before the leg work started.

The fix isn't complicated — support days (everything but Skill Practice) now serve band-assisted variants of the skill slot instead of the peak. If you're at Straddle Unassisted, Legs for Line gives you Straddle Heavy Assist. Enough to stay in touch with the pattern, not enough to derail the leg work.

Applied to Planche, Front Lever, Back Lever, and Elbow Planche — the four skills with the v1.10 band-tier expansion. Other families (Handstand, Muscle-Up, PtH, Human Flag, Hefesto, OAP, V-Sit) work off a single unassisted-only ladder and don't have band tiers to drop to; leaving them alone.

Calibration-first for users who aren't sure yet

Onboarding used to route "not sure which skill I want" users into a random strength split. Not wrong exactly, but not answering the question they were actually asking, which is "where am I".

The Skill Picker now presents that path as "Build strength first, pick later" (instead of the old "Show me the fundamentals") — an intentional choice, not an escape hatch. Users who pick it now land on Home with Strength Calibration as the top CTA. Ten minutes, five max-effort tests, real strength data recorded. After that the recommendation chain flows normally — strength split becomes the next call.

Why calibration first: rungs seeded from the 3-question onboarding diagnostic are coarse (±2 accuracy). Calibration tightens them, which unlocks the entire adaptive-training loop for these users. And it answers their "where am I" question with data instead of a guess.

Existing users with strength data or a picked Focus Skill see zero change — this fires only for fresh Tier 2/3 users who opted out of picking a skill.

Firebase Analytics, quietly

For the first time, the app records a small set of retention events: onboarding_started, onboarding_completed, first_workout_started, first_workout_completed, workout_completed, push_opened. Nothing about your training numbers — no reps, no rungs, no weights. Just when the funnel steps happen so I can see whether the app is losing people between install and first workout.

Disabled in debug builds so my own testing doesn't skew the D1/D7/D30 cohorts. Nothing personal beyond a Firebase-installed anonymous ID. Sentry (errors) and Crashlytics (crashes) still cover their respective jobs; this is the third leg — activation and retention.

For the record

  • App Store version: 1.13.0 (up from 1.12.0)
  • Backend deploys alongside the iOS binary: descending pyramid templates for all 11 skills, day-theme rung offsets on planche/FL/BL/elbow-planche, calibrationFirst field on /api/home
  • Weekly rollup uses the existing FCM push infrastructure; no new server dependencies
  • Widget Small and Large fully share code with Medium (single snapshot payload, size-aware view dispatch)
  • No migrations required

What's next

Video demos stays as the biggest unmet need — a picture is worth a paragraph of execution instructions, especially for band-assisted lever holds where "where does the band go" is the actual question. Solo-dev filming plan is on the table.

Google Sign-In is next on the auth side — sole Sign in with Apple path blocks any future Android port and locks out iOS users without Apple ID.

Watch companion app (Apple Watch) is scoped and designed but blocked on hardware acquisition. Timer on your wrist during hold work is the killer use case.

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

Train well.