From 83cbde7d79baeddb989fb3933951bfb6fc486008 Mon Sep 17 00:00:00 2001 From: Erick Zhao Date: Wed, 1 Apr 2026 17:10:01 -0700 Subject: [PATCH 1/4] feat: msix --- src/index.ts | 3 ++- test/index.test.ts | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index c378898..3f9fff8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -166,9 +166,10 @@ function initUpdater(opts: ReturnType) { let serverType: 'default' | 'json' = 'default'; switch (updateSource.type) { case UpdateSourceType.ElectronPublicUpdateService: { + const formatSegment = process.windowsStore ? '/msix' : ''; feedURL = `${updateSource.host}/${updateSource.repo}/${process.platform}-${ process.arch - }/${app.getVersion()}`; + }${formatSegment}/${app.getVersion()}`; break; } case UpdateSourceType.StaticStorage: { diff --git a/test/index.test.ts b/test/index.test.ts index f45de9b..7663419 100644 --- a/test/index.test.ts +++ b/test/index.test.ts @@ -66,6 +66,38 @@ describe('updateElectronApp', () => { }); }); + describe('updateFormat', () => { + it('includes /msix/ in feed URL when process.windowsStore is true', () => { + const original = process.windowsStore; + Object.defineProperty(process, 'windowsStore', { value: true, configurable: true }); + const logSpy = jest.spyOn(console, 'log'); + updateElectronApp({ + updateSource: { + type: UpdateSourceType.ElectronPublicUpdateService, + repo, + }, + }); + expect(logSpy).toHaveBeenCalledWith('feedURL', expect.stringContaining('/msix/')); + logSpy.mockRestore(); + Object.defineProperty(process, 'windowsStore', { value: original, configurable: true }); + }); + + it('omits format from feed URL when process.windowsStore is falsy', () => { + const original = process.windowsStore; + Object.defineProperty(process, 'windowsStore', { value: undefined, configurable: true }); + const logSpy = jest.spyOn(console, 'log'); + updateElectronApp({ + updateSource: { + type: UpdateSourceType.ElectronPublicUpdateService, + repo, + }, + }); + expect(logSpy).toHaveBeenCalledWith('feedURL', expect.not.stringContaining('/msix/')); + logSpy.mockRestore(); + Object.defineProperty(process, 'windowsStore', { value: original, configurable: true }); + }); + }); + describe('updateInterval', () => { it('must be 5 minutes or more', () => { expect(() => { From ffe1edd702066456d0dfb9eecadacb7f1d6b62b1 Mon Sep 17 00:00:00 2001 From: Erick Zhao Date: Wed, 1 Apr 2026 17:13:47 -0700 Subject: [PATCH 2/4] ci fixes --- .github/workflows/test.yml | 3 --- package.json | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4ba0788..93b34db 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,11 +18,8 @@ jobs: matrix: node-version: - '22.11' - - '20.18' - - '18.20' os: - macos-latest - - ubuntu-latest - windows-latest runs-on: "${{ matrix.os }}" steps: diff --git a/package.json b/package.json index 08716ee..2449dea 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@types/jest": "^29.5.14", "@types/ms": "^0.7.31", "@types/node": "^22.10.1", - "electron": "^35.7.5", + "electron": "^41.1.1", "eslint": "^9.15.0", "eslint-config-prettier": "^9.1.0", "globals": "^15.13.0", From 5405d31753879bc130dffe7d59671682d65ffa9f Mon Sep 17 00:00:00 2001 From: Erick Zhao Date: Wed, 1 Apr 2026 17:18:40 -0700 Subject: [PATCH 3/4] lockf --- yarn.lock | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8d34ac4..44c1bd2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1319,7 +1319,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:^22.10.1, @types/node@npm:^22.7.7": +"@types/node@npm:*, @types/node@npm:^22.10.1": version: 22.18.0 resolution: "@types/node@npm:22.18.0" dependencies: @@ -1328,6 +1328,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^24.9.0": + version: 24.12.0 + resolution: "@types/node@npm:24.12.0" + dependencies: + undici-types: "npm:~7.16.0" + checksum: 10c0/8b31c0af5b5474f13048a4e77c57f22cd4f8fe6e58c4b6fde9456b0c13f46a5bfaf5744ff88fd089581de9f0d6e99c584e022681de7acb26a58d258c654c4843 + languageName: node + linkType: hard + "@types/prettier@npm:^2.1.5": version: 2.7.1 resolution: "@types/prettier@npm:2.7.1" @@ -2212,16 +2221,16 @@ __metadata: languageName: node linkType: hard -"electron@npm:^35.7.5": - version: 35.7.5 - resolution: "electron@npm:35.7.5" +"electron@npm:^41.1.1": + version: 41.1.1 + resolution: "electron@npm:41.1.1" dependencies: "@electron/get": "npm:^2.0.0" - "@types/node": "npm:^22.7.7" + "@types/node": "npm:^24.9.0" extract-zip: "npm:^2.0.1" bin: electron: cli.js - checksum: 10c0/2c331e438b655b25a8b49ce038878cdc61a42481fcdf464ecb5648585a2c83f1edc5d8e0a8de582713f8e3dc8a3b35aaa136735ad68f8009ee2369f3b2e79c15 + checksum: 10c0/b52df5c263ee612e62b7d804bf97d739f2876b5b16cf46cf99ec338d59093cb066bf85d1ad77115d4839a5ea64bba66ecb27111696a409cbe64eb81c3e71449e languageName: node linkType: hard @@ -5345,6 +5354,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a + languageName: node + linkType: hard + "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" @@ -5393,7 +5409,7 @@ __metadata: "@types/jest": "npm:^29.5.14" "@types/ms": "npm:^0.7.31" "@types/node": "npm:^22.10.1" - electron: "npm:^35.7.5" + electron: "npm:^41.1.1" eslint: "npm:^9.15.0" eslint-config-prettier: "npm:^9.1.0" github-url-to-object: "npm:^4.0.4" From 9261976f921bf7ec306d4ee6ed1e41e4058639cd Mon Sep 17 00:00:00 2001 From: Erick Zhao Date: Mon, 20 Apr 2026 13:12:34 -0700 Subject: [PATCH 4/4] yarn up -R --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index bc006c5..24e2864 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3509,11 +3509,11 @@ __metadata: linkType: hard "minimatch@npm:^5.0.1": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" + version: 5.1.9 + resolution: "minimatch@npm:5.1.9" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + checksum: 10c0/4202718683815a7288b13e470160a4f9560cf392adef4f453927505817e01ef6b3476ecde13cfcaed17e7326dd3b69ad44eb2daeb19a217c5500f9277893f1d6 languageName: node linkType: hard @@ -3876,9 +3876,9 @@ __metadata: linkType: hard "picomatch@npm:^4.0.3": - version: 4.0.3 - resolution: "picomatch@npm:4.0.3" - checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 + version: 4.0.4 + resolution: "picomatch@npm:4.0.4" + checksum: 10c0/e2c6023372cc7b5764719a5ffb9da0f8e781212fa7ca4bd0562db929df8e117460f00dff3cb7509dacfc06b86de924b247f504d0ce1806a37fac4633081466b0 languageName: node linkType: hard