Matthieu MALVACHEandClaude Sonnet 4.5 da9fa4e28a feat(email): add spam reporting with bidirectional handling
Implement comprehensive spam management allowing users to report spam emails and restore false positives. Emails are moved to/from the Junk folder with toast notifications and undo support.

Key features:
- Mark as spam: moves email to Junk folder with 5-second undo
- Mark as not spam: restores email from Junk to inbox
- Batch spam operations via context menu
- Smart toggle based on current folder (Junk vs other folders)
- Keyboard shortcut (Shift+!) for quick spam reporting
- Full i18n support (EN/FR)
- Shared mailbox compatibility

UX improvements:
- Toast notifications with undo action using sonner library
- Auto-deselect email after spam action
- Visual distinction with red destructive styling
- Desktop button + context menu + keyboard shortcuts

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-08 17:55:24 +01:00

JMAP Webmail

A modern, privacy-focused webmail client built with Next.js and the JMAP protocol.

Screenshots

Login

Login

Inbox

Inbox

Email Viewer

Email Viewer

Compose

Compose

Dark Mode

Dark Mode

Settings

Settings

Features

Core Email

  • Modern UI - Clean, minimalist three-pane layout
  • Email Threading - Gmail-style conversation view with inline expansion
  • Real-time Updates - Push notifications for new emails via EventSource
  • Attachments - Upload and download file attachments
  • Search - Full-text email search with pagination
  • Draft Auto-save - Never lose your work while composing

Identity & Privacy

  • Identity Management - Multiple email identities with custom signatures
  • Sub-Addressing - Generate tagged email addresses (user+tag@domain.com) for better organization
  • External Content Blocking - Privacy protection with user-controlled image loading
  • Shared Folders - Multi-account access with proper ID namespacing

User Experience

  • Keyboard Shortcuts - Navigate efficiently with vim-style hotkeys (j/k, r, f, etc.)
  • Context Menus - Right-click for quick actions on emails
  • Drag & Drop - Move emails between folders with native HTML5 DnD
  • Color Tags - Organize emails with color labels
  • Dark Mode - Full dark theme support with system preference detection
  • i18n - English and French language support with auto-detection
  • Mobile Responsive - Adaptive single/multi-pane layout for all screen sizes

Tech Stack

  • Framework: Next.js 16 with Turbopack
  • Styling: Tailwind CSS v4
  • State: Zustand
  • Protocol: JMAP (RFC 8620)
  • i18n: next-intl

Getting Started

# Install dependencies
npm install

# Run development server
npm run dev

Open http://localhost:3000 and connect to your JMAP server.

Configuration

Create a .env.local file:

APP_NAME=Your Webmail
JMAP_SERVER_URL=https://your-jmap-server.com

Runtime vs Build-time Configuration

Variable Type Description
APP_NAME Runtime App name displayed in the UI
JMAP_SERVER_URL Runtime JMAP server URL (required)
NEXT_PUBLIC_APP_NAME Build-time Legacy fallback for app name
NEXT_PUBLIC_JMAP_SERVER_URL Build-time Legacy fallback for server URL

Runtime variables are read at request time, enabling post-build configuration (ideal for Docker).

Build-time variables are baked into the bundle and require a rebuild to change.

License

MIT

S
Description
Modern JMAP webmail client built for Stalwart Mail Server. Privacy-focused, responsive, with real-time updates.
Readme MIT
6.8 MiB
Languages
TypeScript 99.1%
CSS 0.7%
JavaScript 0.1%