Skip to content

Release 0.3.13

Latest

Choose a tag to compare

@cyberjunky cyberjunky released this 09 Sep 14:52

What's Changed

Added

  • get_activities() now accepts an activitysubtype filter (e.g. activitytype="fitness_equipment", activitysubtype="strength_training") for narrower activity searches. (#419)
  • New create_gear() method to register a new piece of gear (e.g. a pair of shoes) directly via the API — previously only linking/unlinking existing gear was possible. (#418, #424)
  • get_personal_record()'s docstring now documents the running typeId schema (1 km / 1 mile / 5 km / 10 km / half marathon / marathon / longest run) and what value means for each. (#423)

Fixed

  • resume_login() after a token-store login no longer permanently loses display_name on an incomplete/transient profile fetch — the fetch is retried, and the documented fallback behavior for genuinely new/empty accounts (no display name configured) is preserved. Previously this silently broke every endpoint that needs a display name (get_rhr_day, get_sleep_data, get_personal_record, etc.) for the rest of the client's lifetime. (#421, #422)
  • get_activities() response handling normalized so a dict-shaped response ({"activityList": [...]}) is handled the same as a plain list. (#419 follow-up)
  • create_gear() rejects non-finite (inf/nan) and sub-unit usage-limit values instead of raising an uncaught OverflowError or silently rounding to 0 (which collides with the "no threshold" sentinel), and rejects a non-list activity_type_keys instead of silently iterating it character-by-character.

Demo (demo.py)

  • New interactive menu option to create gear, prompting for type/brand/model/usage tracking/activity associations.
  • New interactive activity type/subtype filter picker — pulls the live type list from api.get_activity_types() instead of requiring a config edit.
  • "Get personal records" now decodes and formats values instead of dumping raw numbers: running records show as times (m:ss/h:mm:ss) or distance (km), and step-count/goal-streak records (most steps in a day/week/month, longest/current goal streak) are now decoded too — all confirmed against a real account. Anything outside the confirmed set is still shown in full (never hidden), just unlabeled.
  • Lets you look up a personal record's source activity (needed for longest-run duration, which isn't in the record entry itself).

Docs

  • README's API coverage stats corrected — was significantly stale (missing an entire "Activity Editing" category, wrong Training Plans count); now 145+ methods across 14 categories, recomputed directly from demo.py.