You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add a right-side conversation contents drawer that indexes user messages and lets users jump directly to earlier points in a long chat without manually scrolling through the full transcript.
User Value
Long conversations are difficult to scan and revisit. User prompts already act as natural section headings: exposing them as a compact contents list makes it much faster to find a topic, compare earlier decisions, or resume work from a specific turn.
Proposed Behavior
Add a compact contents control to the chat interface that opens a right-side drawer or off-canvas panel.
Build the contents list from user messages only, in conversation order. Assistant, system, tool, and transient status messages are not listed.
Derive each entry label from the first meaningful plain-text line of the user message, normalize whitespace, and truncate it to a stable display length. Provide an accessible fallback label for messages without usable text.
Selecting an entry scrolls its source message into view, moves keyboard focus appropriately, and briefly highlights the destination without changing conversation data.
Indicate the entry nearest the current viewport so users retain their location while scrolling.
Rebuild the index when switching conversations and update it when a new user message is committed, messages are loaded, or the active timeline changes.
Use a persistent side drawer on viewports where space allows and an off-canvas experience on smaller screens. The drawer must not cover the composer or conflict with existing sidebars, citation panels, or message actions.
Render labels as text, not HTML, so message content cannot inject markup into the navigation UI.
Acceptance Criteria
The chat interface exposes an accessible control for opening and closing the conversation contents drawer.
The drawer lists each persisted user message in chronological order and does not list assistant, system, tool, or temporary messages.
Each entry has a concise, readable, plain-text label with safe truncation and a fallback for attachment-only, image-only, or otherwise non-text prompts.
Selecting an entry reliably scrolls to the matching message and gives users a visible destination cue.
The active or nearest entry updates as the user moves through the conversation without causing scroll loops or noticeable lag.
Sending a new prompt updates the index, and switching conversations clears all entries and state from the previous conversation.
Long labels and large conversations do not overflow controls, shift the chat layout, or make the drawer unresponsive.
Desktop, tablet, and mobile layouts remain usable; the message composer and existing panels are not obscured.
The drawer supports keyboard operation, sensible focus management, screen-reader labels, and Escape-to-close behavior where applicable.
Client-side rendering uses safe text APIs and never inserts user-authored message content as HTML.
UI tests cover filtering by role, ordering, navigation, active-entry tracking, live updates, conversation switching, long text, non-text prompts, keyboard behavior, and responsive layouts.
Notes
The first implementation should use user messages as the table-of-contents landmarks; grouping, search, generated summaries, and assistant-message entries can be considered separately.
The index can be derived from message data already authorized and loaded by the chat experience; avoid introducing a second source of truth unless message pagination requires a lightweight server-provided index.
Relevant implementation areas include the chat template, static/js/chat/chat-messages.js, chat state/conversation switching modules, and existing local Bootstrap off-canvas patterns.
Summary
Add a right-side conversation contents drawer that indexes user messages and lets users jump directly to earlier points in a long chat without manually scrolling through the full transcript.
User Value
Long conversations are difficult to scan and revisit. User prompts already act as natural section headings: exposing them as a compact contents list makes it much faster to find a topic, compare earlier decisions, or resume work from a specific turn.
Proposed Behavior
Acceptance Criteria
Notes
static/js/chat/chat-messages.js, chat state/conversation switching modules, and existing local Bootstrap off-canvas patterns.