Linus Rath
1b816d3185
fix: standardize tag naming and fix unknown keyword display #184 #185
2026-04-12 15:37:57 +02:00
Linus Rath
24949e183f
feat: add i18n API, render hooks, and new intercept hooks to plugin system
2026-04-12 13:57:20 +02:00
Linus Rath
44e0e17203
chore: update version to 1.4.13
2026-04-12 02:17:54 +02:00
Linus Rath
b9c9901643
chore: update version to 1.4.13
2026-04-12 02:13:55 +02:00
Linus Rath
a201c1617b
feat: add onAvatarResolve plugin hook
2026-04-12 01:59:53 +02:00
Linus Rath
d24f402b0c
fix: style links in plain text emails
2026-04-12 01:38:53 +02:00
Linus Rath
5cfc905f10
fix: seed list history entry when app initializes on an email view
2026-04-12 01:33:28 +02:00
Linus Rath
4531cfe47c
fix: resolve TS errors from missing createAddressBook in demo client and client ref in thread view
2026-04-12 01:14:25 +02:00
Linus Rath
927a3b8b11
feat: store trusted senders in a dedicated JMAP address book #176
2026-04-12 01:10:28 +02:00
Linus Rath
4ad8396adc
fix: remount composer on draft edit and preserve identity #60
2026-04-12 00:11:36 +02:00
Linus Rath
ab57966a94
fix: search all folders when filtering emails by tag #175
2026-04-11 23:21:12 +02:00
Linus Rath
18d9b9adf6
fix: include mount prefix in SSO redirect URI when app is served under a subpath
2026-04-11 22:05:56 +02:00
Linus Rath
ed311d79e3
fix: resolve TS error from optional name.components in vcard parser
2026-04-11 20:56:45 +02:00
Linus Rath
457400ceee
fix: also display contact names stored in name.full #179
2026-04-11 20:15:49 +02:00
Linus Rath
88d87be685
fix: correct PWA icons with proper sizing, transparency, and dark/light mode support
2026-04-10 19:26:12 +02:00
Linus Rath
5ddb2acfc7
fix: category dropdown blocking Save button in contact form #177
2026-04-10 18:40:32 +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
4f54f768e8
Feat: enable keyword reordering #174 and multi-tag support per email #173
2026-04-10 17:31:13 +02:00
Linus Rath
3e85e07363
feat: separate branch containers into beta and dev packages
2026-04-10 14:46:04 +02:00
Linus Rath
facef97fcc
feat: publish main and dev branches as separate GHCR packages
2026-04-10 14:33:18 +02:00
Linus Rath
89d580b90d
feat: add don't remind me again option to install prompt for PWA
2026-04-10 14:20:48 +02:00
Linus Rath
734155c939
Merge branch 'main' of https://github.com/bulwarkmail/webmail
2026-04-09 22:22:48 +02:00
Linus Rath
790d7084af
fix: restore service worker and add manifest icons
2026-04-09 22:19:56 +02:00
Pascal Dietrich and Linus Rath
60efb047d8
docs: add SESSION_SECRET_FILE and OAUTH_CLIENT_SECRET_FILE env vars
2026-04-09 22:13:08 +02:00
Pascal Dietrich and Linus Rath
f9052eb23f
feat: add SESSION_SECRET_FILE and OAUTH_CLIENT_SECRET_FILE env vars
2026-04-09 22:13:08 +02:00
Linus Rath
9c5daa3918
chore: update version to 1.4.12
1.4.12
2026-04-09 20:08:03 +02:00
Linus Rath
23870801fc
chore: update version to 1.4.12
2026-04-09 20:04:06 +02:00
Davi Maciel and Linus Rath
ae793551ba
fix(email-list): show recipient in Sent and Drafts folders
...
When viewing the Sent or Drafts mailbox, the list items always
displayed the sender (email.from[0]) — which is always the logged-in
user — instead of the recipient. This makes it impossible to
identify messages by who they were sent to.
This change detects the current mailbox role from the store and
swaps the displayed person to email.to[0] when the role is 'sent'
or 'drafts'. For multi-email threads, participant names are
computed from the collected recipients of the thread's emails.
Affected components:
- EmailListItem (flat list, threading disabled)
- SingleEmailItem (single-email thread)
- ThreadListItem (multi-email thread header + avatar)
This matches the behaviour of Gmail, Outlook, Apple Mail, and
every other mainstream mail client.
2026-04-09 19:52:09 +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
d0cc439fd1
feat: add automatic identity synchronization ( #167 )
2026-04-09 19:39:04 +02:00
Linus Rath
f42f57b8d0
fix: preserve search filters on push-triggered mailbox refresh #164
2026-04-09 19:10:34 +02:00
Linus Rath
0d4b588fd0
feat: add Latvian (lv) locale support
2026-04-08 22:42:56 +02:00
Linus Rath
6a725dde58
feat: add Latvian (lv) locale support
2026-04-08 22:42:15 +02:00
Linus Rath
6499da6281
feat: sync mail view to browser history for back/forward navigation
2026-04-08 22:20:36 +02:00
Linus Rath
b2379fb03f
fix: align shared account folders with primary folders #151
2026-04-08 13:45:31 +02:00
Linus Rath
b29e71124d
fix: prune recent files against server nodes on refresh #146
2026-04-08 13:22:51 +02:00
Linus Rath
63593e2146
fix: use fetch param type instead of RequestInit
2026-04-08 13:18:07 +02:00
Linus Rath
10cbe7a637
fix: stream WebDAV PUT uploads to avoid buffering in memory #162
2026-04-08 13:16:28 +02:00
Linus Rath
79418f013a
fix: allow blob images in CSP for inline drag-and-drop #163
2026-04-08 13:10:04 +02:00
Linus Rath
4024732696
fix: handle 403 on principal fetch without console error
2026-04-08 13:08:46 +02:00
Linus Rath
ffad3ea78b
feat: Ability to rename address book #152
2026-04-08 13:05:42 +02:00
Linus Rath
a9b9aeb44d
fix: clamp Feb 29 birthdays in non-leap years #163
2026-04-08 12:47:24 +02:00
Linus Rath
3d76fe6d75
fix: focused mode expanding to the right of the screen #156
2026-04-08 12:43:48 +02:00
Linus Rath and GitHub
58cafe28ad
Update CONTRIBUTING.md
2026-04-07 10:17:30 +02:00
Linus Rath and GitHub
60f9a3dc4d
Update CONTRIBUTING.md
2026-04-07 02:28:06 +02:00
Linus Rath and GitHub
11d9db5580
Update CONTRIBUTING.md
2026-04-07 02:27:19 +02:00
lingxh and Linus Rath
05d3f0b469
add zh_cn
2026-04-07 01:11:04 +02:00
Sienna Meridian Satterwhite and Linus Rath
c3f60448ad
feat: configurable OAuth scopes and cookie security via env vars
...
Add three environment variables for deployments with external identity
providers (Keycloak, Authentik, Ory Hydra, etc.):
- OAUTH_EXTRA_SCOPES: append additional scopes to the default
"openid email profile" (e.g. "offline_access" for refresh tokens)
- OAUTH_SCOPES: full override of the requested OAuth scopes
- COOKIE_SECURE: override the Secure flag on auth cookies (useful
for reverse proxy setups where the internal hop is HTTP)
Without these, deploying Bulwark with an external OIDC provider that
requires `offline_access` for refresh tokens is impossible — sessions
die on every page refresh because no refresh token is issued.
All three are backwards-compatible: unset = identical to current behavior.
2026-04-06 23:22:06 +02:00
p.kwiatkowski and Linus Rath
523711cca3
feat: add Polish language support
2026-04-06 23:20:25 +02:00
Linus Rath
bcb487810a
feat: add Korean language support
2026-04-05 16:46:17 +02:00