From 6f7c00137620731323c3dc81c624135768d0c5e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Sun, 15 Mar 2026 20:06:27 +0100 Subject: [PATCH] feat: persist chat session across page reloads Session ID saved to localStorage (schaeffler-chat-session). On mount, restores the last session and loads messages from DB. "New Chat" clears the stored session. Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/components/chat/ChatPanel.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/chat/ChatPanel.tsx b/frontend/src/components/chat/ChatPanel.tsx index 0889e10..5089264 100644 --- a/frontend/src/components/chat/ChatPanel.tsx +++ b/frontend/src/components/chat/ChatPanel.tsx @@ -20,9 +20,20 @@ interface ChatPanelProps { export default function ChatPanel({ open, onClose, contextType, contextId }: ChatPanelProps) { const [messages, setMessages] = useState([]) - const [sessionId, setSessionId] = useState() + const [sessionId, setSessionId] = useState(() => { + // Restore last session from localStorage + try { return localStorage.getItem('schaeffler-chat-session') || undefined } catch { return undefined } + }) const [input, setInput] = useState('') const [showSessions, setShowSessions] = useState(false) + + // Persist sessionId to localStorage + useEffect(() => { + try { + if (sessionId) localStorage.setItem('schaeffler-chat-session', sessionId) + else localStorage.removeItem('schaeffler-chat-session') + } catch { /* ignore */ } + }, [sessionId]) const messagesEndRef = useRef(null) const inputRef = useRef(null) const queryClient = useQueryClient()