141 Commits
Author SHA1 Message Date
Linus Rath 341b84fe19 Merge pull request #1448 from vietnamvps/add-vietnamese
feat(i18n): add Vietnamese language support
2026-10-31 16:24:47 +01:00
Linus Rath c13b87c0e8 fix: keep the undo toast off the header on phones #1472 2026-10-31 16:15:58 +01:00
vietnamvps 2aa39d93de feat(i18n): add Vietnamese flag icon 2026-10-30 11:09:33 +07:00
vietnamvps 50bcf01d75 feat(i18n): add Vietnamese to language picker 2026-10-30 11:07:04 +07: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 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 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 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 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 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 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 ef13556a01 fix: give every contact form field a label screen readers read out 2026-10-29 18:02:59 +01:00
Linus Rath 4af4404962 feat: undo the last mail actions with Ctrl+Z or z, newest first 2026-10-29 17:53:46 +01:00
Linus Rath be5e2dbc53 feat: hold toasts while focused and jump to the newest with Alt+Shift+N 2026-10-29 17:53:45 +01:00
Linus Rath e2fc2c750a feat: read toasts out to screen readers, errors assertively 2026-10-29 17:53:44 +01:00
Linus Rath 36d13b76bd feat: add app-wide live regions for screen reader announcements 2026-10-29 17:53:44 +01:00
Linus Rath f23784a488 feat: open submenus, previews and the rail peek only on click when hover opening is off 2026-10-29 17:53:37 +01:00
Linus Rath 14519269cf feat: reorder tags, filter rules, apps, accounts and Pro tabs without dragging 2026-10-29 17:53:37 +01:00
Linus Rath 39eb38a0fa fix: give the mail, calendar, contacts, files and settings headers one search field and one button style 2026-10-28 22:16:48 +01:00
Linus Rath d9afc9b643 fix: open the reader's more menu in place instead of sliding in from the right 2026-10-28 21:04:30 +01:00
Linus Rath 96797597c5 Merge branch 'main' into feat/org-features 2026-10-28 15:14:34 +01:00
Linus Rath addf330bd0 fix: keep toasts out of the way of an open menu on phones and hold their countdown until it closes 2026-10-28 12:49:09 +01:00
Linus Rath 8566cf2b29 Merge branch 'ux/calendar3' 2026-10-28 11:06:37 +01:00
Linus Rath 2f790a2d75 fix: keep toasts above the Save and Cancel buttons of the contact and group forms 2026-10-28 10:43:55 +01:00
Linus Rath 89200e44af fix: hide key hints in menus on touch screens 2026-10-28 09:49:38 +01:00
Linus Rath 3a888e11cc fix: open the import calendar dialog with the focus on the drop zone so Tab stays inside it 2026-10-28 09:46:41 +01:00
Linus Rath f60ddf3f95 fix: give a message the same actions in its row menu, the reader's ⋮ and the phone panel, Print, View source, Export and Pin included, and one menu look for Mail's ⋮, Move, Tag and composer menus 2026-10-28 07:42:24 +01:00
Linus Rath e2908676ec fix: give menu rows, the phone More panel's close and the subject star a 44px touch target 2026-10-28 07:00:24 +01:00
Linus Rath 43dd87b301 Merge branch 'main' into ux/mail 2026-10-28 05:16:28 +01:00
Linus Rath 5104a1d376 fix: insert and remove links in the app's own dialog instead of a browser prompt 2026-10-28 04:48:11 +01:00
Linus Rath 1a747ac9dd feat: limit the page's CSP to the configured hosts with no third-party traffic #903 2026-10-28 04:30:41 +01:00
Linus Rath d78f245b40 fix: make the shell's small buttons easy to tap on phones: notifications, account menu, welcome tips, tour, toasts and the search clear button 2026-10-28 04:19:21 +01:00
Linus Rath 86ff6f5bb2 fix: keep the welcome tips when Escape is pressed elsewhere in the app 2026-10-28 03:22:05 +01:00
Linus Rath 553f1e9149 feat: add a switch that stops all third-party traffic #903 2026-10-28 02:19:06 +01:00
Linus Rath b08bb61a96 fix: open the keyboard shortcuts at the top instead of scrolled down to the tour link 2026-10-28 02:05:50 +01:00
Linus Rath 41ffc8af29 fix: keep a dialog's title in view while its content scrolls 2026-10-28 02:04:35 +01:00
Linus Rath b1678edbf5 feat: add a shared empty state and loading spinner 2026-10-28 01:49:11 +01:00
Linus Rath 03304a3cdc fix: show toasts above the phone's bottom bars, newest at the bottom, and let a swipe dismiss them 2026-10-28 01:48:36 +01:00
Linus Rath 635ee883b2 fix: make menus work from the keyboard and keep tapped submenus open 2026-10-28 01:42:06 +01:00
Linus Rath 838577876e feat: add one dialog shell and build the confirm and name prompts on it 2026-10-28 01:17:46 +01:00
Linus Rath c0fa11e5ec feat: add an icon button that always has an accessible name 2026-10-28 01:11:21 +01:00
Linus Rath f8b061f07c feat: add dense button sizes and a 44px touch hit area to every button 2026-10-28 01:10:58 +01:00
Phumiphat Kanjanachotipong f6325e741d feat(i18n): Add Enterprise Thai (th) localization catalog & integration 2026-10-27 07:36:03 +00:00
Linus Rath 8940f45baa fix: apply a custom calendar color picked in the system color dialog #1366 2026-10-26 20:01:09 +01:00
Linus Rath cf2c27157d Merge branch 'main' into feat/stalwart-1.0
# Conflicts:
#	components/contacts/contacts-app.tsx
#	components/email/__tests__/composer-discard.test.tsx
#	components/email/calendar-invitation-banner.tsx
#	components/email/email-composer.tsx
#	components/mail/mail-app.tsx
#	components/pro/pro-compose-tab-body.tsx
#	components/pro/pro-email-tab-body.tsx
#	components/ui/__tests__/avatar.test.tsx
#	components/ui/avatar.tsx
#	hooks/use-mailbox-drop.ts
#	lib/__tests__/calendar-alerts.test.ts
#	lib/__tests__/jmap-calendar-tasks.test.ts
#	lib/__tests__/jmap-send-threading.test.ts
#	lib/demo/demo-client.ts
#	lib/demo/fixtures/calendars.ts
#	lib/jmap/client-interface.ts
#	lib/jmap/client.ts
#	lib/web-push.ts
#	stores/__tests__/contact-store.test.ts
#	stores/__tests__/email-store-thread-key.test.ts
#	stores/calendar-store.ts
#	stores/contact-store.ts
#	stores/email-store.ts
2026-10-26 10:14:12 +01:00
Linus Rath 782d4f8bf5 perf: stop loading the app's stores in every plugin frame 2026-10-25 02:09:37 +02:00