Lucas Gaitzsch
d04a8e578b
disable password managers for recipients
2026-05-22 18:01:31 +02:00
Lucas Gaitzsch
5c1d59f38a
fixes from review
2026-05-22 13:13:13 +02:00
Lucas Gaitzsch
159706a683
Merge branch 'main' into feature/scheduled-send
...
# Conflicts:
# app/(main)/[locale]/page.tsx
# components/layout/sidebar.tsx
# stores/email-store.ts
# stores/settings-store.ts
2026-05-22 12:31:06 +02:00
Lucas Gaitzsch
7dccc2f432
fixes from review
2026-05-22 12:21:32 +02:00
Linus Rath
ac4a89120d
fix: preserve inline images when replying #163
2026-05-22 12:06:55 +02:00
Linus Rath
fc5f6f43d6
feat: expose PWA, app identity, and extension directory keys in JSON config #312
2026-05-21 23:35:58 +02:00
Linus Rath
dbc0eea148
feat: group composer From dropdown by account in Pro shell
2026-05-21 23:07:02 +02:00
Lucas Gaitzsch
3dc1b4ceee
rework
2026-05-20 19:56:28 +02:00
Lucas Gaitzsch
891c3250be
Merge branch 'main' into feature/scheduled-send
2026-05-20 08:17:46 +02:00
Linus Rath
d530d9614b
fix: serialize draft autosave with send to stop replies stalling in Drafts #303
2026-05-19 23:33:11 +02:00
Linus Rath
cf9292262d
feat: pluggable reply/forward quote header #295
2026-05-18 17:53:23 +02:00
Linus Rath
3ceada7b8a
fix: tighten HTML sanitization at plain-text email + signature + i18n render sites
2026-05-18 16:07:34 +02:00
Timo Streule and Linus Rath
c54cf73c3a
fix: respect safe-area insets on mobile bottom bars
2026-05-15 23:50:29 +02:00
Linus Rath
c646c87030
fix: standardize punctuation in tooltips and comments across multiple locales and code files
2026-05-14 21:44:24 +02:00
Linus Rath
ce2731cd9d
fix: update types for cursor and toRemove
2026-05-12 16:04:46 +02:00
Linus Rath
f9f8af2f11
fix: preserve signature styling and reactivity in above-quote mode #272
2026-05-12 16:03:10 +02:00
Linus Rath
5f3d2d3e4a
feat: signature above quoted text option #266
2026-05-11 17:05:59 +02:00
Augustin Marcin and Linus Rath
b0640c9ecc
feat(compose): From override + catch-all auto-reply ( fixes #246 )
...
Adds an Override toggle in the composer's From row. When enabled, name
and address become free-text inputs. Mail is still submitted through the
selected identity, but the outgoing message's From: header — and the
SMTP envelope MAIL FROM when different — is set from the override.
The existing "Auto-select Reply Address" setting is extended: if the
incoming message was addressed to an alias on a domain that matches one
of your identities but isn't itself an identity (classic domain catch-
all), it now auto-enables Override and pre-fills the alias. Quick reply
honors the same resolution. The setting is relabeled to reflect the
broader behavior.
JMAP: client.sendEmail gains an optional envelopeMailFrom; when set, the
EmailSubmission includes an explicit envelope with that mailFrom and the
to/cc/bcc as rcptTo so header-From and envelope can diverge (JMAP §7.3).
S/MIME: override is incompatible with sign/encrypt and is refused with a
clear error — signing a different visible From from the identity's
certificate Subject would produce messages clients reject.
Tests: resolveReplyFrom covers exact match, sub-address stripping,
catch-all detection, identity preference, and foreign-domain null.
2026-05-11 12:13:47 +02:00
Linus Rath
51745ea03d
feat: web setup wizard + admin config/state dir split ( #226 )
2026-05-09 17:37:41 +02:00
Chance and Linus Rath
c44a9ce6e0
fix: fall back to primary identity signature on reply
...
When auto-select picks an alias identity matching the original recipient,
the alias often has no signature configured. The composer was using the
alias's empty signature for both the visual preview and the appended
signature on send, so neither showed up. New mail worked because no
auto-select runs.
Add a signatureIdentity that falls back to the primary when the current
identity has no signature. From address, identity ID, S/MIME, and draft
saves still use currentIdentity so mail goes out from the right address.
2026-05-09 14:21:05 +02:00
Lucas Gaitzsch
f45b67fe19
fix
2026-05-08 22:37:16 +02:00
Lucas Gaitzsch
c458091698
add new shortcuts
2026-05-08 20:41:19 +02:00
Lucas Gaitzsch
37cd5ca635
Merge remote-tracking branch 'origin/main' into feature/scheduled-send
...
# Conflicts:
# app/[locale]/page.tsx
# components/email/email-composer.tsx
# components/email/email-viewer.tsx
2026-05-07 18:01:41 +02:00
Linus Rath
178922323d
chore: update version to 1.6.2
2026-05-06 20:07:36 +02:00
Linus Rath
43475945bf
fix: update comment for external-mail warning
2026-05-06 01:54:28 +02:00
Lucas Gaitzsch
154ae84247
Scheduld Send
2026-05-05 20:11:11 +02:00
Linus Rath
2a769c2b0a
feat: run onBeforeEmailSend hook before send, expose fromEmail on OutgoingEmail
2026-05-05 20:04:00 +02:00
Linus Rath
1521826d37
feat: add functionality to automatically add recipients to trusted senders when replying
2026-05-02 23:50:50 +02:00
Linus Rath
f970fd1822
feat: add plugin hooks for compose, attachments, search, lifecycle, and routing
2026-05-02 21:27:56 +02:00
Linus Rath
c555973b6b
feat: configurable sub-addressing delimiter #239
2026-05-01 01:42:06 +02:00
Linus Rath
65eef4b2b8
fix: persist htmlBody in drafts to preserve rich formatting #236
2026-04-30 15:24:09 +02:00
Linus Rath
25de7d996c
feat: add tables to composer #236
2026-04-30 15:16:51 +02:00
Linus Rath
7188abc9bc
fix: set In-Reply-To and References on replies #234
2026-04-30 01:25:04 +02:00
Linus Rath
d657aec391
feat: add support for right-side composer sidebar and update related types
2026-04-25 19:45:45 +02:00
Linus Rath
fe1d4861bb
feat: composer-sidebar slot + plugin-declared frame-src origins
2026-04-25 18:40:54 +02:00
Linus Rath
30c4afb977
i18n: add missing translation keys
2026-04-21 17:42:52 +02:00
Linus Rath
89d8282846
fix: include original attachments when forwarding an email #214
2026-04-21 13:58:02 +02:00
Linus Rath
d4f7ae522e
fix: use cid references for inline images #163
2026-04-18 00:57:46 +02:00
Linus Rath
f22699fe20
feat: add unified mailbox across accounts and sidebar icons toggle
2026-04-14 17:36:13 +02:00
Linus Rath
5f150f039d
feat: warn on send when attachment keyword found but no file attached #172
2026-04-10 18:24:52 +02:00
Linus Rath
f19aaf6207
fix: embed dropped images as data URLs and prevent duplicate attachment #163
2026-04-09 19:50:42 +02:00
Linus Rath
9d8c6044e3
fix: optimize htmlToPlainText function using DOMParser
2026-04-02 17:32:53 +02:00
Linus Rath
0f7638055c
fix: auto-focus input fields in email composer for improved user experience #126
2026-03-31 16:10:14 +02:00
Linus Rath
c512352f77
fix: add replyToAddresses to email composer
2026-03-30 15:27:50 +02:00
Linus Rath
ddb636ed73
feat: add auto-select reply identity feature with settings and localization
2026-03-27 23:58:42 +01:00
Linus Rath
b75d064f20
feat: add plain text only setting for email composer #105
2026-03-27 00:38:11 +01:00
Linus Rath
76b21147e4
feat: add plugin/theme harness and admin dashboard
...
Plugin & Theme System:
- Add plugin type definitions, permissions (30+), and validation constants
- Add IndexedDB storage layer for plugin code, theme CSS, and previews
- Add theme CSS sanitization, injection, and safety validation
- Add HookBus event system with 130+ hooks across 20 domains
- Add plugin ZIP extraction and manifest validation with JS security checks
- Add sandboxed PluginAPI factory with scoped storage, logging, and permission gating
- Add plugin loader with blob URL dynamic import and auto-disable circuit breaker
- Add 3 built-in themes (Nord, Catppuccin, Solarized)
- Add Zustand plugin store with install/uninstall/enable/disable lifecycle
- Add PluginSlot, PluginSlotRenderer, and PluginErrorBoundary components
- Add plugins and themes settings UI panels
- Integrate plugin slots into email viewer, composer, navigation rail, sidebar, and context menu
- Extend theme store with custom theme installation and activation
Admin Dashboard:
- Add admin authentication with scrypt password hashing and AES-256-GCM sessions
- Add rate-limited login (5 attempts/15min per IP)
- Add config manager with admin override > env var > default priority
- Add settings policy system with feature gates and per-setting restrictions
- Add audit logging with rotation
- Add admin API routes (login, logout, config, policy, audit, password change)
- Add admin UI pages (login, dashboard, config, policy, audit)
- Add policy store for client-side feature gate enforcement
- Wire admin password initialization into server instrumentation
Tests:
- Add 139 tests across 10 test files covering all plugin/theme modules
2026-03-25 00:44:03 +01:00
Linus Rath
de26e6da2e
feat: enhance identity selection by supporting sub-addressing in email options
2026-03-24 14:33:50 +01:00
Linus Rath
df272e38ef
feat: add resizable image component and rich text editor with image upload support
2026-03-21 20:45:23 +01:00
Linus Rath
2547c10060
feat: add demo data for emails, files, filters, identities, mailboxes, vacation responses, and JMAP client interface
...
- Created demo emails with various states (inbox, sent, drafts, trash, etc.) in `emails.ts`.
- Added demo file nodes representing directories and files in `files.ts`.
- Implemented demo Sieve capabilities and scripts in `filters.ts`.
- Defined demo identities for users in `identities.ts`.
- Established demo mailboxes with permissions and counts in `mailboxes.ts`.
- Created a demo vacation response in `vacation.ts`.
- Introduced a comprehensive JMAP client interface in `client-interface.ts` to standardize interactions with the JMAP API.
2026-03-21 01:38:42 +01:00