Linus Rath
78c9d9fba9
feat: tell folded folders apart, show their unread mail, and float out the whole tree on hover or from All folders
2026-11-04 11:50:12 +01:00
Linus Rath
c2f80e2d29
fix: count every account's unread mail in the rail's Mail badge and the tab title, as the favicon does
2026-11-04 11:42:22 +01:00
Linus Rath
1ccbddad50
fix: list folders in Move menus in the sidebar's order and leave out Sent
...
The Move list tests no longer expect Sent as a target or in the recent
folders, and the target count drops by one with it.
2026-11-04 11:33:53 +01:00
Linus Rath
0a09fec123
fix: offer Empty Trash and Empty Spam only there, with the message count, and drop folder actions that can't apply
...
The folder menu tests no longer expect "Empty folder" on a folder of
your own: emptying is offered on Trash and Spam only now. The Mountain
View list test expects the entry to read "Empty Trash".
2026-11-04 11:30:11 +01:00
Linus Rath
814945a445
fix: say Restore and Delete forever in Trash and stop offering Report spam there
...
The reader toolbar tests now find the quick reply box by either
placeholder: since the box names its recipients ("quick_reply_to"), the
old placeholder assertion failed and the Spam test passed vacuously.
2026-11-04 11:19:45 +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