Skip to content

Timeline

Timeline is Herald’s primary reading view. It shows chronological mail rows, thread grouping, search results, split or full-screen previews, quick replies, attachment saving, text selection, and actions that operate on the current message.

Press 1 to open Timeline. Use it when you want to scan mail, switch folders, search across cached content, read a message, reply or forward, save attachments, star important threads, unsubscribe, or copy message text.

AreaWhat it shows
Folder sidebarFolder tree, unread counts, total counts, expandable parents, and virtual All Mail only when available.
Timeline tableOne row per visible thread or email. Columns are Sender, Subject, Date, Size KB, Att, and Tag.
Sender cellSender name plus unread indicator, star indicator, thread count, and child-row prefix for expanded threads.
Subject cellSubject for the newest thread message or the individual email row.
Date and sizeMessage date and approximate message size in KB.
Att columnAttachment indicator when Herald detected attachments.
Tag columnAI classification/category when present.
Preview panelMessage header, body text, tags, unsubscribe/hide actions, attachments, inline image notes, loading/error state, and scroll position.
Full-screen previewSame message content expanded across the terminal, with more room for body text and image descriptions.
Search input/resultsSearch prompt, search mode, result count, and focused result rows.
Quick reply pickerA small choice list of canned and optional AI-generated replies.
KeyContextPreconditionsResult
enterTimeline rowA row is selected.Opens the email preview. If the row is a collapsed thread, expands the thread first.
enterSearch resultsSearch result focus is active.Opens the selected result. If preview focus is active, returns focus to results.
j / downTimeline listTimeline list is focused.Moves down and updates preview if one is open.
k / upTimeline listTimeline list is focused.Moves up and updates preview if one is open.
j / downPreview/full-screenPreview or full-screen is focused.Scrolls body down, or extends visual selection.
k / upPreview/full-screenPreview or full-screen is focused.Scrolls body up, or shrinks visual selection.
/TimelineNot loading and search is closed.Opens Timeline search.
ctrl+i / tabSearch inputSearch query is non-empty.Runs server IMAP search instead of local search.
escSearch/preview statesSearch, preview, full-screen, quick reply, visual mode, or chat filter is active.Unwinds the active state in the safest order.
*Timeline rowNot read-only.Toggles star on the current row email.
RTimeline rowNot loading and not read-only.Opens Compose as a reply to the selected email.
FTimeline rowNot read-only.Opens Compose as a forward of the selected email.
DTimeline or selected messageNot read-only.Starts delete confirmation for the current or selected target.
eTimeline or selected messageNot read-only.Starts archive confirmation for the current or selected target.
ATimeline rowAI configured.Re-classifies the current email.
ctrl+qTimeline rowA current email exists.Opens or closes the quick reply picker.
zPreviewA selected email is open.Toggles full-screen reading.
sPreviewPreview has attachments.Opens attachment save prompt with a default Downloads path.
[ / ]PreviewMessage has more than one attachment.Selects previous or next attachment.
uPreviewBody has List-Unsubscribe data and tab is not read-only.Opens unsubscribe confirmation.
h / HPreviewA selected email is open and tab is not read-only.Creates a hide-future-mail rule for the sender.
vPreview/full-screenBody wrapped lines are available.Toggles visual text selection.
yPreview/full-screenVisual selection is active.Copies selected lines and exits visual mode.
y then yPreview/full-screenBody wrapped lines are available.Copies the current visible body line.
YPreview/full-screenBody wrapped lines are available.Copies the full wrapped body.
mTimelineAny Timeline state.Toggles mouse-selection mode for terminal copy behavior.
  1. Press 1.
  2. Use j/k to select a row.
  3. Press enter.
  4. Read in the split preview. Press z for full-screen.
  5. Press esc to leave full-screen or close the preview.
  1. Press /.
  2. Type a query. Herald debounces local search while you type.
  3. Use prefixes when needed: /b for body search, /* for cross-folder search, or ? for semantic search.
  4. Press enter to run or focus existing results.
  5. Press ctrl+i or tab from the search input to run server IMAP search.
  6. Press esc once to leave results or twice to clear search.
  1. Select an email row.
  2. Press R to reply or F to forward.
  3. Herald switches to Compose and prefills To/Subject/body context.
  4. Finish the draft and send with ctrl+s.
  1. Select or open an email.
  2. Press ctrl+q.
  3. Move with j/k or press number 1 through 8.
  4. Press enter to open the selected reply in Compose.
  5. Press esc to cancel.
  1. Open an email with attachments.
  2. Use [ and ] to choose the attachment when there are several.
  3. Press s.
  4. Edit the destination path if needed.
  5. Press enter to save or esc to cancel.
StateWhat happens
LoadingExisting cached rows remain visible when possible; new IMAP work is reflected in the top sync strip and status bar.
Empty folderTimeline shows an empty row area and key hints still expose refresh, sidebar, chat, and tabs when available.
Preview loadingHeader/preview area opens while Herald fetches and MIME-parses body text and attachments.
Preview errorThe preview reports a body fetch or parse failure without crashing the tab.
Read-only diagnosticAll Mail only disables destructive actions, server/body/cross/semantic search, and mailbox mutations.
AI unavailableTags may be absent; semantic search, AI replies, and re-classification show concise unavailable messages.
Attachment promptThe save-path input captures keys until enter or esc.
Unsubscribe confirmationStatus asks for y confirm or n/Esc cancel before running the unsubscribe method.
Narrow terminalSidebar and chat may hide; preview and table widths shrink. Below the minimum size, the global size guard appears.

Timeline reads message metadata from SQLite and IMAP-backed cache. Opening a message fetches the full message body by UID, parses text/plain content, inline images, attachments, and unsubscribe headers, and can cache body text for later use. Marking read, starring, deleting, archiving, unsubscribing, hiding future mail, and attachment saving write to IMAP, SQLite, local files, or rules depending on the action.

AI actions such as semantic search, classification, image descriptions, and quick replies send selected query or message context to the configured AI backend. Ollama is local by default; external providers receive the context required for the requested action.

If search appears stuck, press esc to return from results to input, then press esc again to clear the search state.

If delete/archive/star does nothing, check whether you are in All Mail only read-only diagnostic mode.

If attachments do not save, verify the destination path is writable. The default path expands to ~/Downloads/<filename>.

If quick replies only show canned choices, the AI backend is unavailable or still generating; the canned replies remain usable.