- SearchModal queries GET /messages/search and jumps to the matching
session; opened from the sidebar button or Ctrl+K
- session items in the sidebar gain a hover export button that
downloads the markdown export via an authenticated fetch + blob
(plain links cannot send the JWT)
- Sidebar lists sessions with title/relative time, click to switch,
hover-to-delete; refreshes after each round so new titles appear
- ChatPage loads message history from GET /sessions/:id/messages when
entering a session
- WS connect now passes user_id so persisted messages have an owner