unified-ble-manager 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/MIGRATION_4.0.md +10 -6
  3. package/README.md +6 -8
  4. package/RELEASE.md +22 -6
  5. package/SBOM.cdx.json +4 -4
  6. package/THIRD_PARTY_LICENSES.json +1 -1
  7. package/docs/ELECTRON.md +20 -6
  8. package/docs/EXPO_PLUGIN.md +8 -10
  9. package/docs/GAPS.4.0.md +1 -1
  10. package/docs/GETTING_STARTED.md +8 -8
  11. package/docs/NODE.md +1 -1
  12. package/docs/PLATFORMS.md +2 -2
  13. package/docs/TAURI.md +32 -8
  14. package/docs/WEB.md +1 -1
  15. package/docs/generated/PLATFORM_SUPPORT.md +1 -1
  16. package/lib/commonjs/electron/connection-event-codec.js +5 -1
  17. package/lib/commonjs/electron/connection-event-codec.js.map +1 -1
  18. package/lib/commonjs/electron/connection-event-stream-registry.js +1 -0
  19. package/lib/commonjs/electron/connection-event-stream-registry.js.map +1 -1
  20. package/lib/commonjs/electron/main-router.js +1 -0
  21. package/lib/commonjs/electron/main-router.js.map +1 -1
  22. package/lib/commonjs/implementation-version.js +1 -1
  23. package/lib/commonjs/ipc/manager.js +245 -57
  24. package/lib/commonjs/ipc/manager.js.map +1 -1
  25. package/lib/commonjs/ipc/protocol.js.map +1 -1
  26. package/lib/commonjs/public/ble-manager.js +44 -11
  27. package/lib/commonjs/public/ble-manager.js.map +1 -1
  28. package/lib/commonjs/tauri/transport.js +21 -2
  29. package/lib/commonjs/tauri/transport.js.map +1 -1
  30. package/lib/module/electron/connection-event-codec.js +5 -1
  31. package/lib/module/electron/connection-event-codec.js.map +1 -1
  32. package/lib/module/electron/connection-event-stream-registry.js +1 -0
  33. package/lib/module/electron/connection-event-stream-registry.js.map +1 -1
  34. package/lib/module/electron/main-router.js +1 -0
  35. package/lib/module/electron/main-router.js.map +1 -1
  36. package/lib/module/implementation-version.js +1 -1
  37. package/lib/module/ipc/manager.js +244 -57
  38. package/lib/module/ipc/manager.js.map +1 -1
  39. package/lib/module/ipc/protocol.js.map +1 -1
  40. package/lib/module/public/ble-manager.js +43 -11
  41. package/lib/module/public/ble-manager.js.map +1 -1
  42. package/lib/module/tauri/transport.js +21 -2
  43. package/lib/module/tauri/transport.js.map +1 -1
  44. package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-provider.d.ts +1 -1
  45. package/lib/typescript/commonjs/src/backends/corebluetooth/corebluetooth-identity.d.ts +1 -1
  46. package/lib/typescript/commonjs/src/backends/reactnative/react-native-android-provider.d.ts +1 -1
  47. package/lib/typescript/commonjs/src/backends/reactnative/react-native-apple-provider.d.ts +1 -1
  48. package/lib/typescript/commonjs/src/backends/winrt/winrt-provider.d.ts +1 -1
  49. package/lib/typescript/commonjs/src/electron/main-router.d.ts.map +1 -1
  50. package/lib/typescript/commonjs/src/implementation-version.d.ts +1 -1
  51. package/lib/typescript/commonjs/src/ipc/manager.d.ts +29 -3
  52. package/lib/typescript/commonjs/src/ipc/manager.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/src/ipc/protocol.d.ts +6 -0
  54. package/lib/typescript/commonjs/src/ipc/protocol.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/src/public/ble-manager.d.ts +6 -0
  56. package/lib/typescript/commonjs/src/public/ble-manager.d.ts.map +1 -1
  57. package/lib/typescript/module/src/backends/bluez/bluez-backend-provider.d.ts +1 -1
  58. package/lib/typescript/module/src/backends/corebluetooth/corebluetooth-identity.d.ts +1 -1
  59. package/lib/typescript/module/src/backends/reactnative/react-native-android-provider.d.ts +1 -1
  60. package/lib/typescript/module/src/backends/reactnative/react-native-apple-provider.d.ts +1 -1
  61. package/lib/typescript/module/src/backends/winrt/winrt-provider.d.ts +1 -1
  62. package/lib/typescript/module/src/electron/main-router.d.ts.map +1 -1
  63. package/lib/typescript/module/src/implementation-version.d.ts +1 -1
  64. package/lib/typescript/module/src/ipc/manager.d.ts +29 -3
  65. package/lib/typescript/module/src/ipc/manager.d.ts.map +1 -1
  66. package/lib/typescript/module/src/ipc/protocol.d.ts +6 -0
  67. package/lib/typescript/module/src/ipc/protocol.d.ts.map +1 -1
  68. package/lib/typescript/module/src/public/ble-manager.d.ts +6 -0
  69. package/lib/typescript/module/src/public/ble-manager.d.ts.map +1 -1
  70. package/native/PREBUILDS.json +5 -5
  71. package/native/electron/corebluetooth/prebuilds/darwin-arm64/unified_ble_corebluetooth.node +0 -0
  72. package/native/electron/corebluetooth/prebuilds/darwin-x64/unified_ble_corebluetooth.node +0 -0
  73. package/native/electron/winrt/prebuilds/win32-arm64/unified_ble_winrt.node +0 -0
  74. package/native/electron/winrt/prebuilds/win32-x64/unified_ble_winrt.node +0 -0
  75. package/package.json +1 -1
  76. package/src/electron/connection-event-codec.ts +7 -1
  77. package/src/electron/connection-event-stream-registry.ts +1 -0
  78. package/src/electron/main-router.ts +1 -0
  79. package/src/implementation-version.ts +1 -1
  80. package/src/ipc/manager.ts +289 -59
  81. package/src/ipc/protocol.ts +6 -0
  82. package/src/public/ble-manager.ts +53 -11
  83. package/src/tauri/transport.ts +33 -2
package/CHANGELOG.md CHANGED
@@ -4,6 +4,34 @@ All notable changes to `unified-ble-manager` are documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [4.0.2] - 2026-08-24
8
+
9
+ Public coalesced scans no longer lose duplicate suppression after lost-peer or presence-cap churn: fingerprint deletions now decrement the retained-byte counter. IPC pre-registration buffering is globally bounded (ID/item/byte/age) with fail-visible tombstones. Connection release attempts `connection.disconnect` even when lifecycle unsubscribe rejects or returns `release-failed`, and preserves both cleanup failures. Does not retag `v4.0.1`.
10
+
11
+ ### Fixes
12
+
13
+ - Coalesced public scans keep exact fingerprint byte accounting across `reportLost` and presence eviction (#53).
14
+ - IPC pending streams for unknown IDs are aggregate-bounded; quota/TTL loss is visible when the ID later registers (#54).
15
+ - IPC connection release no longer skips physical `connection.disconnect` after a lifecycle unsubscribe failure (#56).
16
+
17
+ ### Release integrity
18
+
19
+ - Cut from the exact post-PR #57 `main` merge commit through the tag-driven trusted-publishing workflow.
20
+ - Intended for publication as `latest`; this does not promote backend support labels or claim physical-radio evidence.
21
+
22
+ ## [4.0.1] - 2026-08-24
23
+
24
+ Tauri JS transport now accepts the adapter-state snapshot the Rust plugin emits (`heard: null` on unsampled bootstrap, non-negative integer on live `adapter.state`). Extra or missing adapter-state keys stay fail-closed and are named in the decode error. Teaching docs describe the current stable 4.x install instead of RC-as-current. Does not retag `v4.0.0`.
25
+
26
+ ### Fixes
27
+
28
+ - `createTauriBleManager()` no longer throws `protocol.malformed: tauri.transport.response` because Rust included `heard` on `adapter.state` (#50).
29
+
30
+ ### Release integrity
31
+
32
+ - Cut from the exact post-PR #52 `main` merge commit through the tag-driven trusted-publishing workflow.
33
+ - Intended for publication as `latest`; this does not promote backend support labels or claim physical-radio evidence.
34
+
7
35
  ## [4.0.0] - 2026-08-24
8
36
 
9
37
  Stable package/API contract after PR11/RC5. Package SemVer `4.0.0` does not promote backend support labels or claim physical-radio evidence. Live-radio vertical slices, soak, and crates.io crate publication remain unverifiable in this environment and are recorded as blocked rather than mocked. Immutable `v4.0.0-rc.5` is not retagged.
package/MIGRATION_4.0.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Migrating from react-native-ble-plx
4
4
 
5
- The `4.0.0` release is a new package and a new contract. It is **not a source-compatible rename**. There is no `new BleManager()` facade, no Base64 characteristic values, and no public transaction IDs.
5
+ The current package is `4.0.2`. The `4.0.0` release is a new package and a new contract. It is **not a source-compatible rename**. There is no `new BleManager()` facade, no Base64 characteristic values, and no public transaction IDs.
6
6
 
7
7
  This page is for a React Native app that already uses `react-native-ble-plx`. Web, Electron, Node, and Tauri are new hosts — use those pages after you understand the RN rewrite.
8
8
 
@@ -63,7 +63,11 @@ manager.onStateChange((state) => {
63
63
  // unified-ble-manager — state and readiness belong to the selected backend
64
64
  const abort = new AbortController()
65
65
  const state = await manager.adapter.state()
66
- if (state.power !== 'on' || state.authorization !== 'granted' || state.availability !== 'available') {
66
+ if (
67
+ state.power !== 'on' ||
68
+ state.availability !== 'available' ||
69
+ ['denied', 'restricted', 'unavailable'].includes(state.authorization)
70
+ ) {
67
71
  // request OS permissions / ask the user to enable Bluetooth
68
72
  }
69
73
  await manager.adapter.waitUntilReady({ signal: abort.signal, timeoutMs: 20_000, operation: 'scan' })
@@ -357,13 +361,13 @@ if (gone.state === 'release-failed') {
357
361
  | `checkBluetoothPermissions` helpers | `manager.adapter.state().authorization` + OS APIs. |
358
362
  | `setLogLevel` | `manager.traces()` / `traceDocument()` if you need diagnostics. |
359
363
  | Android `scanMode` / `callbackType` | `duplicatePolicy`, `filter`, `delivery`. |
360
- | Expo `iosEnableRestoration` / `iosRestorationIdentifier` | `iosNativeProtocolRestoration` with five fields. |
364
+ | Expo `iosEnableRestoration` / `iosRestorationIdentifier` | v2 `background.ios.restoration` in the Expo plugin. |
361
365
  | Expo `androidEnableForegroundService` | The app owns any FGS. |
362
366
  | Static `supports()` matrix | `manager.supports(id)` after the backend exists. |
363
367
 
364
- Restoration identity (`applicationId`, `restorationId`, `generation`, and Expo
365
- `iosNativeProtocolRestoration`) does **not** auto-reconnect peripherals. You
366
- still connect.
368
+ Restoration identity from the trusted native host does **not** auto-reconnect
369
+ peripherals. You still connect. Expo uses the v2 `background.ios.restoration`
370
+ token, not the retired five-field `iosNativeProtocolRestoration` key.
367
371
 
368
372
  ## Suggested order
369
373
 
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  It is an evolution of `react-native-ble-plx`, rewritten as a **cross-platform unified product**. One bytes-first BLE model and lifecycle semantics across hosts, with host-specific construction and ownership. The root package never picks a radio for you, and it will not quietly fall back to a simulator or a different backend.
8
8
 
9
- **Current release:** `4.0.0` is published from exact `main` and is immutable. Do not recreate `v4.0.0`. Immutable `4.0.0-rc.4`, `4.0.0-rc.4.1`, and `4.0.0-rc.5` remain published history. Package SemVer and backend support labels are independent: each radio backend stays Experimental until artifact-bound physical-hardware validation says otherwise. See [`docs/PLATFORMS.md`](docs/PLATFORMS.md).
9
+ Install `unified-ble-manager` from npm (`4.0.2` on `latest`). The root import does not pick a radio. Package SemVer and backend support labels are independent: each radio backend stays Experimental until live-radio evidence says otherwise. See [`docs/PLATFORMS.md`](docs/PLATFORMS.md).
10
10
 
11
11
  > Sponsored by [Imagi Explain](https://imagiexplain.com) — researched, narrated whiteboard explainers from a prompt, a PDF, or your notes.
12
12
 
@@ -87,10 +87,8 @@ On Android 12+ the app must request `BLUETOOTH_SCAN` and `BLUETOOTH_CONNECT` its
87
87
 
88
88
  ### Expo plugin
89
89
 
90
- Expo plugin v2 configuration and native restoration wiring are intentionally
91
- tracked for PR10. Do not copy the retired RC1 keys from older examples. Use an
92
- Expo development build, never Expo Go, and follow [`docs/EXPO_PLUGIN.md`](docs/EXPO_PLUGIN.md)
93
- for the current release-train status.
90
+ Use an Expo development build, never Expo Go. Plugin options live in
91
+ [`docs/EXPO_PLUGIN.md`](docs/EXPO_PLUGIN.md).
94
92
 
95
93
  For an Expo development build, use the Expo host factory and inspect readiness
96
94
  before starting a user action:
@@ -104,7 +102,7 @@ const readiness = await ble.readiness()
104
102
  const associated = await ble.association.associate({ name: 'Sensor' })
105
103
  ```
106
104
 
107
- ### PR10 Expo proof boundary
105
+ ### Packed Expo / Tauri export proof
108
106
 
109
107
  The packed-host gate (`pnpm prepack && node scripts/ci/packed-host-consumer-check.js`)
110
108
  installs the generated tarball into an isolated consumer and proves the
@@ -215,7 +213,7 @@ not evidence of support. Readiness is unsupported until the backend advertises
215
213
  the readiness capability, and a readiness event does not prove a later payload
216
214
  was retained.
217
215
 
218
- Current PR8 host truth is detailed in the [semantics host matrix](docs/UNIFIED_SEMANTICS.md#172-current-pr8-host-matrix). In
216
+ Runtime capability truth for each host is in the [semantics host matrix](docs/UNIFIED_SEMANTICS.md#172-current-pr8-host-matrix). In
219
217
  particular, React Native Android exposes MTU request/effective observation and
220
218
  PHY read/request as `limited` / deterministic controls: effective MTU is
221
219
  unavailable before a successful `onMtuChanged` callback, and PHY request
@@ -289,7 +287,7 @@ after disconnect, service change, or rediscovery.
289
287
  - **Node:** `createCoreBluetoothBleManager` / `createWinRtBleManager` / `createBluezBleManager`, or list adapters and `createBleManagerFromProvider`. Published releases ship Node-API v8 prebuilds for macOS and Windows `arm64`/`x64`. [`docs/NODE.md`](docs/NODE.md)
290
288
  - **Tauri:** `createTauriBleManager()` returns the public `BleManager`; test transports use `createTauriBleManagerWithEnvironment`. [`docs/TAURI.md`](docs/TAURI.md)
291
289
 
292
- `4.0.0-rc.*` versions publish to npm `latest` so a bare install gets the current 4.0 line. After the first stable `4.0.0`, later prereleases publish to `next`. Publication uses npm trusted publishing/OIDC with provenance.
290
+ Stable 4.x versions publish to npm `latest`. Later prereleases, if any, publish to `next`. Publication uses npm trusted publishing/OIDC with provenance.
293
291
 
294
292
  ## Migrating from react-native-ble-plx
295
293
 
package/RELEASE.md CHANGED
@@ -81,7 +81,7 @@ Active `4.0.0-rc.*` release-train candidates publish to npm `latest` so a bare `
81
81
 
82
82
  On release day, set `release_candidate` to the exact candidate required by the
83
83
  release plan. RC2, RC3, RC4, `4.0.0-rc.4.1`, and RC5 are already immutable
84
- once tagged. Stable `4.0.0` is the current train head after PR12.
84
+ once tagged. Stable `4.0.0` and `4.0.1` are immutable. `4.0.2` is the current train head.
85
85
 
86
86
  ```sh
87
87
  release_candidate=4.0.0-rc.N
@@ -103,7 +103,23 @@ Do not push another commit to `main` between the final verification and the tag
103
103
 
104
104
  ## Releasing 4.0.0
105
105
 
106
- The source version is prepared on `main` before the tag. The release workflow verifies that every initial release tag points at the exact current `main` commit before publication; do not create that tag from a side branch or an older commit.
106
+ The first stable tag `v4.0.0` is immutable published history. Do not recreate or move it.
107
+
108
+ ```sh
109
+ git tag -a v4.0.0 -m "v4.0.0"
110
+ ```
111
+
112
+ ## Releasing 4.0.1
113
+
114
+ The `v4.0.1` tag is immutable published history. Do not recreate or move it.
115
+
116
+ ```sh
117
+ git tag -a v4.0.1 -m "v4.0.1"
118
+ ```
119
+
120
+ ## Releasing 4.0.2
121
+
122
+ The source version is prepared on `main` before the tag. The release workflow verifies that every initial release tag points at the exact current `main` commit before publication; do not create that tag from a side branch or an older commit. Do not retag immutable `v4.0.0` or `v4.0.1`.
107
123
 
108
124
  On release day:
109
125
 
@@ -113,12 +129,12 @@ git checkout main
113
129
  git pull --ff-only origin main
114
130
 
115
131
  test "$(git branch --show-current)" = "main"
116
- test "$(node -p "require('./package.json').version")" = "4.0.0"
132
+ test "$(node -p "require('./package.json').version")" = "4.0.2"
117
133
  git diff --exit-code
118
134
  git diff --cached --exit-code
119
135
 
120
- git tag -a v4.0.0 -m "v4.0.0"
121
- git push origin v4.0.0
136
+ git tag -a v4.0.2 -m "v4.0.2"
137
+ git push origin v4.0.2
122
138
  ```
123
139
 
124
140
  Do not push another commit to `main` between the final verification and the tag push.
@@ -173,7 +189,7 @@ Never move or recreate a published version tag to hide a failed release.
173
189
 
174
190
  - If the workflow fails **before npm publication**, fix the source on `main`, increment/version as appropriate, and create the correct new tag.
175
191
  - If npm publication succeeds but a later GitHub-release step fails, preserve the immutable npm version and rerun the workflow. The recovery path skips the current-`main` admission check and attaches the exact npm registry tarball rather than newly linked native binaries.
176
- - If a defect is discovered after `4.0.0` is published, fix it and release `4.0.1`; do not replace `4.0.0`.
192
+ - If a defect is discovered after a stable tag is published, fix it and release a new patch; do not replace the published tag.
177
193
 
178
194
  ## Prereleases after 4.0.0
179
195
 
package/SBOM.cdx.json CHANGED
@@ -6,15 +6,15 @@
6
6
  "metadata": {
7
7
  "component": {
8
8
  "type": "library",
9
- "bom-ref": "pkg:npm/unified-ble-manager@4.0.0",
9
+ "bom-ref": "pkg:npm/unified-ble-manager@4.0.2",
10
10
  "name": "unified-ble-manager",
11
- "version": "4.0.0",
11
+ "version": "4.0.2",
12
12
  "licenses": [
13
13
  {
14
14
  "expression": "Apache-2.0"
15
15
  }
16
16
  ],
17
- "purl": "pkg:npm/unified-ble-manager@4.0.0"
17
+ "purl": "pkg:npm/unified-ble-manager@4.0.2"
18
18
  },
19
19
  "properties": [
20
20
  {
@@ -537,7 +537,7 @@
537
537
  "dependsOn": []
538
538
  },
539
539
  {
540
- "ref": "pkg:npm/unified-ble-manager@4.0.0",
540
+ "ref": "pkg:npm/unified-ble-manager@4.0.2",
541
541
  "dependsOn": [
542
542
  "pkg:npm/%40tauri-apps/api@2.11.1",
543
543
  "pkg:npm/node-addon-api@8.9.0",
@@ -4,7 +4,7 @@
4
4
  "schemaVersion": "1.0.0",
5
5
  "package": {
6
6
  "name": "unified-ble-manager",
7
- "version": "4.0.0"
7
+ "version": "4.0.2"
8
8
  },
9
9
  "source": {
10
10
  "method": "pnpm-lock production graph with installed-manifest license audit",
package/docs/ELECTRON.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Main owns the radio. The renderer uses a versioned IPC client and never loads a native addon.
6
6
 
7
- **Current release:** `4.0.0` is published from exact `main` and is immutable. The release ships Node-API v8 prebuilds covering macOS and Windows `arm64`/`x64` for both Node and modern Electron.
7
+ The current package is `4.0.2`. The release ships Node-API v8 prebuilds covering macOS and Windows `arm64`/`x64` for both Node and modern Electron.
8
8
 
9
9
  `unified-ble-manager/electron/main` and
10
10
  `unified-ble-manager/electron/renderer` are the only Electron entrypoints.
@@ -23,10 +23,24 @@ Runnable composition lives in [`example-electron/`](../example-electron/)
23
23
  BrowserWindow must use `contextIsolation: true` and `nodeIntegration: false`.
24
24
  Security internals live in [`ELECTRON_SECURITY_MODEL.md`](ELECTRON_SECURITY_MODEL.md).
25
25
 
26
- In main, build the host-owned generic manager from a provider, then bind IPC.
27
- The renderer uses the public `BleManager` façade; the low-level
28
- `ElectronRendererBleClient` remains an implementation seam for the transport
29
- and advanced boundary tests, not an application API.
26
+ In the renderer, after preload hands you an authenticated transport:
27
+
28
+ ```ts
29
+ import { createElectronRendererBleManager } from 'unified-ble-manager/electron/renderer'
30
+
31
+ const abort = new AbortController()
32
+ const manager = await createElectronRendererBleManager({ transport })
33
+ const scan = await manager.scan({
34
+ query: { anyOf: [{ services: { any: ['180d'] } }] },
35
+ signal: abort.signal,
36
+ timeoutMs: 15_000
37
+ })
38
+ await scan.stop()
39
+ await manager.destroy()
40
+ ```
41
+
42
+ The low-level `ElectronRendererBleClient` is an implementation seam for the
43
+ transport and tests, not an application API.
30
44
 
31
45
  ## Advanced main-process provider construction
32
46
 
@@ -63,7 +77,7 @@ const manager = await createBleManagerFromProvider(
63
77
  )
64
78
  ```
65
79
 
66
- They deliberately split physical-radio ownership from renderer use:
80
+ Main and renderer stay split:
67
81
 
68
82
  - the Electron **main** process creates one selected owned backend and owns the
69
83
  generic manager/radio lifecycle;
@@ -7,22 +7,20 @@ start a radio, request runtime permissions during prebuild, or prove physical
7
7
  radio/restoration reliability. Expo Go is not a supported BLE execution
8
8
  environment because it cannot contain this native module.
9
9
 
10
- The v2 Expo surface documented here is published in `4.0.0`.
11
- The Expo config-plugin schema froze at `4.0.0-rc.4` and is unchanged. Do not
12
- recreate or change that candidate.
10
+ Use the v2 plugin options in the published `4.0.2` package. Those options match
11
+ the schema introduced at `4.0.0-rc.4`. Expo Go cannot load this native module.
13
12
 
14
13
  ## Installation and development build
15
14
 
16
- Pin the published 4.0.0 package. Do not use an unpinned package-install command
17
- for this recipe: later `latest` movement must not silently change the frozen
18
- Expo v2 schema consumed by a development build.
15
+ Pin the package so a later `latest` bump does not change native plugin options
16
+ without a rebuild:
19
17
 
20
- pnpm add unified-ble-manager@4.0.0
18
+ pnpm add unified-ble-manager@4.0.2
21
19
  pnpm add expo@^57.0.0 expo-dev-client
22
- bunx expo prebuild --clean
23
- bunx expo run:ios
20
+ npx expo prebuild --clean
21
+ npx expo run:ios
24
22
  # or
25
- bunx expo run:android
23
+ npx expo run:android
26
24
 
27
25
  For EAS development builds:
28
26
 
package/docs/GAPS.4.0.md CHANGED
@@ -14,7 +14,7 @@ This file tracks platform code, CI, package, lab, and live-radio evidence. It do
14
14
 
15
15
  The clean-baseline contract, unified core, public manager, deterministic backend, TCK, native protocol, first-party backend implementations, host-isolated package exports, SDK/CLI, and legacy-absence gates exist in the 4.0 source. Passing deterministic, compile, ABI, or package tests are implementation proof; they do not become physical-radio support evidence unless a retained record proves the corresponding live scenario.
16
16
 
17
- `unified-ble-manager@4.0.0` is the published, immutable stable package/API. Backend support labels remain
17
+ `unified-ble-manager@4.0.2` is the published, immutable stable package/API. Immutable `4.0.0` and `4.0.1` remain published history. Backend support labels remain
18
18
  evidence-derived. This package does not rewrite the evidence inventory: a backend remains at the support level
19
19
  justified by its records. The alpha train, including `v4.0.0-alpha.40`, remains historical implementation/release
20
20
  evidence and must not be used to claim a higher current support label than it actually proved.
@@ -2,10 +2,10 @@
2
2
 
3
3
  # Getting started
4
4
 
5
- **Current release:** `4.0.0` is published from exact `main` and is immutable. Do not recreate `v4.0.0`. Immutable `4.0.0-rc.4`, `4.0.0-rc.4.1`, and `4.0.0-rc.5` remain published history.
6
-
7
5
  This page gets you to a first scan, connect, read, notify, and teardown on React Native. Other hosts are linked at the bottom. The root import does not turn Bluetooth on.
8
6
 
7
+ The current package is `4.0.2`.
8
+
9
9
  ## Pick a host
10
10
 
11
11
  | You are building | Import | Next page |
@@ -14,8 +14,8 @@ This page gets you to a first scan, connect, read, notify, and teardown on React
14
14
  | Expo / CNG v2 | `unified-ble-manager/expo` | [`EXPO_PLUGIN.md`](EXPO_PLUGIN.md) |
15
15
  | React provider / hooks | `unified-ble-manager/react` | [`README.md`](../README.md#react-provider-and-hooks) |
16
16
  | Browser | `unified-ble-manager/web` | [`WEB.md`](WEB.md) |
17
- | Electron | `electron/main` + `electron/renderer` | [`ELECTRON.md`](ELECTRON.md) |
18
- | Node on macOS / Windows / Linux | `node/corebluetooth`, `node/winrt`, or `node/bluez` | [`NODE.md`](NODE.md) |
17
+ | Electron | `unified-ble-manager/electron/main` + `unified-ble-manager/electron/renderer` | [`ELECTRON.md`](ELECTRON.md) |
18
+ | Node on macOS / Windows / Linux | `unified-ble-manager/node/corebluetooth`, `node/winrt`, or `node/bluez` | [`NODE.md`](NODE.md) |
19
19
  | Tauri v2 | `unified-ble-manager/tauri` | [`TAURI.md`](TAURI.md) |
20
20
 
21
21
  ## React Native and Expo in one hour
@@ -24,10 +24,10 @@ This page gets you to a first scan, connect, read, notify, and teardown on React
24
24
 
25
25
  #### Bare React Native
26
26
 
27
- The immutable published prerelease for bare React Native is explicitly pinned:
27
+ Pin the current package for a known native rebuild:
28
28
 
29
29
  ```sh
30
- pnpm add unified-ble-manager@4.0.0
30
+ pnpm add unified-ble-manager@4.0.2
31
31
  ```
32
32
 
33
33
  Declare Android Bluetooth permissions and the BLE hardware feature yourself,
@@ -37,10 +37,10 @@ request runtime permissions on Android 12+, add
37
37
  #### Expo / CNG v2
38
38
 
39
39
  The Expo v2 schema and `unified-ble-manager/expo` factory are in the published
40
- `4.0.0` package. Pin that exact version:
40
+ `4.0.2` package. Pin that exact version:
41
41
 
42
42
  ```sh
43
- pnpm add unified-ble-manager@4.0.0
43
+ pnpm add unified-ble-manager@4.0.2
44
44
  ```
45
45
 
46
46
  The package does not run in Expo Go.
package/docs/NODE.md CHANGED
@@ -10,7 +10,7 @@ The root import does not open an adapter. Pick one backend:
10
10
  | `unified-ble-manager/node/winrt` | Windows |
11
11
  | `unified-ble-manager/node/bluez` | Linux (needs `dbus-next@^0.10.2` in the app) |
12
12
 
13
- **Current release:** `4.0.0` is published from exact `main` and is immutable. The release ships Node-API v8 prebuilds for macOS and Windows on `arm64` and `x64`. A normal install should not compile native code. BlueZ talks D-Bus and has no addon.
13
+ The current package is `4.0.2`. The release ships Node-API v8 prebuilds for macOS and Windows on `arm64` and `x64`. A normal install should not compile native code. BlueZ talks D-Bus and has no addon.
14
14
 
15
15
  ## One-call factories
16
16
 
package/docs/PLATFORMS.md CHANGED
@@ -8,9 +8,9 @@ This page is an evidence index, not a static compatibility matrix. An applicatio
8
8
 
9
9
  ## Package stability and backend support are separate
10
10
 
11
- `unified-ble-manager@4.0.0` is the published **stable package/API** for the 4.x contract; it is immutable. Backend support labels remain evidence-derived and independent of this SemVer.
11
+ `unified-ble-manager@4.0.2` is the published **stable package/API** for the 4.x contract; it is immutable. Backend support labels remain evidence-derived and independent of this SemVer. Immutable `4.0.0` and `4.0.1` remain published history.
12
12
 
13
- This release candidate is the portable API/semantics freeze candidate; it does **not** mean every first-party backend is
13
+ This package is the portable API/semantics freeze; it does **not** mean every first-party backend is
14
14
  automatically Preview, Supported, or Reliability-qualified.
15
15
 
16
16
  Backend support labels remain derived from retained evidence. A backend can therefore be Experimental while the host-neutral package is stable. Conversely, deterministic, compile, ABI, or package proof cannot be relabeled as live-radio evidence merely because the package version no longer has a prerelease suffix.
package/docs/TAURI.md CHANGED
@@ -10,28 +10,52 @@ The Rust plugin owns the radio (btleplug: CoreBluetooth, WinRT, or BlueZ). The w
10
10
 
11
11
  ```sh
12
12
  pnpm add unified-ble-manager @tauri-apps/api
13
- cargo add tauri-plugin-unified-ble-manager@4.0.0
14
13
  ```
15
14
 
16
- The documented consumer recipe is crates.io plus the npm package. The crate is
17
- not yet published. Until the crate is published, keep the repository
18
- `path = "../../native/tauri"` checkout/development fallback. `ubm init --host tauri`
19
- writes the crates.io fragment.
15
+ Until the crate is on crates.io, point Cargo at the plugin in this repository:
16
+
17
+ ```toml
18
+ [dependencies]
19
+ tauri-plugin-unified-ble-manager = { path = "../../native/tauri" }
20
+ ```
21
+
22
+ The intended published recipe is `cargo add tauri-plugin-unified-ble-manager@4.0.0`.
23
+ That command fails today because the crate is not published. `ubm init --host tauri`
24
+ writes the crates.io fragment so you can switch when it is.
20
25
 
21
26
  ## Frontend
22
27
 
23
28
  ```ts
24
29
  import { createTauriBleManager } from 'unified-ble-manager/tauri'
25
30
 
31
+ const abort = new AbortController()
26
32
  const manager = await createTauriBleManager()
27
33
  const scan = await manager.scan({
28
34
  query: { anyOf: [{ services: { any: ['180d'] } }] },
29
35
  duplicates: 'coalesced',
30
- delivery: 'balanced'
36
+ delivery: 'balanced',
37
+ signal: abort.signal,
38
+ timeoutMs: 15_000
31
39
  })
32
- // consume scan.observations (value / overflow / terminal), then:
40
+ const first = await scan.observations[Symbol.asyncIterator]().next()
33
41
  await scan.stop()
34
- await manager.destroy()
42
+ if (first.done || first.value.kind !== 'value') {
43
+ await manager.destroy()
44
+ throw new Error('No peer observed')
45
+ }
46
+ const connection = await manager.connect(first.value.peer, { signal: abort.signal, timeoutMs: 10_000 })
47
+ try {
48
+ const gatt = await connection.discover({ signal: abort.signal, timeoutMs: 10_000 })
49
+ const battery = gatt.services.find(service => service.uuid === '180f')
50
+ const level = battery?.characteristics.find(characteristic => characteristic.uuid === '2a19')
51
+ if (level !== undefined) {
52
+ const bytes = await level.read({ signal: abort.signal, timeoutMs: 5_000 })
53
+ void bytes
54
+ }
55
+ } finally {
56
+ await connection.release()
57
+ await manager.destroy()
58
+ }
35
59
  ```
36
60
 
37
61
  `BleManager.scan` accepts the frozen `ScanQuery` Boolean algebra plus `signal`, `timeoutMs`, duplicate policy, and a stream preset. Query matching is performed by the shared portable matcher; native projections are only safe broad prefilters.
package/docs/WEB.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Use `unified-ble-manager/web` in a secure context (HTTPS or localhost) from a user gesture. There is no background scan and no process-level restoration.
6
6
 
7
- **Current release:** `4.0.0` is published from exact `main` and is immutable. The backend is Experimental until artifact-bound physical-hardware validation says otherwise. See [`PLATFORMS.md`](PLATFORMS.md).
7
+ The current package is `4.0.2`. The backend is Experimental until artifact-bound physical-hardware validation says otherwise. See [`PLATFORMS.md`](PLATFORMS.md).
8
8
 
9
9
  ## Create the manager
10
10
 
@@ -6,7 +6,7 @@ This page is generated by `scripts/docs/generate-platform-support.js` from valid
6
6
 
7
7
  ## Current package
8
8
 
9
- `unified-ble-manager@4.0.0`
9
+ `unified-ble-manager@4.0.2`
10
10
 
11
11
  No evidence record is bound to this exact package version and artifact. Consequently, this generated page makes no Preview, Live Preview, Supported, or Reliability-qualified platform claim for the current package.
12
12
 
@@ -105,7 +105,7 @@ function decodeElectronAttachment(value) {
105
105
  throw (0, _errors.contractError)('protocol.malformed', 'ipc', 'electron-renderer.connection-lifecycle-adapter');
106
106
  }
107
107
  const state = serializableRecord(adapter.state);
108
- if (state === null || !isAdapterAvailability(state.availability) || !isAdapterAuthorization(state.authorization) || !isAdapterPower(state.power) || typeof state.backendGeneration !== 'string' || state.backendGeneration.length === 0 || !isFiniteNumber(state.updatedAt) || !isNullableString(state.safeReason)) {
108
+ if (state === null || !isAdapterAvailability(state.availability) || !isAdapterAuthorization(state.authorization) || !isAdapterPower(state.power) || typeof state.backendGeneration !== 'string' || state.backendGeneration.length === 0 || !isFiniteNumber(state.updatedAt) || !isNullableString(state.safeReason) || !isHeardCount(state.heard)) {
109
109
  throw (0, _errors.contractError)('protocol.malformed', 'ipc', 'electron-renderer.connection-lifecycle-adapter-state');
110
110
  }
111
111
  const limitations = stringArray(adapter.limitations, 'electron-renderer.connection-lifecycle-adapter-limitations');
@@ -120,6 +120,7 @@ function decodeElectronAttachment(value) {
120
120
  availability: state.availability,
121
121
  authorization: state.authorization,
122
122
  power: state.power,
123
+ heard: state.heard,
123
124
  backendGeneration: state.backendGeneration,
124
125
  updatedAt: state.updatedAt,
125
126
  safeReason: state.safeReason
@@ -186,6 +187,9 @@ function isOverflowPolicy(value) {
186
187
  function isStreamTerminalReason(value) {
187
188
  return value === 'closed' || value === 'overflow' || value === 'source-failed' || value === 'owner-released' || value === 'connection-lost' || value === 'service-changed' || value === 'operation-aborted' || value === 'operation-timed-out';
188
189
  }
190
+ function isHeardCount(value) {
191
+ return value === null || typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
192
+ }
189
193
  function isAdapterAvailability(value) {
190
194
  return value === 'available' || value === 'unavailable' || value === 'unsupported' || value === 'unknown';
191
195
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_errors","require","_protocol","decodeConnectionEventsSubscribeResponse","payload","handle","requiredRendererString","connectionId","connectionGeneration","eventSchemaVersion","ELECTRON_CONNECTION_LIFECYCLE_EVENT_SCHEMA_VERSION","contractError","Object","freeze","decodeConnectionEventCleanupReceipt","state","isNonNegativeSafeInteger","failureCount","decodeConnectionEventStreamItem","item","kind","value","decodeConnectionLifecycleEvent","isOverflowPolicy","policy","droppedItems","droppedBytes","replacedItems","isStreamTerminalReason","reason","event","serializableRecord","schemaVersion","isConnectionState","previous","current","isConnectionLifecycleCause","cause","sequence","backendIngressOrdinal","attachment","decodeElectronAttachment","attachmentId","peerId","ownerLeaseId","adapter","isAdapterAvailability","availability","isAdapterAuthorization","authorization","isAdapterPower","power","backendGeneration","length","isFiniteNumber","updatedAt","isNullableString","safeReason","limitations","stringArray","backendInstanceId","adapterId","displayName","nullableRendererString","adapterGeneration","isSerializableRecord","Array","isArray","Uint8Array","record","key","operation","strings","push","Number","isSafeInteger","isFinite"],"sourceRoot":"../../../src","sources":["electron/connection-event-codec.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_errors","require","_protocol","decodeConnectionEventsSubscribeResponse","payload","handle","requiredRendererString","connectionId","connectionGeneration","eventSchemaVersion","ELECTRON_CONNECTION_LIFECYCLE_EVENT_SCHEMA_VERSION","contractError","Object","freeze","decodeConnectionEventCleanupReceipt","state","isNonNegativeSafeInteger","failureCount","decodeConnectionEventStreamItem","item","kind","value","decodeConnectionLifecycleEvent","isOverflowPolicy","policy","droppedItems","droppedBytes","replacedItems","isStreamTerminalReason","reason","event","serializableRecord","schemaVersion","isConnectionState","previous","current","isConnectionLifecycleCause","cause","sequence","backendIngressOrdinal","attachment","decodeElectronAttachment","attachmentId","peerId","ownerLeaseId","adapter","isAdapterAvailability","availability","isAdapterAuthorization","authorization","isAdapterPower","power","backendGeneration","length","isFiniteNumber","updatedAt","isNullableString","safeReason","isHeardCount","heard","limitations","stringArray","backendInstanceId","adapterId","displayName","nullableRendererString","adapterGeneration","isSerializableRecord","Array","isArray","Uint8Array","record","key","operation","strings","push","Number","isSafeInteger","isFinite"],"sourceRoot":"../../../src","sources":["electron/connection-event-codec.ts"],"mappings":"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","ignoreList":[]}
@@ -309,6 +309,7 @@ function snapshotConnectionLifecycleEvent(event) {
309
309
  availability: event.attachment.adapter.state.availability,
310
310
  authorization: event.attachment.adapter.state.authorization,
311
311
  power: event.attachment.adapter.state.power,
312
+ heard: null,
312
313
  backendGeneration: String(event.attachment.adapter.state.backendGeneration),
313
314
  updatedAt: Number(event.attachment.adapter.state.updatedAt),
314
315
  safeReason: event.attachment.adapter.state.safeReason