diff --git a/packages/app/src/components/dialog-settings.tsx b/packages/app/src/components/dialog-settings.tsx index 83cea131f5..ce2ef3538c 100644 --- a/packages/app/src/components/dialog-settings.tsx +++ b/packages/app/src/components/dialog-settings.tsx @@ -8,14 +8,20 @@ import { SettingsGeneral } from "./settings-general" import { SettingsKeybinds } from "./settings-keybinds" import { SettingsProviders } from "./settings-providers" import { SettingsModels } from "./settings-models" +import { SettingsPair } from "./settings-pair" -export const DialogSettings: Component = () => { +export const DialogSettings: Component<{ defaultTab?: string }> = (props) => { const language = useLanguage() const platform = usePlatform() return ( ) diff --git a/packages/app/src/components/settings-pair.tsx b/packages/app/src/components/settings-pair.tsx new file mode 100644 index 0000000000..7a7b69ce8b --- /dev/null +++ b/packages/app/src/components/settings-pair.tsx @@ -0,0 +1,92 @@ +import { type Component, createResource, Show } from "solid-js" +import { Icon } from "@opencode-ai/ui/icon" +import { useLanguage } from "@/context/language" +import { useGlobalSDK } from "@/context/global-sdk" +import { usePlatform } from "@/context/platform" +import { SettingsList } from "./settings-list" + +type PairResult = { enabled: false } | { enabled: true; hosts: string[]; link: string; qr: string } + +export const SettingsPair: Component = () => { + const language = useLanguage() + const globalSDK = useGlobalSDK() + const platform = usePlatform() + + const [data] = createResource(async () => { + const f = platform.fetch ?? fetch + const res = await f(`${globalSDK.url}/experimental/push/pair`) + if (!res.ok) return { enabled: false as const } + return (await res.json()) as PairResult + }) + + return ( +
{language.t("settings.pair.description")}
+
+ opencode serve --relay-url <url> --relay-secret <secret>
+
+