What's Changed
Fixes
- Security fixes by @alonItzhaki, thanks!
- Fixed error handling for not found status with new
GarminConnectNotFoundError, thanks to @tamcore - Fixed email MFA chain (not firing MFA token), fixes #386
- Fixed
get_golf_shot_data()rejecting all requests due to percent-encoded commas; add hole-number validation (1-18, ,/- separated) to reject malformed or injected input (#377)
New features
- Added
parse_activity_detail_metrics()to resolve positionalget_activity_details()samples into name-keyed dicts (#385) Thanks @La-Jo and @natejswenson - Added
get_heart_rate_zones(),get_power_zones(), andget_power_zones_for_sport()for reading configured HR/power zone profiles (#378) , thanks @dragilla - Added typed strength workouts with a 1,527-exercise catalog (
StrengthWorkout,upload_strength_workout(),garminconnect.exercises), thanks @javierpelado - Added
update_workout()to edit an existing workout template in place (PUT), keeping its id and any calendar schedules valid — no more delete-and-recreate. Thanks @tamcore - Added
push_workout_to_device()to send a workout directly to a connected device, defaulting to the last workout and last-used device. Thanks @mrclmtll - Added
get_golf_club_stats()(club shaft/length/nickname details with average distance) andget_golf_user_stats()(handicap, strokes gained, and connection rankings). Thanks @Richard-Tarbell - Added regression coverage for
get_golf_shot_data(). Thanks @La-Jo
Development
- Bumped actions/setup-python from 6.3.0 to 7.0.0
- Fixed CI tests that were out of sync.