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.
- package/CHANGELOG.md +28 -0
- package/MIGRATION_4.0.md +10 -6
- package/README.md +6 -8
- package/RELEASE.md +22 -6
- package/SBOM.cdx.json +4 -4
- package/THIRD_PARTY_LICENSES.json +1 -1
- package/docs/ELECTRON.md +20 -6
- package/docs/EXPO_PLUGIN.md +8 -10
- package/docs/GAPS.4.0.md +1 -1
- package/docs/GETTING_STARTED.md +8 -8
- package/docs/NODE.md +1 -1
- package/docs/PLATFORMS.md +2 -2
- package/docs/TAURI.md +32 -8
- package/docs/WEB.md +1 -1
- package/docs/generated/PLATFORM_SUPPORT.md +1 -1
- package/lib/commonjs/electron/connection-event-codec.js +5 -1
- package/lib/commonjs/electron/connection-event-codec.js.map +1 -1
- package/lib/commonjs/electron/connection-event-stream-registry.js +1 -0
- package/lib/commonjs/electron/connection-event-stream-registry.js.map +1 -1
- package/lib/commonjs/electron/main-router.js +1 -0
- package/lib/commonjs/electron/main-router.js.map +1 -1
- package/lib/commonjs/implementation-version.js +1 -1
- package/lib/commonjs/ipc/manager.js +245 -57
- package/lib/commonjs/ipc/manager.js.map +1 -1
- package/lib/commonjs/ipc/protocol.js.map +1 -1
- package/lib/commonjs/public/ble-manager.js +44 -11
- package/lib/commonjs/public/ble-manager.js.map +1 -1
- package/lib/commonjs/tauri/transport.js +21 -2
- package/lib/commonjs/tauri/transport.js.map +1 -1
- package/lib/module/electron/connection-event-codec.js +5 -1
- package/lib/module/electron/connection-event-codec.js.map +1 -1
- package/lib/module/electron/connection-event-stream-registry.js +1 -0
- package/lib/module/electron/connection-event-stream-registry.js.map +1 -1
- package/lib/module/electron/main-router.js +1 -0
- package/lib/module/electron/main-router.js.map +1 -1
- package/lib/module/implementation-version.js +1 -1
- package/lib/module/ipc/manager.js +244 -57
- package/lib/module/ipc/manager.js.map +1 -1
- package/lib/module/ipc/protocol.js.map +1 -1
- package/lib/module/public/ble-manager.js +43 -11
- package/lib/module/public/ble-manager.js.map +1 -1
- package/lib/module/tauri/transport.js +21 -2
- package/lib/module/tauri/transport.js.map +1 -1
- package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/backends/corebluetooth/corebluetooth-identity.d.ts +1 -1
- package/lib/typescript/commonjs/src/backends/reactnative/react-native-android-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/backends/reactnative/react-native-apple-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/backends/winrt/winrt-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/electron/main-router.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/implementation-version.d.ts +1 -1
- package/lib/typescript/commonjs/src/ipc/manager.d.ts +29 -3
- package/lib/typescript/commonjs/src/ipc/manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ipc/protocol.d.ts +6 -0
- package/lib/typescript/commonjs/src/ipc/protocol.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/public/ble-manager.d.ts +6 -0
- package/lib/typescript/commonjs/src/public/ble-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/backends/bluez/bluez-backend-provider.d.ts +1 -1
- package/lib/typescript/module/src/backends/corebluetooth/corebluetooth-identity.d.ts +1 -1
- package/lib/typescript/module/src/backends/reactnative/react-native-android-provider.d.ts +1 -1
- package/lib/typescript/module/src/backends/reactnative/react-native-apple-provider.d.ts +1 -1
- package/lib/typescript/module/src/backends/winrt/winrt-provider.d.ts +1 -1
- package/lib/typescript/module/src/electron/main-router.d.ts.map +1 -1
- package/lib/typescript/module/src/implementation-version.d.ts +1 -1
- package/lib/typescript/module/src/ipc/manager.d.ts +29 -3
- package/lib/typescript/module/src/ipc/manager.d.ts.map +1 -1
- package/lib/typescript/module/src/ipc/protocol.d.ts +6 -0
- package/lib/typescript/module/src/ipc/protocol.d.ts.map +1 -1
- package/lib/typescript/module/src/public/ble-manager.d.ts +6 -0
- package/lib/typescript/module/src/public/ble-manager.d.ts.map +1 -1
- package/native/PREBUILDS.json +5 -5
- package/native/electron/corebluetooth/prebuilds/darwin-arm64/unified_ble_corebluetooth.node +0 -0
- package/native/electron/corebluetooth/prebuilds/darwin-x64/unified_ble_corebluetooth.node +0 -0
- package/native/electron/winrt/prebuilds/win32-arm64/unified_ble_winrt.node +0 -0
- package/native/electron/winrt/prebuilds/win32-x64/unified_ble_winrt.node +0 -0
- package/package.json +1 -1
- package/src/electron/connection-event-codec.ts +7 -1
- package/src/electron/connection-event-stream-registry.ts +1 -0
- package/src/electron/main-router.ts +1 -0
- package/src/implementation-version.ts +1 -1
- package/src/ipc/manager.ts +289 -59
- package/src/ipc/protocol.ts +6 -0
- package/src/public/ble-manager.ts +53 -11
- 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 (
|
|
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` | `
|
|
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
|
|
365
|
-
|
|
366
|
-
|
|
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
|
-
|
|
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
|
|
91
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
121
|
-
git push origin v4.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
|
|
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.
|
|
9
|
+
"bom-ref": "pkg:npm/unified-ble-manager@4.0.2",
|
|
10
10
|
"name": "unified-ble-manager",
|
|
11
|
-
"version": "4.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.
|
|
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.
|
|
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",
|
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
|
-
|
|
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
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
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;
|
package/docs/EXPO_PLUGIN.md
CHANGED
|
@@ -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
|
-
|
|
11
|
-
|
|
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
|
|
17
|
-
|
|
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.
|
|
18
|
+
pnpm add unified-ble-manager@4.0.2
|
|
21
19
|
pnpm add expo@^57.0.0 expo-dev-client
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
npx expo prebuild --clean
|
|
21
|
+
npx expo run:ios
|
|
24
22
|
# or
|
|
25
|
-
|
|
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.
|
|
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.
|
package/docs/GETTING_STARTED.md
CHANGED
|
@@ -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
|
-
|
|
27
|
+
Pin the current package for a known native rebuild:
|
|
28
28
|
|
|
29
29
|
```sh
|
|
30
|
-
pnpm add unified-ble-manager@4.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.
|
|
40
|
+
`4.0.2` package. Pin that exact version:
|
|
41
41
|
|
|
42
42
|
```sh
|
|
43
|
-
pnpm add unified-ble-manager@4.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
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
40
|
+
const first = await scan.observations[Symbol.asyncIterator]().next()
|
|
33
41
|
await scan.stop()
|
|
34
|
-
|
|
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
|
-
|
|
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.
|
|
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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
|
|
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
|