Skip to content

Releases: allisonhere/tidemail

TideMail v1.6.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 20:08

TideMail v1.6.0

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Added

  • Message templates: F6 in compose opens a picker with built-in templates and
    your own files from the templates folder; e edits one, n saves the body
    as a new one, tidemail templates list and tidemail send --template NAME.
  • A spell-check language setting (English, Spanish).
  • Plugin reports can be copied (c), saved (s) or printed (p).
  • An optional native password dialog (Alt+P) on the account form, through
    zenity or kdialog, with the terminal field as the fallback.
  • A man page: man tidemail, or tidemail man.
  • Ctrl+O shows a message's complete source, fetched from the server without
    marking it read; c copies it to the clipboard. Also in the command palette
    as "View message source". Thanks @jaytaph

Fixed

  • Inline images no longer sometimes print their raw data as text under the screen
    the first time they load: image uploads and screen redraws are now written to
    the terminal one at a time.

Changed

  • Forwards keep attachments, and replies and forwards quote the readable text
    of HTML mail.
  • Sending PGP mail with a missing recipient key now says which address and how
    to fix it, and the guide, help and man page list the setup steps.
  • Waiting on Them on a new install only counts mail you send after TideMail was
    first set up, so the first sync of old Sent mail doesn't fill the view.
    Existing installs keep their current waits.
  • The compose footer shows f6 templates in every field, not only the body.

TideMail v1.5.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 03:13

TideMail v1.5.0

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Fixed

  • Changing or clearing an address after server discovery now clears its inferred
    settings, so another address can be looked up in the same account form.
  • Attachment headings and rows now paint the reading pane background, including
    on signed and encrypted messages.
  • The account form's Signature box no longer shows the terminal's own background through
    the field, whether empty, typed in, or focused; its cursor now uses the accent colour like
    the other rows.
  • The grammar check preview no longer runs off the bottom of the screen on a long email: it fits the
    terminal, keeps the accept/cancel hints in view, and scrolls with the arrow keys, PgUp/PgDn,
    and Home/End.

Added

  • Adding a Custom account can now look up its servers from the email address. The
    address is now the first row of the account form (Email, or Email / login on
    Custom) and new and edited accounts start there. Leaving it with an address (or pressing
    Ctrl+L) looks the domain up: RFC 6186 SRV records first, then MX records that show the
    domain is hosted by Google, Microsoft 365, iCloud or Yahoo (which switch the form to that
    provider), then the Mozilla autoconfig file the domain itself publishes over HTTPS, as
    cPanel hosts do. Only the user's own domain is asked; Thunderbird's shared database is
    not. Results only pre-fill the form; nothing connects or saves until you test or save.

  • Plugins now receive the sender-check results the mail server recorded (SPF, DKIM and DMARC as
    pass/fail values, plus the server's spam flag) as an auth field in the message metadata, never the
    headers themselves. A new suspicious tag category (a warning color) is available to plugins.

  • Browse and install plugins from inside TideMail. In Settings → Plugins (or the
    command palette's Browse available plugins…), press b to see the official plugins from
    the plugins repository; i installs, u updates, x removes. TideMail asks first and lists
    the plugin's permissions, downloads only from GitHub over HTTPS, checks the release's
    SHA-256, unpacks plain files only, and never runs the plugin while installing. The plugin
    list updates without a restart. The list is fetched only when you open it.

  • PGP through a plugin. Plugins can now be granted two new permissions,
    message_raw (decrypt and verify mail you open) and message_compose (sign and
    encrypt mail you send), with matching message.decode and message.prepare
    methods in Plugin API v1. Press D on a PGP message to decrypt and verify it;
    the result is shown in the reading pane and kept in memory only. In compose,
    Alt+S signs and Alt+E encrypts (PGP/MIME; F8/F9 also work where the terminal passes them on); the plugin runs before the message is
    queued, so the Outbox and the Sent copy hold the protected message, and any
    failure (no key for a recipient, cancelled passphrase) sends nothing. The
    pgp plugin in the plugins repository uses your own
    GnuPG keyring. Plugins also inherit GNUPGHOME, DISPLAY, WAYLAND_DISPLAY
    and XDG_RUNTIME_DIR now. An encrypted message says so in the reading pane (instead of
    "No message body.") and the key hints offer D decrypt while it is selected. The subject and
    headers of encrypted mail are not encrypted, tidemail send does not sign or encrypt, and attachments inside
    encrypted mail are not shown yet.

  • Settings → Editor → Spell check in compose (off by default): misspelled words are underlined
    in the message body as you type, and F7 steps through them with suggestions, skip, ignore, and
    add-to-dictionary. It is English-only, works offline with no AI provider, and never checks quoted
    or forwarded text. Your added words are saved in TideMail's database. The word you are typing is
    not underlined until you move on, names and domains of people you correspond with are accepted,
    and suggestions rank swapped letters, doubled letters, sound-alikes and everyday words first.
    Settings → Editor → Personal dictionary lists the words you added and lets you add or remove them.

  • Experimental Windows builds (x86_64 and ARM64) are now attached to each release as zip files.
    In-app updates and keychain storage are not available on Windows yet; passwords are stored in
    the config file.

TideMail v1.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 23:35

TideMail v1.4.0

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Added

  • Settings → Display: an opt-in Mouse support toggle (off by default) adds click-to-select
    for sidebar rows, message rows, and panes, and click-to-open for links in the reading pane, plus
    scroll-wheel scrolling over each pane, double-click to open a message (like Enter), right-click
    to select a row and open a context menu of just that row's actions (folder, account, or message),
    and click-the-search-row to resume editing a search.
    Leaving it off keeps the terminal's native click-drag text selection available, as before.
  • An account's color now also tints its own messages in the Unified Inbox, Needs You, Waiting on
    Them, and Snoozed views, so accounts stay visually distinct even when a single mailbox pane
    (and its usual header/border accent) isn't selected.
  • Settings → Changelog: read TideMail's release notes inside the app. The notes are bundled with
    the build, so they work offline and always match the installed version.
  • Settings → About is now an animated "Ocean night" scene (twinkling stars, a crescent moon, a
    self-drawing TIDEMAIL wordmark, and rolling waves), and Settings → Support is an animated
    "Café" scene with the same Ko-fi Open/Copy link buttons. Plain (VT52) themes keep the original
    static pages.

Security

  • Updated golang.org/x/net to v0.55.0 and goldmark to v1.7.17, fixing known vulnerabilities in
    HTML parsing (used when finding unsubscribe links) and Markdown autolink rendering (used when
    composing).

TideMail v1.3.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:55

TideMail v1.3.1

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Added

  • CLI for shell scripts and AI agents: tidemail messages, draft, send, and outbox
    share the client's configured accounts and durable queue. Cached inbox list/search/read,
    account and outbox metadata, Markdown and attachment support, and JSON output throughout.
    tidemail cli opens a guided command menu, and tidemail send without --yes walks through
    a step-by-step composer with an attachment browser, review, and undo. install-skill packages
    a portable agent skill for Codex, Claude, Pi, and Hermes; capabilities and an
    invocation-approval step separate reading, drafting, and sending. See the
    CLI reference.
  • Settings → CLI: switches for quitting after a send or draft, skipping the review step
    (drafts, or sends with an undo countdown), and a default for the wizard's signature choice.
    Scripted, JSON, and agent runs ignore all three.
  • Up/Down step through compose's From, To, Cc, Bcc, and Subject fields like
    Tab/Shift+Tab, without wrapping from the top row into the body. The recipient suggestion
    dropdown and the body editor keep their own Up/Down handling.

Fixed

  • outbox process now marks queued entries whose account is no longer configured as failed
    instead of reporting them on every run. Unknown messages/accounts/outbox subcommands
    name the supported ones and point to messages search.
  • Gmail's standard folders (Sent Mail, Drafts, and others) stay visible under their unselectable
    server containers instead of disappearing from the sidebar.

TideMail v1.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 18:54

TideMail v1.3.0

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Fixed

  • The update checker's state (last check time, dismissed version) is kept in the database instead of
    config.toml, so a config file kept in a dotfiles repo no longer changes on every update check.
    Values from an older config are carried over once.

TideMail v1.2.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 02:14

TideMail v1.2.0

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Added

  • Folders are now a tree in the sidebar: nested folders (Work/Projects) collapse and expand
    (Enter, Space, ←/→), the choice is remembered, and a collapsed folder shows the unread
    count of everything inside it.
  • Manage folders from the sidebar: n creates a folder or subfolder, r renames (subfolders come
    along), d deletes after a confirmation that names the subfolders that go with it. The Inbox and
    system folders are protected. H hides a folder from TideMail's sidebar only, "Show hidden
    folders" in the command palette lists them again, and Shift+K / Shift+J walk a folder up or down the
    tree: reorder siblings, move it into an open folder, or out of its parent. > nests it under the
    folder above even when that folder is empty, and < moves it back out.
    All are also in the command palette. A second folder rename, move or delete is refused until the
    first finishes, so a fast repeat keypress can't fail with "Unknown source folder". Deleting a folder that contains a
    system folder is refused, a rename or move whose subfolders would clash with existing folders is
    refused before it reaches the server, and hiding hidden folders clears the list of a folder that
    just disappeared.
  • Reply all (Ctrl+R, or "Reply all" in the command palette): To is the sender or Reply-To,
    Cc is the other recipients minus your own addresses. Replies now also carry the full
    References chain.

Fixed

  • Renaming or moving a folder whose name has non-ASCII characters (Café) now carries its
    subfolders and their hide/order settings along. Settings follow the account's own folder
    delimiter, a stale setting left at the new name can no longer abort the rename, and settings of
    folders removed on the server are cleaned up.
  • Creating a folder is held back while a folder rename, move or delete is still running.
  • A timer tick that was already pending no longer fetches a manual-only account.
  • A folder rename remains visible if saving its new order fails afterward. TideMail reports the
    order error without reverting the completed rename in the sidebar.
  • fetch.log is rotated to fetch.log.1 once it passes 5 MB instead of growing forever.
  • If a folder rename or move succeeds on the server but TideMail can't record it locally, it now says
    so and re-lists the folders instead of just reporting a failure.
  • Plugin secrets shorter than 6 characters are refused when saved, because error text from a
    plugin is scrubbed of secret values and shorter ones could not be masked. Older shorter secrets
    no longer reach plugin processes: they appear unset and must be re-entered.
  • Manual-only accounts (sync_minutes = -1) no longer fetch their inbox at launch; they still list
    their folders once so the folder tree stays current.
  • The sidebar highlight stays on its folder when folders are added, removed or hidden above it, and
    the reading pane clears when the open folder is removed.
  • Outgoing mail is built with CRLF line endings, so the copy saved to Sent matches the bytes sent
    on the wire.
  • The Needs You count in the sidebar updates immediately when you delete, archive or move a message.
  • Servers with a flat folder namespace (no hierarchy delimiter) are no longer treated as having a
    NUL delimiter.
  • The note about the status bar at the top of help is now a titled, wrapped section instead of two
    clipped lines.
  • Long To/CC/BCC lines in compose scroll sideways to follow the cursor instead of running off the
    edge of the field.
  • Text files attached to a message (parts marked as attachments) are now shown as attachments
    instead of being mistaken for the message body.

TideMail v1.1.1

Choose a tag to compare

@github-actions github-actions released this 29 Sep 22:48

TideMail v1.1.1

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Added

  • Press e in the message list or reading pane to edit a message's tags and
    classification. The command palette also offers Edit tags / Correct classification.
  • Show inline images in Rio through its Kitty Unicode-placeholder support.

Fixed

  • foot now uses labelled text placeholders for images. foot supports Sixel, but
    TideMail's inline renderer requires Kitty Unicode placeholders.

TideMail v1.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 14:29

TideMail v1.1.0

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Release highlights: experimental plugins can classify mail from message
metadata, add local tags, and build reports without receiving message bodies.
New Needs You, Waiting on Them, and Snoozed views help track what needs action.

Added

  • NEW - Experimental plugin support. FINALLY Install trusted plugins, run one on a
    message, a selection, or the current list, and inspect a plain-language
    result card. Opt in to automatic processing of newly arrived unread mail;
    plugin settings live in Settings → Plugins, with secrets in the system
    keychain. Plugins receive header-level metadata, never message bodies.
  • Local annotations and attention views. Plugin tags appear in message
    rows and feed Needs You. Waiting on Them finds conversations awaiting a
    reply without a plugin. Snooze hides messages or conversations until a
    chosen time; dismiss and stop-waiting controls let you clear each view
    without changing mail on the server.
  • Classification controls. Correct a plugin's needs-reply, urgency,
    importance, or category decision locally; corrections survive plugin
    reruns. Search for tags with #tag, and choose tag styles and colors in
    Settings → Display → Appearance.
  • Plugin reports. Plugins with the appropriate permissions can ask
    TideMail read-only questions about cached mail and show totals, tables,
    charts, and heatmaps in the current theme. The Plugin API v1 documentation,
    examples, and plugin scaffold, validate, and test commands are
    available for plugin authors.
  • Support page and batch mark-read action. Settings → Support offers
    TideMail's Ko-fi link, and selected messages can be marked read together.

Fixed

  • Table code blocks and image labels use the reading pane background.
  • About-page links stay visible at the bottom of shorter Settings panes.

TideMail v1.0.28

Choose a tag to compare

@github-actions github-actions released this 26 Sep 20:50

TideMail v1.0.28

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Added

  • Receipt tables retain item/price columns and merged-cell totals, including
    simple receipts without semantic headers. Amounts align on the right; narrow
    panes switch automatically to labelled records or label/value pairs.

  • Newsletter cards stay together. Each card's image, heading, description, and
    button render as one block, and a thin rule separates neighbouring cards.
    Side-by-side cards stack left to right, then top to bottom. Quoted and
    forwarded mail is left as is.

  • Add an Auto/Off image selector under Settings → Display → Reading, with
    terminal capability information. Saving applies the preference immediately.

  • Real inline images in the reading pane. On terminals with Kitty graphics
    support (Ghostty, Kitty, foot), images embedded in HTML mail — CID
    parts, inline data: URIs, and content-location references — are now decoded
    and drawn as raster images inside the reading pane, scaled to the pane width,
    aspect-ratio preserved, and scrolling/clipping/reflowing with the document.
    Remote images stay blocked until the reader presses i in the content pane,
    which loads them for the current message (or the whole conversation in
    threaded view). [display] images = "off" forces text placeholders
    everywhere.

    Architecture: a new internal/richmail package owns image parsing,
    resolution (CID/data/remote), decode limits, layout, and the URL/SSRF policy;
    internal/termimage owns terminal capability detection and the Kitty Unicode
    placeholder backend; internal/ui/rich_images.go wires them into the existing
    HTML pipeline. Images render by emitting Kitty Unicode placeholder cells into
    the text, so the viewport moves them like ordinary document text rather than
    fighting Bubble Tea for cursor control. The historic [image: alt]
    placeholders remain the fallback and are unchanged on unsupported terminals.
    MIME parsing now preserves Content-ID, Content-Disposition,
    Content-Location, and inline status (attachments gains four
    backwards-compatible columns). Remote fetches have a timeout, redirect cap,
    byte cap, content-type validation, and reject loopback/private/link-local
    hosts at both URL-parse and dial time. Decoded images are bounded by bytes,
    dimensions, and pixel count, and are cached per message. An image-heavy
    message is no longer mistaken for an empty HTML body.

    Known limitations: animated GIFs show only the first frame; side-by-side
    table-cell image rows stack vertically rather than forming a two-column grid;
    WezTerm is unsupported and uses text placeholders.

Fixed

  • Inline images honour the sender's height as well as width, fitting inside
    both without distortion, and are re-laid out when the terminal font size
    changes instead of keeping placements sized for the old cells.
  • Moving through the message list no longer stalls on messages with loaded
    images. Images upload in the background once the cursor settles, and
    recently shown images stay in the terminal (up to 48 images or 64 MiB of
    pixels), so returning to a message is instant. TideMail removes its images
    from the terminal on exit.
  • MIME image parts now have a byte and entry cache budget, and clearing a
    terminal image also releases its stored pixel data.
  • Remote images reuse decoded pixels after download-cache eviction. If both
    copies have been evicted, the reader offers i to reload instead of staying
    on a loading placeholder without an active fetch.
  • Absolute Content-Location references resolve from embedded MIME parts before
    considering a remote download, including when i is pressed.
  • WezTerm inline images are currently unsupported. Use text placeholders
    automatically: basic Kitty graphics support does not provide the Unicode
    placeholders and virtual placements TideMail requires. Email text and
    attachment saving still work.
  • A malformed private-use marker sequence (adjacent U+E000/U+E001) in a
    message body can no longer panic the renderer.
  • Pressing i in a threaded conversation now loads remote images for every
    message in the thread, not just the representative one, so each reply's
    images appear.
  • Inline images that cannot be drawn — no graphics terminal, images = "off",
    plain UI, or a decode failure — stay in the attachment list and remain
    saveable. Images that are drawn inline are hidden from the displayed list
    but still included when saving attachments.
  • Remote image data is now evicted under a bounded byte/entry budget instead of
    being retained for the life of the process.

TideMail v1.0.27

Choose a tag to compare

@github-actions github-actions released this 26 Sep 15:13

TideMail v1.0.27

TideMail is a keyboard-first terminal email client with multi-account mail, a unified inbox, drafts, contacts, search, bulk actions, and optional AI tools.

Added

  • TideMail has an icon. A white envelope inside a curling blue wave on a
    rounded tile, saved as a 1024×1024 PNG with a transparent background
    (images/tidemail-icon.png). It heads the README, and a new desktop entry
    (packaging/linux/tidemail.desktop) uses it, so TideMail can appear in app
    launchers. The tidemail-bin AUR package installs both, starting with the
    first release that includes them. The guide shows how to install them by hand.

Fixed

  • Background updates no longer close the window you are working in. When a
    sync or reload left the message view empty, the cleanup that followed also
    closed whatever window was open, so an account form you were halfway through
    could vanish the moment a notification appeared, taking what you had typed
    with it. Only the in-message search bar is closed now. (#29)
  • The account manager scrolls to the account you select. With more
    accounts than fit in the window (about eight on a typical screen), moving
    down past the last visible one left the selection off screen, so the rest
    could not be reached to edit, delete, reorder or make default. The list now
    scrolls to keep the selected account in view. (#28)
  • Settings uses the room a wide terminal gives it. The Settings window was
    capped at 62 columns however wide the terminal was, which left each control
    about 17 columns: theme names, the View Logs hint and other values were cut
    off with …, and changing the font size or display scaling did not help. It
    now grows with the terminal, up to 96 columns, so they fit on one line. Small
    terminals keep the same size as before. (#30)