@homebridge-plugins/homebridge-updater 3.1.7 → 3.1.9-beta.0
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 +287 -0
- package/CLAUDE.md +43 -0
- package/README.md +59 -117
- package/config.schema.json +7 -0
- package/dist/Platform.HAP.js +1 -1
- package/dist/Platform.HAP.js.map +1 -1
- package/dist/Platform.HAP.test.js +12 -11
- package/dist/Platform.HAP.test.js.map +1 -1
- package/dist/Platform.Matter.js +1 -1
- package/dist/Platform.Matter.js.map +1 -1
- package/dist/Platform.Matter.test.js +1 -1
- package/dist/configMigration.d.ts.map +1 -1
- package/dist/configMigration.js +1 -1
- package/dist/configMigration.js.map +1 -1
- package/dist/configMigration.test.js +3 -3
- package/dist/configMigration.test.js.map +1 -1
- package/dist/configTypes.d.ts +1 -0
- package/dist/configTypes.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sensorBase.d.ts +2 -0
- package/dist/sensorBase.d.ts.map +1 -1
- package/dist/sensorBase.js +16 -4
- package/dist/sensorBase.js.map +1 -1
- package/dist/ui-api.d.ts +22 -0
- package/dist/ui-api.d.ts.map +1 -1
- package/dist/ui-api.js +80 -9
- package/dist/ui-api.js.map +1 -1
- package/dist/updateCheckCore.autoupdate.test.d.ts +2 -0
- package/dist/updateCheckCore.autoupdate.test.d.ts.map +1 -0
- package/dist/updateCheckCore.autoupdate.test.js +55 -0
- package/dist/updateCheckCore.autoupdate.test.js.map +1 -0
- package/dist/updateCheckCore.beta.test.d.ts +2 -0
- package/dist/updateCheckCore.beta.test.d.ts.map +1 -0
- package/dist/updateCheckCore.beta.test.js +48 -0
- package/dist/updateCheckCore.beta.test.js.map +1 -0
- package/dist/updateCheckCore.d.ts +29 -0
- package/dist/updateCheckCore.d.ts.map +1 -1
- package/dist/updateCheckCore.js +181 -19
- package/dist/updateCheckCore.js.map +1 -1
- package/dist/updateCheckCore.route.test.d.ts +2 -0
- package/dist/updateCheckCore.route.test.d.ts.map +1 -0
- package/dist/updateCheckCore.route.test.js +71 -0
- package/dist/updateCheckCore.route.test.js.map +1 -0
- package/dist/updateSensor.d.ts.map +1 -1
- package/dist/updateSensor.js +16 -2
- package/dist/updateSensor.js.map +1 -1
- package/dist/updateSensor.test.js +61 -15
- package/dist/updateSensor.test.js.map +1 -1
- package/dist/utils.test.js +6 -6
- package/dist/utils.test.js.map +1 -1
- package/package.json +22 -30
- package/typedoc.json +17 -0
package/dist/ui-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-api.js","sourceRoot":"","sources":["../src/ui-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-api.js","sourceRoot":"","sources":["../src/ui-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateCheckCore.autoupdate.test.d.ts","sourceRoot":"","sources":["../src/updateCheckCore.autoupdate.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { major, valid } from 'semver';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
const COOLDOWN_MS = 24 * 60 * 60 * 1000;
|
|
4
|
+
function isLooping(record, targetVersion, now) {
|
|
5
|
+
return !!record
|
|
6
|
+
&& record.version === targetVersion
|
|
7
|
+
&& record.attempts >= 1
|
|
8
|
+
&& (now - record.lastAttempt) < COOLDOWN_MS;
|
|
9
|
+
}
|
|
10
|
+
describe('auto-update loop guard (#257)', () => {
|
|
11
|
+
const now = 1_000_000_000_000;
|
|
12
|
+
it('applies a target with no prior attempt', () => {
|
|
13
|
+
expect(isLooping(undefined, '2.0.0', now)).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
it('skips a target already attempted at the same version within cooldown', () => {
|
|
16
|
+
const record = { version: '2.0.0', attempts: 1, firstAttempt: now - 60_000, lastAttempt: now - 60_000 };
|
|
17
|
+
expect(isLooping(record, '2.0.0', now)).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it('applies when a newer version than the last attempt is offered', () => {
|
|
20
|
+
const record = { version: '2.0.0', attempts: 3, firstAttempt: now - 60_000, lastAttempt: now - 60_000 };
|
|
21
|
+
expect(isLooping(record, '2.1.0', now)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
it('retries once the cooldown has elapsed', () => {
|
|
24
|
+
const record = { version: '2.0.0', attempts: 5, firstAttempt: now - (2 * COOLDOWN_MS), lastAttempt: now - COOLDOWN_MS - 1 };
|
|
25
|
+
expect(isLooping(record, '2.0.0', now)).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Locks the major-version detection used to hold back major updates from
|
|
30
|
+
* auto-update when autoUpdateSkipMajorVersions is enabled (#263). Only applies
|
|
31
|
+
* to valid semver on both sides, so date-based versions are never a "major".
|
|
32
|
+
*/
|
|
33
|
+
function isMajorUpdate(installedVersion, latestVersion) {
|
|
34
|
+
const from = valid(installedVersion);
|
|
35
|
+
const to = valid(latestVersion);
|
|
36
|
+
if (!from || !to) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return major(to) > major(from);
|
|
40
|
+
}
|
|
41
|
+
describe('skip major versions detection (#263)', () => {
|
|
42
|
+
it('treats a major bump as major', () => {
|
|
43
|
+
expect(isMajorUpdate('2.4.1', '3.0.0')).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
it('treats a minor bump as not major', () => {
|
|
46
|
+
expect(isMajorUpdate('2.4.1', '2.5.0')).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
it('treats a patch bump as not major', () => {
|
|
49
|
+
expect(isMajorUpdate('2.4.1', '2.4.2')).toBe(false);
|
|
50
|
+
});
|
|
51
|
+
it('never treats date-based (non-semver) versions as major', () => {
|
|
52
|
+
expect(isMajorUpdate('2026-05-01', '2026-06-01')).toBe(false);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=updateCheckCore.autoupdate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateCheckCore.autoupdate.test.js","sourceRoot":"","sources":["../src/updateCheckCore.autoupdate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateCheckCore.beta.test.d.ts","sourceRoot":"","sources":["../src/updateCheckCore.beta.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { gt, prerelease } from 'semver';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
/**
|
|
4
|
+
* Locks the decision rule used by applyHomebridgeUiBetaPolicy (#255), which
|
|
5
|
+
* mirrors the beta check the Homebridge UI applies to itself: with the UI's own
|
|
6
|
+
* update policy set to `beta`, offer the version on the beta dist-tag only when
|
|
7
|
+
* it beats BOTH the installed version and the stable release, so a beta user is
|
|
8
|
+
* never sent backwards to an older stable.
|
|
9
|
+
*/
|
|
10
|
+
function decideUiBeta(installedVersion, stableLatest, stableUpdateAvailable, distTags) {
|
|
11
|
+
const installedTag = prerelease(installedVersion)?.[0]?.toString();
|
|
12
|
+
const targetTag = installedTag ?? 'beta';
|
|
13
|
+
const candidate = distTags[targetTag];
|
|
14
|
+
if (!candidate) {
|
|
15
|
+
return { updateAvailable: stableUpdateAvailable, latestVersion: stableLatest };
|
|
16
|
+
}
|
|
17
|
+
const beatsInstalled = gt(candidate, installedVersion);
|
|
18
|
+
const beatsStable = !stableUpdateAvailable || !stableLatest || gt(candidate, stableLatest);
|
|
19
|
+
if (beatsInstalled && beatsStable) {
|
|
20
|
+
return { updateAvailable: true, latestVersion: candidate };
|
|
21
|
+
}
|
|
22
|
+
return { updateAvailable: stableUpdateAvailable, latestVersion: stableLatest };
|
|
23
|
+
}
|
|
24
|
+
describe('homebridge UI beta update policy (#255)', () => {
|
|
25
|
+
it('offers a newer beta when on a stable release', () => {
|
|
26
|
+
const result = decideUiBeta('5.22.0', '5.22.0', false, { latest: '5.22.0', beta: '5.23.0-beta.1' });
|
|
27
|
+
expect(result).toEqual({ updateAvailable: true, latestVersion: '5.23.0-beta.1' });
|
|
28
|
+
});
|
|
29
|
+
it('keeps the stable release when the beta is older than the newest stable', () => {
|
|
30
|
+
// A stable update is already available and is newer than the beta line.
|
|
31
|
+
const result = decideUiBeta('5.22.0', '5.24.0', true, { latest: '5.24.0', beta: '5.23.0-beta.1' });
|
|
32
|
+
expect(result).toEqual({ updateAvailable: true, latestVersion: '5.24.0' });
|
|
33
|
+
});
|
|
34
|
+
it('does not send a beta user backwards to an older stable', () => {
|
|
35
|
+
// Installed a beta that is ahead of the latest stable; no newer beta exists.
|
|
36
|
+
const result = decideUiBeta('5.23.0-beta.2', '5.22.0', false, { latest: '5.22.0', beta: '5.23.0-beta.2' });
|
|
37
|
+
expect(result).toEqual({ updateAvailable: false, latestVersion: '5.22.0' });
|
|
38
|
+
});
|
|
39
|
+
it('follows the same prerelease line when already on a beta', () => {
|
|
40
|
+
const result = decideUiBeta('5.23.0-beta.1', '5.22.0', false, { latest: '5.22.0', beta: '5.23.0-beta.3' });
|
|
41
|
+
expect(result).toEqual({ updateAvailable: true, latestVersion: '5.23.0-beta.3' });
|
|
42
|
+
});
|
|
43
|
+
it('leaves the result untouched when there is no beta tag', () => {
|
|
44
|
+
const result = decideUiBeta('5.22.0', '5.22.0', false, { latest: '5.22.0' });
|
|
45
|
+
expect(result).toEqual({ updateAvailable: false, latestVersion: '5.22.0' });
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=updateCheckCore.beta.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateCheckCore.beta.test.js","sourceRoot":"","sources":["../src/updateCheckCore.beta.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C;;;;;;GAMG;AACH,SAAS,YAAY,CACnB,gBAAwB,EACxB,YAA2B,EAC3B,qBAA8B,EAC9B,QAAgC;IAEhC,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAA;IAClE,MAAM,SAAS,GAAG,YAAY,IAAI,MAAM,CAAA;IACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA;IAChF,CAAC;IACD,MAAM,cAAc,GAAG,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IACtD,MAAM,WAAW,GAAG,CAAC,qBAAqB,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAC1F,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA;IAC5D,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA;AAChF,CAAC;AAED,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAA;QACnG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,wEAAwE;QACxE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAA;QAClG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,6EAA6E;QAC7E,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAA;QAC1G,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAA;QAC1G,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC5E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -22,10 +22,39 @@ export declare class UpdateCheckCore {
|
|
|
22
22
|
dockerUpdates: string[];
|
|
23
23
|
firstDailyRun: boolean;
|
|
24
24
|
private lastAutoUpdateFailed;
|
|
25
|
+
/** Path to the file that remembers auto-update attempts across restarts. */
|
|
26
|
+
private readonly autoUpdateStatePath;
|
|
27
|
+
/** How long (ms) to pause auto-updating a target that keeps coming back after a "successful" update. */
|
|
28
|
+
private readonly autoUpdateLoopCooldownMs;
|
|
25
29
|
constructor(log: Logging, config: PlatformConfig, storagePath: string, isDocker: boolean);
|
|
26
30
|
checkUi(): Promise<number>;
|
|
27
31
|
getLastAutoUpdateFailed(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* When the Homebridge UI's own update policy is `beta`, the generic
|
|
34
|
+
* `/api/plugins` result (stable only) misses beta releases. This mirrors the
|
|
35
|
+
* beta check the Homebridge UI applies to itself: offer the version on the
|
|
36
|
+
* beta dist-tag only when it beats both the installed version and the stable
|
|
37
|
+
* release, so a beta user is never sent backwards to an older stable (#255).
|
|
38
|
+
*/
|
|
39
|
+
private applyHomebridgeUiBetaPolicy;
|
|
28
40
|
private handleConfiguredAutoUpdates;
|
|
41
|
+
private loadAutoUpdateState;
|
|
42
|
+
private saveAutoUpdateState;
|
|
43
|
+
/**
|
|
44
|
+
* Whether an update crosses a major version boundary. Only applies to targets
|
|
45
|
+
* with valid semver versions on both sides, so date-based versions (the Docker
|
|
46
|
+
* image) are never treated as a major bump.
|
|
47
|
+
*/
|
|
48
|
+
private isMajorUpdate;
|
|
49
|
+
/**
|
|
50
|
+
* Apply a single auto-update.
|
|
51
|
+
*
|
|
52
|
+
* When the Homebridge UI is configured, homebridge / the UI / plugins are updated
|
|
53
|
+
* through its plugin management, which installs into the correct plugin path AND
|
|
54
|
+
* restarts on its own (`selfRestarted: true`). npm itself is not a Homebridge
|
|
55
|
+
* package, so it always uses the direct npm path. The direct npm path is otherwise
|
|
56
|
+
* only reached when the UI API is unavailable and allowDirectNpmUpdates is enabled.
|
|
57
|
+
*/
|
|
29
58
|
private applyAutoUpdate;
|
|
30
59
|
private getLocalNpmVersion;
|
|
31
60
|
private getLatestNpmVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateCheckCore.d.ts","sourceRoot":"","sources":["../src/updateCheckCore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateCheckCore.d.ts","sourceRoot":"","sources":["../src/updateCheckCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEzD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAalE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAUnC,qBAAa,eAAe;IAC1B,SAAgB,SAAS,EAAE,OAAO,CAAA;IAClC,SAAgB,QAAQ,EAAE,OAAO,CAAA;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAK;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAK;IAChC,SAAgB,GAAG,EAAE,OAAO,CAAA;IAC5B,SAAgB,MAAM,EAAE,0BAA0B,CAAA;IAClD,SAAgB,KAAK,EAAE,KAAK,CAAA;IAC5B,SAAgB,sBAAsB,EAAE,OAAO,CAAA;IAC/C,SAAgB,OAAO,EAAE,OAAO,CAAA;IAChC,SAAgB,SAAS,EAAE,OAAO,CAAA;IAClC,SAAgB,YAAY,EAAE,OAAO,CAAA;IACrC,SAAgB,WAAW,EAAE,OAAO,CAAA;IACpC,SAAgB,QAAQ,EAAE,OAAO,CAAA;IACjC,SAAgB,iBAAiB,EAAE,MAAM,CAAA;IAClC,SAAS,EAAE,MAAM,EAAE,CAAK;IACxB,WAAW,EAAE,MAAM,EAAE,CAAK;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAK;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAK;IAC5B,aAAa,EAAE,OAAO,CAAO;IACpC,OAAO,CAAC,oBAAoB,CAAQ;IACpC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,wGAAwG;IACxG,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAsB;gBAEnD,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IAgBlF,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAwOzB,uBAAuB,IAAI,OAAO;IAIzC;;;;;;OAMG;YACW,2BAA2B;YAyB3B,2BAA2B;IAkIzC,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;IAQ3B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IASrB;;;;;;;;OAQG;YACW,eAAe;IAmB7B,OAAO,CAAC,kBAAkB;YASZ,mBAAmB;IAwBjC,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,yBAAyB,CAAC,CAAM;IACxC,OAAO,CAAC,cAAc,CAAC,CAAM;IAC7B;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAqCjF;;OAEG;IACH,mBAAmB,IAAI,IAAI;CAI5B"}
|
package/dist/updateCheckCore.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { Cron } from 'croner';
|
|
2
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import https from 'node:https';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import process from 'node:process';
|
|
6
|
+
import { Cron } from 'croner';
|
|
7
|
+
import { gt, major, prerelease, valid } from 'semver';
|
|
4
8
|
import { UiApi } from './ui-api.js';
|
|
5
9
|
export class UpdateCheckCore {
|
|
6
10
|
checkNode;
|
|
@@ -23,10 +27,15 @@ export class UpdateCheckCore {
|
|
|
23
27
|
dockerUpdates = [];
|
|
24
28
|
firstDailyRun = true;
|
|
25
29
|
lastAutoUpdateFailed = false;
|
|
30
|
+
/** Path to the file that remembers auto-update attempts across restarts. */
|
|
31
|
+
autoUpdateStatePath;
|
|
32
|
+
/** How long (ms) to pause auto-updating a target that keeps coming back after a "successful" update. */
|
|
33
|
+
autoUpdateLoopCooldownMs = 24 * 60 * 60 * 1000;
|
|
26
34
|
constructor(log, config, storagePath, isDocker) {
|
|
27
35
|
this.log = log;
|
|
28
36
|
this.config = config;
|
|
29
37
|
this.uiApi = new UiApi(storagePath, log);
|
|
38
|
+
this.autoUpdateStatePath = join(storagePath, 'homebridge-updater-autoupdate.json');
|
|
30
39
|
this.isDocker = isDocker;
|
|
31
40
|
this.respectDisabledPlugins = this.config.respectDisabledPlugins ?? true;
|
|
32
41
|
this.checkHB = this.config.checkHomebridgeUpdates ?? false;
|
|
@@ -51,14 +60,17 @@ export class UpdateCheckCore {
|
|
|
51
60
|
const latestLtsVersion = await new Promise((resolve, reject) => {
|
|
52
61
|
const req = https.get('https://nodejs.org/dist/index.json', (res) => {
|
|
53
62
|
let data = '';
|
|
54
|
-
res.on('data', (chunk) => {
|
|
63
|
+
res.on('data', (chunk) => {
|
|
64
|
+
data += chunk;
|
|
65
|
+
});
|
|
55
66
|
res.on('end', () => {
|
|
56
67
|
try {
|
|
57
68
|
const releases = JSON.parse(data);
|
|
58
69
|
// Find latest LTS
|
|
59
70
|
const ltsReleases = releases.filter((r) => r.lts);
|
|
60
|
-
if (ltsReleases.length === 0)
|
|
61
|
-
return reject('No LTS releases found');
|
|
71
|
+
if (ltsReleases.length === 0) {
|
|
72
|
+
return reject(new Error('No LTS releases found'));
|
|
73
|
+
}
|
|
62
74
|
// Sort by version descending
|
|
63
75
|
ltsReleases.sort((a, b) => b.version.localeCompare(a.version, undefined, { numeric: true }));
|
|
64
76
|
const latest = ltsReleases[0].version.replace(/^v/, '');
|
|
@@ -73,12 +85,15 @@ export class UpdateCheckCore {
|
|
|
73
85
|
});
|
|
74
86
|
// Compare versions (semver)
|
|
75
87
|
const semverCompare = (a, b) => {
|
|
76
|
-
const pa = a.split('.').map(Number)
|
|
88
|
+
const pa = a.split('.').map(Number);
|
|
89
|
+
const pb = b.split('.').map(Number);
|
|
77
90
|
for (let i = 0; i < 3; ++i) {
|
|
78
|
-
if (pa[i] > pb[i])
|
|
91
|
+
if (pa[i] > pb[i]) {
|
|
79
92
|
return 1;
|
|
80
|
-
|
|
93
|
+
}
|
|
94
|
+
if (pa[i] < pb[i]) {
|
|
81
95
|
return -1;
|
|
96
|
+
}
|
|
82
97
|
}
|
|
83
98
|
return 0;
|
|
84
99
|
};
|
|
@@ -188,7 +203,11 @@ export class UpdateCheckCore {
|
|
|
188
203
|
const plugins = await this.uiApi.getPlugins();
|
|
189
204
|
if (this.checkHBUI) {
|
|
190
205
|
const homebridgeUiPlugins = plugins.filter(plugin => plugin.name === 'homebridge-config-ui-x');
|
|
191
|
-
|
|
206
|
+
for (const homebridgeUI of homebridgeUiPlugins) {
|
|
207
|
+
// The generic /api/plugins list only reflects the stable release for the
|
|
208
|
+
// Homebridge UI. If the user has set the UI's own update policy to beta,
|
|
209
|
+
// honour it here so a UI beta update is detected too (#255).
|
|
210
|
+
await this.applyHomebridgeUiBetaPolicy(homebridgeUI);
|
|
192
211
|
if (homebridgeUI.updateAvailable) {
|
|
193
212
|
const isIgnored = this.respectDisabledPlugins && ignoredPlugins.includes('homebridge-config-ui-x');
|
|
194
213
|
if (!isIgnored) {
|
|
@@ -203,7 +222,7 @@ export class UpdateCheckCore {
|
|
|
203
222
|
this.log.debug(`Ignoring Homebridge UI update: ${homebridgeUI.latestVersion} (update notifications disabled in homebridge-config-ui-x)`);
|
|
204
223
|
}
|
|
205
224
|
}
|
|
206
|
-
}
|
|
225
|
+
}
|
|
207
226
|
}
|
|
208
227
|
if (this.checkPlugins) {
|
|
209
228
|
this.log.debug(`Checking ${plugins.length} plugins for updates (respectDisabledPlugins: ${this.respectDisabledPlugins})`);
|
|
@@ -252,7 +271,7 @@ export class UpdateCheckCore {
|
|
|
252
271
|
}
|
|
253
272
|
// Log summary: suppress or debug if no updates, info/debug if updates
|
|
254
273
|
if (updatesAvailable.length === 0) {
|
|
255
|
-
this.log.debug(
|
|
274
|
+
this.log.debug('Found 0 available update(s)');
|
|
256
275
|
}
|
|
257
276
|
else {
|
|
258
277
|
this.log.log(isFirstDailyRun ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */, `Found ${updatesAvailable.length} available update(s)`);
|
|
@@ -272,6 +291,38 @@ export class UpdateCheckCore {
|
|
|
272
291
|
getLastAutoUpdateFailed() {
|
|
273
292
|
return this.lastAutoUpdateFailed;
|
|
274
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* When the Homebridge UI's own update policy is `beta`, the generic
|
|
296
|
+
* `/api/plugins` result (stable only) misses beta releases. This mirrors the
|
|
297
|
+
* beta check the Homebridge UI applies to itself: offer the version on the
|
|
298
|
+
* beta dist-tag only when it beats both the installed version and the stable
|
|
299
|
+
* release, so a beta user is never sent backwards to an older stable (#255).
|
|
300
|
+
*/
|
|
301
|
+
async applyHomebridgeUiBetaPolicy(homebridgeUI) {
|
|
302
|
+
if (this.uiApi.getHomebridgeUiUpdatePolicy() !== 'beta' || !homebridgeUI.installedVersion) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const distTags = await this.uiApi.getNpmDistTags('homebridge-config-ui-x');
|
|
307
|
+
// Stay on the same prerelease line if already on one, otherwise track beta.
|
|
308
|
+
const installedTag = prerelease(homebridgeUI.installedVersion)?.[0]?.toString();
|
|
309
|
+
const targetTag = installedTag ?? 'beta';
|
|
310
|
+
const candidate = distTags[targetTag];
|
|
311
|
+
if (!candidate) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const beatsInstalled = gt(candidate, homebridgeUI.installedVersion);
|
|
315
|
+
const beatsStable = !homebridgeUI.updateAvailable || !homebridgeUI.latestVersion || gt(candidate, homebridgeUI.latestVersion);
|
|
316
|
+
if (beatsInstalled && beatsStable) {
|
|
317
|
+
homebridgeUI.latestVersion = candidate;
|
|
318
|
+
homebridgeUI.updateAvailable = true;
|
|
319
|
+
this.log.debug(`Homebridge UI beta update available on tag '${targetTag}': ${candidate}`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
catch (e) {
|
|
323
|
+
this.log.debug(`Failed to check Homebridge UI beta updates: ${e}`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
275
326
|
async handleConfiguredAutoUpdates(updatesAvailable) {
|
|
276
327
|
const shouldAutoUpdateHomebridge = this.config.autoUpdateHomebridge === true;
|
|
277
328
|
const shouldAutoUpdateUi = this.config.autoUpdateHomebridgeUI === true;
|
|
@@ -291,8 +342,32 @@ export class UpdateCheckCore {
|
|
|
291
342
|
return shouldAutoUpdateUi;
|
|
292
343
|
}
|
|
293
344
|
return shouldAutoUpdatePlugins && plugin.name !== 'node' && plugin.name !== 'Docker image';
|
|
345
|
+
}).filter((target) => {
|
|
346
|
+
// Optionally leave new major versions for manual installation so breaking
|
|
347
|
+
// changes are never applied unattended. The update is still detected and
|
|
348
|
+
// reported (the sensor still trips) - only the auto-update is held back (#263).
|
|
349
|
+
if (this.config.autoUpdateSkipMajorVersions === true && this.isMajorUpdate(target)) {
|
|
350
|
+
const level = this.firstDailyRun ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */;
|
|
351
|
+
this.log.log(level, `Not auto-updating ${target.name} to ${target.latestVersion}: it is a new major version. Install it manually to accept any breaking changes.`);
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
return true;
|
|
294
355
|
});
|
|
356
|
+
// Prune the loop-guard record: anything no longer reported as out of date has
|
|
357
|
+
// either updated successfully or is no longer offered, so forget it.
|
|
358
|
+
const state = this.loadAutoUpdateState();
|
|
359
|
+
const outstanding = new Set(updatesAvailable.map(update => update.name));
|
|
360
|
+
let stateChanged = false;
|
|
361
|
+
for (const name of Object.keys(state)) {
|
|
362
|
+
if (!outstanding.has(name)) {
|
|
363
|
+
delete state[name];
|
|
364
|
+
stateChanged = true;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
295
367
|
if (autoUpdateTargets.length === 0) {
|
|
368
|
+
if (stateChanged) {
|
|
369
|
+
this.saveAutoUpdateState(state);
|
|
370
|
+
}
|
|
296
371
|
return;
|
|
297
372
|
}
|
|
298
373
|
if (shouldAutoUpdateNpm && !this.getLocalNpmVersion()) {
|
|
@@ -307,35 +382,122 @@ export class UpdateCheckCore {
|
|
|
307
382
|
this.log.warn('Auto-update is enabled, but homebridge-config-ui-x is not configured and allowDirectNpmUpdates is disabled.');
|
|
308
383
|
return;
|
|
309
384
|
}
|
|
310
|
-
|
|
385
|
+
// Loop guard: skip any target we already updated to this same version that is
|
|
386
|
+
// STILL reported as out of date. Repeating it would just restart Homebridge in
|
|
387
|
+
// a loop without ever taking effect (#257). Retry at most once every cooldown.
|
|
388
|
+
const now = Date.now();
|
|
389
|
+
const targetsToApply = autoUpdateTargets.filter((target) => {
|
|
390
|
+
const record = state[target.name];
|
|
391
|
+
const looping = record
|
|
392
|
+
&& record.version === target.latestVersion
|
|
393
|
+
&& record.attempts >= 1
|
|
394
|
+
&& (now - record.lastAttempt) < this.autoUpdateLoopCooldownMs;
|
|
395
|
+
if (looping) {
|
|
396
|
+
this.lastAutoUpdateFailed = true;
|
|
397
|
+
this.log.warn(`Skipping auto-update of ${target.name} to ${target.latestVersion}: it was already updated but is still reported as out of date, so repeating it would just restart Homebridge in a loop. Please update ${target.name} from the Homebridge UI or your usual method. Auto-update of this version is paused for 24 hours.`);
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
return true;
|
|
401
|
+
});
|
|
402
|
+
if (targetsToApply.length === 0) {
|
|
403
|
+
this.saveAutoUpdateState(state);
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
if (hasUiApi && targetsToApply.some(target => target.name !== 'npm')) {
|
|
311
407
|
await this.uiApi.createBackup();
|
|
312
408
|
}
|
|
313
409
|
let successfulUpdates = 0;
|
|
314
|
-
|
|
315
|
-
|
|
410
|
+
let uiApiHandledRestart = false;
|
|
411
|
+
for (const target of targetsToApply) {
|
|
412
|
+
const { updated, selfRestarted } = await this.applyAutoUpdate(target);
|
|
413
|
+
// Record the attempt regardless of the reported result: the real test of
|
|
414
|
+
// success is whether the target is still out of date on the next check.
|
|
415
|
+
const previous = state[target.name];
|
|
416
|
+
const sameVersion = previous?.version === target.latestVersion;
|
|
417
|
+
state[target.name] = {
|
|
418
|
+
version: target.latestVersion,
|
|
419
|
+
attempts: sameVersion ? previous.attempts + 1 : 1,
|
|
420
|
+
firstAttempt: sameVersion ? previous.firstAttempt : now,
|
|
421
|
+
lastAttempt: now,
|
|
422
|
+
};
|
|
316
423
|
if (updated) {
|
|
317
424
|
successfulUpdates++;
|
|
425
|
+
if (selfRestarted) {
|
|
426
|
+
uiApiHandledRestart = true;
|
|
427
|
+
}
|
|
318
428
|
}
|
|
319
429
|
else {
|
|
320
430
|
this.lastAutoUpdateFailed = true;
|
|
321
431
|
}
|
|
322
432
|
}
|
|
323
|
-
|
|
433
|
+
this.saveAutoUpdateState(state);
|
|
434
|
+
// The Homebridge UI restarts itself after the updates it applies, so only
|
|
435
|
+
// restart here for the direct-npm fallback path to avoid a double restart.
|
|
436
|
+
if (successfulUpdates > 0 && !uiApiHandledRestart && this.config.autoRestartAfterUpdates === true) {
|
|
324
437
|
const restarted = await this.uiApi.restartHomebridge();
|
|
325
438
|
if (!restarted) {
|
|
326
439
|
this.lastAutoUpdateFailed = true;
|
|
327
440
|
}
|
|
328
441
|
}
|
|
329
442
|
}
|
|
443
|
+
loadAutoUpdateState() {
|
|
444
|
+
try {
|
|
445
|
+
if (!existsSync(this.autoUpdateStatePath)) {
|
|
446
|
+
return {};
|
|
447
|
+
}
|
|
448
|
+
const parsed = JSON.parse(readFileSync(this.autoUpdateStatePath, 'utf8'));
|
|
449
|
+
return (parsed && typeof parsed === 'object') ? parsed : {};
|
|
450
|
+
}
|
|
451
|
+
catch (e) {
|
|
452
|
+
this.log.debug(`Could not read auto-update state: ${e}`);
|
|
453
|
+
return {};
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
saveAutoUpdateState(state) {
|
|
457
|
+
try {
|
|
458
|
+
writeFileSync(this.autoUpdateStatePath, JSON.stringify(state, null, 2));
|
|
459
|
+
}
|
|
460
|
+
catch (e) {
|
|
461
|
+
this.log.debug(`Could not write auto-update state: ${e}`);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Whether an update crosses a major version boundary. Only applies to targets
|
|
466
|
+
* with valid semver versions on both sides, so date-based versions (the Docker
|
|
467
|
+
* image) are never treated as a major bump.
|
|
468
|
+
*/
|
|
469
|
+
isMajorUpdate(target) {
|
|
470
|
+
const from = valid(target.installedVersion);
|
|
471
|
+
const to = valid(target.latestVersion);
|
|
472
|
+
if (!from || !to) {
|
|
473
|
+
return false;
|
|
474
|
+
}
|
|
475
|
+
return major(to) > major(from);
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Apply a single auto-update.
|
|
479
|
+
*
|
|
480
|
+
* When the Homebridge UI is configured, homebridge / the UI / plugins are updated
|
|
481
|
+
* through its plugin management, which installs into the correct plugin path AND
|
|
482
|
+
* restarts on its own (`selfRestarted: true`). npm itself is not a Homebridge
|
|
483
|
+
* package, so it always uses the direct npm path. The direct npm path is otherwise
|
|
484
|
+
* only reached when the UI API is unavailable and allowDirectNpmUpdates is enabled.
|
|
485
|
+
*/
|
|
330
486
|
async applyAutoUpdate(target) {
|
|
331
487
|
if (target.name === 'npm') {
|
|
332
|
-
return await this.uiApi.updateNpm(target.latestVersion);
|
|
488
|
+
return { updated: await this.uiApi.updateNpm(target.latestVersion), selfRestarted: false };
|
|
489
|
+
}
|
|
490
|
+
if (this.uiApi.isConfigured()) {
|
|
491
|
+
const queued = await this.uiApi.triggerUpdate(target.name, target.latestVersion);
|
|
492
|
+
return { updated: queued, selfRestarted: queued };
|
|
333
493
|
}
|
|
494
|
+
// Fallback: direct npm (only reached when the UI API is not configured; the
|
|
495
|
+
// caller has already checked allowDirectNpmUpdates in that case).
|
|
496
|
+
this.log.info(`Attempting to auto-update ${target.name} to ${target.latestVersion} directly via npm`);
|
|
334
497
|
if (target.name === 'homebridge') {
|
|
335
|
-
return await this.uiApi.updateHomebridge(target.latestVersion);
|
|
498
|
+
return { updated: await this.uiApi.updateHomebridge(target.latestVersion), selfRestarted: false };
|
|
336
499
|
}
|
|
337
|
-
this.
|
|
338
|
-
return await this.uiApi.updatePlugin(target.name, target.latestVersion);
|
|
500
|
+
return { updated: await this.uiApi.updatePlugin(target.name, target.latestVersion), selfRestarted: false };
|
|
339
501
|
}
|
|
340
502
|
getLocalNpmVersion() {
|
|
341
503
|
const result = spawnSync('npm', ['--version'], { encoding: 'utf8' });
|
|
@@ -394,7 +556,7 @@ export class UpdateCheckCore {
|
|
|
394
556
|
* @param timezone Optional timezone string (defaults to system timezone)
|
|
395
557
|
*/
|
|
396
558
|
startScheduledChecks(onCheck, timezone) {
|
|
397
|
-
const tz = timezone || Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
559
|
+
const tz = timezone || new Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
398
560
|
// Daily reset at midnight
|
|
399
561
|
this.firstDailyRunResetCronJob = new Cron('0 0 * * *', {
|
|
400
562
|
name: 'First Daily Run Reset Cron Job',
|