CHANGELOG.md
Changelog
Entries describe user-visible changes. Published versions are newest first. Legacy development notes preserve the earlier unversioned history without treating it as a release record.
Unreleased
0.2.19 - 2026-10-28
Fixed
- Treat attachment admission refusal as a known pre-submission failure and release scheduled attachment holds.
Fixed
- Reject workspace exports with unrecoverable removed-account references and enforce destination draft/template limits before backup previews and imports.
Added
Support 20 outgoing attachments and 25 MiB total through raw local uploads and encrypted attachment references. Keep small legacy drafts readable, stream referenced messages with provider size preflight, and preserve bytes for drafts and uncertain sends.
Offer cancellable, bounded Gmail and IMAP part downloads for large received attachments. Keep automatic imports small and distinguish unparsed bodies from files not downloaded yet. IMAP accounts still save the exact sent message to Sent, without Bcc.
Include uploaded draft attachments in encrypted workspace backups and restore new account-bound references atomically. The encrypted backup limit is 128 MiB (#86, #87).
Back up local workspace data in a passphrase-encrypted file and preview a merge before restoring. Existing records are preserved; credentials and cached mail bodies are excluded (#86).
Fixed
- Restore visible shared-button styling for custom-theme actions, including Create theme and Import theme.
- Give Projects, Agent review and All cached distinct sidebar icons so they are easier to distinguish from Contacts, Inbox and Drafts.
Added
- About and storage shows the running version and update status. Browser sessions show a short build ID and can check whether they match the host; desktop sessions use the existing stable-release checker (#143).
- Linux web hosting can stage and verify published stable releases, drain before switching, and restore the previous compatible build after failed startup. Failed releases require an explicit retry. Service and timer templates are provided; operators enable deployments explicitly (#109).
Fixed
Allow macOS updates from a read-only launch copy when exactly one canonical, writable Applications installation matches the running bundle. Recheck its digest before replacement without changing quarantine or Gatekeeper.
Preserve sender foreground contrast, live text-size preference changes and configured Enter shortcuts inside isolated email content.
Preserve supported sender colors, class-based columns and responsive width rules in an isolated email document. Scripts, remote styles and fonts remain blocked; privacy and per-opening image consent still apply (#135).
Documentation
- Clarify canonical contribution targets, stack dependencies, latest-target rebases, verification and review identities, and completion comments with reciprocal fix links across GitHub and git.cafe. Repository contribution procedures take precedence over generic personal skill defaults.
- Add README instructions for saved search views, Contacts imports and reviewed unsubscribe actions, and update the product capability summary.
0.2.18 - 2026-10-28
Added
Save cached-mail searches and filters as encrypted named views. Open, rename or delete them from Commands; reopening restores the account, mailbox, query, filters and sort. Names and unfocused search text stay hidden in privacy mode (#57).
Review sender-provided unsubscribe destinations in the reader. Confirm a direct HTTPS request, prepare a normal mailto draft, or check and open a manual link in the system browser. Unsafe destinations are refused, and nothing unsubscribes automatically (#58).
Open Contacts from the sidebar, find saved people or recent recipients, and import Google, Yahoo, Outlook-compatible CSV or UTF-8 vCard exports. Preview before saving; existing contacts stay intact and imported addresses appear in recipient suggestions. No developer account or paid service is required (#138).
Changed
- A single email opens without a duplicate conversation heading; message actions and errors remain available (#138).
Fixed
- Keep conversation history diagnostics in collapsed details, space message headers into readable rows, and show one applicable read-state action in each mail row (#138).
- Remember paired browsers across idle time, tab closes and host restarts. Retry temporary outages without discarding drafts or requiring another unlock. Keep explicit Lock and Remove device controls.
- Guide phone setup with styled sign-in and pairing pages, phone-initiated requests, QR or direct setup links, reload-safe approval and clear recovery instructions. Keep unopened invitations limited to two minutes and allow ten minutes to finish a claimed setup.
0.2.17 - 2026-10-27
Added
Schedule sends for tomorrow morning, Monday morning or a custom local time. Review, edit, cancel or reschedule them in Scheduled; missed or uncertain sends are never retried automatically (#60).
Add Undo send with an encrypted outbox and a composer delay control. Recover pending mail for review after restart or sleep; never retry an uncertain submission automatically (#55).
Forward cached mail as plain text, address multiple To recipients and add Bcc, with encrypted draft recovery and explicit attachment omissions (#51).
Read cached conversations inline, expand individual messages and choose an explicit message for actions. Keep history gaps visible and remote images blocked until activated for each opening. #54
Undo single-message Pin/Unpin and Snooze/Return from the confirmation or Commands. Changed mail is protected from stale Undo. #69
Select messages across accounts and triage up to 200 at once, with per-message outcomes and confirmed Trash. Ctrl/Cmd+A selects the current filtered list. #52
Mark mail unread or move archived mail back to Inbox from message actions, Commands or customizable shortcuts. #53
Changed
Choose Comfortable or Compact spacing in Appearance. Settings, Commands and the density shortcut share a saved value; changing spacing or text size keeps the selected row visible. #64
Open account Settings from readable keyboard-accessible warnings. Account status uses fixed safe messages and keeps Retry connection explicit. #63
Show exact cached-search filters and sort order. Empty results can widen the search without losing the query or account; Back restores the previous scope. #61
Notify browser users when the host has a new web build. Update when idle or choose Update now or Later; active editors and pending or uncertain writes prevent refresh. Restore the mail view and selected message afterward. Related to #109.
Fixed
Keep inline conversation Forward actions bound to the selected message (#124).
Keep browser update refresh paused when bulk mail actions report an unknown outcome.
Keep formatted email tables readable and show supported embedded images in their original position after Show images, including recovery of older cached imports (#133).
Keep midnight labels clear of the shaded outside-day notice in Calendar weeks that cross daylight-saving changes. #130
Keep a newer composer open when delayed Forward preparation completes, and prevent duplicate Forward requests (#51).
Keep draft dates clear of the Delete draft button and show the inbox's account labels and colour dots, including privacy-safe names when personal text is hidden. #115
Documentation
Give issue reports explicit scope, acceptance criteria and verification plans so contributors and agents can work from observable requirements. Separate planned checks from evidence, add missing bug-report environments and add privacy confirmations to feature requests.
Make pull requests easier to scan with explicit problem and result fields, before/after evidence, rollback and affected scope. Keep verification, ownership and review in collapsed blocks, and document stack merging with verification and review for each layer. Related proposal: #128
0.2.16 - 2026-10-27
Added
- Open Emc² on a phone through private Tailscale HTTPS. Pair with a one-use QR invitation, approve the matching code on the host, and unlock with a passkey. Revoke phone access from Settings. #84
- Add customizable two-key Gmail-style sequences and new shortcut defaults, including O to open, S to pin, B to snooze, A to reply all and G sequences for mail views. Retain single-key customization and existing saved bindings. #112
- Enable or disable mouse side-button history in Settings. Existing single-click and double-click opening preferences remain available. #112
Changed
- Show account status before the full cached mailbox finishes loading. Mail counts remain unknown until the snapshot is complete, and a failed read offers Retry loading mail. #108
- Reduce repeated cached-mail copying and skip unnecessary database rewrites while preserving mail, attachments and drafts. #107
- Distinguish the receiving account from sorting status in All accounts, including compact rows. Hide redundant account labels when one account is selected and retain privacy-safe labels. #104
- Use a navigation drawer, compact Settings picker, larger touch controls and stacked reply context on narrow screens. Keep the saved side-by-side mail layout visible when no message is open. #84
- Refresh visible browser inbox state on return to the tab and every 15 seconds. #84
Fixed
- Wait for a complete cached-mail snapshot before starting automatic browser sync, including after an initial read failure. #108
- Skip the empty reader when cycling keyboard focus with F6. #84
Security
- Protect browser access with expiring sessions, host-approved phone pairing and origin/CSRF checks. Keep browser data separate from desktop profiles and protect browser encryption keys in the OS credential store without a weaker fallback. #84
Documentation
- Require explanations when closing issues or pull requests, with links to merged fixes or ongoing work. #113, #114
- Separate this release from legacy unversioned notes and require clear, source-linked changelog entries and matching published release notes for future releases.
0.1.5
- Ship the background tray, native new-mail notifications, shortcut bar, context menus, brand logos and UI refresh with Windows, macOS and Linux installers.
- Release every merged main push automatically as a patch version with published installers; minor and major releases stay manual.
0.1.4
- Show total GitHub installer downloads across Windows, macOS and Linux on the showcase website, with a ten-minute cache and the last successful count retained during GitHub outages.
- Rename the application to Emc². Installers are published as
Emc²-0.1.4-win-x64.exe,Emc²-0.1.4-mac-arm64.dmg,Emc²-0.1.4-mac-x64.dmgandEmc²-0.1.4-linux-x64.AppImage. - Carry an existing installation across the rename in one automatic step: the first launch under the new name moves
mail,settings.envandLocal Statefrom the old app-data folder into the new one and marks the migration so it runs once. The old folder is left in place. - Rename the local MCP server to
emc2, so existingclaude mcp add --transport httpregistrations must use the new name. - Keep the Windows application id and the installer identity unchanged, so an installed copy is upgraded rather than installed alongside the old one.
0.1.3
- Add cross-platform CI and version-tag releases for Windows x64, macOS Apple silicon and Intel, and Linux x64 installers. Retain CI artifacts for one day and attach installer checksums to releases.
- Give each CI run and rerun a distinct application version and installer filename. Replace rebuilt platform artifacts on reruns. Keep tagged releases at the matching release version.
- Make HTTP and HTTPS URLs in email bodies clickable and keyboard accessible.
- Keep surrounding curly quotes outside email link destinations.
- Open HTTP links through the existing desktop browser handoff. Keep local API routes and unsupported protocols blocked.
- Keep message HTML escaped. In address privacy mode, mask URLs containing email addresses and omit their link targets.
- Record the inbox and Settings review in repository knowledge.
- Document the synthetic browser checks and the untested native Windows handoff.
- Add project agent instructions and contributor guidelines with repository links, verification commands and mail privacy safeguards.
- Add unsigned macOS DMG and ZIP packaging with a macOS icon derived from the existing artwork. The Windows installer command is unchanged.
- Add native macOS menus and spacing for window controls. Keep the mail service running when a user cancels quitting with an unsent draft.
- Use platform-neutral encryption errors and document macOS app-data storage.
- Exclude local environment files, private keys, mail databases and session records from packages, and expand Git ignore rules.
0.1.2
- Existing Windows release with sender logos, address privacy controls and MCP settings.