Skip to content

v1.4.0

Choose a tag to compare

@KristianP26 KristianP26 released this 24 Feb 12:02
· 436 commits to main since this release

What's New

Broadcast mode for non-connectable scales. Some QN-protocol scales (notably certain Renpho ES-CS20M units) advertise weight data via BLE broadcasts without accepting GATT connections. BLE Scale Sync now reads weight directly from advertisement manufacturer data, no connection needed. Body composition is estimated using the Deurenberg formula when impedance data is unavailable.

BLE diagnostic tool (npm run diagnose). Detailed device analysis showing advertisement data, service UUIDs, RSSI, connectable flag, and step-by-step GATT connection testing. Useful for troubleshooting new or unrecognized scales.

Garmin 2FA/MFA support. The Garmin setup script now prompts for an authenticator code when multi-factor authentication is enabled on your Garmin account.

Fixes

  • QN broadcast parser byte layout corrected (LE uint16 at bytes 17-18, stability flag at byte 15)
  • ES-CS20M service UUID 0x1A10 fallback for unnamed Yunmai-protocol devices
  • ES-CS20M 0x11 STOP frame support as stability signal

Other Changes

  • Node.js 24 added to CI test matrix as a required check
  • PR-triggered Docker image builds with pr-{id} tags
  • ESLint v10, typescript-eslint v8.56
  • 995 tests across 55 files

Thanks

Full Changelog: v1.3.1...v1.4.0