From a3ec1bda21e7a71e2b524b8d7e27589eae022395 Mon Sep 17 00:00:00 2001 From: sheehanmunim Date: Wed, 19 Aug 2026 13:21:50 -0400 Subject: [PATCH] fix(desktop): hold the Clerk canary until it can actually build Upstream's passkey fix brought @clerk/electron 0.0.34-canary and passkeys 0.0.4-canary. Neither can build here: the published native tarballs are 1 KB with no .node binary, and all six canary packages fall inside the repo's minimumReleaseAge policy, so pnpm install refuses the lockfile on every fleet machine. Pins back to @clerk/electron 0.0.24 and passkeys 0.0.3, and drops the test that uses the 0.0.4-only conditionalUI argument. Upstream's actual fix - the pinned __internal_clerkUIVersion - is a runtime string and stays. Co-Authored-By: Claude Opus 5 (1M context) --- .../components/clerk/electronPasskeys.test.ts | 60 ----------------- pnpm-lock.yaml | 64 +++++++++---------- pnpm-workspace.yaml | 4 +- 3 files changed, 34 insertions(+), 94 deletions(-) delete mode 100644 apps/web/src/components/clerk/electronPasskeys.test.ts diff --git a/apps/web/src/components/clerk/electronPasskeys.test.ts b/apps/web/src/components/clerk/electronPasskeys.test.ts deleted file mode 100644 index 582b801cc50f..000000000000 --- a/apps/web/src/components/clerk/electronPasskeys.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { createPasskeys } from "@clerk/electron/passkeys"; -import { afterEach, describe, expect, it, vi } from "vite-plus/test"; - -const publicKeyOptions = { - allowCredentials: [], - challenge: new Uint8Array([1]), - rpId: "clerk.t3.codes", - timeout: 60_000, - userVerification: "preferred" as const, -}; - -const stubNativePasskeys = () => { - const get = vi.fn().mockResolvedValue({ - ok: false, - error: { code: "cancelled", message: "user cancelled" }, - }); - - vi.stubGlobal("location", { protocol: "t3code:", hostname: "app" }); - vi.stubGlobal("window", { - PublicKeyCredential: vi.fn(), - __clerk_internal_electron_passkeys: { - platform: "darwin", - electronMajor: 41, - get, - }, - }); - - return get; -}; - -describe("Electron passkeys", () => { - afterEach(() => { - vi.unstubAllGlobals(); - }); - - it("does not send an autofill request to the native bridge", async () => { - const get = stubNativePasskeys(); - const passkeys = createPasskeys(); - - const result = await passkeys.get({ - publicKeyOptions, - conditionalUI: true, - }); - - expect(get).not.toHaveBeenCalled(); - expect(result.error).toMatchObject({ code: "passkey_operation_aborted" }); - }); - - it("sends an explicit passkey request to the native bridge", async () => { - const get = stubNativePasskeys(); - const passkeys = createPasskeys(); - - await passkeys.get({ - publicKeyOptions, - conditionalUI: false, - }); - - expect(get).toHaveBeenCalledOnce(); - }); -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 624e2cacbdc3..fb828373fe8c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ overrides: '@clerk/clerk-js>@solana/wallet-adapter-react': '-' '@clerk/clerk-js>@solana/wallet-standard': '-' '@clerk/clerk-js>@wallet-standard/core': '-' - '@clerk/electron': 0.0.34-canary.v20260819050620 - '@clerk/electron-passkeys': 0.0.4-canary.v20260819050620 + '@clerk/electron': 0.0.24 + '@clerk/electron-passkeys': 0.0.3 '@clerk/expo': 4.2.0 '@clerk/react': 6.14.4 '@clerk/shared': 4.29.2 @@ -114,11 +114,11 @@ importers: apps/desktop: dependencies: '@clerk/electron': - specifier: 0.0.34-canary.v20260819050620 - version: 0.0.34-canary.v20260819050620(@clerk/electron-passkeys@0.0.4-canary.v20260819050620)(electron-store@8.2.0)(electron@41.5.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + specifier: 0.0.24 + version: 0.0.24(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@41.5.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@clerk/electron-passkeys': - specifier: 0.0.4-canary.v20260819050620 - version: 0.0.4-canary.v20260819050620 + specifier: 0.0.3 + version: 0.0.3 '@effect/platform-node': specifier: 4.0.0-beta.103 version: 4.0.0-beta.103(bufferutil@4.1.0)(effect@4.0.0-beta.103(patch_hash=af36b7948b6f9c56623074662b51dade5699880c1a7c71245de73e13c3185fb6))(ioredis@5.11.0)(utf-8-validate@6.0.6) @@ -529,8 +529,8 @@ importers: specifier: ^1.4.1 version: 1.5.0(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@clerk/electron': - specifier: 0.0.34-canary.v20260819050620 - version: 0.0.34-canary.v20260819050620(@clerk/electron-passkeys@0.0.4-canary.v20260819050620)(electron-store@8.2.0)(electron@41.5.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + specifier: 0.0.24 + version: 0.0.24(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@41.5.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@clerk/react': specifier: 6.14.4 version: 6.14.4(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -1750,35 +1750,35 @@ packages: resolution: {integrity: sha512-4i4RE+ZQ0hKDDFSRKCISQPBy07SfFeFAhBUhNj2j01Nx2n4pqV+5iyg2Vf27+NKFNkgq7kdmZGvtug24D++8WQ==} engines: {node: '>=20.9.0'} - '@clerk/electron-passkeys-darwin-arm64@0.0.4-canary.v20260819050620': - resolution: {integrity: sha512-avxygtEfWBD3YPkxws4lB5mL/75SQvVBMQCg+b1gjFsQInnVOgAqAv4wHR8wgUsEbXY2zEkvqaYjFSnEveC0VA==} + '@clerk/electron-passkeys-darwin-arm64@0.0.3': + resolution: {integrity: sha512-oAlrd+GLqP0oREP3hNRc6yNZhXGaQgJss9iCWRQqXjpw1yZD1ZU+L+E2Gfg84vMj/NSUhxbU0Djy0RXhmeUwgg==} cpu: [arm64] os: [darwin] - '@clerk/electron-passkeys-darwin-x64@0.0.4-canary.v20260819050620': - resolution: {integrity: sha512-clShldbwDcC2ek6gJT85QKsMfaPyOhEgfz61u2n3YKivbeui33XjJu261d+LO20mqDjXZy3flLGPTIh/Kii80g==} + '@clerk/electron-passkeys-darwin-x64@0.0.3': + resolution: {integrity: sha512-0UPAWQEni7o8gjWwd2sP97fPshJmT2w5b8eV/jOPVSP8NqIcFCm5yIFSEx1SfB53LGfzB01A4iEGi2pxiCHqyQ==} cpu: [x64] os: [darwin] - '@clerk/electron-passkeys-win32-arm64-msvc@0.0.4-canary.v20260819050620': - resolution: {integrity: sha512-alIfXJSxyeulnNeHoT4X7+qO0o9/EBhiRWMhCXwKJIbWfwzqnnVrRH1P7HfYRnDepKhqRzsUaBuYTqQzisHG+A==} + '@clerk/electron-passkeys-win32-arm64-msvc@0.0.3': + resolution: {integrity: sha512-bbRvifm9A/gfPkwC1UyMyF9sYGEs0aen7J2kCcaOIW3K0PXcAbHtsR/gnx4dT0bjFdd21vSa2zlIdERvHc1BiA==} cpu: [arm64] os: [win32] - '@clerk/electron-passkeys-win32-x64-msvc@0.0.4-canary.v20260819050620': - resolution: {integrity: sha512-QSKKMCdV9AhOt74ls8ExdwR+2ikoLGgN2LdWIjBgNk6epJVs2L1FXVZOM0ZqfVHFSl5y7vLmlOACR6WyJ2eoLg==} + '@clerk/electron-passkeys-win32-x64-msvc@0.0.3': + resolution: {integrity: sha512-gFaVqKlOKTF2SJ3lMwkZ0oonycQn93p1qSrp5kzzeZBeQ+tGB3gQnjXecrhQy21AzDUyWqVJJ8KrP2HRAwifWg==} cpu: [x64] os: [win32] - '@clerk/electron-passkeys@0.0.4-canary.v20260819050620': - resolution: {integrity: sha512-zOoFEsvOrArv7p4ERNAdkGbYoD86ragDhysLG1NdxJm2jnfw+AfwxUv0FkOPZ7iNuQ0rbJaR/urxdvEwVcuKRA==} + '@clerk/electron-passkeys@0.0.3': + resolution: {integrity: sha512-OHhIe88qDL+FxyBalXdXNHAS5eEramr6Rerp+6iNkfkjqT8rx4hHNmfpmjg5/T1/am8QfknbOBZkqoXZlCrjPg==} engines: {node: '>=20.9.0'} - '@clerk/electron@0.0.34-canary.v20260819050620': - resolution: {integrity: sha512-sfKWkH2SigKcxtR+h36G1NGnmMI5xOlwvqHpr3JYcacS/uokQbeAjCCQzEeV/9zqWYtRL4et5wCD13+gWv4b6w==} + '@clerk/electron@0.0.24': + resolution: {integrity: sha512-xORO51KLzCqmRQ4IVsa+Amp1M5NjG28QnvsaRBq1v4CUEjH8vAXDKCPiPBKAE+HuQB6HUhzYmzUkyTw2FcDonw==} engines: {node: '>=20.9.0'} peerDependencies: - '@clerk/electron-passkeys': 0.0.4-canary.v20260819050620 + '@clerk/electron-passkeys': 0.0.3 electron: '>=28' electron-store: ^8.2.0 react: ^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0 @@ -11739,26 +11739,26 @@ snapshots: - react - react-dom - '@clerk/electron-passkeys-darwin-arm64@0.0.4-canary.v20260819050620': + '@clerk/electron-passkeys-darwin-arm64@0.0.3': optional: true - '@clerk/electron-passkeys-darwin-x64@0.0.4-canary.v20260819050620': + '@clerk/electron-passkeys-darwin-x64@0.0.3': optional: true - '@clerk/electron-passkeys-win32-arm64-msvc@0.0.4-canary.v20260819050620': + '@clerk/electron-passkeys-win32-arm64-msvc@0.0.3': optional: true - '@clerk/electron-passkeys-win32-x64-msvc@0.0.4-canary.v20260819050620': + '@clerk/electron-passkeys-win32-x64-msvc@0.0.3': optional: true - '@clerk/electron-passkeys@0.0.4-canary.v20260819050620': + '@clerk/electron-passkeys@0.0.3': optionalDependencies: - '@clerk/electron-passkeys-darwin-arm64': 0.0.4-canary.v20260819050620 - '@clerk/electron-passkeys-darwin-x64': 0.0.4-canary.v20260819050620 - '@clerk/electron-passkeys-win32-arm64-msvc': 0.0.4-canary.v20260819050620 - '@clerk/electron-passkeys-win32-x64-msvc': 0.0.4-canary.v20260819050620 + '@clerk/electron-passkeys-darwin-arm64': 0.0.3 + '@clerk/electron-passkeys-darwin-x64': 0.0.3 + '@clerk/electron-passkeys-win32-arm64-msvc': 0.0.3 + '@clerk/electron-passkeys-win32-x64-msvc': 0.0.3 - '@clerk/electron@0.0.34-canary.v20260819050620(@clerk/electron-passkeys@0.0.4-canary.v20260819050620)(electron-store@8.2.0)(electron@41.5.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@clerk/electron@0.0.24(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@41.5.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@clerk/clerk-js': 6.29.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@clerk/react': 6.14.4(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -11767,7 +11767,7 @@ snapshots: react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@clerk/electron-passkeys': 0.0.4-canary.v20260819050620 + '@clerk/electron-passkeys': 0.0.3 electron-store: 8.2.0 react-dom: 19.2.6(react@19.2.6) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e59b25fc86a7..cca2cd7cf94f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -26,7 +26,7 @@ allowBuilds: catalog: "@clerk/backend": 3.14.0 "@clerk/clerk-js": 6.29.2 - "@clerk/electron": 0.0.34-canary.v20260819050620 + "@clerk/electron": 0.0.24 "@clerk/electron-passkeys": 0.0.3 "@clerk/expo": 4.2.0 "@clerk/react": 6.14.4 @@ -56,7 +56,7 @@ catalog: minimumReleaseAgeExclude: - "@clerk/backend@3.14.0" - "@clerk/clerk-js@6.29.2" - - "@clerk/electron@0.0.34-canary.v20260819050620" + - "@clerk/electron@0.0.24" - "@clerk/electron-passkeys@0.0.3" - "@clerk/expo@4.2.0" - "@clerk/react@6.14.4"