Skip to content

Compose

Compose is Herald’s writing screen. It supports normal message composition, replies, forwards, CC/BCC, Markdown preview, file attachments, address autocomplete, draft auto-save, AI rewrite assistance, AI subject suggestions, and send error recovery.

Press c from Timeline to open a blank Compose screen. Compose sends through the configured SMTP server and can also be opened pre-filled by Timeline reply, Timeline forward, draft edit, or quick reply workflows.

AreaWhat it shows
To fieldPrimary recipients. Autocomplete searches contacts once the current token has enough characters.
CC fieldCarbon-copy recipients with the same autocomplete behavior.
BCC fieldBlind-copy recipients with the same autocomplete behavior.
Subject fieldMessage subject and optional AI-generated subject hint.
Body fieldMarkdown-capable message body.
Markdown previewRendered body preview using Glamour when ctrl+p is active.
Attachment linesAttached file paths or filenames after files are added.
Attachment path promptOne-line path input opened by ctrl+a.
Autocomplete dropdownUp to several contact suggestions with selected row and hidden-count note when compressed.
AI assistant panelCustom prompt input, quick rewrite actions, generated response, and accept behavior.
Compose RadarSource-backed Herald Memories nudges for reply drafts when matching high-confidence context exists.
Compose statusValidation errors, send state, AI messages, attachment errors, and draft status.

Compose screen with empty message fields

KeyContextPreconditionsResult
Plain letters and digitsCompose fieldsAny Compose text field is focused.Inserts text, including q and numbers, without switching tabs or quitting.
F1 / F2 / F3 / F4ComposeMain Compose handler active.Switches to Timeline, Contacts, legacy Contacts, or Calendar without inserting text.
tabCompose fieldsNo autocomplete selection is being accepted and no subject hint is pending.Moves focus To -> CC -> BCC -> Subject -> Body -> To.
tabSubject hintAI subject hint is visible.Accepts the suggested subject.
ctrl+sComposeSMTP configured, To not empty, Subject not empty.Sends the message with Markdown-derived HTML/plain text and attachments.
ctrl+pComposeAny draft.Toggles Markdown preview.
ctrl+xCompose$VISUAL or $EDITOR is configured, otherwise Herald falls back to nano.Opens the body/top-note in an external editor and reads the saved buffer back into Compose.
ctrl+aComposeAttachment prompt not already active.Opens file path input for adding an attachment.
enterAttachment promptAttachment prompt active.Adds the expanded path as an attachment.
escAttachment promptAttachment prompt active.Cancels attachment input.
ctrl+kComposeAI backend configured.Focuses the inline AI prompt in the Compose toolbar.
enterAI prompt fieldAI assistant prompt has text.Sends the custom instruction to the AI assistant.
1 to 5AI panelAI panel open and body is not empty.Runs quick actions: improve, shorten, lengthen, formal, or casual.
ctrl+enterAI panelAI response is available.Replaces the body with the AI response and closes the panel.
ctrl+jComposeAI configured and body or reply context exists.Requests an AI subject suggestion.
escComposeSubject hint, AI panel, compose status, or origin screen exists.Clears local transient state first, then returns to the screen that opened Compose.
up / downAutocomplete dropdownSuggestions are visible.Moves the selected suggestion.
enter / tabAutocomplete dropdownSuggestions are visible.Accepts the selected suggestion into the active address field.
escAutocomplete dropdownSuggestions are visible.Dismisses suggestions.
  1. Open Timeline and press c.
  2. Enter at least one To recipient.
  3. Press tab through CC, BCC, Subject, and Body as needed.
  4. Write the body.
  5. Press ctrl+p to inspect Markdown rendering when desired.
  6. Press ctrl+s.
  1. Press ctrl+a.
  2. Type or paste a file path. ~ is expanded.
  3. Press enter.
  4. Confirm the attachment line appears.
  5. Send normally.
  1. Write or focus a Compose draft.
  2. Press ctrl+x.
  3. Edit the temporary Markdown buffer in $VISUAL or $EDITOR.
  4. Save and exit the editor.
  5. Continue composing, previewing, attaching, or sending in Herald.
  1. Type part of a name or email in To, CC, or BCC.
  2. When suggestions appear, use up/down to select.
  3. Press enter or tab to insert the contact.
  4. Continue typing more recipients.
  1. Write body text first.
  2. Press ctrl+t or ctrl+y to choose a translate or style option, or press ctrl+k to focus the inline AI prompt.
  3. Use the toolbar quick actions or type a custom instruction and press enter.
  4. Review the AI response.
  5. Press ctrl+enter to accept it into the body, or esc to close the panel.
  1. Reply to a memory-backed thread from Timeline.
  2. Read the compact Compose Radar nudges.
  3. Open source evidence or insert a bounded phrase only when useful.
  4. Continue writing; Radar does not silently change the draft.
  1. In Timeline, select a message.
  2. Press R to reply or F to forward.
  3. Compose opens with recipient, subject, and body context pre-filled.
  4. Finish the message and press ctrl+s.
StateWhat happens
Empty required fieldsctrl+s reports a send error when To or Subject is empty.
SMTP not configuredSend reports that SMTP is unavailable.
Markdown previewBody is rendered as styled preview rather than the edit textarea.
Attachment inputKey input is captured by the path prompt until enter or esc.
Large attachment warningAttachment add flow can warn when a file is larger than the configured threshold.
Autocomplete compactSuggestions collapse to a single line when vertical space is tight.
AI unavailableThe Compose AI toolbar shows a configuration warning; ctrl+k and ctrl+j report no AI backend configured.
AI loadingThe assistant waits for provider output and then displays a response.
Compose Radar hiddenNo high-confidence memory matched the reply, or the relevant source evidence is missing.
Draft savedCompose auto-saves drafts about every 30 seconds when there is content.
Compose-safe global actionsPlain q, letters, and digits stay in the draft. Use F1-F3 for Timeline/Contacts switching, with Alt+1/2, Alt+L, Alt+C, Alt+F, and Alt+R as secondary global actions while writing.
Return to originesc returns from Compose to the Timeline list, preview, or search state that opened it after local Compose transient state is dismissed.
Send successFields clear, saved draft is deleted, and status reports send success.
Send errorDraft content remains available so you can fix configuration or message fields.

Compose reads contacts for autocomplete and writes drafts through Herald’s backend. Sending uses SMTP credentials from config and sends the full message, recipients, Markdown-derived bodies, and attachments to the SMTP server. AI assistance sends draft text and optional reply context to the configured AI backend. Compose Radar reads local Herald Memories and does not send, write Obsidian notes, or mutate drafts without an explicit action. Attached files are read from local disk when added or sent.

If autocomplete does not appear, keep typing until the current token is long enough and confirm contacts have been imported or learned from mail.

If ctrl+s does not send, read the compose status for missing To, missing Subject, SMTP configuration, or provider errors.

Function-key tab aliases remain available while composing. Other browse shortcuts stay out of Compose text fields, so printable keys and Alt-modified text can be typed safely.

If an AI subject suggestion appears but you do not want it, press esc. If you do want it, press tab.

If a send error occurs after attaching files, verify the file still exists and that your provider accepts the message size.

Compose Markdown preview mode

Compose address autocomplete dropdown

Compose AI assistant panel

Compose attachment path prompt