Skip to main content

Conversation Search

AI Supreme Council includes a built-in search feature that lets you find messages across all your conversations, not just the current one. Search through your entire chat history to find that important answer or discussion.

There are two ways to open the search panel:

  1. Keyboard shortcut: Press Ctrl+F (or Cmd+F on Mac)
  2. Sidebar button: Click the search icon in the left sidebar

When search opens, the chat area is replaced by a search input and results panel. The message input area is hidden to give the search results full space.

Searching

Type your query in the search input. Results appear as you type with a 250ms debounce delay for performance. The search requires at least 2 characters to begin.

Search checks two things:

  • Bot names -- matches against conversation/bot titles
  • Message content -- matches against all user and assistant messages across every conversation

The search is case-insensitive. Typing "python" will match "Python", "PYTHON", and "python".

How Search Works

Search runs entirely in the browser against your local IndexedDB storage:

  1. The AIS.Chat.searchAll() function enumerates all IndexedDB keys starting with ais-chat-
  2. Each conversation's messages are loaded and scanned for the query string (case-insensitive)
  3. Bot names from AIS.Session.list() are also checked for matches
  4. Results are streamed to the UI progressively as each conversation is scanned -- you see results appear as they are found

Since search runs locally, it works offline and does not send any data to a server.

info

For large chat histories (thousands of messages across many conversations), search may take a moment to complete. Results appear progressively as conversations are scanned, so you can start clicking results before the full scan finishes.

Search Results

Results are grouped by conversation (bot). Each result group is rendered as a collapsible <details> element showing:

  • Bot icon (if set) and bot name with the matching text highlighted using <mark> tags
  • Match count -- e.g., "3 matches" or "title match" (when only the bot name matched)
  • Creation date of the conversation
  • Expandable list of matching messages with context snippets

Message Snippets

Each message snippet shows:

  • The message role (user or assistant) displayed above the text
  • The matching text highlighted with surrounding context -- approximately 40 characters before and 60 characters after the match
  • Ellipsis (...) added when the snippet is truncated from a longer message

For example, searching for "FastAPI" might show:

assistant ...building a REST API with FastAPI and SQLAlchemy. Here is the project structure...

  • Click on a bot name (for title-only matches where no message content matched) to switch to that conversation
  • Click on any message snippet to switch to the conversation containing that message
  • Clicking a result automatically closes the search panel and loads the selected conversation

There are three ways to close the search panel and return to the chat view:

  1. Press Escape while in the search view
  2. Click the search button again in the sidebar (toggles search off)
  3. Click any search result (automatically closes search and navigates)

The chat area is restored to its previous state when you close search. The previous chat content and message input area are both restored.

Performance

Search is designed to handle large histories efficiently:

FactorImplementation
Debounce250ms delay after typing stops before executing search
Minimum query2 characters required to avoid overly broad matches
Progressive renderingResults stream to the UI as conversations are scanned
Case-insensitiveUses toLowerCase() comparison (no regex overhead)
Local onlyNo network requests -- all data is in IndexedDB
tip

Search is case-insensitive. Typing "python" will match "Python", "PYTHON", and "python". Use specific terms to narrow results when you have many conversations.

Limitations

  • Minimum query length: 2 characters required
  • Current browser only: Search covers conversations stored in your current browser. It does not search across devices or synced data.
  • Text only: Image content, generated images, and tool call outputs are not searchable -- only text messages
  • No regex support: Search uses simple string matching, not regular expressions
  • No date filtering: You cannot restrict search to a date range
  • Full scan: Every conversation is scanned on each search -- there is no pre-built index. This is fast for typical usage but may slow down with thousands of conversations.