Linus Rath
989385f4f6
Merge branch 'feat/desktop-offline' into feat/do-ux-compose-fixes
...
# Conflicts:
# components/email/email-viewer.tsx
# components/settings/accessibility-settings.tsx
# lib/__tests__/settings-search.test.ts
# lib/settings-search.ts
2026-11-04 09:54:25 +01:00
Linus Rath
4a764150b2
Merge branch 'feat/desktop-offline' into feat/do-ux-settings-fixes
2026-11-04 09:22:44 +01:00
Linus Rath
ceaceb7f2a
Merge branch 'feat/desktop-offline' into feat/do-ux-compose-fixes
...
# Conflicts:
# components/email/email-composer.tsx
# components/email/email-viewer.tsx
# locales/ar/common.json
# locales/ca/common.json
# locales/cs/common.json
# locales/da/common.json
# locales/de/common.json
# locales/en/common.json
# locales/es/common.json
# locales/et/common.json
# locales/fa/common.json
# locales/fr/common.json
# locales/he/common.json
# locales/hu/common.json
# locales/it/common.json
# locales/ja/common.json
# locales/ko/common.json
# locales/lv/common.json
# locales/mn/common.json
# locales/nb/common.json
# locales/nl/common.json
# locales/pl/common.json
# locales/pt/common.json
# locales/ro/common.json
# locales/ru/common.json
# locales/sk/common.json
# locales/th/common.json
# locales/tr/common.json
# locales/uk/common.json
# locales/vi/common.json
# locales/zh-TW/common.json
# locales/zh/common.json
2026-11-04 09:20:50 +01:00
Linus Rath
91b237330e
Merge branch 'feat/desktop-offline' into feat/do-ux-settings-fixes
...
# Conflicts:
# components/settings/desktop-os-settings.tsx
# components/settings/notification-settings.tsx
# components/settings/protocol-handler-settings.tsx
2026-11-04 08:35:53 +01:00
Linus Rath
2f31b435a2
Merge branch 'feat/desktop-offline' into feat/do-menu-fixes
...
# Conflicts:
# components/desktop/desktop-host.tsx
2026-11-04 07:57:50 +01:00
Linus Rath
de09da137b
Merge branch 'feat/do-menu-winctl' into feat/do-menu-fixes
2026-11-04 07:50:16 +01:00
Linus Rath
242d0bacfc
fix: keep toasts at the bottom instead of over the composer's close button
2026-11-04 07:16:24 +01:00
Linus Rath
b7e9af0b1b
fix: sort the language list by each language's own name
...
The arrow-key test expected Slovenčina right after Česky for the query "sk"; in the sorted list Dansk comes between them, so it now expects Dansk.
2026-11-04 07:09:28 +01:00
Linus Rath
e29a6553e6
fix: keep notices and the offline bar clear of the window's controls, give each a close, and put a pane's close first where it would sit beside the window's
2026-11-04 07:02:53 +01:00
Linus Rath
3a9ec61232
fix: mark the row a menu is open for, and leave the item under the pointer alone until it moves
2026-11-04 07:00:56 +01:00
Linus Rath
141748e1d6
fix: show first-start notices one at a time above the message list, each with a close button
...
The dictionary test now reads the notice queue instead of the toasts: the
question is no longer a toast.
2026-11-04 06:29:23 +01:00
Linus Rath
4508eddccb
fix: keep a tall menu under its button and scroll it, instead of covering the button
2026-11-04 05:35:57 +01:00
Linus Rath
3fa82849a8
fix: open menus next to what opened them and show their keys apart from the label
2026-11-04 05:00:02 +01:00
Linus Rath
a802411cdd
feat: fire calendar reminders from the local store, with native snooze and join buttons and one summary of what was missed
2026-11-03 12:31:58 +01:00
Linus Rath
c13b87c0e8
fix: keep the undo toast off the header on phones #1472
2026-10-31 16:15:58 +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
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
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
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
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
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
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
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
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
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
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
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
b611d9c028
feat: refresh sender icons that changed on the sender's website #960
2026-10-17 19:18:18 +02:00
Linus Rath
41a0716c50
Merge branch 'main' into feat/stalwart-1.0
2026-10-16 01:41:48 +02:00
Linus Rath
937025be8d
fix: keep context menus inside the window when a plugin frame in them grows after opening
2026-10-14 09:25:26 +02:00
Linus Rath
c633185cda
Merge branch 'main' into feat/stalwart-1.0
...
# Conflicts:
# CONTRIBUTING.md
# LICENSE
# README.md
# app/api/calendar-agenda/route.ts
# app/api/wopi/files/[fileId]/contents/route.ts
# app/api/wopi/launch/route.ts
# components/calendar/calendar-app.tsx
# components/calendar/calendar-day-view.tsx
# components/calendar/calendar-month-view.tsx
# components/calendar/calendar-week-view.tsx
# components/calendar/event-modal.tsx
# components/contacts/contact-detail.tsx
# components/email/email-composer.tsx
# components/email/email-list.tsx
# components/files/file-browser.tsx
# components/files/files-app.tsx
# components/files/folder-tree-sidebar.tsx
# components/filters/filter-rule-modal.tsx
# components/mail/mail-app.tsx
# hooks/use-mailbox-drop.ts
# integration/run-tests.sh
# lib/__tests__/calendar-agenda-route.test.ts
# lib/__tests__/jmap-draft-lifecycle.test.ts
# lib/__tests__/web-push.test.ts
# lib/account-state-manager.ts
# lib/jmap/client-interface.ts
# lib/jmap/client.ts
# lib/jmap/types.ts
# lib/message-list-order.ts
# lib/sieve/generator.ts
# lib/sieve/parser.ts
# lib/telemetry/payload.ts
# lib/thread-utils.ts
# lib/unified-mailbox.ts
# lib/web-push.ts
# lib/wopi/token.ts
# locales/ar/common.json
# locales/ca/common.json
# locales/cs/common.json
# locales/da/common.json
# locales/de/common.json
# locales/en/common.json
# locales/es/common.json
# locales/fa/common.json
# locales/fr/common.json
# locales/he/common.json
# locales/hu/common.json
# locales/it/common.json
# locales/ja/common.json
# locales/ko/common.json
# locales/lv/common.json
# locales/mn/common.json
# locales/nb/common.json
# locales/nl/common.json
# locales/pl/common.json
# locales/pt/common.json
# locales/ro/common.json
# locales/ru/common.json
# locales/sk/common.json
# locales/tr/common.json
# locales/uk/common.json
# locales/zh-TW/common.json
# locales/zh/common.json
# scripts/lite/lib.mjs
# stores/__tests__/calendar-store-synthetic-ids.test.ts
# stores/__tests__/email-store-shared-folder-keywords.test.ts
# stores/__tests__/email-store-unified-actions.test.ts
# stores/__tests__/file-store.test.ts
# stores/email-store.ts
# stores/file-store.ts
# stores/message-list-tabs-store.ts
2026-10-12 08:35:08 +02:00
Linus Rath
4b282e7064
fix: give touch tips in the welcome banner on a phone
2026-10-11 20:09:31 +02:00
Linus Rath
a5c60ef597
fix: hide Undo send when the delay is over and say when an undo fails
2026-10-11 19:13:10 +02:00