homebridge-bluos 1.0.0 → 1.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 CHANGED
@@ -1,7 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.2](https://github.com/tbaur/homebridge-bluos/compare/v1.0.1...v1.0.2) (2026-08-18)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * log when a player answers again after an outage ([7e26d9d](https://github.com/tbaur/homebridge-bluos/commit/7e26d9d449d36282d2aeb829cb436380520e3882))
9
+
10
+ ## [1.0.1](https://github.com/tbaur/homebridge-bluos/compare/v1.0.0...v1.0.1) (2026-08-18)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **deps:** hold @types/node at the Node 20 floor and ship the pending UI utils bump ([b2f4be3](https://github.com/tbaur/homebridge-bluos/commit/b2f4be3e9caa5d6fa8736c4ee2c5cd9a42cfeb1a))
16
+
3
17
  ## [1.0.0](https://github.com/tbaur/homebridge-bluos/compare/v0.1.1...v1.0.0) (2026-08-18)
4
18
 
19
+ First stable release. Volume, mute, volume presets, and battery for each discovered BluOS player, keyed to the player's MAC address so a new DHCP lease keeps the accessory — and with it the room and automations you attached to it. See [README.md](README.md) for what each accessory does and [docs/FEATURES.md](docs/FEATURES.md) for what is planned next.
5
20
 
6
21
  ### Miscellaneous Chores
7
22
 
@@ -14,10 +29,6 @@
14
29
 
15
30
  * BluOS players in HomeKit, verified against real hardware ([643e029](https://github.com/tbaur/homebridge-bluos/commit/643e0298c127e9df92dc42841896c5844162f1ec))
16
31
 
17
- ## Changelog
18
-
19
- All notable changes to this project are documented in this file. This file is maintained automatically by [release-please](https://github.com/googleapis/release-please) based on [Conventional Commits](https://www.conventionalcommits.org).
20
-
21
- ## Unreleased
32
+ ## 0.1.0 (2026-08-18)
22
33
 
23
- * initial BluOS plugin
34
+ Published by hand to create the package name so an npm trusted publisher could be attached to it; see [RELEASING.md](RELEASING.md). Functionally identical to 0.1.1, which is the first version the release workflow published.
package/DEVELOPMENT.md CHANGED
@@ -33,7 +33,7 @@ A capability ships if HomeKit can express it as a tile, a scene, an automation o
33
33
 
34
34
  ## Commands
35
35
 
36
- Node 20+, matching `engines`. CI runs 20 / 22 / 24, a Homebridge 1.6 floor job, and a runtime `npm audit`.
36
+ Node 20+, matching `engines`. CI runs 20 / 22 / 24, a Homebridge 1.6 floor job, and a runtime `npm audit`. `@types/node` stays on the 20 line for the same reason: newer types let the compiler accept API that the oldest supported runtime does not have. Dependabot is told not to raise it — the floor and the types move together, deliberately.
37
37
 
38
38
  ```bash
39
39
  npm install
package/README.md CHANGED
@@ -26,7 +26,7 @@ What stays in the BluOS app is the part HomeKit has no vocabulary for: browsing,
26
26
  - **Long-polling, not polling** — `/SyncStatus?timeout=100` with an `etag`, so a change made on the front panel, the remote or the BluOS app reaches HomeKit in about a second, without hammering the player
27
27
  - **Follows the API's rate rules** — One second minimum between two requests for the same resource, per the BluOS specification; writes to one chassis are serialised, and separate chassis stay parallel
28
28
  - **Survives a DHCP lease change** — Accessory identity is the player's MAC and zone port, never its address. If a player moves, the plugin re-resolves it and remembers the new address
29
- - **Backs off when a player is off** — Exponential delay to a one-minute ceiling instead of dialling an absent player every second; the first failure warns, the rest go to debug
29
+ - **Backs off when a player is off** — Exponential delay to a one-minute ceiling instead of dialling an absent player every second. A single failure is a debug line; the warning comes when the player has missed three polls and HomeKit is told No Response, then at most hourly while it stays away, with one line when it answers again
30
30
  - **Answers HomeKit promptly** — A write returns inside HAP's patience window and finishes anything slower in the background, where the result still reaches HomeKit through the next poll
31
31
  - **No volume jumps** — The pair of writes HomeKit sends when a slider leaves zero is coalesced into one command
32
32
  - **Honest state** — An accessory reports No Response until the player has actually been read, and again once it stops answering, rather than showing a value it cannot confirm
@@ -53,6 +53,12 @@ class BaseAccessory {
53
53
  }
54
54
  /** Apply a fresh observation, and remember that state is now known. */
55
55
  applyObservation(observation, reason) {
56
+ if (this.offline) {
57
+ // Every outage warns on its way in, so it gets a matching line on its way
58
+ // out: without one, a log shows a player failing and never recovering, and
59
+ // an outage that healed reads exactly like one still in progress.
60
+ this.host.log.info(`${(0, utils_1.forLog)(this.displayName)} [${(0, utils_1.forLog)(this.deviceId)}] is responding again`);
61
+ }
56
62
  this.offline = false;
57
63
  this.observed = true;
58
64
  this.lastWarningAt = 0;
package/docs/FEATURES.md CHANGED
@@ -29,7 +29,7 @@ A checklist of what is built. The plugin aims to cover everything about a BluOS
29
29
  - ✅ The pair of writes HomeKit sends when a slider leaves zero is coalesced into one command
30
30
  - ✅ Set/poll race protection with a generation counter, so a slider never springs back
31
31
  - ✅ A deliberately cancelled poll is not counted as a failure
32
- - ✅ Exponential backoff to a one-minute ceiling for an unreachable player; the first failure warns, the rest go to debug
32
+ - ✅ Exponential backoff to a one-minute ceiling for an unreachable player; a lone failure logs at debug, the warning waits for the third missed poll that turns the tile to No Response, repeats hourly at most, and is answered by a recovery line
33
33
  - ✅ Automatic address re-resolution after repeated failures, rate-limited, so a DHCP lease change needs no user action
34
34
  - ✅ New addresses persisted into the accessory cache so they survive a restart
35
35
  - ✅ Accessory identity is `MAC:port:kind` (plus the preset level), never the address, so an IP change keeps your accessories
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-bluos",
3
3
  "displayName": "Homebridge BluOS",
4
- "version": "1.0.0",
4
+ "version": "1.0.2",
5
5
  "description": "Homebridge plugin for BluOS players — per-zone volume, mute, volume-preset and battery accessories over the LAN Custom Integration API. Verified on NAD and Bluesound hardware",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -44,7 +44,7 @@
44
44
  "brace-expansion": "^5.0.9"
45
45
  },
46
46
  "dependencies": {
47
- "@homebridge/plugin-ui-utils": "2.2.4",
47
+ "@homebridge/plugin-ui-utils": "2.2.5",
48
48
  "multicast-dns": "7.2.5"
49
49
  },
50
50
  "devDependencies": {