From 7494fc1776dfd39bd55726dfa06a2ba67f8e74c1 Mon Sep 17 00:00:00 2001
From: Linus Rath <139418639+rathlinus@users.noreply.github.com>
Date: Wed, 22 Apr 2026 23:49:44 +0200
Subject: [PATCH] chore: update version to 1.5.0
---
FEATURES.md | 124 +++++++++++
README.md | 315 ++++++----------------------
app/api/dev-jmap/[...path]/route.ts | 3 +-
screenshots/calendar.png | Bin 282812 -> 248796 bytes
screenshots/contacts.png | Bin 235687 -> 215580 bytes
screenshots/files.png | Bin 127929 -> 0 bytes
screenshots/inbox whitemode.png | Bin 365013 -> 0 bytes
screenshots/inbox.png | Bin 335602 -> 0 bytes
screenshots/login.png | Bin 186730 -> 0 bytes
screenshots/mail-dark.png | Bin 0 -> 263800 bytes
screenshots/mail-white.png | Bin 0 -> 269292 bytes
screenshots/plugins.png | Bin 0 -> 187543 bytes
screenshots/settings.png | Bin 206795 -> 184835 bytes
screenshots/theme.png | Bin 0 -> 196569 bytes
14 files changed, 193 insertions(+), 249 deletions(-)
create mode 100644 FEATURES.md
delete mode 100644 screenshots/files.png
delete mode 100644 screenshots/inbox whitemode.png
delete mode 100644 screenshots/inbox.png
delete mode 100644 screenshots/login.png
create mode 100644 screenshots/mail-dark.png
create mode 100644 screenshots/mail-white.png
create mode 100644 screenshots/plugins.png
create mode 100644 screenshots/theme.png
diff --git a/FEATURES.md b/FEATURES.md
new file mode 100644
index 00000000..a7ca6bb3
--- /dev/null
+++ b/FEATURES.md
@@ -0,0 +1,124 @@
+# Features
+
+## Mail
+
+- Read, compose, reply, reply-all, and forward with a Tiptap rich text editor (inline images, drag-and-drop embedding)
+- Gmail-style threading with inline expansion and an optional conversation toggle
+- Unified mailbox view across all connected accounts
+- Draft auto-save with identity preservation
+- Attachment upload, download, and inline preview; forgotten-attachment warning
+- Full-text search with JMAP filter panel, search chips, wildcards, OR conditions, and cross-mailbox queries
+- Batch operations — multi-select, archive, delete, move, tag
+- Archive modes — direct, by year, or by month
+- Multi-tag support with color labels, reordering, and drag-and-drop assignment
+- Star/unstar with configurable mark-as-read delay
+- Virtual scrolling for large mailboxes
+- Quick reply, hover actions, sender avatars (favicon-based), and recipient popovers
+- Plain-text composer mode and Reply-To support
+- TNEF (`winmail.dat`) extraction and `message/rfc822` unwrapping
+- Folder management with icon picker, subfolders, and sidebar counts
+- Print directly from the viewer
+- Browser history sync for back/forward navigation
+
+## Calendar
+
+- Month, week, day, and agenda views with a mini-calendar sidebar and task list
+- Drag-to-reschedule, click-drag creation, and edge-resize with 15-minute snap
+- Recurring events with scoped edit/delete (this / this and following / all)
+- iMIP invitations on create and update (RFC 5545 / 6047), organizer/attendee UI, and RSVP with trust assessment
+- Inline calendar invitations in the email viewer — auto-detect `.ics`, RSVP, import
+- iCalendar import with preview, bulk create, and UID deduplication
+- iCal / webcal subscriptions with editing and batch import
+- Auto-generated birthday calendar from contacts
+- Virtual locations (video conference URLs) as first-class event fields
+- Task management with due dates, priority, and completion status
+- Shared calendars with CalDAV discovery and multi-account home resolution
+- Week numbers, event hover preview, notifications with sound picker
+- Real-time sync via JMAP push
+
+## Contacts
+
+- JMAP sync (RFC 9553 / 9610) with local fallback
+- Multiple address books with drag-and-drop between books
+- Contact groups with member management
+- vCard import/export (RFC 6350) with duplicate detection
+- Trusted senders stored in a dedicated JMAP address book
+- Autocomplete in the composer (To / Cc / Bcc)
+
+## Filters & Templates
+
+- Server-side filters via JMAP Sieve Scripts (RFC 9661)
+- Visual rule builder with expanded view; conditions (From, To, Subject, Size, Body…) and actions (Move, Forward, Star, Discard…)
+- Preserves rules authored in other clients
+- Raw Sieve editor with syntax validation
+- Vacation responder with date range scheduling
+- Reusable email templates with placeholder auto-fill (`{{recipientName}}`, `{{date}}`, …)
+
+## Files
+
+- JMAP FileNode browser (Stalwart native cloud storage)
+- Streamed WebDAV PUT upload and folder upload with progress tracking
+- Dynamic upload limits based on server configuration
+- Grid and list views with sorting by name, size, or date
+- Previews for images, text, audio, and video
+- Clipboard operations (cut, copy, paste, duplicate), favorites, and recent files
+
+## Security & Privacy
+
+- External content blocked by default, with a trusted senders list
+- HTML sanitization via DOMPurify
+- S/MIME — manage certificates, sign, encrypt, decrypt, and verify; legacy 3DES / PBE support; per-account key isolation
+- SPF / DKIM / DMARC status indicators
+- OAuth2 / OIDC with PKCE (Keycloak, Authentik, or built-in), OAuth-only mode, OAuth app passwords, and non-interactive SSO for embedded deployments
+- TOTP two-factor authentication
+- Account security panel for password and 2FA management via the Stalwart admin API
+- Optional "Remember me" via AES-256-GCM encrypted httpOnly cookie
+- Enforced CSP with per-request nonce, SSRF redirect validation, PDF iframe sandbox, and IP spoofing prevention
+- Plugin hardening with dangerous-pattern detection and admin approval
+- Newsletter unsubscribe (RFC 2369)
+
+## Interface
+
+- Three-pane layout with resizable columns
+- Dark and light themes with intelligent email color transformation
+- Responsive desktop, tablet, and mobile layouts
+- Full keyboard navigation
+- Drag-and-drop email organization and tag assignment
+- Interactive guided tour for new users
+- Right-click context menus, toast notifications with undo
+- Customizable toolbar position, favicon, and login branding
+- Pinnable sidebar apps with drag-and-drop reordering
+- Encrypted settings sync across devices
+- Storage quota display
+- WCAG AA contrast, reduced-motion support, focus trap, and screen reader live regions
+
+## Internationalization
+
+14 languages: English · Français · 日本語 · Español · Italiano · Deutsch · Nederlands · Português · Русский · 한국어 · Polski · Latviešu · 简体中文 · Українська
+
+Automatic browser detection with persistent preference. Configurable locale URL prefix via `NEXT_PUBLIC_LOCALE_PREFIX`.
+
+## Identity & Multi-Account
+
+- Up to 5 simultaneous accounts with instant switching and per-account session persistence
+- Account switcher with connection status and default account selection
+- Multiple sender identities with per-identity signatures, automatic sync, and badges in viewer/list
+- Sub-addressing (`user+tag@domain.com`) with contextual tag suggestions
+- Shared folders across accounts
+- Optional custom JMAP endpoints on the login form (`ALLOW_CUSTOM_JMAP_ENDPOINT`)
+
+## Admin & Extensibility
+
+- Stalwart admin dashboard with dedicated policy sections
+- Plugin system — schema-driven config UI, render and intercept hooks, `onAvatarResolve` and i18n APIs, calendar event slots, and managed policy enforcement
+- Themes — upload, enforce, and manage admin-controlled themes as ZIP bundles
+- Extension marketplace — browse and install plugins and themes from a configurable directory (`EXTENSION_DIRECTORY_URL`)
+- Bundled plugins including Jitsi Meet calendar integration
+
+## Operations
+
+- Progressive Web App with service worker, install prompt, and dynamic manifest
+- Automatic update check with server-side logging of new releases
+- Structured logging (`text` or `json`) with category-based levels
+- Release (`main`) and development (`dev`) Docker images on GHCR
+- Demo mode with fixture data — no mail server required
diff --git a/README.md b/README.md
index dacbf432..702b24df 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,7 @@
# Bulwark Webmail
-A modern, self-hosted webmail client for [Stalwart Mail Server](https://stalw.art/).
-Built with Next.js and the JMAP protocol.
+A modern, self-hosted webmail client for [Stalwart Mail Server](https://stalw.art/), built with Next.js and the JMAP protocol.
[](LICENSE)
[](https://discord.gg/tYCujymGrT)
@@ -22,228 +21,56 @@ Built with Next.js and the JMAP protocol.
## Screenshots
+
+
-
-
-
-**Mail** - Three-pane layout with sidebar, email list, and viewer
-
- |
-
-
-
-
-**Calendar** - Month, week, day, and agenda views with event management
-
- |
+![]() |
+![]() |
-
-
-
-**Contacts** - Contact management with groups and vCard support
-
- |
-
-
-
-
-**Files** - Cloud file browser with upload, preview, and folder navigation
-
- |
+Calendar — month, week, day, and agenda views with drag-to-reschedule, iMIP invitations, and CalDAV subscriptions. | +Contacts — multiple address books, groups, vCard import/export, and autocomplete in the composer. | +
![]() |
+![]() |
+||
| Themes — bundled color themes or upload your own as ZIP bundles; admins can enforce presets. | +Plugins — extend the client with bundled or third-party plugins installed from a .zip file. | +||
![]() |
+![]() |
+||
| Light mode — full theme support with intelligent color transformation for HTML emails. | +Settings — appearance, identities, filters, templates, security, and more. |
+## Overview
-
+Bulwark is a full webmail suite — not just an inbox. It bundles the four apps most self-hosters end up wanting on the same login:
-**Light mode** - Full theme support with intelligent color transformation
+- **Mail** — threading, unified inbox, full-text search, Sieve filters, S/MIME, templates
+- **Calendar** — month/week/day/agenda, recurring events, iMIP invitations, CalDAV subscriptions
+- **Contacts** — multiple address books, groups, vCard import/export
+- **Files** — Stalwart's JMAP FileNode storage with previews and folder upload
- |
-
+Plus the infrastructure around them: OAuth2 / OIDC SSO, TOTP 2FA, multi-account (up to 5 at once), 14 languages, PWA install, dark/light themes, a plugin system with an extension marketplace, and a Stalwart admin dashboard.
-
-
-**Settings** - Appearance, identities, filters, templates, and more
-
- |
-
-
-
-
-**Login** - Configurable branding with OAuth2/OIDC and 2FA support
-
- |
-- | -
Hallo!
This is a sample email to help you get started with the Bulwark Webmail development environment.
Feel free to explore the UI - all data here is mock data.
Beste Grüße,
Sophie
N2`ha{+}~eCsBw6g
z+^r<4mVBPENst`GS^66qlj}w!`N_1+wgG5=;l0^|(|e5#wj^C;M;?4|X3$=FZ>PKY
z5+&uu(@?2_HfF`0j7<`?%Fg6pBPi>i$-FC7BksukR|46$a~eR0=Ys+H)>&!u!(o}d
zL&R8iPefMU5HQAXRfv*+#L2*Rr6zYy^>=f__mZ&}LjA2$B1WhBm}jNR2FM-qOQoh=
zx93WkmaL|U(@mE*r(ZaFBu!Rv$U!v&zrFXv(8_%uT7+aTl@9UbrPFOZgabAp=c$jB6R4$Tc0Y~?