Phase 3 — Thread Sidebar + Multi-Conversation Support #238

Closed
opened 2026-07-15 11:38:49 +00:00 by Mark · 0 comments
Owner

Phase 3: Thread Sidebar + Multi-Conversation Support

Goal: Add a thread sidebar listing all conversations, allowing the user to create, select, and switch between multiple concurrent chat conversations. Leverages the CONV-001 thread API.

Approach candidates:

  • Sidebar as a left-panel HTML element with thread list, toggle-able on mobile
  • Thread management via existing CONV-001 REST API (POST /threads, GET /threads, GET /threads/{id}/history)
  • Active thread state tracked in JS, loaded on thread switch
  • Thread titles auto-generated from first user message

Outputs:

  • runtime/static/css/sidebar.css — sidebar styles (responsive)
  • runtime/static/js/sidebar.js — sidebar component: thread list, create, switch, delete
  • Update runtime/static/index.html — integrate sidebar layout
  • Update runtime/static/js/chat.js — thread-aware message routing
  • runtime/static/js/thread_api.js — REST API client for thread CRUD
  • Tests in tests/integration/test_thread_sidebar.py

Acceptance criteria:

  • Sidebar lists all user conversations with title + last message preview
  • Clicking a thread in the sidebar loads its full conversation history
  • "New conversation" button creates a new thread and switches to it
  • Active thread is visually highlighted in sidebar
  • Messages are scoped to the active thread (sending in thread A stays in thread A)
  • Sidebar collapses on mobile (hamburger or swipe gesture)
  • Thread deletion with confirmation prompt
  • Thread title defaults to first user message (truncated to ~50 chars)

Files touched: runtime/static/index.html (amend), runtime/static/css/sidebar.css (create), runtime/static/js/sidebar.js (create), runtime/static/js/thread_api.js (create), runtime/static/js/chat.js (amend — thread context), tests/integration/test_thread_sidebar.py (create)



Decomposed from mesh-seed#133

## Phase 3: Thread Sidebar + Multi-Conversation Support **Goal:** Add a thread sidebar listing all conversations, allowing the user to create, select, and switch between multiple concurrent chat conversations. Leverages the CONV-001 thread API. **Approach candidates:** - Sidebar as a left-panel HTML element with thread list, toggle-able on mobile - Thread management via existing CONV-001 REST API (POST /threads, GET /threads, GET /threads/{id}/history) - Active thread state tracked in JS, loaded on thread switch - Thread titles auto-generated from first user message **Outputs:** - `runtime/static/css/sidebar.css` — sidebar styles (responsive) - `runtime/static/js/sidebar.js` — sidebar component: thread list, create, switch, delete - Update `runtime/static/index.html` — integrate sidebar layout - Update `runtime/static/js/chat.js` — thread-aware message routing - `runtime/static/js/thread_api.js` — REST API client for thread CRUD - Tests in `tests/integration/test_thread_sidebar.py` **Acceptance criteria:** - [ ] Sidebar lists all user conversations with title + last message preview - [ ] Clicking a thread in the sidebar loads its full conversation history - [ ] "New conversation" button creates a new thread and switches to it - [ ] Active thread is visually highlighted in sidebar - [ ] Messages are scoped to the active thread (sending in thread A stays in thread A) - [ ] Sidebar collapses on mobile (hamburger or swipe gesture) - [ ] Thread deletion with confirmation prompt - [ ] Thread title defaults to first user message (truncated to ~50 chars) **Files touched:** `runtime/static/index.html` (amend), `runtime/static/css/sidebar.css` (create), `runtime/static/js/sidebar.js` (create), `runtime/static/js/thread_api.js` (create), `runtime/static/js/chat.js` (amend — thread context), `tests/integration/test_thread_sidebar.py` (create) --- --- _Decomposed from [mesh-seed#133](https://forgejo.tail018ac4.ts.net/Mark/mesh-seed/issues/133)_
Mark changed title from Decompose: CONV-003: Web Chat Interface — Phase 3: Thread Sidebar + Multi-Conversation Support to Phase 3 — Thread Sidebar + Multi-Conversation Support 2026-07-15 11:39:37 +00:00
Mark 2026-08-12 09:13:48 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/mesh-seed#238
No description provided.