Linus Rath
4333cc4080
fix: find time zones by abbreviation and list the exact offset first
2026-11-04 12:04:32 +01:00
Linus Rath
17350c45ca
fix: give the out-of-office reply a short toolbar and date fields that say what empty means
2026-11-04 12:04:06 +01:00
Linus Rath
760a400074
feat: turn out of office off from the banner in the mail sidebar
2026-11-04 12:04:03 +01:00
Linus Rath
39e43de51e
fix: offer to apply a filter rule to the Inbox from its dialog, not a passing toast
2026-11-04 12:04:01 +01:00
Linus Rath
fadef1aee6
Merge branch 'feat/do-ux-compose-fixes' into feat/desktop-offline
2026-11-04 10:04:56 +01:00
Linus Rath
a1673dd77a
Merge branch 'feat/desktop-offline' into feat/do-ux-compose-fixes
2026-11-04 09:59:11 +01:00
Linus Rath
a2559713e9
test: compare the plugin kit's text area with the signature editor it now copies
2026-11-04 09:55:40 +01:00
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
aa62855759
Merge branch 'feat/do-ux-settings-fixes' into feat/desktop-offline
...
# Conflicts:
# components/layout/__tests__/account-switcher-mountain-view.test.tsx
# components/layout/account-switcher.tsx
# components/settings/accessibility-settings.tsx
# components/settings/reading-settings.tsx
2026-11-04 09:44:51 +01:00
Linus Rath
d91b8a879c
fix: say Draft saved on Ctrl+S also when autosave already had everything
...
The shortcut help test now counts two Ctrl + K entries (command palette and Insert link), and the Cc/Bcc key test waits for the To field's opening focus first.
2026-11-04 09:42:40 +01:00
Linus Rath
81d017b2df
Merge branch 'feat/do-ux-mail-fixes' into feat/desktop-offline
2026-11-04 09:24:33 +01:00
Linus Rath
c2d7addbd7
fix: point the Alt menu bar's submenu arrows the right way in right-to-left languages
2026-11-04 09:24:29 +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
b97eba59c1
test: give the next-intl mock the locale the Move list now reads
2026-11-04 09:21:35 +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
adbbfe8149
test: give the welcome banner mock the due hook the notice bar now reads
2026-11-04 09:18:32 +01:00
Linus Rath
56e833fe6a
fix: use the filterable Move list on the selection bar
2026-11-04 09:18:32 +01:00
Linus Rath
f1266889ed
fix: list To and Cc in the header of a message forwarded from the reader
2026-11-04 09:15:42 +01:00
Linus Rath
a0dca05585
test: keep single letters out of the composer's shortcut list
2026-11-04 09:13:46 +01:00
Linus Rath
2ca4946c6e
feat: add Ctrl+K for a link, Ctrl+S to save the draft and Ctrl+Shift+C or B for Cc and Bcc in the composer
2026-11-04 09:13:05 +01:00
Linus Rath
fcc9fc0cc0
Merge branch 'feat/desktop-offline' into feat/do-ux-mail-fixes
...
# Conflicts:
# components/email/email-viewer.tsx
# components/mail/mail-app.tsx
# components/offline/offline-host.tsx
# components/ui/welcome-banner.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:11:09 +01:00
Linus Rath
9df9505da0
test: look for the archive toast by its new wording in the undo reopen test
2026-11-04 09:09:18 +01:00
Linus Rath
2094cca388
fix: leave an emptied out-of-office message box empty instead of showing sample text
2026-11-04 09:08:30 +01:00
Linus Rath
a53e7fab3a
Merge branch 'feat/do-ux-mail-layout' into feat/do-ux-mail-fixes
2026-11-04 09:08:21 +01:00
Linus Rath
b509ce067f
fix: move Use a sub-address and Edit sender into the From list instead of buttons on every message
...
The custom From gate tests now look for the Edit sender entry in the From list instead of the Override button.
2026-11-04 09:08:17 +01:00
Linus Rath
76c0bd1d41
test: save a subject-less draft by closing, as closing now saves without asking
2026-11-04 09:08:09 +01:00
Linus Rath
044647ff34
fix: keep the desktop layout in a half-screen window and at 150 % zoom
...
A window snapped to half the screen (640-800 px) or a 1366x768 laptop
at 150 % (911 px) got the phone and tablet layout: bottom tab bar,
folders in a drawer, Settings as a phone list with a Back arrow. The
layout switched at the 64rem (1024 px) breakpoint.
Now the phone layout starts below 600 px. From 600 to 1024 px the app
is a compact desktop: app rail at the side, folder sidebar folded to
its icons (the existing collapsed state, opened per session with its
toggle), Settings with its two panes and a narrower page list. Below
840 px the split layout opens a message in the list's place, as the
focused layout does. This holds in the browser and the desktop app,
in the Pro shell (which now runs from 600 px) and under Mountain View.
- `hooks/use-media-query.ts`: classifyWidth, PHONE_BELOW 600,
FULL_DESKTOP 1024; the tablet class (`isTablet`) is gone, the store
has `isCompact` instead. Plugins still see "tablet" for it.
- `app/globals.css`: a `desk:` breakpoint at 37.5rem for the layout
classes, and a `tap:` variant for 44px rows on phones and touch
screens below 1024 px (was every window below 1024 px).
- Touch screens below 1024 px keep swiping list rows (was phones only).
- The boot skeletons, boot script, mail app, sidebar, reader, admin
shell and calendar, contacts and files follow the new widths.
Tests changed with the behaviour: the tablet cases in pro-gate,
mail-app-mv-composer-move, mail-app-compose-handoff,
mail-app-thread-expand-mark-read, mobile-tour-end and
thread-list-item-columns now run on a phone or a compact desktop, as
those widths no longer exist as a tablet. mail-app-short-window-tab-bar
is replaced by mail-app-compact-layout: a phone on its side is a
compact desktop with the rail at the side, so the short-window tab bar
rule is gone. Class and media-query assertions follow desk:/tap: and
37.5rem; the 32px-text test uses 1100 px, since 1440 px at 32px is now
a compact desktop.
2026-11-04 09:07:06 +01:00
Linus Rath
dfed23e382
fix: keep developer tools off when the forced policy value can't be read
2026-11-04 09:06:38 +01:00
Linus Rath
2b2b7b8298
fix: show every attachment in the composer, with type icons and a total, failed and uploading files first
...
The attachment list test now expects every chip and a bounded, scrolling row instead of three chips and a +N counter.
2026-11-04 09:01:04 +01:00
Linus Rath
dcb505aac1
fix: find calendar subscriptions and mail app server settings in settings search
2026-11-04 08:46:34 +01:00
Linus Rath
0ba96ae79f
refactor: name the plugin turn-on callback so the native dialog guard passes
2026-11-04 08:45:25 +01:00
Linus Rath
d70c7201fa
fix: find the contact list section in settings search
...
The 2fa and two-factor search tests now expect the row's new name, Two-step sign-in, since the security row was renamed.
2026-11-04 08:45:24 +01:00
Linus Rath
b732acbcdb
fix: give every settings row its own name
2026-11-04 08:45:23 +01:00
Linus Rath
69ec26fe33
fix: remove a recipient whole on the second Backspace instead of turning it into text
...
The mention test's Backspace check now expects the chip to be selected, not put back into the field as text.
2026-11-04 08:43:29 +01:00
Linus Rath
1fdfffad45
fix: read the send hook count safely in the composer's Options menu
2026-11-04 08:42:39 +01:00
Linus Rath
3841bdd630
Merge branch 'feat/do-drop-overlay' into feat/desktop-offline
...
# Conflicts:
# desktop-policies/de-DE/Bulwark.adml
# desktop-policies/en-US/Bulwark.adml
2026-11-04 08:37:26 +01:00
Linus Rath
59aea3babe
Merge branch 'feat/do-menu-fixes' into feat/desktop-offline
2026-11-04 08:36:35 +01:00
Linus Rath
472ee53d88
fix: insert pasted and dropped images without a dialog, with an optional Add description chip
...
The image description tests now open the dialog from the chip on the image, since a drop no longer opens it by itself.
2026-11-04 08:36:25 +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
217e04bb31
Merge branch 'feat/do-uxs-wording' into feat/do-ux-settings-fixes
2026-11-04 08:35:00 +01:00
Linus Rath
d0c86a4fce
Merge branch 'feat/do-uxs-folders' into feat/do-ux-settings-fixes
2026-11-04 08:34:58 +01:00
Linus Rath
ceaa81cd9e
Merge branch 'feat/do-uxs-plugins' into feat/do-ux-settings-fixes
2026-11-04 08:34:57 +01:00
Linus Rath
e2236ea476
Merge branch 'feat/do-uxs-general' into feat/do-ux-settings-fixes
...
# Conflicts:
# components/settings/__tests__/settings-search-anchors.test.tsx
# components/settings/accessibility-settings.tsx
# lib/settings-search.ts
2026-11-04 08:34:25 +01:00
Linus Rath
adbab2e4aa
Merge branch 'feat/do-uxs-structure' into feat/do-ux-settings-fixes
...
# Conflicts:
# lib/settings-search.ts
2026-11-04 08:33:26 +01:00
Linus Rath
e45c66c755
Merge branch 'feat/do-uxs-vacation' into feat/do-ux-settings-fixes
2026-11-04 08:33:14 +01:00
Linus Rath
ad0b238e3d
feat: open a reply under the message it answers, which stays readable above it
2026-11-04 08:32:05 +01:00
Linus Rath
e8f17e2e3a
fix: say no sidebar apps were added yet instead of repeating the section text
2026-11-04 08:24:36 +01:00
Linus Rath
dc16e2c2da
fix: correct admin wording about Stalwart setup, templates, cookie SameSite and when users get a change
2026-11-04 08:23:30 +01:00
Linus Rath
7517b024ec
fix: make Discard on the Continue draft bar delete the draft, with Undo, and reach it by keyboard
2026-11-04 08:23:01 +01:00
Linus Rath
d98132b8e1
fix: close every composer the same way, keeping the draft with Draft saved and Discard
...
X, Escape, clicking another message and Escape in a pop-out window
now all save the draft and close, with a "Draft saved" toast that has
Discard (with Undo). The Save or discard question shows only when that
save fails. A Reply or Forward closed before the user changed anything
leaves no draft. Undo send being on by default no longer asks "Send
without a delay?" on servers without delayed sending; only a delay the
user picked does.
Changed test assertions: the close-guard, priority, account-switch,
threading, sign-out, mention, draft-attachments, discard-uploads and
save-pending-attachments tests reached saving or discarding through the
Save or discard dialog on close, which now only appears after a failed
save. They now close directly, or use the Discard button, or check the
failed-save question. The send-delay test marks its delay as chosen.
2026-11-04 08:22:56 +01:00