github rustmailer/bichon 2.3.1
Release 2.3.1

3 hours ago

Release Notes

Fixed

  • Large-account IMAP syncs no longer fail when Gmail/Exchange throttles (#396). Rate limits are now recognized as throttling instead of bad credentials, the round
    backs off per account and defers the remaining folders, and a round with failures reports Partial (e.g. 393/394 folders) instead of Failed — so you can tell how
    complete the archive actually is. Folders with nothing new are skipped without opening a connection, and a proven-expunged UID tail no longer re-enumerates on
    every sync.
  • Blob store: interrupted garbage collection no longer risks data loss (#393). The GC index cursor confused payload bytes with file offsets (an interrupted run
    could truncate a segment's tail and poison a backup object), and a stale index after a crash could make reads return another key's data. Both are fixed; recovery
    now rescans and heals affected segments.
  • Auto-adding a newly discovered mailbox no longer silently drops INBOX/Sent for accounts that never made an explicit folder selection.
  • Emails without a subject can be opened from the attachment list (#394); removed a non-functional bulk-selection control there (#395).

Added

  • /healthz liveness endpoint — returns 200 ok even in maintenance mode, so orchestrators stop restarting the process an operator needs alive for a migration.
    /api/status remains the readiness probe.
  • reindex --yes — explicit non-interactive confirmation for scripts and Kubernetes Jobs; a non-TTY run without it now fails loudly (exit code 2) instead of
    cancelling silently with exit code 0.

Changed

  • DELETE /api/v1/account/:id on a nonexistent account now returns 404 instead of a silent success, consistent with GET.
  • async-imap now tracks the official crate (0.12.0, with imap-proto 0.17) instead of our fork; brings additional IMAP parser fixes.

Full Changelog: 2.3.0...2.3.1

Don't miss a new bichon release

NewReleases is sending notifications on new releases.