Skip to content

Releases: cyberjunky/python-garminconnect

Release 0.3.3

22 Apr 12:56

Choose a tag to compare

What's Changed

Performance

  • Persistent HTTP session reuse across API calls (avoids repeated connection overhead)
  • Retries enabled by default (retry_attempts=3 with exponential backoff for transient errors)

Fixes

  • Correct sportTypeId for swimming workouts
  • Ruff and mypy CI clean (0 errors)

Misc / Tooling

  • Added -debug / -d flag on demo script for timing and HTTP visibility
  • Python 3.12 minimum; tooling and workout models modernized
  • Expanded mocked unit test coverage (~30 new tests)

Release 0.3.2

11 Apr 09:24

Choose a tag to compare

What's Changed

Features

  • 5-strategy cascading login added
  • MFA dual-endpoint fallback: tries both /mobile and /portal MFA verify endpoints
  • Add get_scheduled_workouts API method (PR #343 by @hab)

Fixes

  • Fix validation error message
  • Fix mypy return type for _http_post

Style

  • Apply ruff format fixes

Release 0.3.1

03 Apr 13:50

Choose a tag to compare

What's new

  • Token file save bug fixed #342 by @0mlml
  • Cleanup unused tokens usage/storage

Full Changelog: 0.3.0...0.3.1

Release 0.3.0

02 Apr 14:15

Choose a tag to compare

v0.3.0 — Native Authentication

This release replaces the garth dependency with a native authentication engine that uses the same mobile SSO flow as the official Garmin Connect app.

What's new

  • Native DI OAuth authentication — Login, token exchange, and auto-refresh are handled internally.
  • Cloudflare bypass — multiple TLS impersonation strategies (Safari, Chrome, Edge via curl_cffi) to work around Garmin's Cloudflare blocking of programmatic logins.
  • Automatic token refresh — DI OAuth tokens refresh seamlessly in the background. Once logged in, sessions persist indefinitely.
  • Random browser fingerprinting — login requests use randomized browser identities to avoid detection.
  • New methods: delete_workout(), unschedule_workout() (#341)
  • Golf API fix — golf endpoints now work correctly (#320, thanks @rcloran)
  • Workout constant fixTargetType.HEART_RATE now maps to the correct Garmin API value (#333)
  • Regression tests for workout constants to prevent future drift (thanks @ayazhankadessova, PR #340)
  • Added descriptions to workouts by @miki134 in #339

Breaking changes

  • Saved tokens from previous versions are not compatible. A fresh login is required after upgrading.
  • New token format stored as garmin_tokens.json in ~/.garminconnect/.
  • New dependencies: curl_cffi, ua-generator.

Install

pip install --upgrade garminconnect curl_cffi ua-generator

Full Changelog: https://github.com/cyberjunky/python-garminconnect/commits/0.3.0

Release 0.2.40

16 Mar 18:59

Choose a tag to compare

What's Changed

  • Added get_running_tolerance method for #328

Full Changelog: 0.2.29...0.2.40

Release 0.2.39

16 Mar 18:03

Choose a tag to compare

What's Changed

  • Update garth requirement from <0.6.0,>=0.5.17 to >=0.5.17,<0.7.0 by @dependabot[bot] in #319
  • Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #326
  • Fixed linting in demo.py by @BernatNicolau in #325
  • Add workout scheduling by @Skydler in #327
  • Added nutrition service endpoints for daily food, meals, and settings by @KopyWasTaken in #323
  • Added our first Golf related endpoints (see menu demo.py)
  • Added import_activity method for uploads without Strava re-export

New Contributors

Full Changelog: 0.2.38...0.2.29

Release 0.2.38

04 Jan 12:15

Choose a tag to compare

What's Changed

  • Stricter linting and fixes
  • Added get morning training readiness
  • Fixed demo menu numbering issue
  • Fixed get goals parameters not accepting '0'
  • Added Weekly Steps, Weekly Stress and Weekly Intensity Minutes

Full Changelog: 0.2.37...0.2.38

Release 0.2.37

01 Jan 11:00

Choose a tag to compare

What's Changed

  • Fixed possible MFA race condition
  • Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #314
  • Fix maxpoly arg to get_activity_details() to allow 0 value by @puntonim in #313
  • Added time in power zones for activities by @SebastianBurmester in #316

New Contributors

Full Changelog: 0.2.36...0.2.37

Release 0.2.36

29 Nov 17:01
e921425

Choose a tag to compare

What's Changed

  • Added methods for uploading workouts, also see demo.py menu option 5.

Full Changelog: 0.2.35...0.2.36

Release 0.2.35

28 Nov 12:37

Choose a tag to compare

What's Changed

  • Bump actions/checkout from 5 to 6 by @dependabot[bot] in #306
  • Implement querying daily lifestyle logging data by @fulopm in #304
  • Fix training plan retrieval by updating API endpoint by @federicopellegatta in #310
  • Fetch daily steps in chunks when range is over 28 days
  • Normalize token path before passing to Garth to be more compatible with Windows environments
  • Fixed parsing issue in demo,py when values are None

New Contributors

Full Changelog: 0.2.34...0.2.35