Skip to content

Releases: Foundry376/Mailspring

1.22.0

13 Jun 20:30

Choose a tag to compare

Features:

  • Added the ability to choose which themes apply in automatic light/dark mode. (#2732) Thanks @Jayphen!

Bug Fixes:

  • Fixed null crash when clicking "Send now" on undo-send toast after the message had already been sent. (#2738)
  • Fixed two null-access crashes reported in Sentry (MAILSPRING-CLIENT-1G, MAILSPRING-CLIENT-18, MAILSPRING-CLIENT-2V). (#2740)
  • Fixed two Sentry crashes: null account in preferences and null window in app menu IPC. (#2741)
  • Fixed crash when archiving from search with label-based archive categories. (#2743)
  • Fixed null crash when removing threads with unsynced trash/archive category. (#2736)
  • Fixed Outlook account setup. (#2735) Thanks @Suchiman!
  • Fixed Windows print crash caused by invalid file URL. (#2733)
  • Fixed TOCTOU null-reference crash in draft body setter (MAILSPRING-CLIENT-S). (#2728)
  • Fixed DefaultClientHelperMac passing boolean to error callback, causing false Sentry reports. (#2731)
  • Fixed AttributeDateTime.fromJSON treating 0/falsy values as missing. (#2730)
  • Fixed quickpreview CSP clobbering the default session's app-wide CSP. (#2744) Thanks @dansleboby!
  • Fixed QuerySubscription._fetchRange contiguity check using actual result length. (#2734)
  • On Windows, fixed EPERM crash when forking background query agent. (#2745)

Improvements:

  • Improved Microsoft OAuth: better email resolution and suppressed no-mailbox errors from Sentry. (#2746)
  • Added diagnostics around "draft not found" error on send and cleaned up waiting queues. (#2727)
  • Moved payment flow out of modal to launch on the web for newer Stripe integration.
  • Richer exceptions when account has no from address or when label is provided to ChangeFolderTask.
  • Draft reminders now use thread: metadata prefix so sync engine promotes them to thread on send. (#2729)
  • Sync engine now forwards identity-level refresh events from delta stream. (mailsync#115)

1.21.1

20 May 20:31

Choose a tag to compare

Performance:

  • Optimized search regex compilation in category and label pickers. (#2715)
  • Improved sync engine performance by reducing unnecessary SQLite writes and moving parsing outside transactions.

Bug Fixes:

  • Improved theme support in calendar
  • Fixed dark mode email bodies not reflecting the system tint color.
  • Fixed activeMarks access errors in the composer editor. (#2714)
  • Fixed thread list scroll indicator not sliding through time when dragging the scroll handle. (#2716)
  • Fixed contains error when parentFilter receives a non-Element node. (#2712)
  • Fixed secrets potentially appearing in the connection error detail modal. (#2717)
  • Fixed package name validation rejecting names with uppercase letters. (#2718)
  • Fixed sync engine crash during many-account sync by increasing SQLite busy timeout.
  • Fixed message importance headers not normalized for compatibility with some providers. (mailsync#113)
  • Improved error logging for empty or malformed error objects. (#2713)

Developer:

  • Upgraded Electron from 41.5.0 to 41.6.1.
  • Upgraded React and React DOM to v17. (#2725)
  • Upgraded react-transition-group from 1.2 to 4.4.5.
  • Replaced deprecated componentWillMount with componentDidMount. (#2724)
  • Replaced legacy context API with React Context. (#2722, #2723)
  • Refactored class components to functional components with React.memo. (#2720)
  • Removed PropTypes, replaced with TypeScript types. (#2710)
  • Added missing TypeScript types to function declarations across many files.
  • Renamed remaining package spec directories to specs, converted JSX to TSX. (#2711)
  • Added Playwright tests for composer interactions.
  • Fixed lint CI step that was performing fixes instead of validation. (#2719)
  • Removed unused CircleCI configuration.
  • Set C++ standard to C++17 across all platforms. (mailsync#114)
  • Various CMake and build improvements for mailsync. (mailsync#108, mailsync#109, mailsync#110, mailsync#111, mailsync#112) Thanks @LinusDierheimer!

1.21.0

06 May 13:40

Choose a tag to compare

Features:

  • Added Reply-To field to the composer header, allowing you to specify a different reply address when composing messages. (#2691) Thanks @Argjend12345!

  • Added bulk RFC2822 message export functionality to the sync engine. (#107)

Bug Fixes:

  • Fixed HTTP/2 framing errors that could crash the sync engine during metadata streaming. (#103)

  • Prevented global keyboard shortcuts from firing when focus is in the composer. (#2693)

  • Strictly validate accent color hex values from system preferences to prevent errors. (#2692)

Claude Security Audit:

  • Tightened validation to prevent file:// URIs in email content. (#2699)

  • Limited path traversal in protocol handler. (#2700)

  • Added allowlist validation for IPC window and webcontents methods. (#2701)

  • Improved HTML sanitization in the composer when pasting content. (#2702)

  • mailto links no longer support the ?attach= query parameter. (#2703)

  • Improved attachment name sanitization for security and compatibility. (#2705)

  • Improved email sanitization to block CSS @import tracking vectors. (#2706)

  • Added package name validation to prevent path traversal attacks. (#2698)

  • Added URL validation to the autoupdate handler. (#2697)

  • Show a notice about plugin trust when installing third-party plugins.

Improvements:

  • When a detailed error log is available during OAuth sign-in, it is now displayed to help with troubleshooting.

  • Used exec in mailsync wrapper script for direct signal delivery. (#105)

Developer:

  • Migrated build system from Grunt to a standalone Node.js script. (#2704)

  • Added option to skip installer creation in the build script. (#2707) Thanks @LinusDierheimer!

  • Dropped .map files from distribution packages. (#2686) Thanks @ReillyBrogan!

  • Replaced long-deprecated Raven with native Sentry envelope implementation and send sourcemaps during build. (#2694)

  • Upgraded TypeScript target from es2017 to es2024.

  • Refactored TypeScript compilation cache and only enable in dev mode. (#2695)

  • Removed macOS Touch Bar support. (#2696)

  • Updated ESLint and Prettier, and reference local versions in VS Code settings.

  • Added missing TypeScript types to function declarations across many files.

  • Upgraded Electron 41.2.1 to Electron 41.5.0.

  • Added Playwright tests for pre-release verification.

  • Added tests covering VCF/EML business logic and other utilities.

1.20.1

20 Apr 16:07

Choose a tag to compare

Fixes:

  • Resolves an issue with the inline composer's key handling that could cause Gmail-style shortcuts to activate while you were typing into the subject line or recipients.

1.20.0

19 Apr 03:40

Choose a tag to compare

Features:

  • Added an "Automatic" theme (the new default) that follows system light/dark mode.

  • Added system accent color support — the standard light and dark themes now use your OS accent color by default and this can be disabled from Preferences > Appearance. (#2682)

  • Improved the UX around creating folders and labels in the left sidebar - it's much easier to create nested items. (#2655)

  • A new "•••" menu on items in the left sidebar makes features (including the new EML export option) more discoverable.

  • Added EML export functionality for messages and folders. You can save selected messages as EML by right-clicking or from the app's menu, and export entire folders by right clicking in the left navigation. (#2652)

Improvements:

  • Improved password storage error handling and reporting. (#2669)

  • Fixed a race condition causing Windows notification "Archive" and "Mark as Read" buttons to be unreliable.

  • Added Microsoft Office 365 / Outlook account setup guidance and troubleshooting documentation. (#2656)

  • Replaced text symbols with SVG icons in the toolbar. (#2658)

  • Refinements to EML export task in the sidebar.

  • Fixed the Wayland app_id after Electron 41 (Thanks @ReillyBrogan!)

Bug Fixes:

  • Fixed an undefined @font-weight-semi-bold error in the ui-less-is-more theme. (#2684)

  • Fixed a crash in quick preview when the capture window is destroyed. (#2671)

  • Fixed an unhandled EPIPE error when writing to a dead mailsync process stdin. (#2673)

  • Fixed race conditions in draft expiration and changeset handling. (#2678)

  • Fixed broken IMAP UTF-7 encoding by replacing the broken utf7 package with a custom implementation. (#2672)

  • Fixed printToPDF errors being incorrectly sent to Sentry. (#2677)

  • Fixed an issue where launch options and URLs were processed before app initialization was complete. (#2675)

  • Fixed a crash caused by null values in draft field change detection. (#2676)

  • Fixed an issue where metadata attachment could fail for newly sent messages. (#2664)

  • Fixed autoupdate error handling. (#2670)

  • Fixed error handling for ICS parsing in the EventHeader component. (#2668)

  • Fixed crash when navigating to 'All' with accounts that have no archive category. (#2666)

  • Fixed null reference crash in ContactDetail on update. (#2661)

  • Fixed MacOS notifications showing a second copy of the app's icon

  • Fixed null range crash in the email composer. (#2662)

  • Fixed a race condition in EmailFrame that could deliver a null doc.body to message extensions. (#2665)

  • Fixed OAuth code parsing to handle + characters correctly. (#2654)

  • Fixed the core:pop-sheet shortcut being blocked in the message list with an open reply composer. (#2653)

  • On Windows, fixed font-weight rendering by using CSS variables. (#2650)

  • On Linux, fixed xdg-mime 'not found' error not being caught on dash-based shells. (#2667)

  • Added error handling for shell.openExternal calls to prevent crashes on unsupported URLs. (#2679)

Developer:

  • Fixed ability to declare platform-specific options via config-schema. (#2681)

  • Moved appdata.xml to the metainfo directory for proper Linux packaging. (#2659) Thanks @BlueManCZ!

  • Replaced direct Electron dialog.showErrorBox calls with AppEnv.showErrorDialog. (#2680)

  • Improved plugin activation error handling and TypeScript compilation. (#2674)

  • Suppressed LESS parse errors from Sentry reporting. (#2663)

1.19.1

07 Apr 01:34

Choose a tag to compare

Bug Fixes:

  • On Windows, fixed notification click handling and removed a redundant window display call. (#2648)

  • Fixed the custom port input not updating in IMAP onboarding. (#2646)

  • Fixed VoiceOver handling on email composer token inputs (To, CC, BCC, etc.).

Improvements:

  • Additional accessibility improvements: arrow key navigation and roving tabindex between messages in the message list, keyboard focus improvements in the account sidebar, email frame ARIA target for read-all support, and focus management fixes for modals and preferences.

  • On Linux, added Wayland session detection and a fallback menu button for window managers that don't support the system tray. (#2647)

  • Improved handling of navigation keys (arrow keys, etc.) in the composer typing state. (#2644) Thanks @ejbiker93ss!

  • Improved contact details panel styling.

  • On Linux/Wayland: frameless windows now display GTK drop shadows and support extended resize borders

Developer:

  • Updated to Electron 41 (Chromium 146, Node.js 24.14), up from Electron 39 (Chromium 142, Node.js 22). (#2643)

    • Chromium updated from 142 → 146, bringing security patches and modern web standard support
    • Fixed white flash when opening app windows
    • Reduced GPU memory usage on macOS
    • On Windows: fixed a crash with UTF-8 file paths and a hang in native notification delivery
    • On macOS: fixed menu items incorrectly staying disabled after being re-enabled
    • On Windows: fixed window fullscreen state not being preserved correctly
    • On Windows: system notifications now support action buttons and inline reply inputs
    • Fixed keyboard shortcut accelerators not working after toggling a menu item's enabled state
    • Replaced the deprecated Electron clipboard renderer API with the standard navigator.clipboard API
  • Replaced legacy dependencies (fs-plus, rimraf, mkdirp, uuid, temp) with native Node.js APIs, removing several third-party dependencies.

  • Removed unused dependencies deep-extend and graceful-fs.

  • Added TypeScript typecheck and lint steps to the per-commit GitHub Actions workflow.

  • Updated license dates.

1.19.0

10 Mar 04:46

Choose a tag to compare

Features:

  • Comprehensive accessibility improvements, including semantic landmarks, ARIA attributes, focus traps for modals, accessibility labels on buttons, and more. If you use Mailspring using a screenreader, we'd love feedback about this release. (#2638)

  • Added VCard import/export functionality to contacts. (#2626)

  • Added support for creating new calendar events via double-click on the calendar. (#2635)

  • Added Calendar menu and keyboard shortcuts. (#2634)

Bug Fixes:

  • Fixed a TypeError when a contact's birthday date is undefined. (#2632)

  • Fixed Windows app restart and update handling with Squirrel. (#2631)

  • Fixed canBeUndone initialization in ChangeMailTask subclasses. (#2630)

  • Gracefully handle xdg-mime not being present on some Linux machines.

  • Fixed poor Sentry reporting of errors bridged over the report-error IPC channel.

  • Fixed an "Invalid String Length" error in the mailsync-process wrapper on very large stderr output.

  • Fixed a CardDAV issue with headers on XML requests and empty multiget responses.

  • Fixed ERR_ABORTED errors from quick previews being silently reported to Sentry.

Improvements:

  • Improved calendar event editing with ICS-based recurrence support. (#2637)

  • Added recurring event indicator icon to calendar events. (#2633)

  • Added tray icon theme picker and 'none' style option for Linux. (#2628)

  • Tuned thread list swipe gesture detection, and added an option to disable swipe gestures. (#2629)

  • Folded grammar check preferences into General > Composer. (#2639)

  • Improved emoji popover positioning and updated emoji artwork with new additions.

  • Recovered the Slate editor when the user selects all and deletes all text, leaving only quoted text.

  • Added WSAGetLastError() logging for TCP connection failures on Windows (mailsync).

Developer:

  • Added X-GNOME-UsesNotifications=true to the Linux .desktop file. (#2640) Thanks @LinusDierheimer!

  • Added vcs-browser to the Linux AppStream metadata. (#2641) Thanks @LinusDierheimer!

  • Removed deprecated Electron 4 polyfills and other outdated TODOs. (#2636)

  • Moved tests to @testing-library/react, run in GitHub Actions.

  • Added community plugins and themes documentation. (#2627)

1.18.0

23 Feb 14:40

Choose a tag to compare

Features:

  • Grammar check is now available in the composer! (#2612)

    • This feature relies on a deployment of LanguageTool at id.getmailspring.com - when you use Grammar Check, small snippets of your draft are sent to this server, but the requests are not logged and no message data is stored.
    • This feature is disabled by default. To turn it on, click the new icon in the composer toolbar.
  • Mailspring now properly detects "Do Not Disturb" status on MacOS Sequoia and on Windows.

Bug Fixes:

  • On Wayland, the --background flag now shows the main window briefly then hides it, which is the best we can do under Wayland's rules. (#2623)

  • On Wayland, fixed a keyboard freeze in the composer caused by a double focus() call. (#2622)

  • Fixed sound notifications playing on Windows regardless of the notification preference. (#2619)

  • Fixed the tray icon theme detection on GNOME/Unity Linux desktops. (#2610)

  • Fixed a crash in vCard parsing when the VERSION line is not found.

  • Fixed an issue with the first CardDAV sync incorrectly seeing existing ETags in mailsync.

  • Fixed IMAP IDLE to process VANISHED notifications sent by FastMail (and possibly other providers).

  • Fixed folder priority logic that was incorrectly applied to non-iCloud accounts in mailsync.

Improvements:

  • Added support for the stnadard biographies / notes field on contacts. (#2621)

  • Rearranged the thread context menu to reduce accidental destructive actions. (#2620)

  • Added an empty state to the calendar when no CalDAV accounts are connected. (#2625)

  • The draft window now uses the message subject as the window title.

  • Improved read receipt tracking pixel reliability. (#2613)

  • Improved mail rules robustness and fixed condition evaluation bugs. (#2616)

  • Added VTIMEZONE to created calendar events so they are created on Yahoo in the correct timezone.

  • Enabled CalDAV discovery to support Fastmail, Yahoo, and other providers in the upcoming calendar.

  • On Windows, the app icon is now a rounded square to better fit with Windows 11 design guidelines.

Developer:

  • Replaced CSS-based platform hiding with React conditionals in preferences. (#2614)

  • Removed subpixel-antialiased font smoothing overrides. (#2618)

  • Added syncInit to main-calendar to eliminate a 2.5s startup delay. (#2606)

1.17.4

11 Feb 16:59

Choose a tag to compare

Features:

  • Added Agenda view to the calendar for chronological event browsing. (#2592)

  • Added Linux Do Not Disturb detection for notification suppression. (#2595)

  • Added Windows jump list and badge icon desktop integration. (#2594)

  • Added ARM64 (aarch64) Linux build support. (#2601)

  • The selected calendar view now persists across sessions. (#2600)

Bug Fixes:

  • Fixed support for Wayland - window activation context is now handled gracefully. (#2599)

  • Fixed the app's system tray icon appearing as three dots (•••) at launch on Ubuntu 25.

  • Fixed summary notifications: broken Windows toast URLs and race condition. (#2597)

  • Improve Yandex account sync by ignoring their XLIST implementation, which is known to be buggy.

  • Fixed mutex re-entry locks during exception handling in mailsync that could be hit if a network disconnect caused both sync workers to throw at the same time.

  • Reverted IDLE error suppression that caused sync issues.

Improvements:

  • On Linux, default to thin window framing with hamburger-style right menu. (#2604)

  • On Linux, added dark/light system tray icon support. (#2602)

  • Improved JS algorithm performance using Map/Set for better collection handling. (#2596)

  • Enabled support for custom config directory path. (#2587) Thanks @DerDemystifier!

  • Added missing release info in appdata. (#2586) Thanks @ychavoya!

Developer:

  • Updated node-abi to 3.87.0 and added support for prebuilt better-sqlite3 binaries. (#2598)

  • Signed native .node addon files for Smart App Control compliance. (#2589)

  • Fixed RPM packaging dependencies for Fedora 43 and openSUSE compatibility. (#2590)

  • Fixed openSUSE CI test and RPM post-install scriptlet issues. (#2591)

1.17.3

31 Jan 20:21

Choose a tag to compare

  • Updates the .deb package dependencies to address Ubuntu 25 (libtidy58 replaces libtidy5deb1) and Linux Mint 22 (libcurl4t64, libgtk-3-0t64 instead of libgtk-3-0) installation issues.

  • Fix issues sending email on Windows caused by missing SASL libraries in some scenarios.

  • Screenshot mode now blurs the content of your emails as well (Thanks @cheack!)

  • The Spanish - Latin America (es_419) translations have been verified (Thanks @MiguVT!) and we've used the latest LLMs to update machine translations in other language files that were many years old.