github Cawlumm/lyftr v0.1.0-beta.9

pre-release3 hours ago

One app now runs everywhere: the website is the same Expo app as iOS and Android, so a fix lands on all three at once. You can also reorder the exercises in a workout, and Finish no longer saves sets you never did.

Breaking changes

Only self-hosters who built their own deployment from the repo are affected; there is no HTTP API break in this release.

  • The web client moved from web/ to the Expo app (#246)
    docker-compose.yml now builds the frontend service from apps/app/Dockerfile.web. If you keep your own compose file that points at web/Dockerfile, update the path. The image name and service name are unchanged. Old page URLs (/food, /exercises/:id and the rest) answer a permanent redirect to their new place, so bookmarks keep working.

What's new

One app for web, iOS and Android (#246, #224)
The web app is now the Expo app's web export, on Expo SDK 58. It has a real desktop layout (sidebar, multi-column screens) and the same screens, language picker and settings as the phone apps.

Reorder exercises (#257, issue #166)
Drag an exercise by its handle, or use Move up / Move down, in a new workout, a workout you're editing, a routine day, or the workout you're in the middle of. It works from the keyboard and with a screen reader. Thanks to @ansgaross for asking.

Gym Mode header (#257)
Minimise, the elapsed clock with sets done, a Finish check and the ⋯ menu now sit in one row, with the ⋯ menu at the far right. A progress line shows one segment per exercise, and the exercise name opens a switcher.

Rest timer in the list layout (#263, issue #144)
Ticking a set now starts the rest timer in the list layout too, as a dock above the tab bar.

Exercise browser (#228)
Look up any exercise, with muscle and equipment filters, from the Workouts tab without starting a workout.

Fixes & improvements

  • Finish saves only the sets you ticked. Unticked sets are dropped and the rest renumbered, and a workout with nothing ticked offers Discard instead of saving an empty one (#262)
  • Every control now has a 44x44 hit area without looking bigger (#264)
  • Light theme text meets WCAG AA contrast on chips, macros, weight changes, destructive buttons and the TODAY chip (#265)
  • Settings opens at once when the server is slow or wrong, and the dashboard's error page has a Server settings button, so a bad address is no longer a lockout (#267)
  • Log Food: the search field's focus ring is no longer clipped, and Scan is hidden where the browser has no camera API, which is any page served over plain http (#266)
  • Sign-in and register: the show-password button has a name for screen readers, and the Spanish tagline no longer runs off a small screen (#261)
  • Removing an exercise with logged sets asks first, and a logged set can no longer be removed from Gym Mode (#257)
  • Gym Mode keeps "complete set" available during rest (#225), thanks to @Thijs226
  • Exercise filters (muscle_group, category, equipment) accept any letter case and surrounding spaces instead of silently returning nothing (#228)
  • Security updates: Go standard library and x/net, axios, react-router-dom and web dev tooling, and the runtime image moved off an end-of-life Alpine (#221, #222)
  • CI runs about twice as fast, around 5 minutes for the required checks (#259, #260)

Also worth knowing

  • Scanning a barcode needs HTTPS or localhost on the web. Browsers do not give a plain http:// page a camera. A LAN self-host over http will not show Scan; the phone apps are unaffected.
  • A few native light-theme colours (the accent and the TODAY chip) are still around 3.4:1 against their background.

Contributors

@ansgaross (#166), @Thijs226 (#225)

What's Changed

  • Patch the Go standard library and x/net, and move the runtime image off EOL Alpine by @Cawlumm in #221
  • Patch axios, react-router-dom 7 and the web dev tooling by @Cawlumm in #222
  • fix(gym): keep set completion available during rest by @Thijs226 in #225
  • Pin the e2e job to ubuntu-24.04 so WebKit can launch by @Cawlumm in #226
  • Upgrade the mobile app to Expo SDK 58 (Metro 0.87) by @Cawlumm in #224
  • Add an exercise browser with generic filters, reachable from Workouts by @Cawlumm in #228
  • Hoist expo-router to the root so expo start works with typed routes by @Cawlumm in #229
  • Move the web client into the Expo app (universal iOS/Android/web), delete web/ by @Cawlumm in #246
  • ci: speed up and harden the e2e pipeline by @Cawlumm in #259
  • ci: cut the cold e2e path; PR image builds run alongside the tests by @Cawlumm in #260
  • Sign-in/register: name the show-password toggle; keep the tagline on screen by @Cawlumm in #261
  • Reorder the exercises of a workout, routine day or running session (#166) by @Cawlumm in #257
  • Finish saves only the sets you ticked; nothing ticked offers Discard by @Cawlumm in #262
  • List layout starts the rest timer when you tick a set by @Cawlumm in #263
  • Every control gets a 44x44 hit area without growing by @Cawlumm in #264
  • Light theme text meets WCAG AA contrast by @Cawlumm in #265
  • Log food: unclipped search focus ring; hide Scan over plain http by @Cawlumm in #266
  • Settings and dashboard no longer lock you out while the server hangs by @Cawlumm in #267

New Contributors

Full Changelog: v0.1.0-beta.8...v0.1.0-beta.9

Android (side-load)

Download lyftr-v0.1.0-beta.9.apk below. On your phone, open it and
allow "install from unknown sources" if prompted.

iOS is distributed via TestFlight / the App Store (Apple doesn't allow
side-loading), so it isn't attached here.

What's Changed

  • Patch the Go standard library and x/net, and move the runtime image off EOL Alpine by @Cawlumm in #221
  • Patch axios, react-router-dom 7 and the web dev tooling by @Cawlumm in #222
  • fix(gym): keep set completion available during rest by @Thijs226 in #225
  • Pin the e2e job to ubuntu-24.04 so WebKit can launch by @Cawlumm in #226
  • Upgrade the mobile app to Expo SDK 58 (Metro 0.87) by @Cawlumm in #224
  • Add an exercise browser with generic filters, reachable from Workouts by @Cawlumm in #228
  • Hoist expo-router to the root so expo start works with typed routes by @Cawlumm in #229
  • Move the web client into the Expo app (universal iOS/Android/web), delete web/ by @Cawlumm in #246
  • ci: speed up and harden the e2e pipeline by @Cawlumm in #259
  • ci: cut the cold e2e path; PR image builds run alongside the tests by @Cawlumm in #260
  • Sign-in/register: name the show-password toggle; keep the tagline on screen by @Cawlumm in #261
  • Reorder the exercises of a workout, routine day or running session (#166) by @Cawlumm in #257
  • Finish saves only the sets you ticked; nothing ticked offers Discard by @Cawlumm in #262
  • List layout starts the rest timer when you tick a set by @Cawlumm in #263
  • Every control gets a 44x44 hit area without growing by @Cawlumm in #264
  • Light theme text meets WCAG AA contrast by @Cawlumm in #265
  • Log food: unclipped search focus ring; hide Scan over plain http by @Cawlumm in #266
  • Settings and dashboard no longer lock you out while the server hangs by @Cawlumm in #267

New Contributors

Full Changelog: v0.1.0-beta.8...v0.1.0-beta.9

Don't miss a new lyftr release

NewReleases is sending notifications on new releases.