synheart_wear 0.4.3 copy "synheart_wear: ^0.4.3" to clipboard
synheart_wear: ^0.4.3 copied to clipboard

Flutter SDK for wearable signals — Apple HealthKit, Health Connect, WHOOP, Garmin, Oura, and Fitbit. Unified HR, HRV, steps, calories, distance, stress.

Changelog #

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased #

0.4.3 - 2026-05-26 #

Fixed #

  • iOS: BLE HRM auto-reconnect on cold start no longer fails with DEVICE_NOT_FOUND. BleHrmHandler.connect(deviceId:) used to rely on an optional chain over CBCentralManager, which is nil on the first BLE call after a process launch — retrievePeripherals and retrieveConnectedPeripherals then returned nothing and the connect short-circuited before the radio came up. The fix mirrors what scan() already does: lazily instantiate the central manager, and if the state is still .unknown / .resetting, stash the request in a new pendingConnect slot and finish it from centralManagerDidUpdateState once .poweredOn is reached. On .poweredOff / .unauthorized the pending request is failed with the same error codes the scan path already returns. Hosts that drive auto-reconnect via BleHrmService.ensureConnected() at app startup now reconnect to a previously paired strap without a manual "Re-scan" tap.

0.4.2 - 2026-05-19 #

Changed #

  • Logging hygiene pass across the four wearable adapters (WHOOP, Garmin, Fitbit, Oura). Default log level demoted so a live debug run no longer drowns the operator in init dumps and full-payload request / response logs. Multi-line emoji-prefixed init blocks collapsed to one summary line each. Full URIs, full third-party response bodies, and user identifiers are no longer logged at INFO level — they're DEBUG-only or redacted to suffix-only at INFO. Errors and lifecycle events still emit at WARN/ERROR.

Privacy #

  • User identifiers and OAuth state nonces are no longer logged in full at INFO. Full URIs and full third-party API response bodies are DEBUG-only.

0.4.1 - 2026-05-08 #

Fixed #

  • iOS: Auto-detect Frameworks/Companion.xcframework at pod install time. When the licensed Garmin Companion XCFramework is present, the podspec now wires up vendored_frameworks and -weak_framework Companion automatically (previously this required hand-uncommenting two lines, and licensed users hit Unable to resolve module dependency: 'Companion' if they forgot). OSS consumers without the framework continue to get a clean pod install; Garmin methods surface GarminSDKError at runtime as before.

0.4.0 - 2026-05-07 #

The SDK collects normalized wearable signals from the device's platform health store (Apple HealthKit on iOS, Health Connect on Android) and from supported third-party vendors (WHOOP, Garmin, Oura, Fitbit) via their public APIs. Normalization happens in the SDK; HSI generation happens upstream in synheart_core.

Public surface #

  • SynheartWear facade, SynheartWearConfig.withAdapters({...}).
  • DeviceAdapter enum — platformHealth, whoop, garmin, oura, fitbit. (platformHealth covers both Apple HealthKit and Health Connect; the legacy name appleHealthKit was renamed to make the cross-platform behavior obvious.)
  • MetricType (hr, hrvRmssd, hrvSdnn, steps, calories, distance, stress), WearMetrics, PermissionType, ConsentStatus.
  • RamenEvent typed event surface with a DeliveryHint enum (stream / ping / unknown) and RamenEventDispatcher that materializes a RamenEvent into a payload map regardless of delivery flavor.
  • Garmin Dart layer (platform channel, device manager, SDK adapter, error types, all data models — GarminDevice, GarminConnectionState, GarminRealTimeData, GarminWellnessData, GarminSleepData, GarminActivityData) ships open-source. Only the native Kotlin/Swift wrapper that calls Garmin SDK symbols requires a Garmin license; without it, Garmin methods surface GarminSDKError.
  • BLE Heart Rate Monitor adapter for direct BLE sensor access.

Platform support #

  • iOS 16.0+
  • Android API 26+ (Android 8.0+)
  • Flutter 3.10.0+
7
likes
120
points
605
downloads

Documentation

API reference

Publisher

verified publishersynheart.ai

Weekly Downloads

Flutter SDK for wearable signals — Apple HealthKit, Health Connect, WHOOP, Garmin, Oura, and Fitbit. Unified HR, HRV, steps, calories, distance, stress.

Repository (GitHub)
View/report issues
Contributing

Topics

#wearable #biosignals #flutter #health #hrv

License

unknown (license)

Dependencies

collection, crypto, encrypt, flutter, health, http, meta, path_provider, platform, shared_preferences, url_launcher, uuid, xml

More

Packages that depend on synheart_wear

Packages that implement synheart_wear