Linus Rath
df1f5cd6a4
fix: give a pair step-up attempt back only to the windows it was counted in #1066
2026-11-01 00:05:09 +01:00
Linus Rath
10abf7273c
test: check that pairing, the policy Bearer check and the SSO hand-off answer 503 while the shared store is down #1066
2026-11-01 00:03:20 +01:00
Linus Rath
47ec029717
fix: give a hand-off redeem back when the store fails, and hand out a sign-in whose tombstone couldn't be written #1066
2026-11-01 00:03:19 +01:00
Linus Rath
7748c75a6a
Merge branch 'feat/multi-instance' into feat/multi-instance-auth
2026-10-31 23:47:48 +01:00
Linus Rath
ca5f2cf09c
feat: let the mobile app redeem a sign-in hand-off through any instance #1066
2026-10-31 23:19:36 +01:00
Linus Rath
26cc7c68c3
feat: let a phone pair through any instance and keep pairing secrets sealed in the shared store #1066
2026-10-31 23:16:11 +01:00
Linus Rath
ff0d2dc6e1
feat: stop sending a refused stored password from any instance once one has seen it refused #1066
2026-10-31 23:07:12 +01:00
Linus Rath
388daf767b
feat: count sign-in, pre-check, pair step-up and hand-off limits across every instance #1066
2026-10-31 23:04:05 +01:00
Linus Rath
fd4a319eae
feat: show the storage and how many instances checked in on the admin overview #1066
2026-10-31 22:46:08 +01:00
Linus Rath
1b2d81be27
feat: hold each instance back until it has loaded from the shared store and add a readiness check #1066
2026-10-31 22:40:51 +01:00
Linus Rath
35508913ac
feat: show marketplace screenshots above the versions and open them large on click
2026-10-31 18:55:05 +01:00
Linus Rath
d23a2869d1
Merge remote-tracking branch 'origin/main' into fix/found-fix-server
...
# Conflicts:
# Dockerfile
# docker-compose.yml
2026-10-31 18:17:39 +01:00
Linus Rath
f884ffe441
Merge branch 'fix/found-fix-ui' into fix/found-fix-server
2026-10-31 18:17:13 +01:00
Linus Rath
f6eb34c909
fix: remove the admin switch for user theme uploads, which users can't do
2026-10-31 18:10:03 +01:00
Linus Rath
ddc24e4fc7
fix: let a browser an admin signed in from before past the shared admin login limit
2026-10-31 17:55:29 +01:00
Linus Rath
825d6e76f8
fix: let admins switch off usage stats by clearing the collector address
2026-10-31 17:51:09 +01:00
Linus Rath
f11ddf82dd
fix: tell banner plugins when an admin opened the mailbox through impersonation
2026-10-31 17:48:29 +01:00
Linus Rath
65ec66b8ef
fix: send embedded-mode messages to the parent origin set in the admin console
2026-10-31 17:43:03 +01:00
Linus Rath
ea604ab8a1
fix: keep the open folder regular weight in mountain view so bold only means unread #1469
2026-10-31 16:31:15 +01:00
Linus Rath
b8223a4492
Merge pull request #1466 from HOLOEYE-JZ/feat/plugin-open-email
...
feat(plugins): api.ui.openEmail opens a message in the reader
2026-10-31 16:25:05 +01:00
Linus Rath
1e462fc67e
Merge pull request #1436 from shukiv/fix/impersonation-expired-app-passwords
...
fix: let a mailbox be opened through the handoff more than five times
2026-10-31 16:24:52 +01:00
Linus Rath
5931cd1678
feat: send an oauth resource indicator when one is configured #1461
2026-10-31 16:14:35 +01:00
Linus Rath
3bdbdb1364
docs: move the mobile hand-off contract to the website
2026-10-31 14:32:39 +01:00
Jacob Zeitz
54ad6390b3
feat(plugins): api.ui.openEmail opens a message in the reader
...
A plugin opens a message as a click on a list row or on a search result
entry naming one does, also a message of a shared or group account,
reached through the login that reads it. On the mail page it opens in
place, in the Pro shell in an email tab as a message link does there;
elsewhere the tab loads the message's link, at most five times a minute.
A message no login reads, or one its account does not have, is refused
with an error the plugin sees, as is one the mail page could not open.
Needs email:read.
2026-10-31 14:14:48 +01:00
Linus Rath
f74ff49f58
feat: give the mobile app its organisation policy for its access token
2026-10-31 14:10:53 +01:00
Linus Rath
fb3ba0275a
feat: hand the mobile app a one-time code instead of the sign-in in its link
2026-10-31 14:06:44 +01:00
Linus Rath
2de0ee8e30
fix: keep tag text readable on unread, selected and hovered rows
2026-10-31 02:20:40 +01:00
Linus Rath
1706f951bb
fix: open menus in place with reduced motion instead of flashing in the corner first
2026-10-31 02:00:15 +01:00
Linus Rath
cabb174108
feat: register a client for bulwark mobile in the oauth auto-setup #1459
2026-10-31 00:56:49 +01:00
Linus Rath
dee2c07ce9
Merge branch 'main' of https://github.com/bulwarkmail/webmail
2026-10-30 11:05:11 +01:00
Linus Rath
8098039d69
feat: show booking cards only for mail from verified senders
2026-10-30 04:41:29 +01:00
Linus Rath
66351e0d31
feat: show admins the changelog of every plugin version an update brings or a rollback undoes
2026-10-30 02:02:40 +01:00
Linus Rath
80476d1ad2
feat: show a multi-line text box for plugin admin settings that ask for one
2026-10-30 00:17:32 +01:00
Linus Rath
cf0eb03c4a
feat: show the sender's BIMI logo as the sender icon when the message passes DMARC
...
Stalwart does no BIMI, so sender icons were only ever favicons, which
anyone controls for any domain. The webmail server now does the
receiver side itself at /api/bimi, and avatars ask it only for
messages whose own Authentication-Results say dmarc=pass for the exact
From domain.
- `lib/bimi/`: DMARC policy check (quarantine or reject, pct=100, the
parent domain's sp and p for subdomains), the assertion record with
fallback to the parent domain, mark certificate validation (chain to
pinned DigiCert, GlobalSign and SSL.com VMC roots, BIMI key purpose,
validity, SAN, SCTs present, CRL revocation, logo from the logotype
extension), SVG Tiny PS checks and rendering to PNG, caching
- logos backed only by the DNS record show by default; the admin
setting "Require a mark certificate" (`BIMI_REQUIRE_CERTIFICATE`)
limits them to VMC and CMC backed ones
- a check mark beside the sender's name for certificate-backed logos
- avatars try contact photo, BIMI logo, plugin avatar, favicon; the
sender warning shield still wins, and logos follow the sender icons
setting and the no-third-party-traffic mode
- the two-label public suffix list moved to `lib/root-domain.ts`
SCT signatures are not verified and only the default selector is used.
2026-10-30 00:12:24 +01:00
Linus Rath
50b3ddccec
feat: let admins keep the refresh token valid on sign-out so Stalwart keeps the consent #1388
2026-10-29 20:47:18 +01:00
Linus Rath
0b4e501142
feat: make the login email placeholder configurable #1423
2026-10-29 20:24:26 +01:00
Linus Rath
d875714f35
feat: offer remember me on the sso-only login and apply it to every sso path #1437
2026-10-29 20:06:44 +01:00
Linus Rath
a86023787f
fix: give Aurora Glass solid surfaces, menus and dialogs when transparency is reduced
2026-10-29 19:38:46 +01:00
Linus Rath
35be105a73
fix: size small text in rem so it follows the browser and app text size
2026-10-29 19:38:45 +01:00
Linus Rath
7f74fcf9bf
fix: move toasts away from the focused control and keep focus clear of sticky headers inside panes
2026-10-29 19:38:45 +01:00
Linus Rath
b22968a7df
fix: show the message list, not only the reader, with a large browser text size and wrap cut-off labels
2026-10-29 19:38:45 +01:00
Linus Rath
e57e922950
feat: make buttons, menu items, rows and switches 44px when large targets is on
2026-10-29 19:38:45 +01:00
Linus Rath
9f6c7b99c9
fix: raise text contrast to 4.5:1 in every built-in theme, light and dark
2026-10-29 19:38:45 +01:00
Linus Rath
7525fe18e4
fix: keep switches, selections and pressed buttons visible in Windows contrast themes
2026-10-29 19:38:44 +01:00
Linus Rath
c4dfa6f3e4
fix: draw the focus outline on plugin kit buttons, fields and switches
2026-10-29 19:38:44 +01:00
Linus Rath
1111dd6709
fix: show the focus outline on menu items, grid cells and other roving-focus controls
2026-10-29 19:38:44 +01:00
Linus Rath
be423637fc
feat: show one column and an optional paged message list in simple mode
2026-10-29 19:14:41 +01:00
Linus Rath
315e292706
feat: show the accessibility and help links on the login page, in the settings sidebar and in the account menu
2026-10-29 18:28:06 +01:00
Linus Rath
623c9e1792
feat: let operators set accessibility statement, barrier report, help, Easy Read and sign language links
2026-10-29 18:27:35 +01:00
Linus Rath
48a2b596d5
feat: name the locks and defaults a policy file import changes
2026-10-29 18:27:35 +01:00