From 7a463cd193005e6ba86f4b085af41a69f3be5cef Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Wed, 11 Feb 2026 08:58:24 -0500 Subject: [PATCH] fix(tui): keep /share available to copy existing link (#12532) --- .../src/cli/cmd/tui/routes/session/index.tsx | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx index 3532d9e5a..64847ccb1 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -314,26 +314,31 @@ export function Session() { const command = useCommandDialog() command.register(() => [ { - title: "Share session", + title: session()?.share?.url ? "Copy share link" : "Share session", value: "session.share", suggested: route.type === "session", keybind: "session_share", category: "Session", - enabled: sync.data.config.share !== "disabled" && !session()?.share?.url, + enabled: sync.data.config.share !== "disabled", slash: { name: "share", }, onSelect: async (dialog) => { + const copy = (url: string) => + Clipboard.copy(url) + .then(() => toast.show({ message: "Share URL copied to clipboard!", variant: "success" })) + .catch(() => toast.show({ message: "Failed to copy URL to clipboard", variant: "error" })) + const url = session()?.share?.url + if (url) { + await copy(url) + dialog.clear() + return + } await sdk.client.session .share({ sessionID: route.sessionID, }) - .then((res) => - Clipboard.copy(res.data!.share!.url).catch(() => - toast.show({ message: "Failed to copy URL to clipboard", variant: "error" }), - ), - ) - .then(() => toast.show({ message: "Share URL copied to clipboard!", variant: "success" })) + .then((res) => copy(res.data!.share!.url)) .catch(() => toast.show({ message: "Failed to share session", variant: "error" })) dialog.clear() },