diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx index 68578e70..a776b5f9 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx @@ -217,12 +217,6 @@ export function Autocomplete(props: { description: "compact the session", onSelect: () => command.trigger("session.compact"), }, - { - display: "/share", - disabled: !!s.share?.url, - description: "share a session", - onSelect: () => command.trigger("session.share"), - }, { display: "/unshare", disabled: !s.share, @@ -250,7 +244,16 @@ export function Autocomplete(props: { onSelect: () => command.trigger("session.timeline"), }, ) + if (sync.data.config.share !== "disabled") { + results.push({ + display: "/share", + disabled: !!s.share?.url, + description: "share a session", + onSelect: () => command.trigger("session.share"), + }) + } } + results.push( { display: "/new", 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 746015c8..7b25da39 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -217,29 +217,33 @@ export function Session() { dialog.clear() }, }, - { - title: "Share session", - value: "session.share", - keybind: "session_share", - disabled: !!session()?.share?.url, - category: "Session", - onSelect: async (dialog) => { - await sdk.client.session - .share({ - path: { - id: route.sessionID, + ...(sync.data.config.share !== "disabled" + ? [ + { + title: "Share session", + value: "session.share", + keybind: "session_share" as const, + disabled: !!session()?.share?.url, + category: "Session", + onSelect: async (dialog: any) => { + await sdk.client.session + .share({ + path: { + id: 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" })) + .catch(() => toast.show({ message: "Failed to share session", variant: "error" })) + dialog.clear() }, - }) - .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" })) - .catch(() => toast.show({ message: "Failed to share session", variant: "error" })) - dialog.clear() - }, - }, + }, + ] + : []), { title: "Unshare session", value: "session.unshare",