diff --git a/apps/web/src/components/ChatView.tsx b/apps/web/src/components/ChatView.tsx index 7b59530c955..6596edc9fef 100644 --- a/apps/web/src/components/ChatView.tsx +++ b/apps/web/src/components/ChatView.tsx @@ -3152,6 +3152,13 @@ function ChatViewContent(props: ChatViewProps) { if (!activeThreadRef) return; useRightPanelStore.getState().open(activeThreadRef, "agents"); }, [activeThreadRef]); + const addPlanSurface = useCallback(() => { + if (!activeThreadRef) return; + if (activeThreadKey) { + clearPlanSidebarDismissal(activeThreadKey); + } + useRightPanelStore.getState().open(activeThreadRef, "plan"); + }, [activeThreadKey, activeThreadRef]); const openFileSurface = useCallback( (relativePath: string) => { if (!activeThreadRef || !activeProject) return; @@ -6316,6 +6323,7 @@ function ChatViewContent(props: ChatViewProps) { onAddDiff={addDiffSurface} onAddFiles={addFilesSurface} onAddAgents={addAgentsSurface} + onAddPlan={addPlanSurface} browserAvailable={isPreviewSupportedInRuntime()} diffAvailable={isServerThread && isGitRepo} filesAvailable={activeProject !== null} @@ -6344,6 +6352,7 @@ function ChatViewContent(props: ChatViewProps) { onAddDiff={addDiffSurface} onAddFiles={addFilesSurface} onAddAgents={addAgentsSurface} + onAddPlan={addPlanSurface} browserAvailable={isPreviewSupportedInRuntime()} diffAvailable={isServerThread && isGitRepo} filesAvailable={activeProject !== null} diff --git a/apps/web/src/components/RightPanelTabs.tsx b/apps/web/src/components/RightPanelTabs.tsx index b0f18f6e126..834e06379ec 100644 --- a/apps/web/src/components/RightPanelTabs.tsx +++ b/apps/web/src/components/RightPanelTabs.tsx @@ -45,6 +45,7 @@ interface RightPanelTabsProps { onAddDiff: () => void; onAddFiles: () => void; onAddAgents: () => void; + onAddPlan: () => void; browserAvailable: boolean; diffAvailable: boolean; filesAvailable: boolean; @@ -93,6 +94,7 @@ function RightPanelEmptyState(props: { onAddDiff: () => void; onAddFiles: () => void; onAddAgents: () => void; + onAddPlan: () => void; browserAvailable: boolean; diffAvailable: boolean; filesAvailable: boolean; @@ -138,6 +140,14 @@ function RightPanelEmptyState(props: { disabledReason: null, onClick: props.onAddAgents, }, + { + label: "Plan", + description: "View plan steps and tasks.", + icon: ClipboardList, + available: true, + disabledReason: null, + onClick: props.onAddPlan, + }, ] as const; return ( @@ -484,6 +494,10 @@ export function RightPanelTabs(props: RightPanelTabsProps) { Agents + + + Plan + ) : null} @@ -499,6 +513,7 @@ export function RightPanelTabs(props: RightPanelTabsProps) { onAddDiff={props.onAddDiff} onAddFiles={props.onAddFiles} onAddAgents={props.onAddAgents} + onAddPlan={props.onAddPlan} browserAvailable={props.browserAvailable} diffAvailable={props.diffAvailable} filesAvailable={props.filesAvailable}