Messages
- Parts labelled base64 whose body is plain text are read as-is; wire bytes (and the DKIM verdict) untouched.
- Forwarding marks the original as forwarded
- One icon column in the message list (forwarded, encrypted/signed, invitation, attachment)
- Invitation + ordinary attachment now shows both icons
- A cached message missing attachment payloads stays on screen while it refetches instead of blanking when the connection dies.
Composer
- Files can be dropped anywhere: pictures dropped on the body go inline at the cursor, everything else attaches. Attach button names the outcome mid-drag.
Spam
- Known-correspondent exemption now requires an SPF/DKIM/DMARC pass; without one it's credit (-15), not a free pass.
- Your own address as sender with nothing vouching for it: +100; +100 again when auth outright fails.
- Crypto wallet address beside webcam/malware/contacts talk: +50 (wallet alone only +15).
- Server-side filter near its own threshold now weighs 30 (was 12).
Sync / connections
- Clicked messages can use any connection, the interactive one included - no more "No connection available" errors.
- Dropped background connection reopens whenever found missing; extra-connection refusals expire instead of latching for the session (token renewal lifts them at once).
- Fetch/search answered with the wrong mailbox selected is dropped rather than stored.
- All-folders pass rate-limited (
sync/folderPassMinutes, 60); between passes only folders whose count moved get a delta fetch. - Trash excluded from history backfill (
sync/backfillTrash).
Bug fixes
- Dismissed GnuPG pinentry reports as a cancellation, not a failed send / broken message.
- QtWebEngine compositing off the GPU: the preview no longer goes black for the rest of the session after any drag.
- Logging: Account switch is phase-timed and logs which phase was slow.