Skip to content

Search

Search in Herald is split between Timeline mail search and Contacts search. Timeline search supports local subject/sender search, cached body search, cross-folder search, semantic search, server IMAP search, and a clear unwind path with esc.

Use / on Timeline for mail search and / or ? on Contacts for contact search. Timeline search is optimized for fast local feedback while typing, with explicit prefixes for body, cross-folder, and semantic modes.

AreaWhat it shows
Timeline search inputQuery text, active prefix, and focus state.
Timeline search resultsMatching email rows in the Timeline table.
Timeline status prefixSearch mode label and result/filter state.
Search focusInput focus while typing; result focus after enter or after automatic focus.
Server search stateIMAP search results after ctrl+i/tab from the Timeline search input.
Contacts keyword searchSlash prompt and filtered contact list.
Contacts semantic searchQuestion-mark prompt and semantic contact results.
Key or prefixContextPreconditionsResult
/TimelineSearch closed and not loading.Opens Timeline search input.
Plain queryTimeline searchSearch input focused.Runs debounced local search over visible/cached metadata and available semantic support.
/b Timeline search prefixBody search supported for cached bodies.Searches cached body text through the local body/FTS path.
/*Timeline search prefixCross-folder search is allowed for current mode.Searches across cached folders instead of only the current folder.
?Timeline query prefixAI/embeddings available.Runs semantic search.
enterTimeline search inputQuery is non-empty.Runs search or moves focus to existing results for the same query.
ctrl+i / tabTimeline search inputQuery is non-empty.Runs server IMAP search.
escTimeline search resultsSearch results focused.Returns focus to search input or closes preview first if preview is active.
escTimeline search inputSearch input focused.Clears Timeline search and restores the original Timeline rows.
/ContactsSearch mode closed.Opens keyword contact search.
?ContactsSearch mode closed.Opens semantic contact search.
enterContacts searchSearch mode active.Confirms current filtered results.
escContacts searchSearch mode active.Clears search and restores all contacts.
  1. Press 1.
  2. Press /.
  3. Type a sender, subject word, or phrase.
  4. Wait for local results or press enter.
  5. Move through results with j/k.
  6. Press enter to open a result.
  1. Open Timeline search with /.
  2. Type /b followed by body text.
  3. Press enter.
  4. Open matching rows normally.

Body search depends on body text having been cached. Open important messages at least once if you need their bodies available to local search and MCP tools.

  1. Open Timeline search with /.
  2. Type the query.
  3. Press ctrl+i or tab.
  4. Wait for IMAP search results.

Server search asks the provider instead of relying only on local cache. Availability depends on the folder and provider.

  1. Open Timeline search with /.
  2. Begin the query with ?.
  3. Describe the concept, not just exact words.
  4. Press enter.

Semantic search uses embeddings and AI availability. If semantic features are unavailable, use plain or body search.

  1. Press 4.
  2. Press / for keyword search or ? for semantic search.
  3. Type the query.
  4. Press enter to keep results or esc to clear.
StateWhat happens
Debounced local searchHerald schedules search shortly after typing so the UI remains responsive.
Result focusTimeline row navigation applies to the search result set.
Preview within resultsenter opens a result preview; esc closes preview before clearing search.
Search unwindesc closes preview, then moves results focus back to input, then clears search.
Read-only diagnosticAll Mail only disables body, cross-folder, semantic, and server search paths that would not be reliable.
Body not cachedBody search misses messages whose bodies have not been fetched into cache.
AI unavailableSemantic search falls back to non-semantic behavior or reports unavailable state.
Contacts emptyContact search has no rows until contacts have been imported or learned from synced mail.

Local search reads the SQLite cache. Body search reads cached body text. Server search sends the query to the configured IMAP server. Semantic search sends query text and candidate context to the configured AI/embedding backend. Contacts search reads local contact data and, for semantic contact search, local or provider-backed embeddings depending on AI configuration.

If expected body results are missing, open the message once in Timeline so Herald fetches and caches the body, then search again.

If semantic search returns poor results, verify the embedding model is configured and that embedding processing has completed.

If server search returns less than local search, the provider may search only selected fields or the current folder.

If you feel trapped in search, press esc repeatedly until the original Timeline returns.