diff --git a/chatv2.js b/chatv2.js index 61622ea..1757122 100644 --- a/chatv2.js +++ b/chatv2.js @@ -29,6 +29,14 @@ let currentStreamController = null let isStreaming = false let chatHistory = JSON.parse(localStorage.getItem('chatHistory')) || [] // Stores conversation history +// Ensure chatHistory is an array of objects with the correct structure +chatHistory = chatHistory.map(message => ({ + role: message.role || 'user', + content: message.content || '', + markdown: message.markdown || false, + messageId: message.messageId || `msg-${ Date.now() }` +})) + // Get current API URL based on selected backend function getApiUrl() { const backend = BACKENDS[currentBackend] @@ -605,27 +613,10 @@ window.onload = () => { // Load chat history from localStorage if (chatHistory.length === 0) { - // Add welcome message (this will be the first entry in chatHistory) - const welcomeMessage = `# Welcome to LM Studio Chat! ? - -I now support **full conversation history**, **real-time streaming responses** and **dark, readable text formatting**. - -## Features: -1. **Full Chat History** - Complete conversation context is now sent to the AI -2. **Smart History Management** - Automatically keeps the last ${ MAX_CHAT_HISTORY } messages -3. **Streaming Mode** (enabled by default) - Watch responses appear word-by-word -4. **Markdown Rendering** - Proper formatting for code, lists, tables, and more -5. **Readable Dark Text** - No more eye strain from light gray text - -## Try it out: -- Ask follow-up questions that reference earlier messages -- Have a multi-turn conversation with full context -- Ask "what did I just ask?" to test history retention -- Watch the streaming response in real-time! - -> *Tip: You can toggle streaming and markdown using the checkboxes below.*` - - addMessage('assistant', welcomeMessage, true) + // Re-add all messages from chatHistory + chatHistory.forEach(message => { + addMessage(message.role, message.content, message.markdown, message.messageId) + }) } else { // Re-add all messages from chatHistory chatHistory.forEach(message => {