Skip to content

Add conversation history persistence with localStorage #8

Description

@Lucasmind

Priority: MEDIUM

Problem

Conversation history is lost on page refresh. ConversationManager.trim() manages VRAM by dropping old messages, but there's no way to save or restore history across sessions.

Suggested Fix

Add optional localStorage persistence in ConversationManager.js:

const STORAGE_KEY = 'nodeava_conversation';

save() {
  try {
    localStorage.setItem(STORAGE_KEY, JSON.stringify(this.messages));
  } catch (e) {
    console.warn('Failed to save conversation:', e);
  }
}

restore() {
  try {
    const saved = localStorage.getItem(STORAGE_KEY);
    if (saved) this.messages = JSON.parse(saved);
  } catch (e) {
    console.warn('Failed to restore conversation:', e);
  }
}

clear() {
  this.messages = [];
  localStorage.removeItem(STORAGE_KEY);
}

Also add a "Clear conversation" button in the UI (ControlPanel.js).

Considerations

  • Respect trim() limits when restoring (don't restore more than max messages)
  • Add a config toggle (persistConversation: true/false)
  • System prompt should NOT be persisted (it's in config)

Files Affected

  • frontend/src/llm/ConversationManager.js
  • frontend/src/ui/components/ControlPanel.js
  • frontend/src/app/config.js

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions