Releases: deancochran/ftms
Release list
FTMS TypeScript 0.6.0
Published npm package: @deancochran/ftms@0.6.0.
One decodeFtmsMeasurement(characteristicUuid, bytes, options) interface covers all six FTMS measurement families using one shared raw engine and physical-unit projection. Includes typed named raw values, common metrics and diagnostics. Existing interfaces are preserved; the bike view delegates to the shared implementation.
Tag v0.6.0: be188dd802f3b15e2478a240ff612fbbd92c6198 (PR #43).
Release verification passed on retry after registry processing delayed initial public availability. The immutable archive was not replaced.
Public archive integrity:
sha512-fzFdW/C0K1gMdNim5yNHGuBS6Gyz6JKn58I3B/lBY58fkmD4/0m+wl2kKw3L0Ljg3SHj8bKSCRWtPLIasGBeOg==
604 tests pass; Node 20/22/24 CI, ESM/CommonJS installed consumers and browser resolution pass. Public npm installation passes Auuki's 17 parser tests and production build without tooling configuration changes. Its pre-existing full-suite failures remain. No live-device or Bluetooth qualification claim.
FTMS TypeScript 0.5.0
Published npm package: @deancochran/ftms@0.5.0.
- Adds
decodeIndoorBikeDatawith named measurements, raw values and diagnostics. - Ships ESM and CommonJS compiled from the same source, matching declarations and legacy resolver metadata.
- Preserves existing interfaces, pure byte-only scope and shared corpus identity.
Tag v0.5.0 identifies reviewed main commit b79bb9e5dfc1af4dbd59ceeddb9e0b26f1d27176 (PR #41).
Release and installed public-consumer verification passed on retry after npm's initial processing delay. The immutable archive was not replaced.
Archive integrity:
sha512-6DhDyn51mj5Ywh7wtv+gcB+GS7O8BwaXVD6oR2poD5ORZ90v2nruDQwJcWg8RQZ4jh3Vrpm7n2VrUginGEGj+g==
594 package tests pass; Node 20/22/24 CI passes. Public npm installation passes Auuki's 17 indoor-bike tests and Parcel build with unchanged Parcel/Jest configuration; its existing full-suite failures remain. No live-device or Bluetooth qualification claim.
FTMS Swift 0.1.0
Native Swift FTMS protocol package 0.1.0.
Source commit: a18009d6e9892d92bba00e3c6c6388a9fbc0f5c8. Specification: FTMS 1.0 + EC23224. Corpus versions and
SHA-256 identities are recorded in the attached verification reports.
Install with SwiftPM (Swift 6.0+), then select product FTMS:
.package(url: "https://github.com/deancochran/ftms.git", revision: "swift-v0.1.0")For an immutable pin, replace the tag with a18009d6e9892d92bba00e3c6c6388a9fbc0f5c8. Do not use from: or
.exact() semantic-version requirements in this multi-package repository: its
ordinary v* version tags belong to npm, not Swift.
Verified on Linux and macOS: 282 canonical fixtures, 181,760 measurement layouts,
46 sentinel cases, 47 reserved-bit cases, 315 incomplete prefixes, release builds
and isolated public Git/tag consumers. The installed consumer also compiled for
macOS 13, iOS 16, tvOS 16, watchOS 9 and visionOS 1 deployment targets using Apple SDKs.
These are SDK build results, not
runtime tests on every OS version or on physical Apple devices.
Includes Features, five ranges, all six measurement families, all 21 controls,
responses/statuses, range inspection and static capabilities. No BLE lifecycle,
manufacturer-specific behavior, real-device interoperability or Bluetooth
qualification is claimed. npm/C releases and tags are unchanged.
See package documentation
and changelog.
FTMS Rust 0.1.1
Rust ftms 0.1.1, source 97885265d28b22807499ada88882cda05f51ff9a.
Prepared release; publication is not yet claimed.
- Added public allocation-free normalized range, human-unit control-request,
control-response and Machine Status projections, retaining status actions.
The normalized codec-v1 adapter now validates and
accounts for all 97 canonical cases (zero unsupported/skipped); this is source
capability after 0.1.0, not a change to that released artifact.
Gated host tests, extracted-package and public-registry consumers passed.
SHA256SUMS pins the source archive and release/install evidence.
No MCU execution, Rust device interoperability or Bluetooth qualification is implied.
FTMS Rust 0.1.0
Rust ftms 0.1.0, source 58b9add0addea516769c6f01d4b117a1b02110e1.
Initial Rust protocol-library release.
-
Independent, allocation-free
no_stdimplementation with no unsafe code or
runtime dependencies; minimum supported Rust version 1.85.1. -
Bidirectional Features, five Supported Ranges, all 21 Control Point requests
and responses, six measurement families, Training Status and Machine Status. -
Explicit independent wire-format selections, diagnostic range inspection,
raw absent/unavailable distinctions and failure-atomic caller-buffer encoding. -
Shared literal conformance and structural-matrix tests, malformed-input and
boundary checks, Cortex-M0 compilation and isolated packaged consumers. -
Gated
rust-vVERSIONcrates.io publishing and checksum-pinned GitHub release evidence. -
Static capability-evidence interpretation with 63 exact canonical reports,
typed Feature queries and normalized measurement projections, and bounded
More Data planning/assembly. Normalized codec-v1 evidence covers 35 Feature
cases; the remaining 62 cases are explicitly unsupported by that runner.
These host/package checks are not MCU execution, Rust BLE/device
interoperability, PTS or Bluetooth qualification evidence.
Gated host tests, extracted-package and public-registry consumers passed.
SHA256SUMS pins the source archive and release/install evidence.
No MCU execution, Rust device interoperability or Bluetooth qualification is implied.
Go v0.1.0
Initial pure-Go FTMS release: bidirectional raw codecs, range inspection, normalized ranges, and complete static capability interpretation.
Install:
go get github.com/deancochran/ftms/packages/go@v0.1.0Source: bb470e9, merged into main by PR #26. The annotated nested-module tag is packages/go/v0.1.0.
Verified public module downloads through proxy.golang.org and sum.golang.org with fresh consumers on Go 1.24.0 and 1.27.1 (Linux/amd64). Codecs, capability interpretation, installed-module tests and builds passed. All 63 capability cases passed, alongside 122 additive raw cases/216 assertions, 9 inspection reports, and 181,760 structural measurement layouts in both directions. Attached evidence includes exact corpus identities, clean source reports, public module checksums, and SHA256SUMS.
Normalized measurements and record planning/assembly are not included. No BLE lifecycle, device interoperability, physical-control permission, or Bluetooth qualification is claimed. API is pre-1.0; future minor versions may change it.
FTMS Kotlin/JVM 0.1.0
FTMS Kotlin/JVM 0.1.0
Published and verified on Maven Central:
repositories { mavenCentral() }
dependencies { implementation("io.github.deancochran:ftms:0.1.0") }Independent pure Kotlin/JVM protocol library for Kotlin, Java and Android:
- Bidirectional codecs for all six measurement families.
- Features, five supported ranges and inspection.
- All 21 Control Point procedures/responses, Machine Status and Training Status.
- Static capability evaluation and explicit wire-format variants.
- No BLE transport, Android lifecycle or manufacturer-specific assumptions.
Verification and identity
- Signed tag:
kotlin-v0.1.0. - Exact source:
1fdfefb62f5c1b6a6b3e757cf24deb9d5c09560a. - 87 JUnit tests, complete applicable canonical corpora, 181,760 measurement
layouts encoded and decoded, sentinel/reserved-bit/truncation boundaries. - Kotlin/Java artifact consumers executed; Android API 26+ APK compilation passed.
- All nine release-source PR CI checks passed.
- Central reported
PUBLISHEDfor deployment86dfed11-b0e1-4795-a233-60e12e6fc12a. - All 30 public Maven files matched the signed manifest; OpenPGP signatures and
public-repository Java/Kotlin execution and Android APK compilation passed.
OpenPGP fingerprint: A355E4B9EBD3FAEC850A84A6B7A6488FE4805547.
Binary JAR SHA-256:
c32c3d4bf2533c0d5ff20cc30778973e0c1fd9568a7e75c505a6db0cbaf6a650
Central bundle SHA-256:
f56b8db378ab1efb7242126fbbed42fef7d1761c9a2316e735d8c2c3a126eb25
Attached: exact Central bundle, signed artifact manifest, public key,
Central/public-verification receipts, and signed clean-source conformance reports.
The tagged artifact source is unchanged by subsequent publishing-client fixes.
The standard release method is documented in packages/kotlin/docs/releasing.md:
prepare, validate/upload, explicitly publish, then verify public artifacts.
Android compilation is not an emulator/device run. No live Kotlin Bluetooth
commands, physical power-accuracy tests or Bluetooth qualification are claimed.
C# / DeanCochran.Ftms 0.1.0-alpha.1
Published on NuGet: https://www.nuget.org/packages/DeanCochran.Ftms/0.1.0-alpha.1
Install: dotnet add package DeanCochran.Ftms --version 0.1.0-alpha.1
Pure managed netstandard2.1/net10.0 FullWire codecs, normalized views, range inspection and static capability evidence. No BLE transport or execution authority.
Signed source tag identifies db1f24a. Recovery tooling at 99cc6ce preserved that immutable source. Release run 36787466238 passed Linux/macOS/Windows checks, Linux NativeAOT, exact artifact gates, NuGet OIDC upload, repository-signature/payload verification and fresh public consumers for both target assemblies.
Assets retain the unsigned tested upload, NuGet repository-signed download, symbols upload and verification evidence with SHA256SUMS. The nupkg archive hashes differ because NuGet adds its repository signature; every other ZIP entry matches. Symbols were submitted successfully; symbol-server indexing is asynchronous. No real-device or Bluetooth qualification claim.
FTMS C 0.2.0
Portable C99 source package. All codec and artifact checks passed. Registry submissions are separate. No board or Bluetooth qualification is implied.
FTMS C 0.1.0
Portable C99 source package. All codec and artifact checks passed. Registry submissions are separate. No board or Bluetooth qualification is implied.