# Mailspring changelog > A fast, beautiful email client for every mailbox. - Vendor: Foundry 376 - Category: Communication - Platforms: Desktop - Official site: https://getmailspring.com - Tracked by: What's New (https://whatsnew.fyi/product/mailspring) - Harvested from: GitHub (Foundry376/Mailspring) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### 1.23.0 - Date: 2026-07-22 - Version: 1.23.0 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.23.0 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.23.0 - Labels: Platforms: Desktop - **added** — Added Office 365 shared mailbox support - **added** — Added the ability to export folders to mbox files - **added** — Added an option to count unread messages across all accounts - **added** — Added a toggle for email render mode - **added** — Added an MCP server (off by default) that lets local agents interact with mail - **added** — On Linux, added a taskbar unread badge for KDE and other non-Unity desktops - **fixed** — Fixed a composer crash on quoted emails with inline images - **fixed** — Fixed a composer crash when grammar-check decorations apply mid-composition - **fixed** — Fixed missing Slate attributes on the IMAGE_TYPE fallback node - **fixed** — Fixed a composer cut crash and suppressed Sentry noise from third-party plugins - **fixed** — Fixed a crash when dragging threads to the sidebar after a thread is deleted - **fixed** — Fixed a crash in EventRSVPTask when attendee ICS data goes stale - **fixed** — Fixed a crash in the translation plugin when the iframe contentDocument is not yet loaded - **fixed** — Fixed an onboarding crash when back-navigation empties the page stack - **fixed** — Fixed navigator.clipboard.writeText in @electron/remote MenuItem handlers - **fixed** — Fixed an ERR_FILE_NOT_FOUND crash in Show Original when the RFC822 fetch fails - **fixed** — Fixed null crashes in SendDraftTask, thread-sharing, and send-and-archive - **fixed** — Fixed a null crash in three IPC handlers when BrowserWindow.fromWebContents() returns null - **fixed** — Fixed cancellation of GetManyRFC2822Task for folder export - **fixed** — Fixed handling of XDG paths ##### 1.23.0 (7/19/2026) Features: - Added Office 365 shared mailbox support. (#2763) Thanks @Kevin-Hamilton! - Added the ability to export folders to mbox files. (#2765) Thanks @Kevin-Hamilton! - Added an option to count unread messages across all accounts. (#2779) Thanks @WebDevBar! - Added a toggle for email render mode. (#2737) Thanks @AidanWarner97! - Added an MCP server (off by default) that lets local agents interact with mail. - On Linux, added a taskbar unread badge for KDE and other non-Unity desktops. (#2756) Thanks @WebDevBar! Bug Fixes: - Fixed a composer crash on quoted emails with inline images. (#2776) - Fixed a composer crash when grammar-check decorations apply mid-composition. (#2775) - Fixed missing Slate attributes on the IMAGE_TYPE fallback node. (#2774) - Fixed a composer cut crash and suppressed Sentry noise from third-party plugins. (#2755) - Fixed a crash when dragging threads to the sidebar after a thread is deleted. (#2760) - Fixed a crash in `EventRSVPTask` when attendee ICS data goes stale. (#2770) - Fixed a crash in the translation plugin when the iframe `contentDocument` is not yet loaded. (#2752) - Fixed an onboarding crash when back-navigation empties the page stack. (#2750) - Fixed `navigator.clipboard.writeText` in `@electron/remote` MenuItem handlers. (#2754) - Fixed an `ERR_FILE_NOT_FOUND` crash in Show Original when the RFC822 fetch fails. (#2772) - Fixed null crashes in `SendDraftTask`, thread-sharing, and send-and-archive. (#2757) - Fixed a null crash in three IPC handlers when `BrowserWindow.fromWebContents()` returns null. (#2758) - Fixed cancellation of `GetManyRFC2822Task` (folder export). (#118) Thanks @Kevin-Hamilton! - Fixed handling of XDG paths. (#2761) Thanks @LinusDierheimer! - On Linux, fixed an EPIPE crash loop in the uncaughtException handler. (#2769) - On Linux, send `org.freedesktop.DBus.Hello` before emitting the badge signal. (#2778) Thanks @WebDevBar! - Stopped startup after a fatal `config.json` load failure. (#2764) - Guarded `nativeTheme` remote object access in `SystemTrayIconStore`. (#2753) - Guarded grammar check so it no longer emits warnings when logged out. Improvements: - Added a macOS 27 icon variant. - Reduced Sentry noise: expected IMAP/SMTP auth and connection failures are no longer reported. (#2762) - Reduced Sentry noise from OAuth SSL failures and improved the mailsync crash message. (#2771) - Downgraded the unknown-feature warning from an error report to a console warning. (#2759) - Wrapped unhandled fetch errors in `APIError` in `makeRequest`. (#2766) - Fixed an uncaught 'error' event crash in `MailsyncProcess.sync()`. (#2773) - Fixed an unhandled rejection in `IdentityStore` background polling. (#2768) Developer: - Upgraded `@electron/packager` to prevent build hangs on newer Node.js versions. (#2767) Thanks @wrench-exile-legacy! - Get the desktop name dynamically from `package.json` and stop hardcoding `Mailspring.desktop`. (#2748, #2777) Thanks @LinusDierheimer! - Use a template var as the icon value in `Mailspring.desktop`. (#2747) Thanks @LinusDierheimer! - Added branding colors to `appdata.xml`. (#2751) Thanks @LinusDierheimer! - Fall back to ad-hoc signing in the copy-to-app build phase. (#117) Thanks @Kevin-Hamilton! ### 1.22.0 - Date: 2026-06-13 - Version: 1.22.0 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.22.0 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.22.0 - Labels: Platforms: Desktop - **added** — Add the ability to choose which themes apply in automatic light/dark mode - **fixed** — Fix null crash when clicking "Send now" on undo-send toast after the message had already been sent - **fixed** — Fix two null-access crashes reported in Sentry - **fixed** — Fix two Sentry crashes: null account in preferences and null window in app menu IPC - **fixed** — Fix crash when archiving from search with label-based archive categories - **fixed** — Fix null crash when removing threads with unsynced trash/archive category - **fixed** — Fix Outlook account setup - **fixed** — Fix Windows print crash caused by invalid file URL - **fixed** — Fix TOCTOU null-reference crash in draft body setter - **fixed** — Fix DefaultClientHelperMac passing boolean to error callback, causing false Sentry reports - **fixed** — Fix AttributeDateTime.fromJSON treating 0/falsy values as missing - **fixed** — Fix quickpreview CSP clobbering the default session's app-wide CSP - **fixed** — Fix QuerySubscription._fetchRange contiguity check using actual result length - **fixed** — Fix EPERM crash on Windows when forking background query agent - **changed** — Improve Microsoft OAuth with better email resolution and suppressed no-mailbox errors from Sentry - **changed** — Add diagnostics around "draft not found" error on send and clean up waiting queues - **changed** — Move payment flow out of modal to launch on the web for newer Stripe integration - **changed** — Draft reminders now use thread: metadata prefix so sync engine promotes them to thread on send - **changed** — Sync engine now forwards identity-level refresh events from delta stream 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 - Date: 2026-05-20 - Version: 1.21.1 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.21.1 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.21.1 - Labels: Platforms: Desktop - **changed** — Optimized search regex compilation in category and label pickers - **changed** — Improved sync engine performance by reducing unnecessary SQLite writes and moving parsing outside transactions - **fixed** — Improved theme support in calendar - **fixed** — Fixed dark mode email bodies not reflecting the system tint color - **fixed** — Fixed activeMarks access errors in the composer editor - **fixed** — Fixed thread list scroll indicator not sliding through time when dragging the scroll handle - **fixed** — Fixed contains error when parentFilter receives a non-Element node - **fixed** — Fixed secrets potentially appearing in the connection error detail modal - **fixed** — Fixed package name validation rejecting names with uppercase letters - **fixed** — Fixed sync engine crash during many-account sync by increasing SQLite busy timeout - **fixed** — Fixed message importance headers not normalized for compatibility with some providers - **changed** — Improved error logging for empty or malformed error objects - **changed** — Upgraded Electron from 41.5.0 to 41.6.1 - **changed** — Upgraded React and React DOM to v17 - **changed** — Upgraded react-transition-group from 1.2 to 4.4.5 - **changed** — Replaced deprecated componentWillMount with componentDidMount - **changed** — Replaced legacy context API with React Context - **changed** — Refactored class components to functional components with React.memo - **removed** — Removed PropTypes, replaced with TypeScript types - **added** — Added Playwright tests for composer interactions 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 - Date: 2026-05-06 - Version: 1.21.0 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.21.0 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.21.0 - Labels: Platforms: Desktop - **added** — Reply-To field in the composer header to specify a different reply address when composing messages - **added** — Bulk RFC2822 message export functionality to the sync engine - **fixed** — HTTP/2 framing errors that could crash the sync engine during metadata streaming - **fixed** — Global keyboard shortcuts firing when focus is in the composer - **fixed** — Accent color hex values from system preferences validation to prevent errors - **security** — Tightened validation to prevent file:// URIs in email content - **security** — Limited path traversal in protocol handler - **security** — Added allowlist validation for IPC window and webcontents methods - **security** — Improved HTML sanitization in the composer when pasting content - **security** — Removed ?attach= query parameter support from mailto links - **security** — Improved attachment name sanitization for security and compatibility - **security** — Improved email sanitization to block CSS @import tracking vectors - **security** — Added package name validation to prevent path traversal attacks - **security** — Added URL validation to the autoupdate handler - **security** — Show a notice about plugin trust when installing third-party plugins - **changed** — OAuth sign-in now displays detailed error logs when available to help with troubleshooting - **changed** — Used exec in mailsync wrapper script for direct signal delivery - **removed** — macOS Touch Bar support ##### 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 - Date: 2026-04-20 - Version: 1.20.1 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.20.1 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.20.1 - Labels: Platforms: Desktop - **fixed** — Resolves an issue with the inline composer's key handling that could cause Gmail-style shortcuts to activate while typing into the subject line or recipients 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 - Date: 2026-04-19 - Version: 1.20.0 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.20.0 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.20.0 - Labels: Platforms: Desktop - **added** — Add an Automatic theme that follows system light/dark mode as the new default - **added** — Add system accent color support to standard light and dark themes with option to disable in Preferences > Appearance - **added** — Add EML export functionality for messages and folders accessible via right-click or app menu - **changed** — Improve UX around creating folders and labels in the left sidebar for easier nested item creation - **changed** — Add a menu on items in the left sidebar to make features more discoverable - **changed** — Replace text symbols with SVG icons in the toolbar - **changed** — Improve password storage error handling and reporting - **fixed** — Fix race condition causing Windows notification Archive and Mark as Read buttons to be unreliable - **fixed** — Fix undefined @font-weight-semi-bold error in the ui-less-is-more theme - **fixed** — Fix crash in quick preview when the capture window is destroyed - **fixed** — Fix unhandled EPIPE error when writing to a dead mailsync process stdin - **fixed** — Fix race conditions in draft expiration and changeset handling - **fixed** — Fix broken IMAP UTF-7 encoding by replacing the broken utf7 package with a custom implementation - **fixed** — Fix printToPDF errors being incorrectly sent to Sentry - **fixed** — Fix issue where launch options and URLs were processed before app initialization was complete - **fixed** — Fix crash caused by null values in draft field change detection - **fixed** — Fix issue where metadata attachment could fail for newly sent messages - **fixed** — Fix autoupdate error handling - **fixed** — Fix error handling for ICS parsing in the EventHeader component **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 - Date: 2026-04-07 - Version: 1.19.1 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.19.1 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.19.1 - Labels: Platforms: Desktop - **fixed** — On Windows, fixed notification click handling and removed a redundant window display call - **fixed** — Fixed the custom port input not updating in IMAP onboarding - **fixed** — Fixed VoiceOver handling on email composer token inputs (To, CC, BCC, etc.) - **changed** — Improved arrow key navigation and roving tabindex between messages in the message list - **changed** — Improved keyboard focus in the account sidebar - **changed** — Added email frame ARIA target for read-all support - **changed** — Improved focus management for modals and preferences - **added** — On Linux, added Wayland session detection and a fallback menu button for window managers that don't support the system tray - **changed** — Improved handling of navigation keys (arrow keys, etc.) in the composer typing state - **changed** — Improved contact details panel styling - **changed** — On Linux/Wayland, frameless windows now display GTK drop shadows and support extended resize borders - **changed** — Updated to Electron 41 (Chromium 146, Node.js 24.14), up from Electron 39 (Chromium 142, Node.js 22) - **fixed** — Fixed white flash when opening app windows - **changed** — Reduced GPU memory usage on macOS - **fixed** — On Windows, fixed a crash with UTF-8 file paths and a hang in native notification delivery - **fixed** — On macOS, fixed menu items incorrectly staying disabled after being re-enabled - **fixed** — On Windows, fixed window fullscreen state not being preserved correctly - **added** — On Windows, system notifications now support action buttons and inline reply inputs - **fixed** — Fixed keyboard shortcut accelerators not working after toggling a menu item's enabled state - **changed** — Replaced the deprecated Electron clipboard renderer API with the standard navigator.clipboard API - **changed** — Replaced legacy dependencies (fs-plus, rimraf, mkdirp, uuid, temp) with native Node.js APIs - **removed** — Removed unused dependencies deep-extend and graceful-fs 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 - Date: 2026-03-10 - Version: 1.19.0 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.19.0 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.19.0 - Labels: Platforms: Desktop - **added** — Comprehensive accessibility improvements, including semantic landmarks, ARIA attributes, focus traps for modals, and accessibility labels on buttons - **added** — VCard import/export functionality to contacts - **added** — Support for creating new calendar events via double-click on the calendar - **added** — Calendar menu and keyboard shortcuts - **fixed** — TypeError when a contact's birthday date is undefined - **fixed** — Windows app restart and update handling with Squirrel - **fixed** — canBeUndone initialization in ChangeMailTask subclasses - **fixed** — 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** — Invalid String Length error in the mailsync-process wrapper on very large stderr output - **fixed** — CardDAV issue with headers on XML requests and empty multiget responses - **fixed** — ERR_ABORTED errors from quick previews being silently reported to Sentry - **changed** — Improved calendar event editing with ICS-based recurrence support - **added** — Recurring event indicator icon to calendar events - **added** — Tray icon theme picker and 'none' style option for Linux - **changed** — Tuned thread list swipe gesture detection and added an option to disable swipe gestures - **changed** — Folded grammar check preferences into General > Composer - **changed** — Improved emoji popover positioning and updated emoji artwork with new additions - **fixed** — Recovered the Slate editor when the user selects all and deletes all text, leaving only quoted text - **removed** — Deprecated Electron 4 polyfills and other outdated TODOs 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 - Date: 2026-02-23 - Version: 1.18.0 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.18.0 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.18.0 - Labels: Platforms: Desktop - **added** — Grammar check is now available in the composer - **added** — Mailspring now properly detects "Do Not Disturb" status on MacOS Sequoia and on Windows - **added** — Added support for the standard biographies / notes field on contacts - **added** — Added an empty state to the calendar when no CalDAV accounts are connected - **added** — Added VTIMEZONE to created calendar events so they are created on Yahoo in the correct timezone - **added** — Enabled CalDAV discovery to support Fastmail, Yahoo, and other providers in the upcoming calendar - **changed** — On Wayland, the `--background` flag now shows the main window briefly then hides it - **changed** — Rearranged the thread context menu to reduce accidental destructive actions - **changed** — The draft window now uses the message subject as the window title - **changed** — On Windows, the app icon is now a rounded square to better fit with Windows 11 design guidelines - **fixed** — On Wayland, fixed a keyboard freeze in the composer caused by a double `focus()` call - **fixed** — Fixed sound notifications playing on Windows regardless of the notification preference - **fixed** — Fixed the tray icon theme detection on GNOME/Unity Linux desktops - **fixed** — Fixed a crash in vCard parsing when the `VERSION` line is not found - **fixed** — Fixed an issue with the first CardDAV sync incorrectly seeing existing ETags in mailsync - **fixed** — Fixed IMAP IDLE to process `VANISHED` notifications sent by FastMail and possibly other providers - **fixed** — Fixed folder priority logic that was incorrectly applied to non-iCloud accounts in mailsync - **changed** — Improved read receipt tracking pixel reliability - **changed** — Improved mail rules robustness and fixed condition evaluation bugs 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 - Date: 2026-02-11 - Version: 1.17.4 - Original notes: https://github.com/Foundry376/Mailspring/releases/tag/1.17.4 - Permalink: https://whatsnew.fyi/product/mailspring/releases/1.17.4 - Labels: Platforms: Desktop - **added** — Added Agenda view to the calendar for chronological event browsing - **added** — Added Linux Do Not Disturb detection for notification suppression - **added** — Added Windows jump list and badge icon desktop integration - **added** — Added ARM64 (aarch64) Linux build support - **added** — Added dark/light system tray icon support on Linux - **added** — Added support for custom config directory path - **changed** — The selected calendar view now persists across sessions - **changed** — On Linux, default to thin window framing with hamburger-style right menu - **changed** — Improved JS algorithm performance using Map/Set for better collection handling - **changed** — Improved Yandex account sync by ignoring their XLIST implementation - **changed** — Updated node-abi to 3.87.0 and added support for prebuilt better-sqlite3 binaries - **fixed** — Fixed support for Wayland - window activation context is now handled gracefully - **fixed** — Fixed the app's system tray icon appearing as three dots at launch on Ubuntu 25 - **fixed** — Fixed summary notifications: broken Windows toast URLs and race condition - **fixed** — 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 - **fixed** — Reverted IDLE error suppression that caused sync issues - **fixed** — Fixed RPM packaging dependencies for Fedora 43 and openSUSE compatibility - **fixed** — Fixed openSUSE CI test and RPM post-install scriptlet issues - **security** — Signed native .node addon files for Smart App Control compliance 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)