Home / Updates

What's New

Features and improvements shipping to TOMO

September 7, 2026
TestFlight Build 66

Nothing Left Behind

A line-by-line review of the app and its backend on launch night found a few places where TOMO said one thing and did another: a save that claimed success, a delete that stopped early, a Study tab that went blank every evening. This build closes every one of them, and it is the build going to Apple in place of yesterday's.

Fix

Your Study picks no longer vanish after 8pm

Every evening the Study tab dropped back to "Personalizing your picks" and stayed there until morning. The phone and the server disagreed about which week it was once the clock passed 8pm Eastern. They agree now, in every timezone.

Fix

A save the server refuses says so

If the server rejected a session outright, TOMO used to tell you it was saved on your phone and would sync later, then quietly gave up. Now a real refusal shows a real error and keeps your review screen so you can try again. A dropped connection still gets the "saved on your phone" path, and that one still syncs.

Fix

Delete Account finishes the job

Deleting your account used to leave the app sitting on "Deleting..." with a dead account behind it, and could leave recordings on the server for heavy users. It now removes every file and every row, wipes what was on your phone, and returns you to the welcome screen. If any step fails you are told, and nothing is reported as gone that is not.

Fix

Crash reports carry no training notes

Error reports were including the contents of database writes, which meant notes, transcripts, injuries and body weight could ride along. They are stripped before anything leaves the phone, and performance tracing is off entirely.

Polish

Location is when-in-use only

The app no longer declares background location it never asks for. The only location prompt you will ever see is the gym finder's.

Fix

Backend hardening

Every server function now measures the request it receives instead of trusting a header, the coaching chat always answers with the model that matches your insight, and if the extraction service is ever down the app finds out instead of quietly falling back to manual entry.

Why this matters: Every one of these was a case where the app told you something that was not true. "Saved." "Deleted." "Personalizing." A training journal only works if you can trust what it says about your own data. This build makes the words match the facts.