Repository navigation
Releases: allisonhere/tidemail
Release list
TideMail v1.6.0
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:
F6in compose opens a picker with built-in templates and
your own files from the templates folder;eedits one,nsaves the body
as a new one,tidemail templates listandtidemail 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
zenityorkdialog, with the terminal field as the fallback. - A man page:
man tidemail, ortidemail man. Ctrl+Oshows a message's complete source, fetched from the server without
marking it read;ccopies 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 templatesin every field, not only the body.
TideMail v1.5.0
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,
andHome/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 anauthfield in the message metadata, never the
headers themselves. A newsuspicioustag 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…), pressbto see the official plugins from
the plugins repository;iinstalls,uupdates,xremoves. 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) andmessage_compose(sign and
encrypt mail you send), with matchingmessage.decodeandmessage.prepare
methods in Plugin API v1. PressDon a PGP message to decrypt and verify it;
the result is shown in the reading pane and kept in memory only. In compose,
Alt+Ssigns andAlt+Eencrypts (PGP/MIME;F8/F9also 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
pgpplugin in the plugins repository uses your own
GnuPG keyring. Plugins also inheritGNUPGHOME,DISPLAY,WAYLAND_DISPLAY
andXDG_RUNTIME_DIRnow. An encrypted message says so in the reading pane (instead of
"No message body.") and the key hints offerD decryptwhile it is selected. The subject and
headers of encrypted mail are not encrypted,tidemail senddoes 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, andF7steps 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
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 (likeEnter), 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/netto v0.55.0 andgoldmarkto 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
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, andoutbox
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 cliopens a guided command menu, andtidemail sendwithout--yeswalks through
a step-by-step composer with an attachment browser, review, and undo.install-skillpackages
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/Downstep 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 processnow marks queued entries whose account is no longer configured as failed
instead of reporting them on every run. Unknownmessages/accounts/outboxsubcommands
name the supported ones and point tomessages 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
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
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:
ncreates a folder or subfolder,rrenames (subfolders come
along),ddeletes after a confirmation that names the subfolders that go with it. The Inbox and
system folders are protected.Hhides a folder from TideMail's sidebar only, "Show hidden
folders" in the command palette lists them again, andShift+K/Shift+Jwalk 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
Referenceschain.
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.logis rotated tofetch.log.1once 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
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
ein 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
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, andplugin scaffold,validate, andtestcommands 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
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, inlinedata: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 pressesiin 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/richmailpackage owns image parsing,
resolution (CID/data/remote), decode limits, layout, and the URL/SSRF policy;
internal/termimageowns terminal capability detection and the Kitty Unicode
placeholder backend;internal/ui/rich_images.gowires 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 preservesContent-ID,Content-Disposition,
Content-Location, and inline status (attachmentsgains 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 offersito 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 wheniis 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
iin 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
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. Thetidemail-binAUR 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)