summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-02-11 08:58:24 -0500
committerGitHub <[email protected]>2026-02-11 08:58:24 -0500
commit7a463cd193005e6ba86f4b085af41a69f3be5cef (patch)
treefb9dd56df1175cbef266afe0014c5adba773bb8a
parent352a54c698b7a243177c8e39013b0abd60570888 (diff)
downloadopencode-7a463cd193005e6ba86f4b085af41a69f3be5cef.tar.gz
opencode-7a463cd193005e6ba86f4b085af41a69f3be5cef.zip
fix(tui): keep /share available to copy existing link (#12532)
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/index.tsx21
1 files 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()
},