@homebridge-plugins/homebridge-updater 3.1.2 → 3.1.4

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.
@@ -12,6 +12,8 @@ export declare class PluginUpdatePlatform implements DynamicPlatformPlugin {
12
12
  private cachedFailureAccessory?;
13
13
  /** Cached accessory with the legacy v2.x UUID — resolved in handleLegacyMigration */
14
14
  private cachedLegacyUpdateAccessory?;
15
+ /** Cached accessory with the current UUID — tracked so it can be replaced by the legacy one in Scenario B */
16
+ private cachedCurrentUpdateAccessory?;
15
17
  /** True when a v3 update-sensor accessory was found in the cache (current UUID) */
16
18
  private updateSensorCached;
17
19
  constructor(log: Logging, config: PlatformConfig, api: API);
@@ -22,8 +24,11 @@ export declare class PluginUpdatePlatform implements DynamicPlatformPlugin {
22
24
  * 1. Only the legacy UUID is in the cache (fresh v2→v3 migration): configure the
23
25
  * update sensor on the legacy accessory so that {@link UpdateSensor.addUpdateSensor}
24
26
  * sees `registered = true` and does NOT create a duplicate.
25
- * 2. Both legacy and current UUIDs are in the cache (user already ran v3 once):
26
- * unregister the stale legacy accessory and let the current-UUID accessory continue.
27
+ * 2. Both legacy and current UUIDs are in the cache (user already ran a newer version
28
+ * once before this migration existed, creating a duplicate): remove the newer
29
+ * empty accessory and promote the legacy one so that the user's HomeKit
30
+ * customisations (room, name, automations) that are tied to the legacy UUID are
31
+ * preserved.
27
32
  */
28
33
  private handleLegacyMigration;
29
34
  private addFailureSensor;
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.HAP.d.ts","sourceRoot":"","sources":["../src/Platform.HAP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAOxG,qBAAa,oBAAqB,YAAW,qBAAqB;IAChE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,uBAAuB,CAAQ;IACvC,OAAO,CAAC,sBAAsB,CAAC,CAAmB;IAClD,qFAAqF;IACrF,OAAO,CAAC,2BAA2B,CAAC,CAAmB;IACvD,mFAAmF;IACnF,OAAO,CAAC,kBAAkB,CAAQ;gBAEtB,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IAkB1D;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,gBAAgB;IAuBxB,kBAAkB,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;CAkCzC"}
1
+ {"version":3,"file":"Platform.HAP.d.ts","sourceRoot":"","sources":["../src/Platform.HAP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAOxG,qBAAa,oBAAqB,YAAW,qBAAqB;IAChE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,uBAAuB,CAAQ;IACvC,OAAO,CAAC,sBAAsB,CAAC,CAAmB;IAClD,qFAAqF;IACrF,OAAO,CAAC,2BAA2B,CAAC,CAAmB;IACvD,6GAA6G;IAC7G,OAAO,CAAC,4BAA4B,CAAC,CAAmB;IACxD,mFAAmF;IACnF,OAAO,CAAC,kBAAkB,CAAQ;gBAEtB,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IAkB1D;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,gBAAgB;IAuBxB,kBAAkB,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;CAmCzC"}
@@ -15,6 +15,8 @@ export class PluginUpdatePlatform {
15
15
  cachedFailureAccessory;
16
16
  /** Cached accessory with the legacy v2.x UUID — resolved in handleLegacyMigration */
17
17
  cachedLegacyUpdateAccessory;
18
+ /** Cached accessory with the current UUID — tracked so it can be replaced by the legacy one in Scenario B */
19
+ cachedCurrentUpdateAccessory;
18
20
  /** True when a v3 update-sensor accessory was found in the cache (current UUID) */
19
21
  updateSensorCached = false;
20
22
  constructor(log, config, api) {
@@ -41,18 +43,27 @@ export class PluginUpdatePlatform {
41
43
  * 1. Only the legacy UUID is in the cache (fresh v2→v3 migration): configure the
42
44
  * update sensor on the legacy accessory so that {@link UpdateSensor.addUpdateSensor}
43
45
  * sees `registered = true` and does NOT create a duplicate.
44
- * 2. Both legacy and current UUIDs are in the cache (user already ran v3 once):
45
- * unregister the stale legacy accessory and let the current-UUID accessory continue.
46
+ * 2. Both legacy and current UUIDs are in the cache (user already ran a newer version
47
+ * once before this migration existed, creating a duplicate): remove the newer
48
+ * empty accessory and promote the legacy one so that the user's HomeKit
49
+ * customisations (room, name, automations) that are tied to the legacy UUID are
50
+ * preserved.
46
51
  */
47
52
  handleLegacyMigration() {
48
53
  if (!this.cachedLegacyUpdateAccessory) {
49
54
  return;
50
55
  }
51
56
  if (this.updateSensorCached) {
52
- // Current-UUID accessory already recognised — remove the stale legacy one
53
- this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [this.cachedLegacyUpdateAccessory]);
57
+ // Both UUIDs found — the current-UUID accessory was created empty when the legacy
58
+ // one was first ignored. Prefer the legacy accessory so that any HomeKit
59
+ // customisations the user applied to it are retained.
60
+ if (this.cachedCurrentUpdateAccessory) {
61
+ this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [this.cachedCurrentUpdateAccessory]);
62
+ this.cachedCurrentUpdateAccessory = undefined;
63
+ }
64
+ this.updateSensor.configureAccessory(this.cachedLegacyUpdateAccessory);
54
65
  this.cachedLegacyUpdateAccessory = undefined;
55
- this.log.info('Removed stale legacy update sensor accessory (migrated to current UUID)');
66
+ this.log.info('Migrated update sensor to legacy cached accessory (preserved HomeKit customisations)');
56
67
  return;
57
68
  }
58
69
  // Only the legacy accessory exists — use it for the update sensor so no duplicate is created
@@ -92,6 +103,7 @@ export class PluginUpdatePlatform {
92
103
  if (accessory.UUID === this.updateSensorUuid) {
93
104
  this.updateSensor.configureAccessory(accessory);
94
105
  this.updateSensorCached = true;
106
+ this.cachedCurrentUpdateAccessory = accessory;
95
107
  return;
96
108
  }
97
109
  // Restore for failure sensor
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.HAP.js","sourceRoot":"","sources":["../src/Platform.HAP.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Platform.HAP.js","sourceRoot":"","sources":["../src/Platform.HAP.ts"],"names":[],"mappings":"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"}
@@ -71,12 +71,14 @@ describe('PluginUpdatePlatform legacy UUID migration', () => {
71
71
  const updateSensorUuid = mockApi.hap.uuid.generate(UPDATE_SENSOR_UUID_KEY);
72
72
  const legacyUpdateSensorUuid = mockApi.hap.uuid.generate(LEGACY_UPDATE_SENSOR_UUID_KEY);
73
73
  let cachedLegacyUpdateAccessory = undefined;
74
+ let cachedCurrentUpdateAccessory = undefined;
74
75
  let updateSensorCached = false;
75
76
  // Simulate configureAccessory for each cached accessory
76
77
  for (const accessory of cachedAccessories) {
77
78
  if (accessory.UUID === updateSensorUuid) {
78
79
  mockUpdateSensor.configureAccessory(accessory);
79
80
  updateSensorCached = true;
81
+ cachedCurrentUpdateAccessory = accessory;
80
82
  continue;
81
83
  }
82
84
  if (accessory.UUID === legacyUpdateSensorUuid) {
@@ -91,9 +93,15 @@ describe('PluginUpdatePlatform legacy UUID migration', () => {
91
93
  if (!cachedLegacyUpdateAccessory)
92
94
  return;
93
95
  if (updateSensorCached) {
94
- mockApi.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [cachedLegacyUpdateAccessory]);
96
+ // Both UUIDs found — remove the newer empty accessory, promote the legacy one
97
+ // so the user's HomeKit customisations are preserved.
98
+ if (cachedCurrentUpdateAccessory) {
99
+ mockApi.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [cachedCurrentUpdateAccessory]);
100
+ cachedCurrentUpdateAccessory = undefined;
101
+ }
102
+ mockUpdateSensor.configureAccessory(cachedLegacyUpdateAccessory);
95
103
  cachedLegacyUpdateAccessory = undefined;
96
- mockLog.info('Removed stale legacy update sensor accessory (migrated to current UUID)');
104
+ mockLog.info('Migrated update sensor to legacy cached accessory (preserved HomeKit customisations)');
97
105
  return;
98
106
  }
99
107
  mockUpdateSensor.configureAccessory(cachedLegacyUpdateAccessory);
@@ -130,18 +138,21 @@ describe('PluginUpdatePlatform legacy UUID migration', () => {
130
138
  expect(mockLog.warn).not.toHaveBeenCalled();
131
139
  expect(registered).toBe(true);
132
140
  });
133
- it('Scenario B: both legacy and current UUID in cache — must unregister the stale legacy accessory', () => {
141
+ it('Scenario B: both legacy and current UUID in cache — must preserve legacy accessory and remove the newer empty duplicate', () => {
134
142
  const { mockLog, mockApi, mockUpdateSensor, uuidMap } = buildMocks();
135
143
  const v3Accessory = { UUID: uuidMap[UPDATE_SENSOR_UUID_KEY], displayName: 'PluginUpdate' };
136
144
  const legacyAccessory = { UUID: uuidMap[LEGACY_UPDATE_SENSOR_UUID_KEY], displayName: 'Plugin Update Check' };
137
145
  runMigrationSimulation(mockApi, mockLog, mockUpdateSensor, uuidMap, [v3Accessory, legacyAccessory]);
138
- // v3 accessory configured as update sensor
139
- expect(mockUpdateSensor.configureAccessory).toHaveBeenCalledWith(v3Accessory);
140
- // Legacy unregistered
141
- expect(mockApi.unregisterPlatformAccessories).toHaveBeenCalledWith(PLUGIN_NAME, PLATFORM_NAME, [legacyAccessory]);
142
- // No new accessory created (v3 already registered)
146
+ // configureAccessory called exactly twice: once for the v3 (during restore) then
147
+ // again for the legacy during migration — legacy must be the final (last) call.
148
+ expect(mockUpdateSensor.configureAccessory).toHaveBeenCalledTimes(2);
149
+ expect(mockUpdateSensor.configureAccessory).toHaveBeenNthCalledWith(1, v3Accessory);
150
+ expect(mockUpdateSensor.configureAccessory).toHaveBeenLastCalledWith(legacyAccessory);
151
+ // Current-UUID empty duplicate is removed
152
+ expect(mockApi.unregisterPlatformAccessories).toHaveBeenCalledWith(PLUGIN_NAME, PLATFORM_NAME, [v3Accessory]);
153
+ // No new accessory created
143
154
  expect(mockApi.registerPlatformAccessories).not.toHaveBeenCalled();
144
- expect(mockLog.info).toHaveBeenCalledWith(expect.stringContaining('Removed stale legacy update sensor accessory'));
155
+ expect(mockLog.info).toHaveBeenCalledWith(expect.stringContaining('Migrated update sensor to legacy cached accessory'));
145
156
  });
146
157
  it('Scenario B (legacy processed first): same result regardless of configureAccessory order', () => {
147
158
  const { mockLog, mockApi, mockUpdateSensor, uuidMap } = buildMocks();
@@ -149,8 +160,12 @@ describe('PluginUpdatePlatform legacy UUID migration', () => {
149
160
  const legacyAccessory = { UUID: uuidMap[LEGACY_UPDATE_SENSOR_UUID_KEY], displayName: 'Plugin Update Check' };
150
161
  // Legacy accessory arrives first in configureAccessory order
151
162
  runMigrationSimulation(mockApi, mockLog, mockUpdateSensor, uuidMap, [legacyAccessory, v3Accessory]);
152
- expect(mockUpdateSensor.configureAccessory).toHaveBeenCalledWith(v3Accessory);
153
- expect(mockApi.unregisterPlatformAccessories).toHaveBeenCalledWith(PLUGIN_NAME, PLATFORM_NAME, [legacyAccessory]);
163
+ // Only the v3 accessory is processed during restore (legacy is held), then the
164
+ // migration promotes the legacy one — so configureAccessory is still called twice
165
+ // and the legacy accessory is always the last call.
166
+ expect(mockUpdateSensor.configureAccessory).toHaveBeenCalledTimes(2);
167
+ expect(mockUpdateSensor.configureAccessory).toHaveBeenLastCalledWith(legacyAccessory);
168
+ expect(mockApi.unregisterPlatformAccessories).toHaveBeenCalledWith(PLUGIN_NAME, PLATFORM_NAME, [v3Accessory]);
154
169
  expect(mockApi.registerPlatformAccessories).not.toHaveBeenCalled();
155
170
  });
156
171
  it('Scenario C: normal v3 operation — no legacy accessory, no side effects', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.HAP.test.js","sourceRoot":"","sources":["../src/Platform.HAP.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Platform.HAP.test.js","sourceRoot":"","sources":["../src/Platform.HAP.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,14 @@
1
- import type { API, Logging, PlatformConfig } from 'homebridge';
1
+ import type { API, Logging, PlatformAccessory, PlatformConfig } from 'homebridge';
2
2
  export declare class PluginUpdateMatterPlatform {
3
+ private readonly api;
3
4
  private updateSensor;
4
5
  private failureSensor;
5
6
  constructor(log: Logging, config: PlatformConfig, api: API);
7
+ /**
8
+ * Called by Homebridge for each accessory found in the platform cache.
9
+ * When running in Matter mode, all cached HAP accessories are stale — unregister
10
+ * them immediately to prevent ghost accessories from appearing in HomeKit.
11
+ */
12
+ configureAccessory(accessory: PlatformAccessory): void;
6
13
  }
7
14
  //# sourceMappingURL=Platform.Matter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.Matter.d.ts","sourceRoot":"","sources":["../src/Platform.Matter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAM9D,qBAAa,0BAA0B;IACrC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAe;gBAExB,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;CAa3D"}
1
+ {"version":3,"file":"Platform.Matter.d.ts","sourceRoot":"","sources":["../src/Platform.Matter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAOjF,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAe;gBAExB,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IAe1D;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;CAGvD"}
@@ -1,10 +1,13 @@
1
1
  import { FailureSensor } from './failureSensor.js';
2
+ import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
2
3
  import { UpdateSensor } from './updateSensor.js';
3
4
  import { isFailureSensorEnabled } from './utils.js';
4
5
  export class PluginUpdateMatterPlatform {
6
+ api;
5
7
  updateSensor;
6
8
  failureSensor;
7
9
  constructor(log, config, api) {
10
+ this.api = api;
8
11
  this.failureSensor = new FailureSensor(log, api, config.failureSensorType || config.sensorType, 'matter');
9
12
  this.updateSensor = new UpdateSensor(log, config, api, {
10
13
  protocol: 'matter',
@@ -17,5 +20,13 @@ export class PluginUpdateMatterPlatform {
17
20
  this.failureSensor.configure({ displayName: failureDeviceName });
18
21
  }
19
22
  }
23
+ /**
24
+ * Called by Homebridge for each accessory found in the platform cache.
25
+ * When running in Matter mode, all cached HAP accessories are stale — unregister
26
+ * them immediately to prevent ghost accessories from appearing in HomeKit.
27
+ */
28
+ configureAccessory(accessory) {
29
+ this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
30
+ }
20
31
  }
21
32
  //# sourceMappingURL=Platform.Matter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.Matter.js","sourceRoot":"","sources":["../src/Platform.Matter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,OAAO,0BAA0B;IAC7B,YAAY,CAAc;IAC1B,aAAa,CAAe;IAEpC,YAAY,GAAY,EAAE,MAAsB,EAAE,GAAQ;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACzG,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;YACrD,QAAQ,EAAE,QAAQ;YAClB,oBAAoB,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACnH,CAAC,CAAA;QACF,4EAA4E;QAC5E,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAI,MAAc,CAAC,IAAI,IAAI,qBAAqB,CAAA;YAChE,MAAM,iBAAiB,GAAG,GAAG,UAAU,UAAU,CAAA;YACjD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAS,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"Platform.Matter.js","sourceRoot":"","sources":["../src/Platform.Matter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,OAAO,0BAA0B;IACpB,GAAG,CAAK;IACjB,YAAY,CAAc;IAC1B,aAAa,CAAe;IAEpC,YAAY,GAAY,EAAE,MAAsB,EAAE,GAAQ;QACxD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACzG,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;YACrD,QAAQ,EAAE,QAAQ;YAClB,oBAAoB,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACnH,CAAC,CAAA;QACF,4EAA4E;QAC5E,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAI,MAAc,CAAC,IAAI,IAAI,qBAAqB,CAAA;YAChE,MAAM,iBAAiB,GAAG,GAAG,UAAU,UAAU,CAAA;YACjD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAS,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,SAA4B;QAC7C,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACjF,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Platform.Matter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Platform.Matter.test.d.ts","sourceRoot":"","sources":["../src/Platform.Matter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
3
+ /**
4
+ * Unit tests for the stale HAP accessory cleanup in PluginUpdateMatterPlatform.
5
+ *
6
+ * When the platform runs in Matter mode, any cached HAP accessories from a previous
7
+ * HAP-mode run (including legacy v2 accessories) are stale and must be unregistered
8
+ * to prevent ghost/duplicate sensors in HomeKit.
9
+ */
10
+ describe('PluginUpdateMatterPlatform stale HAP cleanup', () => {
11
+ function buildMocks() {
12
+ const unregisterCalls = [];
13
+ const mockLog = {
14
+ info: vi.fn(),
15
+ warn: vi.fn(),
16
+ error: vi.fn(),
17
+ debug: vi.fn(),
18
+ };
19
+ const mockApi = {
20
+ matter: { registerPlatformAccessories: vi.fn(), uuid: { generate: vi.fn().mockReturnValue('matter-uuid') } },
21
+ hap: { uuid: { generate: vi.fn().mockReturnValue('hap-uuid') } },
22
+ on: vi.fn(),
23
+ user: { storagePath: vi.fn().mockReturnValue('/tmp') },
24
+ unregisterPlatformAccessories: vi.fn((...args) => {
25
+ unregisterCalls.push({ pluginName: args[0], platformName: args[1], accessories: args[2] });
26
+ }),
27
+ };
28
+ const mockConfig = {
29
+ name: 'PluginUpdate',
30
+ sensorType: 'motion',
31
+ failureSensorType: undefined,
32
+ autoUpdateHomebridge: false,
33
+ autoUpdateHomebridgeUI: false,
34
+ autoUpdatePlugins: false,
35
+ autoUpdateNode: false,
36
+ };
37
+ return { mockLog, mockApi, mockConfig, unregisterCalls };
38
+ }
39
+ /**
40
+ * Simulate configureAccessory logic directly to avoid importing real Homebridge modules.
41
+ *
42
+ * This mirrors what PluginUpdateMatterPlatform.configureAccessory does:
43
+ * it must call api.unregisterPlatformAccessories for each stale HAP accessory.
44
+ */
45
+ function simulateConfigureAccessory(api, accessory) {
46
+ api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
47
+ }
48
+ it('unregisters a stale legacy v2 HAP accessory (PluginUpdate UUID)', () => {
49
+ const { mockApi, unregisterCalls } = buildMocks();
50
+ const legacyAccessory = { UUID: mockApi.hap.uuid.generate('PluginUpdate'), displayName: 'Homebridge Plugin Update' };
51
+ simulateConfigureAccessory(mockApi, legacyAccessory);
52
+ expect(unregisterCalls).toHaveLength(1);
53
+ expect(unregisterCalls[0].pluginName).toBe(PLUGIN_NAME);
54
+ expect(unregisterCalls[0].platformName).toBe(PLATFORM_NAME);
55
+ expect(unregisterCalls[0].accessories).toContain(legacyAccessory);
56
+ });
57
+ it('unregisters a stale v3 HAP update-sensor accessory (PluginUpdateCheck-UpdateSensor UUID)', () => {
58
+ const { mockApi, unregisterCalls } = buildMocks();
59
+ const v3Accessory = { UUID: mockApi.hap.uuid.generate('PluginUpdateCheck-UpdateSensor'), displayName: 'PluginUpdate' };
60
+ simulateConfigureAccessory(mockApi, v3Accessory);
61
+ expect(unregisterCalls).toHaveLength(1);
62
+ expect(unregisterCalls[0].accessories).toContain(v3Accessory);
63
+ });
64
+ it('unregisters multiple stale accessories when called for each', () => {
65
+ const { mockApi, unregisterCalls } = buildMocks();
66
+ const accessory1 = { UUID: 'uuid-1', displayName: 'Accessory 1' };
67
+ const accessory2 = { UUID: 'uuid-2', displayName: 'Accessory 2' };
68
+ simulateConfigureAccessory(mockApi, accessory1);
69
+ simulateConfigureAccessory(mockApi, accessory2);
70
+ expect(unregisterCalls).toHaveLength(2);
71
+ expect(unregisterCalls[0].accessories).toContain(accessory1);
72
+ expect(unregisterCalls[1].accessories).toContain(accessory2);
73
+ });
74
+ });
75
+ //# sourceMappingURL=Platform.Matter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Platform.Matter.test.js","sourceRoot":"","sources":["../src/Platform.Matter.test.ts"],"names":[],"mappings":"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"}
@@ -122,5 +122,29 @@ describe('createPlatformProxy', () => {
122
122
  expect(matterConstructed).toHaveLength(1);
123
123
  expect(hapConstructed).toHaveLength(0);
124
124
  });
125
+ it('should delegate configureAccessory to the Matter impl (stale HAP cleanup)', () => {
126
+ const configuredAccessories = [];
127
+ class MockHAPPlatform {
128
+ constructor(_log, _config, _api) { }
129
+ configureAccessory(accessory) {
130
+ // Should not be called when Matter is active
131
+ configuredAccessories.push({ platform: 'hap', accessory });
132
+ }
133
+ }
134
+ class MockMatterPlatform {
135
+ constructor(_log, _config, _api) { }
136
+ configureAccessory(accessory) {
137
+ configuredAccessories.push({ platform: 'matter', accessory });
138
+ }
139
+ }
140
+ const ProxyCtor = createPlatformProxy(MockHAPPlatform, MockMatterPlatform);
141
+ const api = { matter: {}, isMatterAvailable: () => true, isMatterEnabled: () => true };
142
+ const proxy = new ProxyCtor('log', { enableMatter: true }, api);
143
+ const staleAccessory = { UUID: 'old-hap-uuid', displayName: 'Homebridge Plugin Update' };
144
+ proxy.configureAccessory(staleAccessory);
145
+ expect(configuredAccessories).toHaveLength(1);
146
+ expect(configuredAccessories[0].platform).toBe('matter');
147
+ expect(configuredAccessories[0].accessory).toBe(staleAccessory);
148
+ });
125
149
  });
126
150
  //# sourceMappingURL=utils.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../src/utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAExE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,sBAAsB,CAAC,EAAE,iBAAiB,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9G,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,sBAAsB,CAAC,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrD,MAAM,CAAC,sBAAsB,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1L,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,sBAAsB,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChF,MAAM,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClF,MAAM,CAAC,sBAAsB,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7E,MAAM,CAAC,sBAAsB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1E,MAAM,CAAC,sBAAsB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC/F,MAAM,MAAM,GAAG;YACb,iBAAiB,EAAE,MAAM;YACzB,oBAAoB,EAAE,IAAI;YAC1B,sBAAsB,EAAE,IAAI;YAC5B,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB,CAAA;QACD,MAAM,CAAC,sBAAsB,CAAC,MAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;QAChG,MAAM,CAAC,sBAAsB,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7G,MAAM,CAAC,sBAAsB,CAAC,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7G,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,cAAc,GAAU,EAAE,CAAA;QAChC,MAAM,iBAAiB,GAAU,EAAE,CAAA;QAEnC,MAAM,eAAe;YACnB,YAAY,GAAQ,EAAE,MAAW,EAAE,GAAQ;gBACzC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3C,CAAC;SACF;QAED,MAAM,kBAAkB;YACtB,YAAY,GAAQ,EAAE,MAAW,EAAE,GAAQ;gBACzC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC9C,CAAC;SACF;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAA;QAE1E,6BAA6B;QAC7B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAEjD,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,cAAc,GAAU,EAAE,CAAA;QAChC,MAAM,iBAAiB,GAAU,EAAE,CAAA;QAEnC,MAAM,eAAe;YACnB,YAAY,GAAQ,EAAE,MAAW,EAAE,GAAQ;gBACzC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3C,CAAC;SACF;QAED,MAAM,kBAAkB;YACtB,YAAY,GAAQ,EAAE,MAAW,EAAE,GAAQ;gBACzC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC9C,CAAC;SACF;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAA;QAE1E,gDAAgD;QAChD,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,EAAE;YACV,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI;YAC7B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI;SAC5B,CAAA;QACD,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAEjD,MAAM,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,cAAc,GAAU,EAAE,CAAA;QAChC,MAAM,iBAAiB,GAAU,EAAE,CAAA;QAEnC,MAAM,eAAe;YACnB,YAAY,GAAQ,EAAE,MAAW,EAAE,GAAQ;gBACzC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3C,CAAC;SACF;QAED,MAAM,kBAAkB;YACtB,YAAY,GAAQ,EAAE,MAAW,EAAE,GAAQ;gBACzC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC9C,CAAC;SACF;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAA;QAE1E,0CAA0C;QAC1C,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,EAAE;YACV,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI;YAC7B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI;SAC5B,CAAA;QACD,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAA;QAElD,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,cAAc,GAAU,EAAE,CAAA;QAChC,MAAM,iBAAiB,GAAU,EAAE,CAAA;QAEnC,MAAM,eAAe;YACnB,YAAY,GAAQ,EAAE,MAAW,EAAE,GAAQ;gBACzC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3C,CAAC;SACF;QAED,MAAM,kBAAkB;YACtB,YAAY,GAAQ,EAAE,MAAW,EAAE,GAAQ;gBACzC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC9C,CAAC;SACF;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAA;QAE1E,oFAAoF;QACpF,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,EAAE;SACX,CAAA;QACD,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAEjD,MAAM,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../src/utils.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@homebridge-plugins/homebridge-updater",
3
3
  "displayName": "Homebridge Updater",
4
4
  "type": "module",
5
- "version": "3.1.2",
5
+ "version": "3.1.4",
6
6
  "description": "A Homebridge plugin for checking for updates to Homebridge and plugins",
7
7
  "author": "David Maher",
8
8
  "license": "BSD-2-Clause",