Patch release. Fixes the Garmin upload regression introduced by garminconnect 0.3.0 (2026-04-02), which dropped its garth dependency and broke the Python bridge.
Fixed
- Garmin: upload failed with
'Garmin' object has no attribute 'garth'aftergarminconnectreleased 0.3.0 and replacedgarthwith a native curl_cffi auth engine. The Python bridge (garmin_upload.py,setup_garmin.py) was migrated to the new API:Garmin.login(tokenstore)auto-persists on a successful credential login, andclient.dump(token_dir)saves tokens after MFA. The custom User-Agent override is no longer needed becausegarminconnectnow uses TLS impersonation and randomized browser fingerprints internally (#114). - Docker: added
libcurl4-openssl-devsocurl_cffi(new transitive dep viagarminconnect0.3.x) builds from source on armv7, where PyPI has no prebuilt wheel. - HA Add-on: token bootstrap now uses the new single
garmin_tokens.jsonfile; legacyoauth1_token.json/oauth2_token.jsonfiles left over from 1.7.x are automatically removed on first start.
Breaking change
Tokens from garminconnect 0.2.x are incompatible with 0.3.x.
- Standalone / Docker: re-run
npm run setup-garmin. The setup script strips the oldoauth*_token.jsonfiles before writing the new format. - HA Add-on: just restart the add-on. It re-runs setup from the credentials you entered in the UI and writes the new token format. MFA users regenerate the single-file token per the MFA workaround in the add-on guide.
Thanks
- @Phipseyy and @mooredav87 for reporting the regression (#114).
Install
Docker image: ghcr.io/kristianp26/ble-scale-sync:1.8.1 (also tagged latest, 1.8, 1).
Full diff: v1.8.0...v1.8.1