From fa60a257be63cb5b9ca22b2df76789846f36b044 Mon Sep 17 00:00:00 2001 From: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com> Date: Wed, 4 Feb 2026 10:31:45 -0800 Subject: [PATCH] Update electron to 40.1.0 --- .nvmrc | 2 +- package.json | 9 ++-- patches/fs-xattr.patch | 14 ++++++ pnpm-lock.yaml | 46 +++++++++++++------ .../util/resolveCanonicalLocales_test.node.ts | 5 +- 5 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 patches/fs-xattr.patch diff --git a/.nvmrc b/.nvmrc index 5767036af0..9e2934aa34 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.21.1 +24.11.1 diff --git a/package.json b/package.json index 3080550e77..573056bc64 100644 --- a/package.json +++ b/package.json @@ -310,7 +310,7 @@ "csv-parse": "5.5.6", "danger": "12.3.3", "debug": "4.3.7", - "electron": "39.2.7", + "electron": "40.1.0", "electron-builder": "26.0.14", "electron-mocha": "13.0.1", "endanger": "7.0.4", @@ -397,7 +397,8 @@ "app-builder-lib": "patches/app-builder-lib.patch", "dmg-builder": "patches/dmg-builder.patch", "eslint-plugin-better-tailwindcss": "patches/eslint-plugin-better-tailwindcss.patch", - "framer-motion@6.5.1": "patches/framer-motion@6.5.1.patch" + "framer-motion@6.5.1": "patches/framer-motion@6.5.1.patch", + "fs-xattr": "patches/fs-xattr.patch" }, "onlyBuiltDependencies": [ "@indutny/mac-screen-share", @@ -421,7 +422,7 @@ ] }, "engines": { - "node": "22.21.1" + "node": "24.11.1" }, "build": { "appId": "org.whispersystems.signal-desktop", @@ -704,6 +705,6 @@ ] }, "volta": { - "node": "22.21.1" + "node": "24.11.1" } } diff --git a/patches/fs-xattr.patch b/patches/fs-xattr.patch new file mode 100644 index 0000000000..4a1eb23c13 --- /dev/null +++ b/patches/fs-xattr.patch @@ -0,0 +1,14 @@ +diff --git a/binding.gyp b/binding.gyp +index 9e8d3b65824078700ffe324787e46853ab6faf9e..6072c86e7658bb506a444f3ea807d5338787bf17 100644 +--- a/binding.gyp ++++ b/binding.gyp +@@ -1,6 +1,9 @@ + { + "targets": [ + { ++ 'xcode_settings': { ++ 'MACOSX_DEPLOYMENT_TARGET': '10.15', ++ }, + "target_name": "xattr", + "sources": [ + "src/async.c", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4d82cfd22a..4fec6f0683 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,6 +45,9 @@ patchedDependencies: framer-motion@6.5.1: hash: b46fdcd2354c1aebb6b69bcfffc2b1c8928628e3ac6dc0b96ef0cdf01c1f6a6c path: patches/framer-motion@6.5.1.patch + fs-xattr: + hash: 325d1e5f73cce8e15671dbd2394e091aadb71600f41d97d1a8cb63960c188112 + path: patches/fs-xattr.patch got@11.8.5: hash: cfe393dc1cca8970377087e9555a285d1121f75d57223ddd872b1a8d3f8c909b path: patches/got+11.8.5.patch @@ -649,8 +652,8 @@ importers: specifier: 4.3.7 version: 4.3.7(supports-color@8.1.1) electron: - specifier: 39.2.7 - version: 39.2.7 + specifier: 40.1.0 + version: 40.1.0 electron-builder: specifier: 26.0.14 version: 26.0.14(electron-builder-squirrel-windows@26.0.14) @@ -825,7 +828,7 @@ importers: optionalDependencies: fs-xattr: specifier: 0.3.0 - version: 0.3.0 + version: 0.3.0(patch_hash=325d1e5f73cce8e15671dbd2394e091aadb71600f41d97d1a8cb63960c188112) packages/mute-state-change: dependencies: @@ -4144,6 +4147,9 @@ packages: '@types/node@22.19.1': resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} + '@types/node@24.10.9': + resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} + '@types/normalize-path@3.0.2': resolution: {integrity: sha512-DO++toKYPaFn0Z8hQ7Tx+3iT9t77IJo/nDiqTXilgEP+kPNIYdpS9kh3fXuc53ugqwp9pxC1PVjCpV1tQDyqMA==} @@ -5841,8 +5847,8 @@ packages: engines: {node: '>= 12.20.55'} hasBin: true - electron@39.2.7: - resolution: {integrity: sha512-KU0uFS6LSTh4aOIC3miolcbizOFP7N1M46VTYVfqIgFiuA2ilfNaOHLDS9tCMvwwHRowAsvqBrh9NgMXcTOHCQ==} + electron@40.1.0: + resolution: {integrity: sha512-2j/kvw7uF0H1PnzYBzw2k2Q6q16J8ToKrtQzZfsAoXbbMY0l5gQi2DLOauIZLzwp4O01n8Wt/74JhSRwG0yj9A==} engines: {node: '>= 12.20.55'} hasBin: true @@ -8324,8 +8330,8 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.77.0: - resolution: {integrity: sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==} + node-abi@3.87.0: + resolution: {integrity: sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==} engines: {node: '>=10'} node-abort-controller@3.1.1: @@ -10104,6 +10110,7 @@ packages: tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me tar@7.5.2: resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} @@ -10393,6 +10400,9 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + unified@9.2.2: resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} @@ -11394,7 +11404,7 @@ snapshots: detect-libc: 2.0.4 fs-extra: 10.1.0 got: 11.8.5(patch_hash=cfe393dc1cca8970377087e9555a285d1121f75d57223ddd872b1a8d3f8c909b) - node-abi: 3.77.0 + node-abi: 3.87.0 node-api-version: 0.2.1 ora: 5.4.1 read-binary-file-arch: 1.0.6 @@ -14408,7 +14418,7 @@ snapshots: '@storybook/builder-webpack5@8.4.4(@swc/core@1.10.16(@swc/helpers@0.5.15))(esbuild@0.25.9)(storybook@8.4.4(bufferutil@4.0.9)(prettier@3.7.4)(utf-8-validate@5.0.10))(typescript@5.6.3)(webpack-cli@5.1.4)': dependencies: '@storybook/core-webpack': 8.4.4(storybook@8.4.4(bufferutil@4.0.9)(prettier@3.7.4)(utf-8-validate@5.0.10)) - '@types/node': 22.13.4 + '@types/node': 22.19.1 '@types/semver': 7.5.8 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -14465,7 +14475,7 @@ snapshots: '@storybook/core-webpack@8.4.4(storybook@8.4.4(bufferutil@4.0.9)(prettier@3.7.4)(utf-8-validate@5.0.10))': dependencies: - '@types/node': 22.13.4 + '@types/node': 22.19.1 storybook: 8.4.4(bufferutil@4.0.9)(prettier@3.7.4)(utf-8-validate@5.0.10) ts-dedent: 2.2.0 @@ -14510,7 +14520,7 @@ snapshots: '@storybook/core-webpack': 8.4.4(storybook@8.4.4(bufferutil@4.0.9)(prettier@3.7.4)(utf-8-validate@5.0.10)) '@storybook/react': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(bufferutil@4.0.9)(prettier@3.7.4)(utf-8-validate@5.0.10)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.9)(prettier@3.7.4)(utf-8-validate@5.0.10))(typescript@5.6.3) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.96.1) - '@types/node': 22.13.4 + '@types/node': 22.19.1 '@types/semver': 7.5.8 find-up: 5.0.0 magic-string: 0.30.17 @@ -15084,6 +15094,10 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/node@24.10.9': + dependencies: + undici-types: 7.16.0 + '@types/normalize-path@3.0.2': {} '@types/parse-json@4.0.2': {} @@ -17070,10 +17084,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@39.2.7: + electron@40.1.0: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.19.1 + '@types/node': 24.10.9 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -18103,7 +18117,7 @@ snapshots: fs-monkey@1.0.6: {} - fs-xattr@0.3.0: + fs-xattr@0.3.0(patch_hash=325d1e5f73cce8e15671dbd2394e091aadb71600f41d97d1a8cb63960c188112): optional: true fs.realpath@1.0.0: {} @@ -20220,7 +20234,7 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.77.0: + node-abi@3.87.0: dependencies: semver: 7.6.3 @@ -22610,6 +22624,8 @@ snapshots: undici-types@6.21.0: {} + undici-types@7.16.0: {} + unified@9.2.2: dependencies: '@types/unist': 2.0.11 diff --git a/ts/test-node/util/resolveCanonicalLocales_test.node.ts b/ts/test-node/util/resolveCanonicalLocales_test.node.ts index e97171f8b9..c875fb2b60 100644 --- a/ts/test-node/util/resolveCanonicalLocales_test.node.ts +++ b/ts/test-node/util/resolveCanonicalLocales_test.node.ts @@ -13,7 +13,10 @@ describe('resolveCanonicalLocales', () => { }); it('removes invalid locales', () => { - assert.deepEqual(resolveCanonicalLocales(['!@#$', 'POSIX', 'en']), ['en']); + assert.deepEqual(resolveCanonicalLocales(['!@#$', 'POSIX', 'en']), [ + 'posix', + 'en', + ]); }); it('defaults to en if no valid locales are provided', () => {