diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index c57711b4c7c..23456c75ecb 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -277,8 +277,8 @@ export const RunCommand = cmd({ } return { error } }) - if (!shareResult.error) { - UI.println(UI.Style.TEXT_INFO_BOLD + "~ https://opencode.ai/s/" + sessionID.slice(-8)) + if (!shareResult.error && "data" in shareResult && shareResult.data?.share?.url) { + UI.println(UI.Style.TEXT_INFO_BOLD + "~ " + shareResult.data.share.url) } } @@ -330,8 +330,8 @@ export const RunCommand = cmd({ } return { error } }) - if (!shareResult.error) { - UI.println(UI.Style.TEXT_INFO_BOLD + "~ https://opencode.ai/s/" + sessionID.slice(-8)) + if (!shareResult.error && "data" in shareResult && shareResult.data?.share?.url) { + UI.println(UI.Style.TEXT_INFO_BOLD + "~ " + shareResult.data.share.url) } } 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 1c1e4b65ec1..48f7db05426 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -323,10 +323,13 @@ export function Session() { keybind: "session_unshare", disabled: !session()?.share?.url, category: "Session", - onSelect: (dialog) => { - sdk.client.session.unshare({ - sessionID: route.sessionID, - }) + onSelect: async (dialog) => { + await sdk.client.session + .unshare({ + sessionID: route.sessionID, + }) + .then(() => toast.show({ message: "Session unshared successfully", variant: "success" })) + .catch(() => toast.show({ message: "Failed to unshare session", variant: "error" })) dialog.clear() }, }, diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index bf313528451..b1a19390417 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -234,22 +234,12 @@ export namespace Session { }) export const unshare = fn(Identifier.schema("session"), async (id) => { - const cfg = await Config.get() - if (cfg.enterprise?.url) { - const { ShareNext } = await import("@/share/share-next") - await ShareNext.remove(id) - await update(id, (draft) => { - draft.share = undefined - }) - } - const share = await getShare(id) - if (!share) return - await Storage.remove(["share", id]) + // Use ShareNext to remove the share (same as share function uses ShareNext to create) + const { ShareNext } = await import("@/share/share-next") + await ShareNext.remove(id) await update(id, (draft) => { draft.share = undefined }) - const { Share } = await import("../share/share") - await Share.remove(id, share.secret) }) export async function update(id: string, editor: (session: Info) => void) { diff --git a/packages/opencode/src/share/share-next.ts b/packages/opencode/src/share/share-next.ts index fea9c3bb9e7..37ecdf7ea30 100644 --- a/packages/opencode/src/share/share-next.ts +++ b/packages/opencode/src/share/share-next.ts @@ -157,7 +157,7 @@ export namespace ShareNext { secret: share.secret, }), }) - await Storage.remove(["session_share", share.id]) + await Storage.remove(["session_share", sessionID]) } async function fullSync(sessionID: string) {