Linus Rath
8d48f98261
fix: keep failed messages for the next import run and stop an import that can't go on
...
A message that failed for a passing reason (a dropped connection, a
server error, an expired token) used to count as done, so continuing
the import skipped it for good, and a slow upload followed by a cancel
imported the messages after it twice.
- The checkpoint keeps every message that is done, also past a gap,
and the next run of the same import tries only the rest again.
- Ten failures in a row, a full mailbox (overQuota) or a refusal
(forbidden) stop the import with a message instead of going through
the whole file.
- An upload without an answer pauses the import instead of failing the
message: 30 seconds, then until the upload window ends.
- Email/import, the export's Blob/get and folder listing pass the
client's own 429 pause by, and a 429 on them doesn't pause the rest
of the app.
- Signing out stops the job of that account only, writes no checkpoint
and imports nothing more afterwards; another account's sign-out
leaves the job alone.
- One tab imports a file at a time (Web Locks), and Import waits until
the dialog knows whether an earlier run can be continued.
The import dialog tests now wait for the Import button to be enabled
before clicking it, since it stays off during that lookup.
2026-11-01 06:37:08 +01:00
Linus Rath
75fbd18bb9
fix: space the icon on the import dialog's Choose files button
2026-11-01 05:53:08 +01:00
Linus Rath
4676be28e5
test: let held uploads go quietly when the import is cancelled
2026-11-01 05:47:58 +01:00
Linus Rath
c74426ffca
test: cover mbox and PST import and folder export against the test servers
2026-11-01 05:45:21 +01:00
Linus Rath
b07aad512a
fix: move the import progress bar message by message for mbox files
2026-11-01 05:45:15 +01:00
Linus Rath
d8f6be7b1e
fix: delete a finished export's file from the browser when its account signs out
2026-11-01 05:42:00 +01:00
Linus Rath
58f66c4fdc
fix: list the folders in the import dialog when it opens from Settings
2026-11-01 05:42:00 +01:00
Linus Rath
dd1e0e0b13
feat: keep read and flagged state from Thunderbird .eml files on import
2026-11-01 05:34:26 +01:00
Linus Rath
15f0bd198c
feat: export a folder or the whole account as mbox or ZIP
2026-11-01 05:28:58 +01:00
Linus Rath
c43d776b40
fix: keep an mbox message's arrival time and leave its state headers out on import
2026-11-01 05:26:55 +01:00
Linus Rath
a06281f23f
feat: import Outlook PST files into their folders
2026-11-01 05:13:02 +01:00
Linus Rath
d714957f98
feat: import mbox, EML and ZIP mail with progress, pause and resume
2026-11-01 04:58:55 +01:00
Linus Rath
be07e4780f
test: add helpers for the enterprise specs on the test servers
2026-11-01 04:20:02 +01:00
Linus Rath
bdac27367c
fix: keep the organisation's locks when the policy can't be fetched
2026-11-01 04:20:02 +01:00
Linus Rath
123018f322
feat: add the policy sections and admin pages for the enterprise features
2026-11-01 04:20:02 +01:00
Linus Rath
84de2395f0
fix: keep trusted senders from loading remote content anywhere while the organisation blocks it
2026-11-01 03:27:49 +01:00
Linus Rath
d2a83a4ee9
fix: stop proxying locale rewrites back to the server when it listens on 127.0.0.1 #1487
2026-11-01 02:41:42 +01:00
Linus Rath
d781e8762e
Merge branch 'feat/multi-instance'
2026-11-01 01:43:15 +01:00
Linus Rath
2e5397c228
test: mock the wizard session refusal in the setup telemetry consent test
2026-11-01 01:35:20 +01:00
Linus Rath
3f02ae0448
test: add multi-instance scenarios for a three-replica rig behind a round-robin load balancer #1066
2026-11-01 01:33:45 +01:00
Linus Rath
be7fde157e
test: expect the Pro shell to load shared folders with each login's own
2026-11-01 01:23:34 +01:00
Linus Rath
eb56ea441f
fix: list the User-Agent contact link as a non-request host
2026-11-01 01:22:17 +01:00
Linus Rath
acf125a52b
test: fail when server state skips the shared store without a listed reason #1066
2026-11-01 01:12:49 +01:00
Linus Rath
3a9aef7c50
feat: move plugins, themes, branding and the signing key with the shared-store import and export #1066
2026-11-01 01:08:34 +01:00
Linus Rath
70a7e1227c
fix: drop files of removed plugins on export and read only the approval files on import #1066
2026-11-01 01:07:30 +01:00
Linus Rath
ac29a94fc3
fix: cap the plugin packages kept for approval review and sweep broken kept-version folders #1066
2026-11-01 01:04:51 +01:00
Linus Rath
dcecd50b7f
fix: keep up to 256 rendered branding images per kind, enough for many domains #1066
2026-11-01 01:03:33 +01:00
Linus Rath
38bc06f2d3
fix: answer 503 for plugin lists and marketplace installs while the shared store is down #1066
...
directory-keys-shared.test.ts: the store-down case now expects the store error instead of an 'invalid' signature, since a store outage no longer counts as a bad signature.
2026-11-01 01:03:13 +01:00
Linus Rath
d78ce02f78
fix: refuse a plugin install that can't hold the registry lock and a bundle that doesn't match its entry #1066
2026-11-01 01:01:19 +01:00
Linus Rath
750f3114c1
fix: keep an old plugin's bundle hash when the shared store hiccups while it is fixed #1066
2026-11-01 00:58:33 +01:00
Linus Rath
b39e3e27ac
fix: cache a plugin signature only when it verifies for the cached bundle #1066
2026-11-01 00:57:21 +01:00
Linus Rath
d9f4bdd9be
fix: keep serving a plugin unsigned when its first signature can't be stored
2026-11-01 00:55:51 +01:00
Linus Rath
256855b294
fix: refuse to sign plugins on an instance whose signing key differs from the others #1066
2026-11-01 00:54:57 +01:00
Linus Rath
00e28e5f83
Merge branch 'feat/multi-instance' into feat/multi-instance-ext
2026-11-01 00:52:04 +01:00
Linus Rath
391f22cf7d
test: open attachments through the bar's tile button in the blob routing tests
2026-11-01 00:51:10 +01:00
Linus Rath
f25b9ea34b
fix: keep hidden buttons on attachment cards from catching taps
2026-11-01 00:48:41 +01:00
Linus Rath
23b50f8268
test: read the wrapped mkdir in the Dockerfile as one command
2026-11-01 00:47:30 +01:00
Linus Rath
c0c1a8f0fb
test: give the config route test the logger calls config-manager now makes
2026-11-01 00:46:42 +01:00
Linus Rath
e94d9c4326
fix: translate the attachment bar strings into every language
2026-11-01 00:45:33 +01:00
Linus Rath
905d841be4
chore: drop the outdated Stalwart/RocksDB warning from files
2026-11-01 00:41:41 +01:00
Linus Rath
ecdd2b54fe
chore: name the app Bulwark Webmail in exported files, outgoing requests and the manifest
2026-11-01 00:41:21 +01:00
Linus Rath
77a06a8aa0
fix: stop logging that the shared store is unreachable while its first connection is still being made
2026-11-01 00:39:01 +01:00
Linus Rath
26f0b72b2e
feat: write plugins, themes, approvals and branding back to local files on export #1066
2026-11-01 00:30:41 +01:00
Linus Rath
f250ff7b17
chore: describe the app as self-hosted webmail for mail, calendar, contacts and files
2026-11-01 00:28:17 +01:00
Linus Rath
355e57ca6c
Merge branch 'feat/multi-instance' into feat/multi-instance-ext
2026-11-01 00:28:15 +01:00
Linus Rath
ad7a8d713c
feat: bring plugins, themes, approvals and branding along when moving to a shared store #1066
2026-11-01 00:27:17 +01:00
Linus Rath
3c34eda260
fix: cap the cache of Stalwart admin checks so it can't grow without bound
2026-11-01 00:25:35 +01:00
Linus Rath
4842e08cde
fix: show shared mailboxes under each account when several are signed in #1486
2026-11-01 00:24:57 +01:00
Linus Rath
5efccb65e0
fix: show a re-uploaded logo or icon at once instead of after a restart
2026-11-01 00:24:07 +01:00
Linus Rath
a03f76ec85
feat: send X-Powered-By: bulwarkmail.org on every response
2026-11-01 00:21:32 +01:00