Repository navigation
Releases: lukr-99/workout-tracker
Releases · lukr-99/workout-tracker
Release list
Ember 2.6.0
Added
- What's new after an update. Home shows a short card about the release once, until you tap
Got it. A fresh install shows nothing. - Clearer empty screens. Home, History, Runs, Progress and the Library say what is missing and
how to fill it, with a button where one helps (New template, Create exercise). - A hint under a live workout says that tapping a set's number opens its tags, effort, note and
Remove. - Notes you can see while you lift. Each exercise card in a live workout now shows three
kinds of notes, and only the ones that exist:- the exercise's own note from the Library (seat height, grip), pinned;
- what you wrote on that exercise last time, with its date;
- today's note.
- Notes everywhere in a workout:
- a note for the whole workout;
- a note per exercise, from the card's "Add note" button or its menu;
- a note per set, from set options.
- Past workouts can be edited the same way.
- How-to steps and a guide link for each exercise. The exercise editor takes steps (one per
line) and a video or guide link. While logging, the info button on a card shows the steps as a
numbered list, your note, and an "Open guide" button. - Body part picker in the exercise editor. The editor now uses chips for the main muscle and
for the muscles it also works, instead of free text. Typing your own body part still works. - The exercise note shows in the Library catalog and in the exercise picker.
- Templates now have their own note and a note per exercise.
- Backups hold everything. Save JSON and automatic backup now include your settings and your
exercise photos (scaled to 1600 px), and say which app version made them. Export format 1.8. - Replace everything when restoring an Ember backup: after a confirmation that names what will
be deleted, the phone's data is replaced by the backup exactly, settings and photos included.
Merge stays the default. - Delete all data in a danger zone at the end of the Data screen. You type "delete" to confirm.
It also turns off automatic backup, so empty backups cannot push out your good ones, and leaves
your backup files alone. Not available while a workout or run is live.
Changed
- Faster set logging. Each set row shows what you did last time in a Previous column, and
the set you are on has an orange outline. Tapping weight or reps opens a new number pad with
both values side by side, quick steps (2.5 kg or 5 lb, 1 rep), a button that copies the set
before, and Next and Done set. Done set saves the set and starts the rest timer. - The rest timer floats at the bottom and says which set is next.
- Templates learn from your workouts. When you finish a workout that started from a template
and did it differently (added or skipped an exercise, more or fewer sets), Ember lists the
changes and asks whether to update the template, keep it as it is, or save the changes as a new
template. The finish sheet also shows the time, weight lifted, sets and PRs. - A template with a plan starts each exercise with its planned number of sets and its supersets.
- A template preview. Tapping a template on Home or in the Library shows its note, the plan
per exercise with your best set last time, and when you last did it, with Edit and Start
workout. The start button on Home still starts right away. - A rebuilt template editor. Each exercise has steppers for sets and rest, a rep range, a note,
and a menu to move it, remove it, or join it to the exercise above as a superset. Add exercises
uses the same picker as the live workout, several at a time. - Add exercises on the go. The picker lists your recent exercises first with what you did last
time, lets you tick several and add them at once, and can add them as a superset. - Create an exercise without leaving the workout. Type a name the library does not have and
pick Create: a short form asks for the name, kind, main muscle, what else it works and the
equipment. Steps, photo and guide link can be added later from the Library. - An empty workout shows a big Add exercises button and your recent exercises as chips that add
with one tap. - An exercise menu with history. The three dots on an exercise now open a sheet with the last
three times you did it (sets and best estimated 1RM), then Replace exercise, Superset with
previous, Move up or down, a note for today, How to do it, and Remove. - Replace an exercise mid-workout. When the machine is taken, swap the exercise for another
of the same kind and keep the sets you already logged. - The live workout header shows the elapsed time, the weight lifted and the sets done, with a
bigger Finish button. - Orange text and links are darker in light mode, so they are easier to read.
- New tabs: Home, Library, Start, Runs, Progress. The Library (exercises and templates) is now
a tab. Settings moved to the gear on Home. Tab labels are bigger. - A new Home. It shows today's date, your workout in progress with a Resume button, this
week's days with a mark for each workout and run, the week's workouts, weight lifted and
distance run, your templates with a start button, and your recent workouts and runs together. - The Library lists exercises in one card with a body-part dot, the equipment and your pinned
note, opens on Exercises, and its body-part filters show the same colour dots. - Progress has one header above the Progress, Running and History switch, and its tiles and
cards (and those on other screens) have the new bordered style. - A new Runs tab. This week's distance, a big Start a run card, Plan a route and Import GPX
side by side, saved routes as cards with their shape, and recent runs with their shape, time,
pace and distance. - A new Settings page. One scrolling page with a card per section (Appearance, Workouts,
Health Connect, Your data, Updates) and a chip row that jumps to a section, lights it up briefly
and follows you as you scroll. Theme, units, rest, backups and updates save as soon as you change
them. With animations turned off in Android, the jump is instant and nothing flashes. - New fonts. Titles and numbers use Barlow Condensed and everything else Barlow, bundled with
the app so it looks the same offline. - Light mode works on every screen. Labels, hints and status colours used to stay dark-mode
grey or pale yellow in light mode. Every screen now reads its colours from one light or dark
set, in the warmer palette of the redesign. The ember orange stays the same. - The live exercise card moved "Move up", "Move down", "Superset with previous" and "Remove" into a
menu, giving the exercise name room on narrow phones. - The template editor uses the same exercise picker as the live workout, with filters and search.
- wger sync now stores an exercise's description as how-to steps, not as your personal note.
- Export format 1.7 adds
instructionsandvideoUrlto exercises. Older exports still import. - Database version 8, an additive migration with no data change.
- Database version 9 and export format 1.9: template exercises can hold a plan (target sets, a
rep range, rest and a superset group). Existing templates have no plan and work as before, and
older backups still import. - Debug builds are a separate app, "Ember dev" (
com.lukr99.workout.debug, version
x.y.z-dev). They install beside the real app and can never replace it or wipe its data. The
updater does not run in them. - The repository follows the CodePrint baseline: new AGENTS, ARCHITECTURE, CONTRIBUTING, SECURITY
and CONTEXT docs, a pitfalls log, and a CI job that validates the repository. - Updates are verified before they install. The updater now takes exactly
Ember-<version>.apkfrom a release, not just the first APK, and only over HTTPS. It checks the
file against the release's published SHA-256 and checks that it is signed by the same key as
the installed app. Only then does it open the installer. A release without a checksum is shown
as "cannot be verified" instead of being installed. - Updates has a link to all releases on GitHub, the manual way to update.
- The update dialog says "Ember" instead of the old "Workout Tracker".
tools/publish-release.ps1builds the signed APK, checks its signing key, writes the checksum
and creates a draft GitHub Release with both files.- Developer loop:
- stable test tags that show up as resource ids;
- JVM screenshot tests in light and dark (Robolectric and Roborazzi);
- a Maestro launch smoke flow;
- the CodePrint
emulator,ui-checkandagent-doctorscripts. - The bundled exercise image index moved to
src/main/resources, so tests read the same file.
- Code layout follows CodePrint: one type per file, one numbered file per database migration, the
backup worker built through the app's own WorkManager setup, and the largest data and view model
files split by job, with new JVM tests for each piece. The app behaves the same.
Fixed
- Saving a template wiped its notes, including the "Created from workout on ..." note.
- Adding the same exercise twice to a template crashed the editor.
- Saving an exercise wiped its secondary muscles. The editor never passed them on.
- The exercise editor could open an existing exercise as a blank new one while a Library search
or filter hid it. - A restore was not all or nothing. Runs and routes were saved after the main transaction, so a
failure there left a half-restored phone. Everything now commits in one transaction, and a failed
restore leaves no trace. - A restored exercise kept a photo path from the phone that made the backup, which pointed at a
file that does not exist here. The path is now cleared, or replaced by the photo in the backup.
Ember 2.5.2
Fixed
- In-app update failed to install: the updater never checked that a download actually finished. A dropped connection simply ends the response stream without raising anything, so a partial APK was handed to Android's package installer, which rejected it as corrupt — looking like an install problem rather than the half-finished download it was. The download now verifies the transferred byte count against the size GitHub reports, checks the HTTP status, and streams to a
.partfile that is only put in place once complete. - Silent updater failures: every error was discarded, leaving "Download failed — try again later." and nothing in the logs. Failures now show the actual reason and are logged.
Changed
- Update download is ~3x smaller — 15.9 MB, down from 52.3 MB. Release builds ship only
arm64-v8a; the universal APK carried native libraries for four architectures, so roughly 39 MB of every update was code no phone could run. - The Updates section now shows real download progress instead of an indeterminate spinner.
Installs in place over 2.5.x via Settings → Updates → Check. Requires a 64-bit ARM device (any modern Android phone).
🤖 Generated with Claude Code
Ember 2.5.1
Fixed
- Live logging crash: marking sets done could kill the app outright. When a set earned a personal record, its "PR" chip appeared in the exercise card, and the card measured its height with intrinsics to size the superset rail — which a lazily-laid-out chip strip cannot answer, so Compose threw
IllegalStateException. Because the PR flag is persisted into the draft, reopening the app crashed it again within seconds, leaving a force-stop as the only way out. The chip strip no longer uses a lazy list, and the superset rail is painted rather than measured, so neither half of the fault can recur. The same crash could be triggered by any tagged set, not just a PR.
Installs in place over 2.5.0 via Settings → Updates → Check.
🤖 Generated with Claude Code
Ember 2.5.0
What’s new
- Per-exercise KG/LB input switching while weights remain stored in kilograms.
- Combinable set tags, including separate To failure and Failed early tags.
- Exercise start timers, finish/collapse summaries, expansion, and reopening.
- Clearer superset position visuals and membership editing.
- Exercise stats in completed workout detail.
- Exact workout share-card preview before opening Android’s share sheet.
- Guided double-click Windows installer for a USB-connected Android phone.
Data compatibility
Room schema v7 adds exercise timing/unit fields and set tags through an additive migration. Portable exports are v1.6 and continue to accept versions 1.0–1.5.
Downloads
- Ember.apk — signed Android update/install package.
- Ember-Phone-Installer-v2.5.0.zip — extract on Windows and double-click
Install Ember.cmd.
v2.4.0
Six-item punch list from the Ember notes.
Fixed
- Live logging — a finished ("done") set now persists (via the set's
performedAtUtc), so its checkmark and any reps/weight typed just before survive leaving the screen or the OS killing the process. The draft is also flushed when the app is backgrounded. - Exercise picker — the catalog list owns its scroll gesture, so a fling no longer drags the sheet closed mid-scroll without a selection.
- Run + lift — when a run and a lift are both live, the centre button asks which to resume instead of always reopening the run (the lift was previously unreachable).
- PR celebration — the personal-record banner is opaque, elevated, clears the top bar, and stays visible longer.
- Exercise art / sync — broader image matching for imported/custom names, and wger sync resolves site-relative image URLs to absolute.
Added
- Shareable workout postcard — share a past workout as a branded image (volume, sets, exercises, time, PRs) from Workout detail → Share.
Signed with the release keystore — installs in place over v2.3.0. Settings → Updates → Check to try the in-app updater.