From 1395a7a416913c1e138a66b525e51cbc89edcc6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Flor=C3=AAncio?= Date: Sun, 24 May 2026 10:50:28 +0100 Subject: [PATCH] feat(web): add Share to session tab context menu (#1050) --- apps/web/components/task/session-tab.tsx | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/apps/web/components/task/session-tab.tsx b/apps/web/components/task/session-tab.tsx index 4ca533c583..9b83ad404e 100644 --- a/apps/web/components/task/session-tab.tsx +++ b/apps/web/components/task/session-tab.tsx @@ -29,6 +29,8 @@ import { isSessionDeletable as isDeletable, isSessionResumable as isResumable, } from "@/hooks/domains/session/use-session-actions"; +import { shareableSessionStateClient } from "@/components/task/share/share-button"; +import { ShareDialog } from "@/components/task/share/share-dialog"; import type { TaskSessionState } from "@/lib/types/http"; import { isSessionActive } from "./session-sort"; import { useTabMaximizeOnDoubleClick } from "./use-tab-maximize"; @@ -163,13 +165,17 @@ function DeleteSessionDialog({ function SessionContextMenuItems({ sessionState, isPrimary, + canShare, actions, onDelete, + onShare, }: { sessionState: TaskSessionState | null; isPrimary: boolean; + canShare: boolean; actions: ReturnType; onDelete: () => void; + onShare: () => void; }) { return ( @@ -196,6 +202,14 @@ function SessionContextMenuItems({ Delete )} + {canShare && ( + <> + + + Share + + + )} Close Others @@ -216,7 +230,9 @@ export function SessionTab(props: IDockviewPanelHeaderProps) { const actions = useSessionTabActions(sessionId, taskId, api, containerApi); const onDoubleClick = useTabMaximizeOnDoubleClick(api); const [confirmDelete, setConfirmDelete] = useState(false); + const [shareOpen, setShareOpen] = useState(false); const [isActive, setIsActive] = useState(api.isActive); + const canShare = !!taskId && !!sessionId && shareableSessionStateClient(sessionState); useEffect(() => { const disposable = api.onDidActiveChange((e) => setIsActive(e.isActive)); @@ -264,8 +280,10 @@ export function SessionTab(props: IDockviewPanelHeaderProps) { setConfirmDelete(true)} + onShare={() => setShareOpen(true)} /> + {taskId && sessionId && ( + + )} ); }