Changelog

What's new in Mailwing.

Pulled straight from CHANGELOG.md. Built on Keep a Changelog, every release dated.

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.3.0-beta.1] - 2026-05-28

Pre-release / testing build. Flagged as a pre-release on GitHub and not marked "Latest", so stable users are never auto-served it. Auto-update keeps beta builds on the beta channel.

Added

  • Apps Panel — pin web apps (Cloudflare, GitHub, GitLab, Slack, Linear, Notion, Figma, Stripe, ChatGPT, Claude, …) in the sidebar alongside your email accounts. Each app runs in its own isolated session, is organised by category in the picker, and inactive apps hibernate to free memory.
  • One-click auto-update — new versions now download in the background and install on a single "Restart to update" click, powered by electron-updater. This replaces the notification-only banner from 1.2.0 (which only opened the releases page). Updates are channel-aware: a pre-release build tracks the beta channel, a stable build only sees stable releases.

Changed

  • Build pipeline publishes update metadata (latest*.yml) and a macOS .zip target as release assets so electron-updater can find new versions; a semver pre-release tag (e.g. v1.3.0-beta.1) is flagged as a GitHub pre-release automatically.
  • README macOS section updated for signed + notarised builds — the Gatekeeper workaround is no longer documented.

[1.2.3] - 2026-05-26

Changed

  • First Apple-signed and notarised release. Builds now ship with a Developer ID Application signature, so macOS no longer shows a Gatekeeper "unidentified developer" warning and passkey ceremonies (Touch ID / Secure Enclave / caBLE) work — previously blocked because macOS refuses passkey APIs to binaries it can't validate (see docs/GOTCHAS.md, docs/SIGNING.md). No code or feature changes from 1.2.2.

[1.2.2] - 2026-05-19

Fixed

  • Clicking a mailto: link from another app no longer "hangs" after you pick an account in the picker. Compose now opens in its own window sharing the account's session partition, instead of navigating the warmed mailbox view to the provider's compose URL — no more blank-screen reload, no more out-of-sync sidebar highlight, and your inbox is still there after you send.

Added

  • macOS: a thin (28 px) draggable strip across the top of the content area so the top of the window behaves like a native title bar — drag to move, double-click to zoom (per System Settings → Desktop & Dock). The strip uses the sidebar background so the chrome forms an inverted L; traffic lights stay where they were. Windows/Linux are unchanged.

[1.2.1] - 2026-05-07

Fixed

  • Closing in-app popups (calendar-invite RSVPs, compose-in-new-window, passkey ceremonies that don't redirect through an auth host) no longer reloads the active mailbox. The post-popup-close reload — added in 1.2.0 to recover from "stuck on signed-out landing page" — now only fires when the popup actually visited a sign-in host (accounts.*, login.*, signin.*, auth.*, oauth.*). Sign-in flows still trigger the parent reload as before.
  • Removed a leftover [diag-popup] console.log that was added during the v1.2.0 calendar-invite investigation and printed on every popup creation.

[1.2.0] - 2026-05-07

Added

  • Notes / Todo panel — a personal scratch space accessible from a new icon in the sidebar bottom. Add notes (Enter to submit, Shift+Enter for newline), tick to mark done, click × to delete. Persists in notes.json in the user data directory. Cmd/Ctrl+Shift+N opens the panel.
  • In-app update notification — the app now checks the GitHub Releases API on launch and every six hours; a slim banner across the top of the window announces a newer version with a Download button (opens the release page in the system browser) and a Dismiss × that suppresses the banner for that version. Notification-only by design — no auto-download (unsigned builds preclude Squirrel.Mac auto-update).
  • Four additional providers in the registry: Fastmail, Yahoo Mail, ProtonMail (Outlook was already shipping but is now actually working — see Fixed).

Changed

  • Outlook reading pane is no longer hidden; the native 3-column layout (folder tree + message list + reading pane) returns. Clicking a message now previews it again.
  • Outlook unread-title regex now matches both (N) and [N] formats so newer Outlook Web title styles are recognised.
  • Outlook avatar selectors include the post-2024 MeControl* attributes; retry schedule extended to 75 s for slow networks.
  • Auth-popup webPreferences switched from a session instance to a partition string for more reliable cookie sharing through setWindowOpenHandler.
  • macOS entitlements file cleaned up: removed the bogus com.apple.developer.public-key-credential key (not a real Apple entitlement); added com.apple.security.device.bluetooth for caBLE / cross-device passkeys.
  • Permission handlers explicitly allow publickey-credentials-get / publickey-credentials-create (intent now self-documenting).

Fixed

  • After auth-popup login completes (Gmail session expiry, Outlook re-login), the parent BrowserView now auto-reloads. No more stuck-on-landing-page until app restart.
  • Calendar-invite RSVP popups in Gmail no longer prompt for re-login — popups now genuinely inherit the parent account's session partition.
  • Avatar extractor and unread poller no longer crash with an UnhandledPromiseRejectionWarning when a view is destroyed mid-timer (account removal, render crash, app quit).
  • Various race-condition guards in viewManager.js for destroyed webContents.

Docs

  • New docs/GOTCHAS.md — known quirks captured in one place: Outlook UA spoof, Zoho regional avatar domains, CSP frame-ancestors stripping, off-screen BrowserView dimensions, dock-badge re-apply on macOS, visibility preload, Web Notification permission denial, and the passkey signing-requirement on macOS.
  • New docs/adr/0001-session-partition-per-account.md — first ADR documenting the per-account persist:mailwing-{accountId} session-partition design.
  • New docs/RELEASING.md — runbook for cutting a release.
  • New .github/PULL_REQUEST_TEMPLATE.md — Summary / Motivation / 3-platform × 6-provider test matrix / risk note.
  • README updated to list all six providers (was advertising three).

[1.0.0] - 2026-04-06

Added

  • Multi-provider support: Google (Gmail, Calendar, Drive, Docs) and Zoho (Mail, Calendar, WorkDrive, Writer)
  • Multiple accounts per provider, each with a fully isolated session partition
  • System tray icon with live unread email count badge
  • Desktop notifications with click-to-focus routing to the correct account
  • mailto: protocol handler — registers Mailwing as your default mail client
  • Ad and tracker blocking at the network level
  • Automatic dark mode following the OS system preference
  • Window size and position persistence across sessions
  • Keyboard shortcuts: Cmd/Ctrl+1–9 to switch accounts, Cmd/Ctrl+R to reload
  • Drag-to-reorder account avatars in the sidebar
  • Right-click context menu on account avatars: custom accent colour + remove
  • Provider badge on each avatar showing which provider the account belongs to
  • In-app bug reporting via Help menu and sidebar button
  • Pure-JS icon generation via postinstall script (no native dependencies)
  • Cross-platform packaging: macOS DMG (x64 + arm64), Windows NSIS, Linux AppImage