PRODUCT.md

Emc²

Platform

Windows, macOS and Linux desktop, plus an experimental standalone Android IMAP/SMTP client. See Android scope and limits.

Stack

Electron with React and TypeScript. Bundled mail service and local SQLite persistence. The user explicitly corrected the initial browser implementation and requested a desktop app matching the video frames.

Product Purpose

Build the email aggregation client demonstrated in Ryan Vogel's supplied video. The user requested real inbox connections with OAuth setup.

Capabilities and Constraints

One inbox across accounts, split into Primary, Social, Promotions, Newsletters, Transactions and Updates tabs. A small importance marker flags high-relevance mail. Keyboard navigation and account filtering. Teachable sorting. Gmail OAuth and IMAP providers. Installable Windows application with its own runtime and local app-data storage. Optional local MCP access lets AI clients read cached mail and reply through the running app. MCP is off by default, uses an encrypted persistent bearer token, and requires a separate opt-in for sending replies. Settings includes Interaction controls for keyboard shortcuts and single-click or double-click opening, plus Accounts, Sorting, Connection, MCP and About. Double-click remains the default. The reader preserves supported sender formatting through a bounded safe subset; remote images require activation for each opening. Show images also works while personal text is hidden; image URLs containing detected private information stay blocked, and enabling privacy clears prior image consent.

macOS updates can download the published architecture-matching DMG and verify its size and SHA256 against the same release. The app drains pending mail and drafts, replaces the app in its writable installed location, retains the previous app and requests a restart through macOS. Manual dragging is not required by this update route. Failed or uncertain launches retain recovery copies. This route needs no developer tools or Apple Developer account; the built-in downloader must support bounded transfers. Local source installation remains available for maintainers. The app uses explicit ad-hoc signing, without a developer certificate or notarization. Downloaded-app trust acceptance remains a macOS decision; the updater does not bypass it. Native menus, Command editing shortcuts and Keychain-backed database-key protection remain. See the installer-update decision and the source-installation decision.

This is a maintainer-led open-source project. Public contributions must exclude personal information, local machine details, credentials and private runtime data. See the desktop packaging decision and the macOS signature correction.

Evidence on Hand

The local confirmed-work experiment opens on Today. Users confirm commitments and link their evidence, then explicitly complete, cancel or reopen each deliverable. Projects group conversations and decisions with approval before combining accounts. Sent and All cached views expose the imported evidence; bounded history is never presented as complete. Teach previews scoped conditions. Agent mail changes require exact proposal review. Separately granted local creation tools can save single-account projects and open commitments immediately without per-item review; these permissions are off by default. Compose supports Cc and small attachments. The built-in calendar displays date-only deadlines and optional timed follow-ups, with month and agenda views. Follow-ups stay local and require explicit rescheduling or clearing; they do not complete commitments. Plan work adds explicit local sessions to a tracked task. Sessions have their own planned, finished and removed lifecycle and Busy or Free meaning. Multiple sessions leave the task deadline, follow-up, completion, history and email unchanged. Scheduling checks local calendar conflicts only; it excludes Google calendars. Sessions cannot send invitations or become Google events. Their encrypted saved state supports read-only recovery after uncertain writes. See the local-session decision. See the experiment and acceptance examples.

Cached-mail search supports combined text, quoted phrases, exclusions, sender/recipient/subject/body/account fields, read state, local pins and UTC date boundaries across every connected account and cached mailbox, including Sent, Archive and Snoozed, plus saved local drafts. A new query starts globally; deliberate account, mailbox and mail filters narrow it. Plain unquoted words tolerate one typo; exact phrases, fields, addresses and exclusions retain their semantics. Search coverage is limited to imported mail and local drafts. Commands opens from the sidebar or Command+K on macOS and Control+K elsewhere. Settings, Compose manages plain-text templates and per-account signatures in the existing encrypted store. Templates append text without replacing a draft; signatures follow the chosen sending account when their suffix is unchanged. Local pins survive sync and do not change provider flags. In-app toasts report later unread arrivals, sending and operation outcomes; errors and delivery warnings require dismissal. Up/Down select closed-list mail while editors and the reader retain their arrow behavior.

qsgWf9eTSH3hwijq.mp4. Full machine transcript in .reference/transcript.txt. Gmail, iCloud, Fastmail, Yahoo, and custom IMAP are described in the video. Cloudflare mailbox creation is a future idea, outside this implementation.

Brand Commitments

Use a macOS-style interface in light and dark with a collapsible full-height sidebar, per-pane headers, selectable themes and accents, optional OS-material transparency, calm near-neutral working panes, a reading pane beside the list, and short, smooth state transitions. Keep compact inbox density available, and preserve keyboard navigation and reduced-motion support. No decorative cards, pills, or slogans. No live browser testing, per user instruction.

Saved views, contacts and unsubscribe review

Named saved views restore cached-mail searches, accounts, mailboxes, filters and sort through Commands. Definitions use encrypted local storage; unavailable accounts or labels prevent opening. Privacy hides names and unfocused queries.

Contacts is a sidebar page with saved contacts, recent recipients and previewed CSV/vCard imports. Contacts are account-scoped and feed recipient suggestions. Imports preserve existing contacts and need no provider API credentials.

Reader unsubscribe actions require destination review and explicit confirmation. Supported actions send an HTTPS request, prepare an unsent mailto draft or check a manual browser link. Sender-supplied destinations are not authenticated; unsafe destinations are blocked and uncertain outcomes never retry automatically. See the user guide and implementation limits.

Undo send

User Send queues an encrypted local snapshot with a configurable Off, 5, 10 (default) or 30 second delay. Undo restores the exact draft before submission. The app must be running to send. Restarted pending mail requires review, and unknown outcomes require checking the provider before an explicitly confirmed resend. There is no recall after provider acceptance. Send later adds local presets and custom times, with a Scheduled list for edit, cancel and reschedule. Emc² must remain running and online; sleep, restart and missed offline schedules require review.