diff --git a/packages/app/src/providers/connect/controller.ts b/packages/app/src/providers/connect/controller.ts index 3574fdcf586..af635dc8d3d 100644 --- a/packages/app/src/providers/connect/controller.ts +++ b/packages/app/src/providers/connect/controller.ts @@ -1,5 +1,6 @@ import type { FormAnswer, IntegrationMethod, IntegrationOauthConnectOutput } from "@opencode-ai/client/promise" import { useLanguage } from "@/runtime/i18n/language" +import { usePlatform } from "@/runtime/platform/platform" import { useServerSDK } from "@/runtime/server/client" import { useData } from "@/runtime/server/current" import { createEffect, createMemo, createResource, onCleanup } from "solid-js" @@ -15,6 +16,7 @@ export function createProviderConnectionController(options: { pollInterval?: number }) { const language = useLanguage() + const platform = usePlatform() const serverSDK = useServerSDK() const data = useData() const location = () => { @@ -184,7 +186,14 @@ export function createProviderConnectionController(options: { ...(answer ? { answer } : {}), location: location(), }) - .then((response) => ({ ok: true as const, authorization: response.data })) + .then((response) => { + if (options.provider() === "opencode" && platform.platform === "desktop") { + const url = new URL(response.data.url) + url.searchParams.set("client_id", "opencode-desktop") + response.data.url = url.href + } + return { ok: true as const, authorization: response.data } + }) .catch((error) => ({ ok: false as const, error })) if (polling.disposed || generation !== polling.generation) return if (!result.ok) {