From 56da7849df544c9c38bf819197b64c5e4d0fb8af Mon Sep 17 00:00:00 2001 From: AviPeltz Date: Tue, 17 Feb 2026 12:08:01 -0800 Subject: [PATCH] fix(desktop): use deep links for auth on macOS, localhost callback on Linux PR #1477 unconditionally sent local_callback for all platforms, which bypassed the reliable deep link flow on macOS. Only send the localhost callback on Linux where deep links are unreliable, restoring the original macOS auth behavior. --- apps/desktop/src/lib/trpc/routers/auth/index.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/desktop/src/lib/trpc/routers/auth/index.ts b/apps/desktop/src/lib/trpc/routers/auth/index.ts index d60a4cddd0e..1e6bf29a696 100644 --- a/apps/desktop/src/lib/trpc/routers/auth/index.ts +++ b/apps/desktop/src/lib/trpc/routers/auth/index.ts @@ -5,7 +5,7 @@ import { observable } from "@trpc/server/observable"; import { shell } from "electron"; import { env } from "main/env.main"; import { getDeviceName, getHashedDeviceId } from "main/lib/device-info"; -import { PROTOCOL_SCHEME } from "shared/constants"; +import { PLATFORM, PROTOCOL_SCHEME } from "shared/constants"; import { env as sharedEnv } from "shared/env.shared"; import { z } from "zod"; import { publicProcedure, router } from "../.."; @@ -67,7 +67,8 @@ export const createAuthRouter = () => { /** * Start OAuth sign-in flow. - * Opens browser for OAuth, token delivered via deep link callback. + * Opens browser for OAuth, token delivered via deep link on macOS + * or localhost callback on Linux (where deep links are unreliable). */ signIn: publicProcedure .input(z.object({ provider: z.enum(AUTH_PROVIDERS) })) @@ -88,10 +89,13 @@ export const createAuthRouter = () => { connectUrl.searchParams.set("provider", input.provider); connectUrl.searchParams.set("state", state); connectUrl.searchParams.set("protocol", PROTOCOL_SCHEME); - connectUrl.searchParams.set( - "local_callback", - `http://127.0.0.1:${sharedEnv.DESKTOP_NOTIFICATIONS_PORT}/auth/callback`, - ); + // Only send local_callback on Linux where deep links are unreliable + if (PLATFORM.IS_LINUX) { + connectUrl.searchParams.set( + "local_callback", + `http://127.0.0.1:${sharedEnv.DESKTOP_NOTIFICATIONS_PORT}/auth/callback`, + ); + } await shell.openExternal(connectUrl.toString()); return { success: true }; } catch (err) {