This is the day-to-day loop: start a session, log a set at a time as you go, and finish once you're done. Everything below works whether you're following a plan or training freehand.
1. Start a session
From the workout tab, tap Start workout on your active plan, or Start free session to log without a plan. If the plan has more than one day, you'll be asked to choose one - the day you haven't trained most recently is suggested with a Next badge.
2. Log your sets
Each exercise gets its own card. Enter a weight and rep count, then tap the checkmark to log the set - the fields show your plan target or your value from last time as a ghost placeholder, so leaving them blank and tapping the checkmark logs the suggested numbers.

To fix a set you already logged, tap its checkmark again - the row re-opens for editing, and tapping the checkmark once more saves the change. To remove a set entirely, swipe it.
3. Rest between sets
A rest timer starts automatically after you log a set, showing a countdown at the top of the screen with the exercise it's for. Dismiss it early if you're ready to go, or turn on notifications so you get alerted when it ends even if you've switched apps.
4. Add an exercise mid-workout
Not following a plan exercise-by-exercise? Tap Add exercise at the bottom of the screen to search the library and add one on the fly - no targets needed, it just starts logging.
5. Finish the workout
Tap Complete workout. You'll see a summary - sets logged and total time - along with any records you set, and an optional notes field. Confirm to finish; a summary screen follows showing everything you accomplished.
When it goes wrong
- A banner appears saying the workout has been running a while. Sessions left open for a long time show a reminder to finish or discard - pick Finish now to wrap it up with what you've logged, or Discard to delete it.
- The checkmark won't log the set. Both weight and reps need a valid, non-negative value - an empty field falls back to the suggested value shown as a placeholder, but a clearly invalid entry blocks the log.