Commit Graph
2094 Commits
Author SHA1 Message Date
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 0731d24f65 feat: show a small picture of what each accessibility preset changes 2026-10-29 23:47:14 +01:00
Linus Rath 605a3983b1 feat: show a warning shield instead of the sender icon when the sender check fails 2026-10-29 21:13:36 +01:00
Linus Rath ed988a2aae ci: keep the a11y guard out of lint and vitest and mock narrowerThan in attachment tests 2026-10-29 21:08:59 +01:00
Linus Rath c0fb427eec feat: tick a row from anywhere beside its avatar or checkbox #1381 2026-10-29 20:53:52 +01:00
Linus Rath f1d6b3b815 Merge branch 'main' of https://github.com/bulwarkmail/webmail 2026-10-29 20:28:40 +01:00
Linus Rath 2e6dcceebb Merge pull request #1358 from illuwa-soft/fix/full-height-app-page
fix: honor full-height app-page slots
2026-10-29 20:27:00 +01:00
Linus Rath 357b6af3c9 feat: offer to remove a cancelled meeting from the calendar in the cancellation mail #1425 2026-10-29 20:24:27 +01:00
Linus Rath b25e738a3e fix: give calendar default alerts account-wide unique ids #1435 2026-10-29 20:06:16 +01:00
Linus Rath a78d03a18d fix: color attachment icons by file type in the reader like in the list 2026-10-29 20:06:15 +01:00
Linus Rath 5dfc958723 fix: stop a mail's own body overflow from adding a second scrollbar in the reader 2026-10-29 20:06:15 +01:00
Linus Rath 2e13accade fix: draw avatar initials in black or white so they read on every colour 2026-10-29 19:59:16 +01:00
Linus Rath d552a3bb86 fix: give the message preview full contrast and the conversation toggle a 24px target 2026-10-29 19:53:58 +01:00
Linus Rath 6a54fcc5af test: give the phone settings test the media query helper 2026-10-29 19:38:46 +01:00
Linus Rath 2c3292e980 fix: size the policy page's small text in rem 2026-10-29 19:38:46 +01:00
Linus Rath 12676f247e fix: let the spam game's inbox flash at most three times a second 2026-10-29 19:38:46 +01:00
Linus Rath 597b546e11 fix: keep the calendar period title readable at 320px wide 2026-10-29 19:38:45 +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 f43eb9f41a fix: give chip remove buttons, tree expanders, task circles and month events a 24px target 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 a1ee9035de fix: scroll without gliding when reduce motion is on 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 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 6ca53f24cd fix: line up settings tabs with the search field 2026-10-29 19:17:36 +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 8333870c82 fix: keep a click on a message row from costing an extra render 2026-10-29 19:01:36 +01:00
Linus Rath 8e201954b4 fix: make the message list one Tab stop that screen readers read row by row
The list was a stack of clickable divs. Screen readers heard nothing when
j or k moved the selection, every row added several Tab stops (Compose
sat 253 Tabs from the top), and a deleted message left the focus on the
page.

The list is now a treegrid named "Messages": one Tab stop, rows named in
one sentence (unread, sender, subject, date, flags, and the preview when
that setting is on), conversations with aria-expanded and their
messages a level down, position and list size on every row. j, k and the
arrows move the focus with the selection, Space ticks a row, Enter opens
it, Shift+F10 or the menu key opens its actions, and after a delete the
focus lands on the next row. With the actions button setting on, each
row shows a button for the same menu, for pointers that can't hover or
right-click.
2026-10-29 18:53:05 +01:00
Linus Rath 8b85f63c75 fix: label the value a locked setting gives users 2026-10-29 18:28:32 +01:00
Linus Rath 38f7edf02f fix: give the help links in the account menu icons like the other rows 2026-10-29 18:28:32 +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 48a2b596d5 feat: name the locks and defaults a policy file import changes 2026-10-29 18:27:35 +01:00
Linus Rath 58f01fe7a3 feat: let admins lock a setting to a chosen value and preset any setting, accessibility options included 2026-10-29 18:27:35 +01:00
Linus Rath 4aa8d09198 fix: keep glossary buttons out of heading names 2026-10-29 18:10:29 +01:00
Linus Rath bc60638c17 test: cover plain language in the Lite export 2026-10-29 18:10:29 +01:00
Linus Rath 5e188998a7 feat: explain technical terms next to their labels in Settings and the admin area 2026-10-29 18:10:29 +01:00
Linus Rath 724c45d6e3 feat: add short explanations for technical terms that work with keyboard, touch and screen readers 2026-10-29 18:07:46 +01:00
Linus Rath bb739c7445 feat: use plainer English and German wording for sign-in and error messages when plain language is on 2026-10-29 18:07:44 +01:00
Linus Rath b4483b8739 test: give the mail app tests the category tab panel props 2026-10-29 18:03:01 +01:00
Linus Rath 4e2affe406 fix: name the remaining search boxes, filter fields and settings inputs that only had a placeholder 2026-10-29 18:03:00 +01:00
Linus Rath f73643bbbd fix: name the template, advanced search and admin server fields 2026-10-29 18:03:00 +01:00
Linus Rath 0e2a05e0ea fix: name the event editor's title, date, time and select fields 2026-10-29 18:03:00 +01:00
Linus Rath dcc21acd07 fix: name the security settings fields and let a settings row's label name its field 2026-10-29 18:03:00 +01:00
Linus Rath 2038054b0b fix: tie the setup wizard's labels and hints to their fields 2026-10-29 18:02:59 +01:00
Linus Rath ef13556a01 fix: give every contact form field a label screen readers read out 2026-10-29 18:02:59 +01:00
Linus Rath 6143aaa80d fix: move the focus into the batch tag menu and make the full-screen compose window a dialog 2026-10-29 18:02:59 +01:00
Linus Rath 9c913d4d79 fix: hold and return the focus in file previews, the document editor and other full-screen overlays 2026-10-29 18:02:59 +01:00
Linus Rath b96d875776 fix: make the account picker and the admin OAuth and plugin code dialogs proper modals 2026-10-29 18:02:58 +01:00