← back to the timeline

From the build log of an AI coach that learns what you can lift and tells you exactly what to do next.

Jun 20 2026

three things got done: Out with the camera, in with smarter equipment. Tap any of these to read the whole thing.

Out with the camera, in with smarter equipment

The camera "scan your gym" feature had quietly stopped earning its keep, and the new setup flow already moved to picking a gym preset and…

Shipped
the problem

The camera "scan your gym" feature had quietly stopped earning its keep, and the new setup flow already moved to picking a gym preset and tweaking a list, so the camera was dead weight. Separately, the coach only ever saw bare code-words for your gear (like "chest_press_machine") and was handed the entire exercise catalogue on every plan, including exercises you can't even do.

what I changed

First, deleted all the camera / photo-recognition code and pointed the leftover "set up / edit your equipment" spot in Settings at the same simple list the setup flow uses. The app no longer asks for camera permission at all. Second, the coach now gets proper equipment names alongside the codes (so even a custom machine you typed in is understood), and it's only shown exercises you can actually do with your equipment, bodyweight moves always included. That makes it far more reliable at choosing machine exercises for people whose gym is mostly machines.

how I tested it

Built the app, ran the tests, and swept the whole codebase to confirm nothing still pointed at the deleted camera code. (Heads-up: removing the camera also removes "Camera" from the app's store privacy label.)

Shipped, PR 533 (camera removal) and PR 534 (smarter equipment), part of 527. One more piece to come: making sure every machine has matching exercises and the coach strictly sticks to your equipment.

Saving your injuries, and letting you add any gym machine

Two behind-the-scenes pieces of the setup overhaul.

Shipped
the problem

Two behind-the-scenes pieces of the setup overhaul. The new "anything to work around?" question looked nice but didn't actually do anything yet. And gym machines were a mess: lots of gyms have machines we had no name for, and there was a hidden bug where even if you added a custom one, its name got thrown away before the coach ever saw it.

what I changed

First, injuries: if you tap "bad shoulder" or "dodgy knee", the coach now records it as a confirmed injury and avoids programming straight into it from your very first session, instead of slowly piecing it together from your workout notes over weeks. It's saved safely on the server and won't overwrite anything the coach has already learned. Second, machines: you can now type in any machine we don't list, its name actually reaches the coach now, and I added several common machines that were missing (reverse-fly / rear-delt, assisted dip/pull-up, hip-thrust, calf-raise, T-bar row).

how I tested it

Built the app and ran the tests, including new ones proving custom machine names survive saving and loading without corrupting anyone's existing gym list, and that re-doing onboarding doesn't duplicate or reset an injury.

Shipped, PR 530 (injuries) and PR 531 (machines), part of the onboarding overhaul (527). One reminder: the injuries feature needs the "update-trainee-goal" server function redeployed by hand (this project deploys those manually, not automatically).

The setup flow starts its big makeover

The very first thing you see after installing, the setup flow, was the last part of the app still wearing the old blue, rounded look.

Shipped
the problem

The very first thing you see after installing, the setup flow, was the last part of the app still wearing the old blue, rounded look. Worse, it was just a wall of questions: no welcome, and no explanation of what the app even does or why it's different from every other gym app.

what I changed

Rebuilt the whole setup flow in the app's black-and-lime look, and reshaped it. Now it opens with a short welcome and a three-card "here's how your coach works" explainer (it's a real coach, it learns you, it's honest). It asks one thing per screen instead of one big form. It leads with your bodyweight, the number the coach actually uses to pick your first weights, while clearly marking height and age as optional. It adds a quick "anything to work around?" injury question and a sex question (both help the coach calibrate). And it ends on a "your program is ready" screen that shows your plan and the loop the coach runs on every set. The old camera "scan your gym" step is being replaced by picking a gym preset and tweaking a list, this piece wires that up using the equipment picker we already had.

how I tested it

Built the real app and took screenshots of the actual screens (welcome, bodyweight, injuries, equipment, the finish screen), they match the mockups we approved. All the behind-the-scenes saving (your program, your profile, the coach setup) was kept exactly as before.

Shipped as the first slice, PR 528, part of the onboarding overhaul (527). Still to come: saving the injury answers, removing the old camera code, and the bigger backend work to make the coach reliably use gym machines.