Skip to content

Sync and Status

Sync and status messaging explains what Herald is doing in the background. The bottom status bar and optional top sync strip are the best places to understand loading, folder counts, AI tasks, deletion/archive progress, demo mode, dry-run mode, and narrow terminal decisions.

Herald keeps a persistent IMAP connection open while the app runs. It processes new mail into SQLite, updates folder counts, listens for changes when possible, and falls back to polling based on config.

AreaWhat it shows
Loading viewStartup phase, elapsed time, spinner, optional progress counts, progress bar, ETA, and quit hint.
Top sync stripHuman-readable current sync action when cached data is visible during live work.
Folder breadcrumbCurrent folder path using a breadcrumb-style separator.
Folder countsUnread and total count, with an unsettled marker while counts are still loading.
AI chip/progressAI status and classification/embedding progress.
Cleanup modeSender/domain mode and selection counts.
Deletion progressDelete/archive queue progress and reconnect status.
Sync timerlive for active IDLE or countdown seconds for polling.
Demo/dry-run/log flags[DEMO], [DRY RUN], and Logs ON when active.
Sidebar noticeAuto-hidden sidebar explanation at narrow widths.
KeyContextPreconditionsResult
rMain UINot loading.Refreshes current folder and starts sync progress.
l / LMain UIVisible data can be interacted with.Opens log viewer for more detailed runtime messages.
qLoading view or main UIAny state.Quits.
fTimeline/CleanupSidebar supported.Can hide/show sidebar; status reports when width auto-hides it.
SMain UISettings closed.Opens settings where sync interval, IDLE, and cleanup schedule can be changed.
  1. Launch Herald.
  2. Watch the loading banner while no cached data is visible.
  3. Once cached rows appear, use the top sync strip and status bar to track remaining IMAP work.
  4. Continue using cached rows while sync completes.
  1. Open the folder in the sidebar.
  2. Press r.
  3. Watch the top sync strip and bottom status.
  4. Resume normal work after loading clears.
  1. Press l.
  2. Review INFO, WARN, ERROR, and DEBUG lines.
  3. Press l again to close.
StateWhat happens
Opening folderSync strip says Herald is opening the mailbox, possibly waiting on another mail client.
Checking sync stateHerald compares cached state with live mailbox state.
Fetching new mailProgress shows count of new rows being cached.
FinalizingSender stats and folder counts are refreshed.
No new mailStatus reports the current folder is up to date.
IDLE liveStatus shows live sync.
PollingStatus shows countdown seconds until next poll.
Counts unsettledFolder count includes an ellipsis until loading settles.
Connection lost during deleteDelete progress notes reconnecting.
Logs onStatus includes Logs ON.

Sync reads IMAP folder state, message metadata, flags, body structure, and new messages. It writes cached rows, classifications, contacts, and folder status to SQLite/backend storage. Logs are written to local log files only, not to terminal output.

If counts look stale, press r and wait for sync state to settle.

If the app seems idle but expected mail is missing, verify the selected folder in the sidebar and check whether polling or IDLE is configured.

If startup takes a long time, cached data should appear as soon as possible; open logs with l after the main UI appears for details.