Release Notes
IMAP
- Handle UIDVALIDITY changes via Message-ID comparison instead of full rebuild.
Previously, a UIDVALIDITY change on the remote server forced a full mailbox
rebuild, re-downloading every message. Now the sync compares local and remote
messages by Message-ID, only re-downloading what actually changed. This is
much faster and avoids unnecessary bandwidth for large mailboxes.
SMTP journaling
-
Reject journaling attempts to non-local accounts. SMTP deliveries targeting
recipients that do not match a local account are now properly rejected during
the SMTP transaction instead of failing later. -
Don't clobber IMAP-owned INBOX uid_validity on journal ingest. Each SMTP
journaling delivery was silently resetting the INBOX uid_validity to None,
causing the next IMAP reconcile to treat the mailbox as invalid and trigger a
full rebuild. For large inboxes with sparse UIDs, interrupted rebuilds could
permanently lose the local copy. The journaling path now only creates the
INBOX row when it does not already exist, leaving the IMAP-maintained metadata
intact. (#297)
Storage
- Purge DedupCache entries on account, mailbox, and envelope removal.
Deleting an account, mailbox, or individual message now properly clears the
in-memory deduplication cache, preventing stale entries from accumulating
and consuming memory.
UI
- Persist account table sorting to localStorage. The sort order on the
accounts page is now saved and restored across page reloads.
What's Changed
- fix(smtp): don't clobber the IMAP-owned INBOX uid_validity on journal ingest (#297) by @shadowdao in #298
New Contributors
- @shadowdao made their first contribution in #298
Full Changelog: 1.5.2...1.5.3