const chatContainer = document.getElementById("chat-container"); const messageInput = document.getElementById("message-input"); const sendBtn = document.getElementById("send-btn"); const welcomeEl = document.getElementById("welcome"); const statsEl = document.getElementById("stats"); let sessionId = localStorage.getItem("erowid_session") || ""; let isStreaming = false; // Load stats async function loadStats() { try { const resp = await fetch("/stats"); const data = await resp.json(); statsEl.textContent = `${data.experiences} reports | ${data.substances} substances | ${data.chunks} chunks`; } catch { statsEl.textContent = "connecting..."; } } loadStats(); // Auto-resize textarea messageInput.addEventListener("input", () => { messageInput.style.height = "auto"; messageInput.style.height = Math.min(messageInput.scrollHeight, 120) + "px"; }); // Send on Enter (Shift+Enter for newline) messageInput.addEventListener("keydown", (e) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); sendMessage(); } }); sendBtn.addEventListener("click", sendMessage); // Suggestion clicks document.querySelectorAll(".suggestion").forEach((el) => { el.addEventListener("click", () => { messageInput.value = el.textContent; sendMessage(); }); }); function addMessage(role, content) { if (welcomeEl) welcomeEl.style.display = "none"; const msg = document.createElement("div"); msg.className = `message ${role}`; const avatar = document.createElement("div"); avatar.className = "message-avatar"; avatar.textContent = role === "user" ? "You" : "E"; const contentEl = document.createElement("div"); contentEl.className = "message-content"; contentEl.textContent = content; msg.appendChild(avatar); msg.appendChild(contentEl); chatContainer.appendChild(msg); chatContainer.scrollTop = chatContainer.scrollHeight; return contentEl; } function addTypingIndicator() { const msg = document.createElement("div"); msg.className = "message assistant"; msg.id = "typing-indicator"; const avatar = document.createElement("div"); avatar.className = "message-avatar"; avatar.textContent = "E"; const contentEl = document.createElement("div"); contentEl.className = "message-content"; contentEl.innerHTML = '