78 tools (up from 64), a pile of correctness fixes, and first-class support for coaches, strength training, and headless deployments.
Highlights
Structured strength / gym workouts (#115, closes #17)
Four new tools built on the Peaksware activity API: tp_search_exercises (offline search over a built-in 944-exercise catalogue with demo videos), tp_create_strength_workout (blocks of exercises with sets and native parameters - reps, weight, duration, RPE and more), tp_get_strength_summary, and tp_delete_strength_workout.
Athlete groups for coaches (#114, #118, closes #69/#101)
Full CRUD on TrainingPeaks athlete groups (tags): tp_list_groups, tp_list_athletes_in_group, tp_create_group, tp_rename_group, tp_delete_group, tp_add_athletes_to_group, tp_remove_athletes_from_group. Membership changes report per-athlete results.
Per-sport, method-correct zone management (#120, closes #119)
tp_update_ftp, tp_update_hr_zones and tp_update_speed_zones now target the right per-sport zone set and recompute bands with TrainingPeaks' own zone calculator, honouring the athlete's calculation method exactly. New: tp_create_zones (create a zone set for a sport that has none) and tp_get_zone_methods (discover available calculation methods per metric). Test-based methods are detected and safely refused rather than corrupted.
Coach quality-of-life
- Bulk scheduling:
tp_schedule_library_workoutaccepts anathletesarray to schedule one template to many athletes with per-athlete results (#133, closes #72) isHiddenon workout create/update to hide workouts from the athlete (#88)- Coach athlete-targeting fixes across profile and auth (#79, #80)
Headless / container deployments
TP_AUTH_COOKIEis now a documented, first-class auth method for servers, containers and CI, with security guidance (#132, closes #85)- Windows: keyring writes that exceed the Credential Manager blob limit now fall back cleanly to the encrypted file instead of crashing (#126, @CaioRodolfo)
Notable fixes
tp_update_workoutwrotesubtype_idinto the sport-type field, silently corrupting the sport (e.g. a swim subtype turned the workout into a Bike) (#130, closes #81)- Library templates created or updated via the API now render with a structure preview - the polyline and intensity range are backfilled the way the TP web UI does it (#107, closes #103)
tp_create_librarypayload and library listing field names corrected (#116, #117, close #98/#100)- Event tools now include a normalised
distance_kmalongside raw TP fields (#131, closes #71) - Structured workout round-trips, planned start times, pair/unpair, workout file upload/download, calendar note CRUD, subjective feedback fields, and many endpoint-contract fixes - see the full changelog.
Thanks
Enormous thanks to the contributors who built most of this release: @evilbruce666 (strength workouts, athlete groups, zones, library previews - all live-verified against the real API), @cygnusb (file operations, structured workout round-trips, many fixes and reviews), @CaioRodolfo (Windows keyring fallback), @Stevancw (coach account support), @ogerbron (isHidden), and to @igor-batrakov, @nateetongsiri, @fmasi and others for high-quality issue reports.
Full changelog: v2.0.0...v2.1.0