You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Copying a detected login code can now also mark the conversation unread or
move it to Trash (undoable) — choose under Settings → Reading. Off by
default, and it works from both the conversation and the list row.
Calendar operations now retry transient Google errors with backoff and give
up after a deadline, instead of failing on the first hiccup or hanging on a
dead connection.
Fixed a rare race where a notification could be skipped when several
messages arrived in the same instant.
RSVP replies now send reliably when your name or the organizer's contains a
comma, quotes, or non-ASCII characters — those previously produced an
invalid reply header.
Opening the label popover with many labels and a large selection is
faster — the label states now come from a single query instead of one per
label.
Invite cards no longer garble event titles, locations, or descriptions
containing a backslash (e.g. file paths) — the text was previously split at
the backslash.
Inserting a snippet containing a literal placeholder like {{constructor}}
no longer fails — unknown placeholders are left as typed.
Sending to a contact whose name contains a backslash no longer produces a
malformed recipient header that could get the message rejected.
Settings backups now restore saved views that filter on the follow-up
state — importing previously dropped those views silently.
Scheduled sends in Drafts and the Outbox now flip to the live "Sends in
N sec" countdown when they enter their final minute — previously the pill
could stay on the static "Scheduled" label all the way past the send time.
The Feedback button in the header is now a quiet outline button instead
of a solid blue one — Compose is the only filled-blue action again.
Dates in the conversation list are a shade darker, making them readable
without leaning in.
Compose popout windows now remember their size — a new popout opens at the
size you last closed one at (kept within your display), instead of always
the fixed default.
New-mail notifications now play the system alert tone. Turn it off under Settings › General › Notification tone to get the previous silent
banners.
An optional Send tone plays a short sound the moment you press Send —
off by default, on under Settings › Composing.
Simple text emails now get a small even margin inside the white message
frame instead of running flush against its edge — most visible in dark
mode.
After a send is refused for a missing recipient, the To field no longer
shows the red error ring and the blue focus border at the same time — the
focus border takes over while you type.
Sending from a popped-out composer now closes that window right away and
shows the Undo send countdown in the main window, which comes to the
front while the send can still be undone or cancelled. Undoing reopens the
draft in the main window's compose dock.
Label chips in the reading pane now carry a small × — remove a label in
one click, with the usual undo toast, without opening the label menu.
An unfinished reply now shows in its conversation as a Draft card
instead of looking like a sent message — click it to pick up where you left
off in the composer.
The login code pill now appears on a conversation's row the moment the
mail arrives when the subject or preview text carries the code, instead of
waiting for the message body to download.
The local database no longer grows without bound: the internal event log
that feeds new-mail notifications is now pruned to the last 30 days on each
launch.
Forwarded sign-in mails now show their Copy login code pill: a forward
whose whole body is quoted history is scanned as the message itself, while
replies still never resurface a code from the quoted history below a fresh
answer.
Old unread mail no longer re-fires its notification on every app launch —
the new-mail checkpoint now survives restarts. Mail that arrived while the
app was closed still notifies once on the next launch.
Opening a conversation now shows all of its labels as chips under the
subject, so you can confirm a label was applied without scanning the list —
the row keeps its compact +N overflow, the reading pane shows the full
set.
The follow-up reminder default (Settings › Reading) now offers Custom…:
pick an amount, a unit from hours to years, and a time of day. ⇧H then
always arms that span at that time.
The Copy login code pill now also recognizes lowercase codes and mails
that introduce the code imperatively — "enter the below code", "Gib den
folgenden Code ein" — the way Ryanair and similar senders write their
sign-in mails.
Sign-in mails from Booking.com — and any sender whose name is itself a
commerce word — now get their Copy login code pill: the brand name no
longer counts as shopping context that suppresses the code detection.
Accepting a suggested label now always shows the result: the new label
becomes a visible chip on the row, and if it can't be applied a toast
explains why. Deleting a label also removes its pending suggestions.
Discarding a draft that had already synced to the server now removes it
from Drafts in one step — no more ghost copy to delete a second time, and
none left behind after moving a draft to another account.
Attaching the same file twice now adds it again as name (1).ext instead of
silently doing nothing, and attachments that would share a filename — two invoice.pdf from different folders, say — are automatically renamed apart
so both chips (and the sent mail) stay tellable.
Labels created by the label helper now re-learn from the mail the first
organize pass actually filed, so their accuracy reflects your real mail
rather than the wizard's few examples. While setup runs, the AI panel marks
them New instead of asking for more examples.
With more than one account connected, the Settings panes that edit a single
account — Labels, your signature in Composing, and sync options in
Advanced — now show an Applies to header naming that account, with a
switcher to retarget them without leaving Settings.
Rebuild local database now asks for confirmation in a dialog and lives
on the account card in Settings › Accounts, so it always names the account
it acts on. Deleting a snippet asks first too.
The On/Off-style toggles in Settings now announce themselves to screen
readers as option groups with a checked state, take a single Tab stop, and
move their selection with the arrow keys.
Keyboard shortcuts can now be rebound without a mouse: command rows in
Settings › Shortcuts are focusable, Enter starts recording, and the
edit and reset affordances show on keyboard focus as well as hover.
Mark as read when opened now reads as one scale — Right away / After 3 s / Never — instead of On / 3 secs / Off, where "On"
secretly meant "after half a second".
Settings rows that depend on another setting — the sending-toast options
under Undo send, the summarize scope under auto-summarize — now dim
with a note saying why instead of doing nothing or disappearing, and they
keep showing up in settings search.
Closing Settings with Escape while editing your signature no longer
silently drops the edit — it saves on close, and when retargeting the pane
to another account.
Settings polish: the General pane groups its rows under Appearance, Behavior, and System; pressing Escape with a label or account
color picker open now closes the picker instead of all of Settings; and
buttons across the panes share one style with a visible keyboard focus
ring.
The label helper can now be re-run any time: Review labels with AI in
Settings › Labels proposes only what's new — labels for mail your current
set doesn't cover, and opt-in merges that fold two overlapping labels into
one, moving every conversation over before the duplicate is deleted.
The welcome tour now covers follow-up reminders: a new Follow-ups card shows
how ⇧H arms a reminder that resurfaces a thread if nobody replies, and
lets you pick your default horizon right on the card.
The account switcher now surfaces unread mail elsewhere: a quiet line
beneath it jumps to the other inbox with mail waiting, and the menu shows a
count on each account plus a total on All inboxes.
NoMail can now set up labels for you: after a new account syncs, a banner
offers to scan the inbox and propose a label set — review it, then one click
creates the labels and organizes your existing mail. Also available from
Settings › Labels.
Reloading the window now takes ⌘⇧R (Ctrl+Shift+R on Windows/Linux)
instead of ⌘R, so it can't happen by accident.