github maathimself/mailflow v3.0.0

2 hours ago

MailFlow v3.0.0

A major release built around three headline additions — a real plugin system, retro themes, and detached message windows — plus a couple of correctness fixes for attachments and sent mail.

Highlights

Plugin system

GTD is no longer baked into the core — it's now the first fully self-contained MailFlow plugin, running behind a generic capability layer and a bounded plugin API. This is the foundation for third-party plugins going forward.

  • Per-user plugin activation with a new Plugins section in Settings, so each user chooses what's enabled.
  • Plugins get a bounded engine facade rather than raw internals, plus registries for UI slots, context-menu items, row-hover actions, settings categories, and WebSocket/reconnect handlers.
  • A headless plugin runtime means plugin logic (like GTD's sections fetch) no longer lives in core app code.
  • Plugin author guide added for anyone building against the API, with CODEOWNERS for the GTD plugin.
  • CI now enforces the Tier-2 plugin import boundary on every build, so core and plugins stay properly separated.

Retro themes

Two new early-2000s themes for the nostalgic: Windows XP (Luna) and Windows Classic (9x), each paired with era-appropriate fonts and scoped skeuomorphic styling across the sidebar, message list, compose window, and settings.

Detached message windows (#219)

Double-click a message to pop it out into a floating, in-app window you can move, resize, minimize, and dock. Multiple minimized windows dock side by side. Read/star/AI/print keep the window open; archive/trash/move/spam/snooze dismiss it. Desktop-only.

Fixes

  • Attachments: downloading a file with a non-ASCII filename (e.g. Cyrillic) no longer fails with ERR_INVALID_CHAR. The real name is carried via filename*=UTF-8''… with an ASCII-safe fallback, including the "download all" ZIP path (#367).
  • Sending: the IMAP Sent copy is now appended with CRLF line endings instead of bare LF, fixing mis-parsed Subject and dropped To display-names on strict servers like PurelyMail/Dovecot (#365).
  • Retro themes: beveled compose window frame, themed settings modal (frame, tabs, sub-tabs, corners), and flattened sidebar selection, message cards, and notice banners.
  • Fonts: guard applyFontSet against a missing DOM so it can't throw.

Upgrade notes

  • The GTD migration to the plugin model is automatic — legacy tables and columns (gtd_pets, gtd_gist, gtd_enabled/gtd_folders) are dropped and their data moved to the generic plugin_data, plugin_account_config, and per-message annotation stores. Existing GTD users are grandfathered into the plugin on upgrade; no manual action required.
  • Self-hosted (build-from-source): pull main and rebuild.
  • GHCR image users: pull 3.0.0 (or 3.0 / latest).
  • Native desktop/mobile app builds are not part of this release — they remain manual-only pending signing and the outstanding native-security items.

Don't miss a new mailflow release

NewReleases is sending notifications on new releases.