From 6fb526741b3d117c54baf58520ad5d11ec687b6a Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 9 Jul 2026 13:05:20 -0400 Subject: [PATCH] refactor(tui): rename link concept to pair --- packages/cli/src/commands/commands.ts | 2 +- .../src/commands/handlers/{link.ts => pair.ts} | 6 +++--- packages/cli/src/index.ts | 2 +- packages/tui/src/app.tsx | 16 ++++++++-------- .../{dialog-link.tsx => dialog-pair.tsx} | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) rename packages/cli/src/commands/handlers/{link.ts => pair.ts} (93%) rename packages/tui/src/component/{dialog-link.tsx => dialog-pair.tsx} (97%) diff --git a/packages/cli/src/commands/commands.ts b/packages/cli/src/commands/commands.ts index 2bc9884b49..5038d6d403 100644 --- a/packages/cli/src/commands/commands.ts +++ b/packages/cli/src/commands/commands.ts @@ -209,7 +209,7 @@ export const Commands = Spec.make(typeof OPENCODE_CLI_NAME === "string" ? OPENCO }), ], }), - Spec.make("link", { description: "Show server connection information" }), + Spec.make("pair", { description: "Show server pairing information" }), Spec.make("serve", { description: "Start the v2 API server", params: { diff --git a/packages/cli/src/commands/handlers/link.ts b/packages/cli/src/commands/handlers/pair.ts similarity index 93% rename from packages/cli/src/commands/handlers/link.ts rename to packages/cli/src/commands/handlers/pair.ts index 6612502553..5c40a20444 100644 --- a/packages/cli/src/commands/handlers/link.ts +++ b/packages/cli/src/commands/handlers/pair.ts @@ -8,8 +8,8 @@ import { Runtime } from "../../framework/runtime" import { ServiceConfig } from "../../services/service-config" export default Runtime.handler( - Commands.commands.link, - Effect.fn("cli.link")(function* () { + Commands.commands.pair, + Effect.fn("cli.pair")(function* () { const endpoint = yield* Service.start(yield* ServiceConfig.options()) const password = yield* ServiceConfig.password() const server = yield* Effect.tryPromise(() => @@ -24,7 +24,7 @@ export default Runtime.handler( ` Username ${info.username}`, ` Password ${info.password}`, "", - " Scan to connect", + " Scan to pair", "", renderUnicodeCompact(JSON.stringify(info), { border: 2 }) .split(EOL) diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index f25dd7938c..e358b181c4 100755 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -36,7 +36,7 @@ const Handlers = Runtime.handlers(Commands, { migrate: () => import("./commands/handlers/migrate"), mini: () => import("./commands/handlers/mini"), run: () => import("./commands/handlers/run"), - link: () => import("./commands/handlers/link"), + pair: () => import("./commands/handlers/pair"), service: { start: () => import("./commands/handlers/service/start"), restart: () => import("./commands/handlers/service/restart"), diff --git a/packages/tui/src/app.tsx b/packages/tui/src/app.tsx index c1262eda83..9c0ee7c118 100644 --- a/packages/tui/src/app.tsx +++ b/packages/tui/src/app.tsx @@ -47,7 +47,7 @@ import { useConnected } from "./component/use-connected" import { DialogMcp } from "./component/dialog-mcp" import { DialogStatus } from "./component/dialog-status" import { DialogDebug } from "./component/dialog-debug" -import { DialogLink, type DialogLinkCredentials } from "./component/dialog-link" +import { DialogPair, type DialogPairCredentials } from "./component/dialog-pair" import { createOpencodeClient } from "@opencode-ai/sdk/v2/client" import { DialogThemeList } from "./component/dialog-theme-list" import { DialogHelp } from "./ui/dialog-help" @@ -123,7 +123,7 @@ const appBindingCommands = [ "provider.connect", "console.org.switch", "opencode.status", - "server.link", + "server.pair", "opencode.debug", "theme.switch", "theme.switch_mode", @@ -358,7 +358,7 @@ export const run = Effect.fn("Tui.run")(function* (input: TuiInput) { Promise pluginHost: TuiPluginHost - link?: DialogLinkCredentials + pair?: DialogPairCredentials }) { const log = useLog({ component: "app" }) const startup = useTuiStartup() @@ -849,11 +849,11 @@ function App(props: { category: "System", }, { - name: "server.link", - title: "Show server info", - slashName: "link", + name: "server.pair", + title: "Pair device", + slashName: "pair", run: () => { - dialog.replace(() => ) + dialog.replace(() => ) }, category: "System", }, diff --git a/packages/tui/src/component/dialog-link.tsx b/packages/tui/src/component/dialog-pair.tsx similarity index 97% rename from packages/tui/src/component/dialog-link.tsx rename to packages/tui/src/component/dialog-pair.tsx index 6e5a4712ab..ffa531890f 100644 --- a/packages/tui/src/component/dialog-link.tsx +++ b/packages/tui/src/component/dialog-pair.tsx @@ -7,12 +7,12 @@ import { useTheme } from "../context/theme" import { useDialog } from "../ui/dialog" import { errorMessage } from "../util/error" -export type DialogLinkCredentials = { +export type DialogPairCredentials = { readonly username: string readonly password: string } -export function DialogLink(props: { credentials?: DialogLinkCredentials }) { +export function DialogPair(props: { credentials?: DialogPairCredentials }) { const sdk = useSDK() const dialog = useDialog() const dimensions = useTerminalDimensions() @@ -97,7 +97,7 @@ export function DialogLink(props: { credentials?: DialogLinkCredentials }) { - Link + Pair dialog.clear()}> esc