First minor release since v1.1.2. Bumped from the 1.1.3 patch line because the desktop wide-layout pass across the main routes is a much larger surface than a patch is meant to carry.
Highlights
- Desktop wide-layout pass across Diary, Statistics, Programs, Radio, Exercises, Settings, and ExercisePicker. Mobile layouts unchanged.
- Spanish + Italian translations, exposed in Settings → Language & Region.
- Trace chat renders markdown.
- Per-entry uuid + tombstone merge for the workout log — two devices editing the same day (or one device coming back online) merge per-exercise and per-set instead of one payload wholesale replacing the other.
- Server forward-proxy support via HTTP_PROXY / HTTPS_PROXY / NO_PROXY env vars.
- In-app updates got much bigger — PWA service-worker prompt, tab-focus re-check, configurable cadence, red dot on Settings nav.
- User-management data-integrity fixes — single-user data adoption for cardio + custom exercises, startup adoption for stranded rows on upgrade, disable/re-enable is a lossless round trip, delete-user now clears the cardio log.
- X-Forwarded-Proto honored for reset/invite links + email origin behind TLS-terminating reverse proxies.
- Android release builds trust user-installed CAs for self-hosters on a private-CA cert.
- Wave of small polish and i18n conversions from community PRs (thanks @backmind and @clifmo).
Full details in CHANGELOG.md.
Upgrading
Docker: pull :latest (or :v1.2.0) from GHCR (ghcr.io/traceapps/lifttrace) or Docker Hub (traceapps/lifttrace).
Android APK is attached to this release; the in-app updater will surface it on the next check.
Nothing config-breaking.