Linus Rath
391ed6c018
Merge branch 'fix/security-audit-2026-10'
2026-10-19 12:58:50 +02:00
Linus Rath
9f3441c783
fix: accept both fetch response types in the capped feed reader
2026-10-19 01:36:16 +02:00
Linus Rath
546f34f47e
fix: cap concurrent upstream favicon fetches
2026-10-19 01:32:29 +02:00
Linus Rath
d13aada077
fix: bound how many CalDAV probes one discovery request can make
2026-10-19 01:32:29 +02:00
Linus Rath
703a15663f
fix: keep the extension directory URL off private addresses
2026-10-19 01:32:25 +02:00
Linus Rath
71036c1812
fix: validate the marketplace version and refuse a silent downgrade on update
2026-10-19 01:32:24 +02:00
Linus Rath
5632097971
fix: type the capped feed reader and the invitation sender lookup
2026-10-19 01:32:23 +02:00
Linus Rath
0b01a2d066
fix: ask before handing a sign-in to the mobile app and only to its own callback link
2026-10-19 01:22:19 +02:00
Linus Rath
044c98e6d2
fix: cap the size of a synced settings blob
2026-10-19 01:15:04 +02:00
Linus Rath
c0b6519136
fix: stop reading a calendar feed at the size cap instead of buffering it whole
2026-10-19 01:15:04 +02:00
Linus Rath
e6064f3476
fix: only connect and proxy plugin credentials that a plugin known to the server declares
2026-10-19 01:07:50 +02:00
Linus Rath
31326c7daf
fix: keep OAuth client secrets and the session secret out of the admin audit log, config API and dashboard writes
2026-10-19 00:50:16 +02:00
Linus Rath
f91b214719
fix: key synced settings on the account a token login resolves to, not on a bare claimed name
2026-10-19 00:45:11 +02:00
Linus Rath
89ef4d14f2
fix: budget failed sign-ins per client and forward the client address to the mail server
2026-10-19 00:43:00 +02:00
Linus Rath
38c983a886
fix: open the mention card on click and show on hover that the chip is clickable
2026-10-19 00:38:01 +02:00
Linus Rath
8da659fd8c
feat: install any version from the marketplace and show updates, withdrawn versions and advisories
...
The marketplace now talks to the extension directory's v2 API only. The
detail page lists every version, previews the one picked, installs it,
and refuses a version the publisher withdrew unless the admin confirms,
or one outside the Bulwark range it supports. The listing gains sort, an
Installed view and an updates strip fed by the directory's updates check,
with notices for advisories, deprecations and suspensions.
A self-hosted directory older than 2026-10-14 has no v2 API and no
longer works with the marketplace.
2026-10-19 00:09:39 +02:00
Linus Rath
dd0da783c6
feat: keep replaced plugin and theme versions and roll back to them
2026-10-19 00:08:10 +02:00
Linus Rath
dc837c25f2
feat: let an install link name the extension version to offer in the marketplace
2026-10-19 00:07:04 +02:00
Linus Rath
fbae8acfb8
feat: turn @mentions into chips with a hover card
2026-10-18 17:52:11 +02:00
Linus Rath
f3482ce020
fix: remember restored sign-ins only when the restoring account is remembered
2026-10-18 14:39:59 +02:00
Linus Rath
100da43991
Merge pull request #1247 from lucamzanon/feat/account-archive-passwords
...
feat: optionally keep mailbox passwords in the account list backup
2026-10-18 14:34:31 +02:00
Linus Rath
58eff0e879
Merge pull request #1258 from HOLOEYE-JZ/feat/archive-feature-gate
...
feat: admin policy gate to turn off archiving #1257
2026-10-18 14:29:27 +02:00
Linus Rath
8e7245b26c
feat: let the theme policy set and lock the color mode #1280
2026-10-18 13:46:49 +02:00
Linus Rath
4adbad25f6
feat: end the provider session through a configured logout URL #1279
2026-10-18 13:46:48 +02:00
Linus Rath
b811ad93cb
fix: use the theme's sans font for the whole app #1278
2026-10-18 13:46:47 +02:00
Linus Rath
8583c9efef
feat: hide the version from the connector probe when the login page hides it #896
2026-10-17 19:18:21 +02:00
Linus Rath
b611d9c028
feat: refresh sender icons that changed on the sender's website #960
2026-10-17 19:18:18 +02:00
Linus Rath
deb106736e
fix: load the admin panel when the config is read-only #1249
2026-10-17 19:17:48 +02:00
Linus Rath
a854447346
fix: apply admin policy defaults to user settings #1248
2026-10-17 19:17:46 +02:00
Linus Rath
76d12cff30
feat: ask before leaving the admin panel with unsaved changes #1255
2026-10-16 22:44:38 +02:00
Linus Rath
20b0c9b0b5
fix: refuse OAuth auto-setup before touching Stalwart when the config is read-only #1250
2026-10-16 22:35:07 +02:00
Jacob Zeitz and Claude Opus 5.5
99b0bced3b
feat: admin policy gate to turn off archiving #1257
...
A new feature gate, archiveActionEnabled (default on), lets the admin turn the
Archive action off for installations that archive mail elsewhere, such as a
mail gateway. With it off, Bulwark offers no Archive anywhere: the viewer's
button and its overflow entry, the context menu for one or several messages,
Mountain View's selection bar, the hover and swipe actions, the E shortcut and
its help row, archiving after an export, and the archive mode setting (also in
the settings search). With it off nothing creates an Archive folder:
ensureArchiveMailbox returns null. Existing Archive folders stay ordinary
folders, moving mail into them by hand still works, and the plugin API is
unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 20:48:28 +02:00
lucamzanon
db38ad320e
feat: optionally keep mailbox passwords in the account list backup
...
Part 2 of 3 of the account archive agreed in #1198 . When the admin turns on
"Account List Backup: Passwords" (off by default), saving the list offers to
include the passwords of the accounts signed in here with a plain password.
They are encrypted in the browser together with the list. On restore, those
accounts are signed in to in the background, one by one, without leaving the
active account; a refused password leaves the account waiting for a sign-in by
hand, as before. OAuth and TOTP accounts are saved without a password.
2026-10-16 05:46:46 +02:00
Linus Rath
0b49d01a76
fix: keep synced calendar subscriptions from stale devices and past deletions #1064
2026-10-15 23:54:37 +02:00
Linus Rath
a852001d4f
feat: let admins turn off the custom From address in the composer
2026-10-15 14:43:07 +02:00
Linus Rath
1cc949416c
perf: load the mail view's code while the login form is shown
2026-10-15 03:24:05 +02:00
Linus Rath
db2c0aff3d
perf: load conversation sizes with the folder page instead of in a second request
2026-10-15 00:14:57 +02:00
Linus Rath
e7bf3c6e42
test: add a benchmark-sized message corpus to the dev mock
2026-10-14 23:51:17 +02:00
Linus Rath
15edc5943b
feat: check the extension directory's signature before installing from the marketplace
2026-10-14 21:36:50 +02:00
Linus Rath
3d5c46bbcf
fix: make plugin sidebar rows as tall as folder rows on phones
2026-10-14 18:49:56 +02:00
Linus Rath
eba711bd54
Merge branch 'feat/plugin-system-audit'
2026-10-14 18:09:19 +02:00
Linus Rath
7464e4db93
fix: reset the browser's button look on kit components that are a button themselves
2026-10-14 14:08:41 +02:00
Linus Rath
633df44090
fix: keep the sign-in response small enough for proxies with large OIDC tokens #1237
2026-10-14 13:59:41 +02:00
Linus Rath
1bd4f743a1
feat: give plugins the app's own controls and draw their dialogs like the app's dialogs
2026-10-14 11:10:14 +02:00
Linus Rath
607f1b2496
feat: let plugin notifications carry a link to the plugin's own server
2026-10-14 10:58:19 +02:00
Linus Rath
c3cf0ddcff
feat: tell plugins whether the admin has set up their accounts and keys
2026-10-14 08:24:28 +02:00
Linus Rath
49511dff38
feat: let plugins read their own non-secret admin settings without the admin permission
2026-10-14 06:23:10 +02:00
Linus Rath
86e593a752
feat: add a command palette on Ctrl+K where plugins can add their own commands
2026-10-14 05:10:10 +02:00
Linus Rath
b8b7a4ed15
feat: let plugins add pages of their own with an entry in the navigation
2026-10-14 04:57:00 +02:00
Linus Rath
5d9268c923
feat: let plugins add buttons, calendar day labels and pages, and use connected accounts from the sandbox
2026-10-14 04:31:43 +02:00