From b6ac7976449ba2c625bf4f0b9d50c5ed719267dc Mon Sep 17 00:00:00 2001 From: Lukas May Date: Wed, 4 Mar 2026 11:39:58 +0100 Subject: [PATCH] feat: Add "New Chat" button to reset chat session in-place Adds startNewSession() to useChatSession hook that closes the current session without closing the panel. New Plus button in chat header appears when a conversation exists, with shift+click to skip confirm. --- apps/web/src/components/chat/ChatSlideOver.tsx | 17 +++++++++++++++-- apps/web/src/hooks/useChatSession.ts | 9 +++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/chat/ChatSlideOver.tsx b/apps/web/src/components/chat/ChatSlideOver.tsx index 5c514b2..ef056a8 100644 --- a/apps/web/src/components/chat/ChatSlideOver.tsx +++ b/apps/web/src/components/chat/ChatSlideOver.tsx @@ -1,6 +1,6 @@ import { useEffect, useRef } from 'react'; import { motion, AnimatePresence } from 'motion/react'; -import { X, Loader2, AlertTriangle, RotateCcw } from 'lucide-react'; +import { X, Plus, Loader2, AlertTriangle, RotateCcw } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { useChatSession } from '@/hooks/useChatSession'; import { ChatBubble } from './ChatBubble'; @@ -42,7 +42,7 @@ function ChatSlideOverInner({ initiativeId: string; onClose: () => void; }) { - const { messages, agentStatus, agentError, sendMessage, retryLastMessage, closeSession, isSending } = + const { session, messages, agentStatus, agentError, sendMessage, retryLastMessage, closeSession, startNewSession, isSending } = useChatSession(target.type, target.id, initiativeId); const scrollRef = useRef(null); @@ -105,6 +105,19 @@ function ChatSlideOverInner({ Processing... )} + {session && messages.length > 0 && ( + + )}