Skip to content

chore: upgrade garmin fit sdk profile version 21.221.0 - #87

Merged
shaonianche merged 1 commit into
mainfrom
chore/profile-21.221.0
Nov 6, 2026
Merged

shaonianche merged 1 commit into
mainfrom
chore/profile-21.221.0

Conversation

@shaonianche

Copy link
Copy Markdown
Owner

Summary

Upgrades the bundled Garmin FIT SDK Profile from 21.218.0 to 21.221.0, sourced from the Profile.xlsx asset of garmin/fit-sdk-tools 21.221.0 (278,545 bytes, sha256 f7aebc64…7109052).

The upstream release changed only Profile.xlsx and the two tool jars, so this is a data-only bump. The profile delta is purely additive: no existing field was removed, renamed, or retyped.

21.218.0 21.221.0 Δ
Messages 124 127 +3
Fields 1566 1593 +27
Closed enum types 115 119 +4
Enum fields 164 167 +3
Enum values — — +58

New messages

  • tsb_sonar_message_event (364) — 4 fields
  • tsb_settings (365) — 17 fields, includes float32[3] calibration arrays
  • tsb_diver_config (366) — 6 fields, includes variable-length diver_name

New types: sonar_heading, sonar_message_source, sonar_message_type, sonar_packet_id

New enum values in existing types

  • file: tsb_sonar_events (66), tsb_diver_config (67)
  • garmin_product: edge_1060, edge_explore3, edge_explore3_plus, marq3, descent_x10
  • manufacturer: fair_weather_athletics, hatch_factory, torqano, rockbros
  • mesg_num: 364–366

Changes

  • Replace fit_tool/gen/Profile_21.218.0.xlsx with Profile_21.221.0.xlsx; bump SDK_VERSION.
  • Regenerate profile code: 3 new message modules registered in message_factory, plus field_catalog, profile_type, and component_registry. 126 of the 129 modified generated files change only the # Profile: header line.
  • Update version/count snapshots in test_validation_profile.py, test_public_api.py, test_garmin_sdk_interop.py, and test_fit_file_header.py.
  • Sync profile version in README.md, docs/CAPABILITY_BOUNDARY.md, docs/EPIC_SHA12_RELEASE_NOTES.md, docs/FIT_CONFORMANCE_DESIGN.md, and fit_tool/tests/data/README.md.
  • Add news/86.dep.

Verification

  • uv run pytest -q — 447 passed, 1 skipped (the skip needs FIT_JS_SDK_PATH + Node).
  • uv run ruff check fit_tool — clean; uv run mypy — clean.
  • uv run gen-profile re-run after staging — no diff (generator idempotent).
  • uv build — wheel contains the three new message modules.
  • Round-trip: TsbSettingsMessage, TsbDiverConfigMessage, and TsbSonarMessageEventMessage encode, decode with expected values, and re-encode byte-identically.
  • Existing fixtures palisade.fit, activity_multiple_developer_index.fit, and stagesLink_25622166.fit still re-encode byte-identically.

Notes

file types 66/67 have no FILE_TYPE validator, so strict validation of such files fails closed with the existing "not implemented" finding, consistent with other unimplemented file types. No validator was added because the message requirements are not documented.

Closes #86

Replace the bundled Garmin Profile spreadsheet with 21.221.0 from
garmin/fit-sdk-tools, bump SDK_VERSION, and regenerate typed profile
code. The profile delta adds three sonar/dive messages (364-366), 27
new fields, four enum types, and 58 new enum values, including the
tsb_sonar_events and tsb_diver_config file types plus descent_x10,
edge_1060, edge_explore3, marq3, and new manufacturer ids. Catalog
counts move to 127 messages / 1593 fields / 119 enum types; the change
is purely additive with no field removals or type changes.

Update hardcoded profile version and count snapshots in tests.

Closes #86

Amp-Thread-ID: https://ampcode.com/threads/T-01a1aed6-c30e-76c7-93f7-cd4b34cd460b
@codecov

codecov Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.03%. Comparing base (6157fe0) to head (5565786).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #87   +/-   ##
=======================================
  Coverage   93.03%   93.03%           
=======================================
  Files          46       46           
  Lines        2728     2728           
  Branches      425      425           
=======================================
  Hits         2538     2538           
  Misses        109      109           
  Partials       81       81           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@shaonianche
shaonianche merged commit d23036b into main Nov 6, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

upgrade garmin fit sdk profile version 21.221.0

1 participant