This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
Summary
AI summaryUpdates Faster message open, Email sync reliability, and Live cross-device sync across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Inline images in composed messages are preserved and rendered correctly on send. Inline images in composed messages are preserved and rendered correctly on send. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Live cross‑device synchronization updates read, star, move, archive, and delete actions across devices within seconds. Live cross‑device synchronization updates read, star, move, archive, and delete actions across devices within seconds. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Low |
Email sync uses CONDSTORE delta queries for precise change detection. Email sync uses CONDSTORE delta queries for precise change detection. Source: granite4.1:30b@2026-07-15-audit Confidence: high |
— |
| Feature | Low |
Message bodies start fetching immediately when a message is opened. Message bodies start fetching immediately when a message is opened. Source: granite4.1:30b@2026-07-15-audit Confidence: low |
— |
| Performance | Medium |
Email sync reliability improvements: delta sync via CONDSTORE, monotonic UID watermark detection, backoff handling, and fast flag sync for large mailboxes. Email sync reliability improvements: delta sync via CONDSTORE, monotonic UID watermark detection, backoff handling, and fast flag sync for large mailboxes. Source: llm_adapter@2026-07-15 Confidence: low |
— |
| Performance | Medium |
Message opening begins fetching body instantly and de‑duplicates duplicate fetches; list refreshes briefly defer during open. Message opening begins fetching body instantly and de‑duplicates duplicate fetches; list refreshes briefly defer during open. Source: llm_adapter@2026-07-15 Confidence: low |
— |
| Performance | Low |
New mail detection relies on a monotonic UID watermark to avoid missed messages. New mail detection relies on a monotonic UID watermark to avoid missed messages. Source: granite4.1:30b@2026-07-15-audit Confidence: high |
— |
| Performance | Low |
Connection refusal backoff ramps from 30 s to 15 min with exponential delay. Connection refusal backoff ramps from 30 s to 15 min with exponential delay. Source: granite4.1:30b@2026-07-15-audit Confidence: high |
— |
| Performance | Low |
Per‑provider cap limits concurrent backfill connections during startup. Per‑provider cap limits concurrent backfill connections during startup. Source: granite4.1:30b@2026-07-15-audit Confidence: high |
— |
| Performance | Low |
Snippet indexer steps back when provider reaches connection limit. Snippet indexer steps back when provider reaches connection limit. Source: granite4.1:30b@2026-07-15-audit Confidence: high |
— |
| Performance | Low |
Flag (read/star) changes on large mailboxes sync in under a second. Flag (read/star) changes on large mailboxes sync in under a second. Source: granite4.1:30b@2026-07-15-audit Confidence: high |
— |
| Performance | Low |
Duplicate fetches for opening messages are de‑deduplicated. Duplicate fetches for opening messages are de‑deduplicated. Source: granite4.1:30b@2026-07-15-audit Confidence: high |
— |
| Performance | Low |
Background list refreshes briefly defer while a message is being opened. Background list refreshes briefly defer while a message is being opened. Source: granite4.1:30b@2026-07-15-audit Confidence: high |
— |
| Bugfix | Medium |
Mobile move-to-folder operation now correctly moves messages. Mobile move-to-folder operation now correctly moves messages. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Context menus reliably dismiss when clicking empty message list area. Context menus reliably dismiss when clicking empty message list area. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
CardDAV sync for large address books no longer fails with entity‑expansion limit errors. CardDAV sync for large address books no longer fails with entity‑expansion limit errors. Source: llm_adapter@2026-07-15 Confidence: high |
— |
Full changelog
v2.4.0
A reliability-focused release: email sync is substantially more robust across providers, message opening is faster, changes now sync live across devices, plus fixes for mobile move, context menus, CardDAV, and inline images on send.
Email sync reliability
- CONDSTORE delta sync. MailFlow now asks the server what changed since last time instead of inferring it — new mail and read/star changes are detected precisely and cheaply, with an automatic fallback for servers that don't support it.
- New mail can never be silently missed. New-message detection always runs against a monotonic UID watermark, independent of the change counter, so a stale or misbehaving server signal can't drop a message.
- Tamed startup connection churn. Exponential connection-refusal backoff (30s → 15min), a per-provider cap on concurrent backfills, and a snippet indexer that steps back when a provider is at its connection limit — so a restart no longer floods connection-sensitive providers (iCloud, PurelyMail) and stalls sync.
- Fast flag sync on large mailboxes. Read/star changes on big accounts (e.g. 28k-message iCloud inboxes) now sync in well under a second instead of timing out. (#218)
Live cross-device sync
- Reading or starring a message on one device now reflects on your others within seconds — no manual refresh.
- Moving, archiving, or deleting a message updates your other devices' lists automatically.
- The sync indicator now blips when background changes arrive, so you can see it working.
Faster message open
- Message bodies begin fetching the instant you open a message (click, arrow, or swipe), and duplicate fetches are de-duplicated.
- Background list refreshes briefly defer while you're opening a message, so they can't steal the fetch.
Fixes
- Mobile move-to-folder works again — picking a folder in the mobile move sheet no longer dismissed it without moving. (#236)
- Context menus dismiss reliably — clicking an empty area of the message list now closes an open right-click menu.
- CardDAV large address books sync again — raised the XML parser's entity-expansion cap (keeping the anti-XML-bomb depth limit) so big contact books no longer fail with "Entity expansion limit exceeded." (#231, #233 — thanks @salmonumbrella)
Compose
- Inline images are preserved on send — pasted/inserted images are converted to proper CID attachments that recipient clients render, and Sent-folder copies keep the correct subject and sender. (#237, #238 — thanks @AvenitaDev)
Contributors: thanks to @salmonumbrella (#231) and @AvenitaDev (#238) for their pull requests.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Beta — feedback welcome: [email protected]