diff --git a/config/scripts/electron-runtime-floor.test.ts b/config/scripts/electron-runtime-floor.test.ts index a510d3ae208..3ec1b284327 100644 --- a/config/scripts/electron-runtime-floor.test.ts +++ b/config/scripts/electron-runtime-floor.test.ts @@ -13,7 +13,8 @@ import { describe, expect, it } from 'vitest' * and nothing else in the tree would notice. */ // 43.7.8 fixes find-in-page looping across host iframes (electron/electron#54199). -const MINIMUM_ELECTRON_VERSION = '43.7.8' +// 43.8.1 blocks compromised eMudhra TLS intermediates (GHSA-jr5w-w6x2-84p9). +const MINIMUM_ELECTRON_VERSION = '43.8.1' function parseVersion(specifier: string): [number, number, number] { const match = /(\d+)\.(\d+)\.(\d+)/.exec(specifier) @@ -35,7 +36,7 @@ function meetsRuntimeFloor(specifier: string): boolean { } describe('electron runtime floor', () => { - it('pins Electron at or above the startup, webview-detach and find-in-page fixes', () => { + it('pins Electron at or above the startup, webview-detach, find-in-page and TLS fixes', () => { const packageJson = JSON.parse( readFileSync(join(__dirname, '../../package.json'), 'utf-8') ) as { devDependencies: Record } diff --git a/docs/site/package.json b/docs/site/package.json index 6c00f15c91f..99522797599 100644 --- a/docs/site/package.json +++ b/docs/site/package.json @@ -18,7 +18,7 @@ "fumadocs-mdx": "^14.3.1", "fumadocs-ui": "^16.8.4", "lucide-react": "^1.6.0", - "next": "16.4.1", + "next": "16.4.2", "react": "19.2.8", "react-dom": "19.2.8", "tailwind-merge": "^3.7.0", diff --git a/docs/site/pnpm-lock.yaml b/docs/site/pnpm-lock.yaml index f8339cc258a..be6c2e892be 100644 --- a/docs/site/pnpm-lock.yaml +++ b/docs/site/pnpm-lock.yaml @@ -190,19 +190,19 @@ importers: version: 2.1.1 fumadocs-core: specifier: ^16.8.4 - version: 16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3) + version: 16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3) fumadocs-mdx: specifier: ^14.3.1 - version: 14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8) + version: 14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8) fumadocs-ui: specifier: ^16.8.4 - version: 16.12.1(@types/mdx@2.0.14)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) + version: 16.12.1(@types/mdx@2.0.14)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) lucide-react: specifier: ^1.6.0 version: 1.26.0(react@19.2.8) next: - specifier: 16.4.1 - version: 16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + specifier: 16.4.2 + version: 16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: specifier: 19.2.8 version: 19.2.8 @@ -908,57 +908,57 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@next/env@16.4.1': - resolution: {integrity: sha512-5sUUrrSvs/2/2LnLoesybMGx12EtPB46fdZ6RhAw0XDGSPxU2LFyQBB7yuEiOFFJPKmBY6+q2jTr1/AMbnp0/g==} + '@next/env@16.4.2': + resolution: {integrity: sha512-nTUTFH7G5/J/fmpkjVLegOkqyKOP0CEsJcMsyO4UCYeN1su+YMW/MfaSErnJskL7XM+UDK6aTvslxsRCyya/sA==} - '@next/swc-darwin-arm64@16.4.1': - resolution: {integrity: sha512-U+hQ5Gj3fpzf4fveTIF3dpUFYhaSW8vHhdAnbiIomzXzg7boreYFgBqprepXFtW4sw+aTttiNmg0gew/iFNhbg==} + '@next/swc-darwin-arm64@16.4.2': + resolution: {integrity: sha512-ONkhFvZNFWlsEHOM/81AtxdyuJP2KRYKYR0JxPwvcu1AuPMMMgcL+wW2luldJvMtZwKtUxoSkCychW5wIeoYSw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.4.1': - resolution: {integrity: sha512-/hqC3V1XLUjhMASf/WridKdO9FXoEgN3HBWmtKbj00MPgnltutfraWJ3bYTpCRIgEIpbjJyOVLpYgAhh/BkdcQ==} + '@next/swc-darwin-x64@16.4.2': + resolution: {integrity: sha512-luPCMbOsCoaF+kXJEUjmjmOZg1lC3BflhmUu+ZmW4tBu2vW/4AXak8JBFvePizGkxVmNiAw/r9ra+6UviCWtWQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.4.1': - resolution: {integrity: sha512-GHzncHbcaS9g95kcvTNtKQW3aCLoR+xc3Jm7qrkpk1R+D2BjMHIPyvQGRPKCdMX95BsH/421jBUK06q9tEwzjw==} + '@next/swc-linux-arm64-gnu@16.4.2': + resolution: {integrity: sha512-xhwFTAncJyaCNy5KqKKuKaIIdCy1/1ZV1s5S1G0hhT7wGMkDTlfJ6aQbfRFnIG/s3/kDrxQ8aycVe+c5QnP8ow==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.4.1': - resolution: {integrity: sha512-1SuJyDxW/PR9dHJat/ZRgcYLhuSZ+1psP4DlKb2tKIuXbjygqpLrJWRSq+onZQBv8LcmU67EIrmb6c3XTaJLjw==} + '@next/swc-linux-arm64-musl@16.4.2': + resolution: {integrity: sha512-T1PNmfbPcxr5ndtWUL/3wQtLXsz808lq6sc2GrNT5k2oquF7UyqZddHSuAewHVsWsGXe6nsl9HoN1YNriVjuSg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.4.1': - resolution: {integrity: sha512-Istng1hMGp9TGO4lUqeKLd70MPN/OOkucVTP2Nmj+gLkwBgmPqUw8CJYBCC7nbl/B/23bBCcjCI5Hsh6hazC1A==} + '@next/swc-linux-x64-gnu@16.4.2': + resolution: {integrity: sha512-N9cDUOCGtkJG5PNKDFZUF3xXndrJJcpLp121uAGjIGvO/U2p9tfdNOM9htj7+5f72l0m8rMw/cvYacUJBQoudg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.4.1': - resolution: {integrity: sha512-aSC9wMNiZRRFVpPkPWBzRwLQxIGm/CiQcXyFF1XNcgodb+uMxdk7aSSGGpDXCbnvZdf4itjHxpOd5h7i7zaiYw==} + '@next/swc-linux-x64-musl@16.4.2': + resolution: {integrity: sha512-yY2uh1YhX6ufuYy2FCbw1dqblbhI57GLYAJfCkqD9auTv6pLrH67Uccjc3QMKBeCYAG6lkgu08ExmX1bbjejjQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.4.1': - resolution: {integrity: sha512-t/myvwFDlypMUjRvbBf8qLPyuaB0iXYYdBtwMt6DM6f+60wtGr4bSYholdPqNeV5VUXZhrpMwfza829kmhS3iA==} + '@next/swc-win32-arm64-msvc@16.4.2': + resolution: {integrity: sha512-j/ArWRIHpMMB6wYLMhr2puTguBt70lNU/Cmjl9p6dTDE8DGknYJMP9PdwPk2dqpCNL/KIX9yfngDvIesxJPmsg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.4.1': - resolution: {integrity: sha512-6ICqPo9awCkrtYNPhwkx1uU7rlFWrZRrIboDHS2LU+jv088UBYQtmJ25h6pCp27/+FZjF6BQ4Te4ErugyMeuBg==} + '@next/swc-win32-x64-msvc@16.4.2': + resolution: {integrity: sha512-AA4edyWHDko3NCSo0x6GomsdgFb0oR1J3MXU1b5xt6FRFg4AucrMPW3S0hCe/9onU0O1BbpGQBsqo1r0Gneu1g==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3221,8 +3221,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@16.4.1: - resolution: {integrity: sha512-uc657V62E34fOI6W5NtG9IzwsPcms0Z60grz2MJGtglgD+pTFnNt4Yw2PzaU622tfX4vhrDgLZzicE2YlhI20Q==} + next@16.4.2: + resolution: {integrity: sha512-r+oBJojfefUjOiWkBhXgLS+igxX/7BWyK59uHnyOyplMSLtBZ+QLP3okrdYTbrfrbrmNTVWLBPaHDX9KRaIt3w==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -4336,30 +4336,30 @@ snapshots: '@tybys/wasm-util': 0.10.4 optional: true - '@next/env@16.4.1': {} + '@next/env@16.4.2': {} - '@next/swc-darwin-arm64@16.4.1': + '@next/swc-darwin-arm64@16.4.2': optional: true - '@next/swc-darwin-x64@16.4.1': + '@next/swc-darwin-x64@16.4.2': optional: true - '@next/swc-linux-arm64-gnu@16.4.1': + '@next/swc-linux-arm64-gnu@16.4.2': optional: true - '@next/swc-linux-arm64-musl@16.4.1': + '@next/swc-linux-arm64-musl@16.4.2': optional: true - '@next/swc-linux-x64-gnu@16.4.1': + '@next/swc-linux-x64-gnu@16.4.2': optional: true - '@next/swc-linux-x64-musl@16.4.1': + '@next/swc-linux-x64-musl@16.4.2': optional: true - '@next/swc-win32-arm64-msvc@16.4.1': + '@next/swc-win32-arm64-msvc@16.4.2': optional: true - '@next/swc-win32-x64-msvc@16.4.1': + '@next/swc-win32-x64-msvc@16.4.2': optional: true '@nodelib/fs.scandir@2.1.5': @@ -5950,7 +5950,7 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3): + fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3): dependencies: '@orama/orama': 3.1.18 estree-util-value-to-estree: 3.5.0 @@ -5977,21 +5977,21 @@ snapshots: '@types/mdast': 4.0.4 '@types/react': 19.2.18 lucide-react: 1.26.0(react@19.2.8) - next: 16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + next: 16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) zod: 4.4.3 transitivePeerDependencies: - supports-color - fumadocs-mdx@14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8): + fumadocs-mdx@14.3.2(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 chokidar: 5.0.0 esbuild: 0.28.1 estree-util-value-to-estree: 3.5.0 - fumadocs-core: 16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3) + fumadocs-core: 16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3) js-yaml: 4.3.2 mdast-util-mdx: 3.0.0 mdast-util-to-markdown: 2.1.2 @@ -6008,12 +6008,12 @@ snapshots: '@types/mdast': 4.0.4 '@types/mdx': 2.0.14 '@types/react': 19.2.18 - next: 16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + next: 16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 transitivePeerDependencies: - supports-color - fumadocs-ui@16.12.1(@types/mdx@2.0.14)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3): + fumadocs-ui@16.12.1(@types/mdx@2.0.14)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(fumadocs-core@16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3): dependencies: '@fuma-translate/react': 1.0.2(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@fumadocs/tailwind': 0.1.1(tailwindcss@4.3.3) @@ -6029,7 +6029,7 @@ snapshots: '@radix-ui/react-tabs': 1.1.19(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) class-variance-authority: 0.7.1 cnfast: 0.0.8 - fumadocs-core: 16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3) + fumadocs-core: 16.12.1(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.26.0(react@19.2.8))(next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3) lucide-react: 1.26.0(react@19.2.8) motion: 12.42.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) next-themes: 0.4.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8) @@ -6043,7 +6043,7 @@ snapshots: optionalDependencies: '@types/mdx': 2.0.14 '@types/react': 19.2.18 - next: 16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + next: 16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) transitivePeerDependencies: - '@emotion/is-prop-valid' - '@types/react-dom' @@ -6848,9 +6848,9 @@ snapshots: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - next@16.4.1(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + next@16.4.2(@types/node@24.19.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: - '@next/env': 16.4.1 + '@next/env': 16.4.2 '@swc/helpers': 0.5.23 baseline-browser-mapping: 2.11.26 caniuse-lite: 1.0.30001813 @@ -6859,14 +6859,14 @@ snapshots: react-dom: 19.2.8(react@19.2.8) styled-jsx: 5.1.6(react@19.2.8) optionalDependencies: - '@next/swc-darwin-arm64': 16.4.1 - '@next/swc-darwin-x64': 16.4.1 - '@next/swc-linux-arm64-gnu': 16.4.1 - '@next/swc-linux-arm64-musl': 16.4.1 - '@next/swc-linux-x64-gnu': 16.4.1 - '@next/swc-linux-x64-musl': 16.4.1 - '@next/swc-win32-arm64-msvc': 16.4.1 - '@next/swc-win32-x64-msvc': 16.4.1 + '@next/swc-darwin-arm64': 16.4.2 + '@next/swc-darwin-x64': 16.4.2 + '@next/swc-linux-arm64-gnu': 16.4.2 + '@next/swc-linux-arm64-musl': 16.4.2 + '@next/swc-linux-x64-gnu': 16.4.2 + '@next/swc-linux-x64-musl': 16.4.2 + '@next/swc-win32-arm64-msvc': 16.4.2 + '@next/swc-win32-x64-msvc': 16.4.2 sharp: 0.35.5(@types/node@24.19.2) transitivePeerDependencies: - '@babel/core' diff --git a/mobile/package.json b/mobile/package.json index 675ff465a19..fb0412fe621 100644 --- a/mobile/package.json +++ b/mobile/package.json @@ -84,7 +84,7 @@ "acorn": "8.18.0", "esbuild": "0.28.2", "expo-module-scripts": "^55.0.2", - "happy-dom": "^20.14.5", + "happy-dom": "^20.14.6", "oxfmt": "^0.73.0", "oxlint": "^1.88.0", "react-test-renderer": "19.2.8", diff --git a/mobile/pnpm-lock.yaml b/mobile/pnpm-lock.yaml index dfbb6b5115d..319260a54ce 100644 --- a/mobile/pnpm-lock.yaml +++ b/mobile/pnpm-lock.yaml @@ -163,6 +163,7 @@ settings: excludeLinksFromLockfile: false overrides: + dompurify@<3.4.17: 3.4.17 sprintf-js@<1.1.3: 1.1.3 markdown-it@>=14.0.0 <14.3.3: 14.3.3 katex@>=0.11.0 <0.18.2: 0.18.10 @@ -365,8 +366,8 @@ importers: specifier: ^55.0.2 version: 55.0.2(@babel/core@7.29.7(supports-color@8.1.1))(@babel/runtime@7.29.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1))(esbuild@0.28.2)(eslint@9.39.4(supports-color@8.1.1))(expo@55.0.31)(jest@29.7.0(@types/node@26.6.2)(supports-color@8.1.1))(prettier@2.8.8)(react-native@0.83.10(patch_hash=22bc31f0a057b1f96d9949b38a7ccde81225f617c0f243820dc8a455c91debfb)(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.85.2(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.8)(supports-color@8.1.1))(react-refresh@0.14.2)(react-test-renderer@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@8.1.1) happy-dom: - specifier: ^20.14.5 - version: 20.14.5 + specifier: ^20.14.6 + version: 20.14.6 oxfmt: specifier: ^0.73.0 version: 0.73.0 @@ -387,7 +388,7 @@ importers: version: 8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.15)(yaml@2.9.1) vitest: specifier: ^4.1.12 - version: 4.1.12(@types/node@26.6.2)(happy-dom@20.14.5)(jsdom@20.0.3(supports-color@8.1.1))(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.15)(yaml@2.9.1)) + version: 4.1.12(@types/node@26.6.2)(happy-dom@20.14.6)(jsdom@20.0.3(supports-color@8.1.1))(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.15)(yaml@2.9.1)) ws: specifier: ^8.22.0 version: 8.22.0 @@ -4733,8 +4734,8 @@ packages: hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - happy-dom@20.14.5: - resolution: {integrity: sha512-x/RzkpWO40bTjIoT30iQtt64FLLmH/iRcUCN2X//bLx7H3ifkdfPXyqsro/OYtqzIAhiLMMA7mmiOR9C3NOKjQ==} + happy-dom@20.14.6: + resolution: {integrity: sha512-5DDsf4QmEIlRL6NkCv/fxSjYHHkZceL/IaYQdJc2h3G7DRTEai++VTjbfL0LB9geW2VrA3+vrjF3Efx+OTtX0Q==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -12546,7 +12547,7 @@ snapshots: hachure-fill@0.5.2: {} - happy-dom@20.14.5: + happy-dom@20.14.6: dependencies: '@types/node': 26.6.2 '@types/whatwg-mimetype': 3.0.2 @@ -15347,7 +15348,7 @@ snapshots: tsx: 4.23.15 yaml: 2.9.1 - vitest@4.1.12(@types/node@26.6.2)(happy-dom@20.14.5)(jsdom@20.0.3(supports-color@8.1.1))(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.15)(yaml@2.9.1)): + vitest@4.1.12(@types/node@26.6.2)(happy-dom@20.14.6)(jsdom@20.0.3(supports-color@8.1.1))(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.15)(yaml@2.9.1)): dependencies: '@vitest/expect': 4.1.12 '@vitest/mocker': 4.1.12(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.15)(yaml@2.9.1)) @@ -15371,7 +15372,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 26.6.2 - happy-dom: 20.14.5 + happy-dom: 20.14.6 jsdom: 20.0.3(supports-color@8.1.1) transitivePeerDependencies: - msw diff --git a/mobile/pnpm-workspace.yaml b/mobile/pnpm-workspace.yaml index 52b3791aa9a..eb35e1a3f8d 100644 --- a/mobile/pnpm-workspace.yaml +++ b/mobile/pnpm-workspace.yaml @@ -48,6 +48,7 @@ minimumReleaseAgeExclude: - oxlint@1.88.0 overrides: + dompurify@<3.4.17: 3.4.17 sprintf-js@<1.1.3: 1.1.3 markdown-it@>=14.0.0 <14.3.3: 14.3.3 # Mermaid 11 still requests KaTeX 0.16; the security fix starts at 0.18.2. diff --git a/package.json b/package.json index dea5989ec3d..c35a298fc79 100644 --- a/package.json +++ b/package.json @@ -282,13 +282,13 @@ "devalue": "6.0.2", "diff": "8.0.4", "dompurify": "3.4.17", - "electron": "43.7.8", + "electron": "43.8.1", "electron-builder": "26.15.3", "electron-vite": "^6.0.0", "emoji-picker-react": "^4.22.3", "emojibase-data": "17.0.0", "esbuild": "^0.28.2", - "happy-dom": "^20.14.5", + "happy-dom": "^20.14.6", "hast-util-to-jsx-runtime": "2.3.6", "html-to-image": "^1.11.13", "husky": "^9.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eaf1fa66d36..aefb39b9ac5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -165,7 +165,7 @@ settings: overrides: hono@>=4.12.4 <4.13.11: 4.13.11 - monaco-editor>dompurify: 3.4.17 + dompurify@<3.4.17: 3.4.17 katex@>=0.11.0 <0.18.2: 0.18.10 packageExtensionsChecksum: sha256-TrarseUCmMKP0lVjkfyLP2TAvkGZMZzvzPxjKY48nrY= @@ -218,7 +218,7 @@ importers: version: 0.27.0 electron-updater: specifier: ^6.8.10 - version: 6.8.10(electron@43.7.8(supports-color@7.2.0))(supports-color@7.2.0) + version: 6.8.10(electron@43.8.1(supports-color@7.2.0))(supports-color@7.2.0) fflate: specifier: 0.8.3 version: 0.8.3 @@ -303,7 +303,7 @@ importers: version: 1.88.0 '@playwright/test': specifier: ^1.63.0 - version: 1.63.0(electron@43.7.8(supports-color@7.2.0)) + version: 1.63.0(electron@43.8.1(supports-color@7.2.0)) '@sanity/diff-match-patch': specifier: ^3.2.1 version: 3.2.1 @@ -312,7 +312,7 @@ importers: version: 0.1.5(eslint@10.10.0(@types/keyv@3.1.4)(jiti@2.7.0)(supports-color@7.2.0)) '@stablyai/playwright-test': specifier: ^2.1.16 - version: 2.1.16(@playwright/test@1.63.0(electron@43.7.8(supports-color@7.2.0)))(zod@4.6.7) + version: 2.1.16(@playwright/test@1.63.0(electron@43.8.1(supports-color@7.2.0)))(zod@4.6.7) '@tailwindcss/vite': specifier: ^4.3.3 version: 4.3.3(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) @@ -321,7 +321,7 @@ importers: version: 3.14.13(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(@types/react@19.2.18)(react@19.2.8))(react@19.2.8) '@testing-library/jest-dom': specifier: ^6.9.1 - version: 6.9.1(vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.5)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))) + version: 6.9.1(vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.6)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))) '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.1)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(@types/react@19.2.18)(react@19.2.8))(react@19.2.8) @@ -446,14 +446,14 @@ importers: specifier: 3.4.17 version: 3.4.17 electron: - specifier: 43.7.8 - version: 43.7.8(supports-color@7.2.0) + specifier: 43.8.1 + version: 43.8.1(supports-color@7.2.0) electron-builder: specifier: 26.15.3 version: 26.15.3(electron-builder-squirrel-windows@26.15.3)(supports-color@7.2.0) electron-vite: specifier: ^6.0.0 - version: 6.0.0(@swc/core@1.16.2)(electron@43.7.8(supports-color@7.2.0))(supports-color@7.2.0)(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + version: 6.0.0(@swc/core@1.16.2)(electron@43.8.1(supports-color@7.2.0))(supports-color@7.2.0)(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) emoji-picker-react: specifier: ^4.22.3 version: 4.22.3(@types/react@19.2.18)(react@19.2.8) @@ -464,8 +464,8 @@ importers: specifier: ^0.28.2 version: 0.28.2 happy-dom: - specifier: ^20.14.5 - version: 20.14.5 + specifier: ^20.14.6 + version: 20.14.6 hast-util-to-jsx-runtime: specifier: 2.3.6 version: 2.3.6(supports-color@7.2.0) @@ -522,7 +522,7 @@ importers: version: 6.3.289 playwright-core: specifier: 1.64.0 - version: 1.64.0(electron@43.7.8(supports-color@7.2.0)) + version: 1.64.0(electron@43.8.1(supports-color@7.2.0)) pngjs: specifier: ^7.0.0 version: 7.0.0 @@ -618,7 +618,7 @@ importers: version: 8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) vitest: specifier: 5.0.5 - version: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.5)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + version: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.6)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) vscode-oniguruma: specifier: ^2.0.1 version: 2.0.1 @@ -679,7 +679,7 @@ importers: version: 7.0.2 vitest: specifier: 5.0.5 - version: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@18.19.130)(happy-dom@20.14.5)(msw@2.14.3(@types/node@18.19.130)(typescript@7.0.2))(vite@8.3.4(@types/node@18.19.130)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + version: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@18.19.130)(happy-dom@20.14.6)(msw@2.14.3(@types/node@18.19.130)(typescript@7.0.2))(vite@8.3.4(@types/node@18.19.130)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) packages: @@ -5092,8 +5092,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@43.7.8: - resolution: {integrity: sha512-h9qnttBn9b+pmnJjagrpjvK97Wb9WbsyIB03BV6NnhnPqSq1Jw7500hNkqHPkosHCE0zL/806v4zf9d3VrII0w==} + electron@43.8.1: + resolution: {integrity: sha512-Qa6/xXODEn60oIkyuV8jXmyX84z6nicuBh7BOkPHVZlTTCG1MeTYjAkmxX+1B/kEkErPjs3WCP+JdtwkRaKRcQ==} engines: {node: '>= 22.12.0'} hasBin: true @@ -5500,8 +5500,8 @@ packages: hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - happy-dom@20.14.5: - resolution: {integrity: sha512-x/RzkpWO40bTjIoT30iQtt64FLLmH/iRcUCN2X//bLx7H3ifkdfPXyqsro/OYtqzIAhiLMMA7mmiOR9C3NOKjQ==} + happy-dom@20.14.6: + resolution: {integrity: sha512-5DDsf4QmEIlRL6NkCv/fxSjYHHkZceL/IaYQdJc2h3G7DRTEai++VTjbfL0LB9geW2VrA3+vrjF3Efx+OTtX0Q==} engines: {node: '>=20.0.0'} has-flag@4.0.0: @@ -5716,8 +5716,8 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - ip-address@10.7.2: - resolution: {integrity: sha512-7H/2gFSIitxc0hG3nOI1glS8QLo/EHBFFLk8vEUjXY/xu0AdL8jZ9U1IzO2PUm0d2D/ofQcAifb0g6OBkt8U7w==} + ip-address@10.7.4: + resolution: {integrity: sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -9165,9 +9165,9 @@ snapshots: tslib: 2.8.1 webcrypto-core: 1.9.2 - '@playwright/test@1.63.0(electron@43.7.8(supports-color@7.2.0))': + '@playwright/test@1.63.0(electron@43.8.1(supports-color@7.2.0))': dependencies: - playwright: 1.63.0(electron@43.7.8(supports-color@7.2.0)) + playwright: 1.63.0(electron@43.8.1(supports-color@7.2.0)) transitivePeerDependencies: - '@types/electron' - electron @@ -10179,28 +10179,28 @@ snapshots: '@stablelib/base64@1.0.1': {} - '@stablyai/playwright-base@2.1.16(@playwright/test@1.63.0(electron@43.7.8(supports-color@7.2.0)))(zod@4.6.7)': + '@stablyai/playwright-base@2.1.16(@playwright/test@1.63.0(electron@43.8.1(supports-color@7.2.0)))(zod@4.6.7)': dependencies: - '@playwright/test': 1.63.0(electron@43.7.8(supports-color@7.2.0)) + '@playwright/test': 1.63.0(electron@43.8.1(supports-color@7.2.0)) jpeg-js: 0.4.4 p-retry: 4.6.2 pngjs: 7.0.0 optionalDependencies: zod: 4.6.7 - '@stablyai/playwright-test@2.1.16(@playwright/test@1.63.0(electron@43.7.8(supports-color@7.2.0)))(zod@4.6.7)': + '@stablyai/playwright-test@2.1.16(@playwright/test@1.63.0(electron@43.8.1(supports-color@7.2.0)))(zod@4.6.7)': dependencies: - '@playwright/test': 1.63.0(electron@43.7.8(supports-color@7.2.0)) - '@stablyai/playwright': 2.1.16(@playwright/test@1.63.0(electron@43.7.8(supports-color@7.2.0)))(zod@4.6.7) - '@stablyai/playwright-base': 2.1.16(@playwright/test@1.63.0(electron@43.7.8(supports-color@7.2.0)))(zod@4.6.7) + '@playwright/test': 1.63.0(electron@43.8.1(supports-color@7.2.0)) + '@stablyai/playwright': 2.1.16(@playwright/test@1.63.0(electron@43.8.1(supports-color@7.2.0)))(zod@4.6.7) + '@stablyai/playwright-base': 2.1.16(@playwright/test@1.63.0(electron@43.8.1(supports-color@7.2.0)))(zod@4.6.7) transitivePeerDependencies: - '@types/zod' - zod - '@stablyai/playwright@2.1.16(@playwright/test@1.63.0(electron@43.7.8(supports-color@7.2.0)))(zod@4.6.7)': + '@stablyai/playwright@2.1.16(@playwright/test@1.63.0(electron@43.8.1(supports-color@7.2.0)))(zod@4.6.7)': dependencies: - '@playwright/test': 1.63.0(electron@43.7.8(supports-color@7.2.0)) - '@stablyai/playwright-base': 2.1.16(@playwright/test@1.63.0(electron@43.7.8(supports-color@7.2.0)))(zod@4.6.7) + '@playwright/test': 1.63.0(electron@43.8.1(supports-color@7.2.0)) + '@stablyai/playwright-base': 2.1.16(@playwright/test@1.63.0(electron@43.8.1(supports-color@7.2.0)))(zod@4.6.7) transitivePeerDependencies: - '@types/zod' - zod @@ -10359,7 +10359,7 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.9.1(vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.5)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))': + '@testing-library/jest-dom@6.9.1(vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.6)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))': dependencies: '@adobe/css-tools': 4.5.0 '@types/aria-query': 5.0.4 @@ -10369,7 +10369,7 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 optionalDependencies: - vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.5)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.6)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) '@testing-library/react@16.3.3(@testing-library/dom@10.4.1)(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(@types/react@19.2.18)(react@19.2.8))(react@19.2.8)': dependencies: @@ -11806,7 +11806,7 @@ snapshots: electron-to-chromium@1.5.422: {} - electron-updater@6.8.10(electron@43.7.8(supports-color@7.2.0))(supports-color@7.2.0): + electron-updater@6.8.10(electron@43.8.1(supports-color@7.2.0))(supports-color@7.2.0): dependencies: builder-util-runtime: 9.7.0(supports-color@7.2.0) fs-extra: 10.1.0 @@ -11817,16 +11817,16 @@ snapshots: semver: 7.7.4 tiny-typed-emitter: 2.1.0 optionalDependencies: - electron: 43.7.8(supports-color@7.2.0) + electron: 43.8.1(supports-color@7.2.0) transitivePeerDependencies: - supports-color - electron-vite@6.0.0(@swc/core@1.16.2)(electron@43.7.8(supports-color@7.2.0))(supports-color@7.2.0)(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): + electron-vite@6.0.0(@swc/core@1.16.2)(electron@43.8.1(supports-color@7.2.0))(supports-color@7.2.0)(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): dependencies: '@babel/core': 7.29.7(supports-color@7.2.0) '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7(supports-color@7.2.0)) cac: 7.1.0 - electron: 43.7.8(supports-color@7.2.0) + electron: 43.8.1(supports-color@7.2.0) magic-string: 1.4.2 picocolors: 1.1.1 rolldown: 1.2.14 @@ -11850,7 +11850,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@43.7.8(supports-color@7.2.0): + electron@43.8.1(supports-color@7.2.0): dependencies: '@electron-internal/extract-zip': 1.0.4 '@electron/get': 5.0.0(supports-color@7.2.0) @@ -12072,7 +12072,7 @@ snapshots: express-rate-limit@8.5.2(express@5.2.1(supports-color@7.2.0)): dependencies: express: 5.2.1(supports-color@7.2.0) - ip-address: 10.7.2 + ip-address: 10.7.4 express@5.2.1(supports-color@7.2.0): dependencies: @@ -12349,7 +12349,7 @@ snapshots: hachure-fill@0.5.2: {} - happy-dom@20.14.5: + happy-dom@20.14.6: dependencies: '@types/node': 25.9.5 '@types/whatwg-mimetype': 3.0.2 @@ -12671,7 +12671,7 @@ snapshots: internmap@2.0.3: {} - ip-address@10.7.2: {} + ip-address@10.7.4: {} ipaddr.js@1.9.1: {} @@ -13900,17 +13900,17 @@ snapshots: pvutils: 1.1.5 tslib: 2.8.1 - playwright-core@1.63.0(electron@43.7.8(supports-color@7.2.0)): + playwright-core@1.63.0(electron@43.8.1(supports-color@7.2.0)): optionalDependencies: - electron: 43.7.8(supports-color@7.2.0) + electron: 43.8.1(supports-color@7.2.0) - playwright-core@1.64.0(electron@43.7.8(supports-color@7.2.0)): + playwright-core@1.64.0(electron@43.8.1(supports-color@7.2.0)): optionalDependencies: - electron: 43.7.8(supports-color@7.2.0) + electron: 43.8.1(supports-color@7.2.0) - playwright@1.63.0(electron@43.7.8(supports-color@7.2.0)): + playwright@1.63.0(electron@43.8.1(supports-color@7.2.0)): dependencies: - playwright-core: 1.63.0(electron@43.7.8(supports-color@7.2.0)) + playwright-core: 1.63.0(electron@43.8.1(supports-color@7.2.0)) transitivePeerDependencies: - '@types/electron' - electron @@ -15077,7 +15077,7 @@ snapshots: transitivePeerDependencies: - '@types/picomatch' - vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@18.19.130)(happy-dom@20.14.5)(msw@2.14.3(@types/node@18.19.130)(typescript@7.0.2))(vite@8.3.4(@types/node@18.19.130)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): + vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@18.19.130)(happy-dom@20.14.6)(msw@2.14.3(@types/node@18.19.130)(typescript@7.0.2))(vite@8.3.4(@types/node@18.19.130)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): dependencies: '@types/chai': 5.2.3 '@vitest/mocker': 5.0.5(msw@2.14.3(@types/node@18.19.130)(typescript@7.0.2))(vite@8.3.4(@types/node@18.19.130)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) @@ -15096,13 +15096,13 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 18.19.130 - happy-dom: 20.14.5 + happy-dom: 20.14.6 transitivePeerDependencies: - '@types/msw' - '@types/picomatch' - msw - vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.5)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): + vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.2)(happy-dom@20.14.6)(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): dependencies: '@types/chai': 5.2.3 '@vitest/mocker': 5.0.5(msw@2.14.3(@types/node@24.19.2)(typescript@7.0.2))(vite@8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) @@ -15121,7 +15121,7 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 24.19.2 - happy-dom: 20.14.5 + happy-dom: 20.14.6 transitivePeerDependencies: - '@types/msw' - '@types/picomatch' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ed0ffb6cd10..ccf4a7d79f0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -179,7 +179,7 @@ packageExtensions: overrides: hono@>=4.12.4 <4.13.11: 4.13.11 - monaco-editor>dompurify: 3.4.17 + dompurify@<3.4.17: 3.4.17 # Upstream markdown/math packages still require the vulnerable 0.16 line. katex@>=0.11.0 <0.18.2: 0.18.10 diff --git a/src/main/browser/browser-popup-adapter-compatibility.electron.test.ts b/src/main/browser/browser-popup-adapter-compatibility.electron.test.ts index 2dd05b30463..b21fef1ca08 100644 --- a/src/main/browser/browser-popup-adapter-compatibility.electron.test.ts +++ b/src/main/browser/browser-popup-adapter-compatibility.electron.test.ts @@ -98,7 +98,7 @@ describe('Electron popup adapter API limits (not an admission safety gate)', () it.each(creationPaths)( 'records same-parent identical URLs with foreground, background and window intent: %s', async (path) => { - expect(status().electronVersion).toBe('43.7.8') + expect(status().electronVersion).toBe('43.8.1') const page = guest('probe-one') await configure(page, path) for (const modifier of [null, 'Shift', 'ControlOrMeta'] as const) { @@ -236,15 +236,15 @@ describe('Electron popup adapter API limits (not an admission safety gate)', () ) it.each(creationPaths)( - 'exposes inherited flags on native OpenURL link options only: %s', + 'preserves inherited link restrictions without exposing sandbox flags: %s', async (path) => { const records = await exerciseSandboxControls(path, 'link') const preferences = records.map((record) => record.optionsPreferences) - expect(preferences[0]).toHaveProperty('openerSandboxFlags', expect.any(Number)) + expect(preferences[0]).not.toHaveProperty('openerSandboxFlags') expect(preferences[1]).not.toHaveProperty('openerSandboxFlags') expect(preferences[2]).not.toHaveProperty('openerSandboxFlags') if (path === 'adopted') { - expect(records.every((record) => record.event === 'createWindow-missing')).toBe(true) + expect(records.every((record) => record.event === 'createWindow')).toBe(true) } } ) @@ -334,27 +334,9 @@ async function exerciseSandboxControls( const destination = `${origin}/sandbox-${path}-${kind}-${sandbox}` const offset = status().adapterProbe?.length ?? 0 await installSandboxFrame(page, sandbox, destination, kind) - const initialReceipt = receipts.length const open = page.frameLocator('#sandbox-probe').locator('#open') await waitForHiddenFrameInput(open) await open.click(kind === 'link' ? { modifiers: ['Shift'] } : {}) - if (path === 'adopted' && kind === 'link') { - await expect - .poll(() => eventsSince(offset).some((event) => event.event === 'createWindow-missing')) - .toBe(true) - const creation = eventsSince(offset).find((event) => event.event === 'createWindow-missing') - if (!creation) { - throw new Error('Missing OpenURL options') - } - records.push(creation) - await new Promise((resolve) => setTimeout(resolve, 300)) - expect( - receipts.slice(initialReceipt).some((receipt) => destination.endsWith(receipt.path)) - ).toBe(false) - snapshots.push(status()) - await page.evaluate('console.log("orca-popup-fixture:probe-cleanup")') - continue - } const child = await childAt(destination) expect(await child.evaluate('window.opener === null')).toBe(true) const before = receipts.length @@ -382,13 +364,7 @@ async function exerciseSandboxControls( } await page.evaluate('console.log("orca-popup-fixture:snapshot")') const creation = eventsSince(offset).find( - (event) => - event.event === - (path === 'adopted' - ? kind === 'script' - ? 'createWindow' - : 'createWindow-missing' - : 'did-create-window') + (event) => event.event === (path === 'adopted' ? 'createWindow' : 'did-create-window') ) if (!creation) { throw new Error('Missing creation event') diff --git a/src/main/browser/browser-popup-compatibility.electron.test.ts b/src/main/browser/browser-popup-compatibility.electron.test.ts index e8177878506..dab1b003f8e 100644 --- a/src/main/browser/browser-popup-compatibility.electron.test.ts +++ b/src/main/browser/browser-popup-compatibility.electron.test.ts @@ -152,7 +152,7 @@ describe('hidden Chromium popup compatibility', () => { await closeChildren(page) }) - it('opens opener-less OAuth links as local tabs without their discarded page loading', async () => { + it('opens opener-less OAuth links as tabs and preserves original modifier POSTs', async () => { const page = guest('local') const before = receipts.length const hostedBefore = status().childRequests.length @@ -168,16 +168,26 @@ describe('hidden Chromium popup compatibility', () => { expect(status().tabOpens.at(-1)).toEqual({ url: oauthUrl, activate }) } expect(status().childRequests.length).toBe(hostedBefore) - // A POST arrives without a page too, but reopening it by URL would drop its body. + expect(receipts.slice(before).some(({ path }) => path === '/authorize-link')).toBe(false) + const beforePost = receipts.length await page.locator('#post').click({ modifiers: ['ControlOrMeta', 'Shift'] }) + await expect + .poll(() => receipts.slice(beforePost).find(({ path }) => path === '/post')) + .toMatchObject({ + method: 'POST', + body: 'code=synthetic%2Bvalue', + cookie: 'synthetic_session=local', + referrer: `${origin}/local`, + origin, + proxied: false + }) await new Promise((resolve) => setTimeout(resolve, 750)) - expect( - receipts.slice(before).filter(({ path }) => path === '/authorize-link' || path === '/post') - ).toEqual([]) + expect(receipts.slice(beforePost).filter(({ path }) => path === '/post')).toHaveLength(1) + await closeChildren(page) expect(status().windowsHidden).toBe(true) }) - it('loads remote modifier-opened GETs itself and never replays their POSTs', async () => { + it('preserves remote modifier GETs and original POSTs without replay', async () => { const page = guest('route') const before = receipts.length await page.locator('#link').click({ modifiers: ['ControlOrMeta', 'Shift'] }) @@ -198,11 +208,23 @@ describe('hidden Chromium popup compatibility', () => { ).toBe(true) await closeChildren(page) const beforePost = receipts.length - const blockedBefore = status().blocked.length await page.locator('#post').click({ modifiers: ['ControlOrMeta', 'Shift'] }) - await expect.poll(() => status().blocked.length).toBe(blockedBefore + 1) + await expect + .poll(() => receipts.slice(beforePost).find(({ path }) => path === '/post')) + .toMatchObject({ + method: 'POST', + body: 'code=synthetic%2Bvalue', + cookie: 'synthetic_session=route', + referrer: `${origin}/route`, + origin, + proxied: true + }) await new Promise((resolve) => setTimeout(resolve, 750)) - expect(receipts.slice(beforePost).some((receipt) => receipt.path === '/post')).toBe(false) + expect(receipts.slice(beforePost).filter(({ path }) => path === '/post')).toHaveLength(1) + await page.evaluate('console.log("orca-popup-fixture:snapshot")') + expect( + status().routeContents.every(({ webRtcPolicy }) => webRtcPolicy === 'disable_non_proxied_udp') + ).toBe(true) expect(status().windowsHidden).toBe(true) }) diff --git a/src/main/browser/browser-popup-native-compatibility.electron.test.ts b/src/main/browser/browser-popup-native-compatibility.electron.test.ts index cfe8fdb80a6..5a078c2d434 100644 --- a/src/main/browser/browser-popup-native-compatibility.electron.test.ts +++ b/src/main/browser/browser-popup-native-compatibility.electron.test.ts @@ -547,14 +547,15 @@ describe('hidden Chromium native popup request compatibility', () => { await page.locator('#scripted-native').click({ modifiers: ['Shift'] }) } const child = await childPage(`${origin}${path}`) - // Control: the hidden native child does honor page resizes above the floor. + // Native size conversion can round by one pixel; the resize must still take effect. await child.evaluate('window.resizeTo(640, 480)') await expect .poll(async () => { await refreshStatus() - return status().native.windows.at(-1)?.contentSize[0] + const width = status().native.windows.at(-1)?.contentSize[0] + return Math.abs((width ?? Infinity) - 640) }) - .toBe(640) + .toBeLessThanOrEqual(1) await child.evaluate('window.resizeTo(100, 100)') await expect .poll(async () => { diff --git a/src/main/browser/browser-popup-native-electron-fixture.ts b/src/main/browser/browser-popup-native-electron-fixture.ts index b9d9d66deb2..4689b1227f3 100644 --- a/src/main/browser/browser-popup-native-electron-fixture.ts +++ b/src/main/browser/browser-popup-native-electron-fixture.ts @@ -69,9 +69,13 @@ export class BrowserPopupNativeFixture { window.once('closed', () => input.writeStatus()) const record: (typeof this.creation)[number] = { contentsId: window.webContents.id } this.creation.push(record) - window.webContents.once('did-start-navigation', () => { - record.firstNavigationPolicy = window.webContents.getWebRTCIPHandlingPolicy() - record.firstNavigationOwner = resolveBrowserRouteGuestPopupOpener(window.webContents.id) + const contents = window.webContents + contents.once('did-start-navigation', () => { + if (window.isDestroyed() || contents.isDestroyed()) { + return + } + record.firstNavigationPolicy = contents.getWebRTCIPHandlingPolicy() + record.firstNavigationOwner = resolveBrowserRouteGuestPopupOpener(contents.id) record.firstNavigationTitle = window.getTitle() input.writeStatus() }) diff --git a/src/shared/node-runtime-pin.ts b/src/shared/node-runtime-pin.ts index 270b27cf8ac..225c4b15bae 100644 --- a/src/shared/node-runtime-pin.ts +++ b/src/shared/node-runtime-pin.ts @@ -61,7 +61,7 @@ export type NodeRuntimeAsset = { // @generated-begin by config/scripts/update-node-runtime-pin.mjs export const NODE_RUNTIME_PIN: NodeRuntimePin = { version: '24.22.1', - electron: '43.7.8', + electron: '43.8.1', napi: 10, headers: { file: 'node-v24.22.1-headers.tar.gz',