Multi-conversation chat with sidebar history
ChatGPT/Claude-style conversation management in the web dashboard.
What's new
- Sidebar conversation list — scrollable list under Chat nav item showing recent conversations with auto-generated titles, click to switch, hover-to-delete (X), and "+ New chat" button
- Persistent chat history — messages survive page refreshes and reconnects, grouped by conversation
- Conversation management — create new chats, switch between past conversations, delete old ones
- Chat header — shows conversation title + message count with "New Chat" button
- Conversations table — new
conversationstable (display-layer, separate from LLM session context) withconversation_idonchat_messages - 5 gateway commands —
conversations(list with msg_count),chat_history(acceptsconversation_idfor switching),delete_conversation, updatedclear(preserves history, resets LLM context only) - StreamingText fix — history-loaded messages no longer show empty boxes; typewriter animation only applies to live responses
Files changed
core/database.py— conversations table + migrationcore/gateway.py— conversation tracking, new commandsweb/src/stores/chat.ts— conversations state + actionsweb/src/components/layout/Sidebar.tsx— conversation list UIweb/src/App.tsx— new response handlers + auto-refreshweb/src/components/chat/ChatPage.tsx— header with titleweb/src/components/chat/StreamingText.tsx— typewriter fixdb/schema.sql,README.md,CHANGELOG.md, docs updated