Commit Graph
79 Commits
Author SHA1 Message Date
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 4a764150b2 Merge branch 'feat/desktop-offline' into feat/do-ux-settings-fixes 2026-11-04 09:22:44 +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 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 2a726c0f4b fix: show unread counts in the account switcher and keep the open account's name
Each row shows name, address and the Inbox's unread count; the server
host only shows for an account in trouble or when two accounts share
an address. "Set as default" reads "Open this account at start" and the
star says so on hover. "Manage accounts…" opens Settings > Account. The
sidebar button keeps the open account's name with its address under
it, instead of switching to the address when another account with the
same name is added (the rows still lead with the address then).

Changed assertions: the Mountain View test expected the server line to
be hidden (it is no longer drawn) and the default layout to show no
unread counts (it shows them now); the same-name test expected the
sidebar button to lead with the address.
2026-11-04 08:08:26 +01:00
Linus Rath 0202803e77 fix: name system folders as the sidebar does in search result chips, the folder menu and the Spam banner 2026-11-04 06:53:17 +01:00
Linus Rath 4224149ab5 feat: move Compose to the top of the folder sidebar on desktop and keep one account switcher and one list menu
Two mail-app tests clicked the round Compose button on a desktop; their
mocked sidebar now draws the Compose button the real one has there.
2026-11-04 06:39:16 +01:00
Linus Rath 60a97303c2 fix: open the folder when its unread count is clicked, and search all folders again on a new search
Two sidebar tests asserted the old unread-count button (it filtered the
folder to unread without opening it, in a 24px target); they now check
that the count is plain text and opens the folder.
2026-11-04 06:17:05 +01:00
Linus Rath 9ce7ac8172 feat: show unread per account in the switcher and count every account on the app badge and tray
The default layout's switcher listed accounts without their unread, so an
existing test asserted that (account-switcher-mountain-view, 'unread-free');
it now expects each account's count. The idle-outside-Pro hook test now
uses one account, since a second connected account loads in every layout.
2026-11-04 06:06:37 +01:00
Linus Rath f92b7d942d fix: grey out folder and message actions that can't work offline or with nothing unread 2026-11-04 05:32:23 +01:00
Linus Rath 529d334496 Merge branch 'fix/ui-bug-hunt' 2026-11-03 19:44:46 +01:00
Linus Rath af6cdfb997 fix: keep unsent mail through the idle and session limits, and mark a signed-out account in the switcher
The timers used to delete everything an account kept, unsent mail included.
They now follow the refused-login rule: sign out and hide, the next sign-in
brings it back, otherwise it goes after 30 days. A login without "Remember
me" that ends with the browser, an admin wipe and a wipe from settings don't
change.

- `wipeOnRefusedLogin` is now `wipeOnForcedSignOut`, since it also covers the
  limits. The server's `SESSION_TOO_OLD` goes the same way, as `session`.
- A refused account beside one that stays signed in shows in the switcher as
  needing sign-in, with the count and the date, and gets one toast.

Existing tests changed because the rule did: the session timer tests expected
a plain `logoutAll`, and the auth store tests expected no hook at the session
limit.
2026-11-03 16:36:13 +01:00
Linus Rath e24dd5876b fix: show folder names in the drawer when the sidebar was collapsed on a wider window 2026-11-03 09:22:17 +01:00
Linus Rath c8eeac19ad fix: show half of the next entry on a full phone tab bar instead of a cut-off sliver 2026-11-03 07:13:21 +01:00
Linus Rath 4bda73d9c6 fix: keep Settings on the phone tab bar when plugin pages fill it 2026-11-03 05:09:20 +01:00
Linus Rath 3241f17c44 fix: open a folder from anywhere in its sidebar row #1501 2026-11-02 19:57:58 +01:00
Linus Rath 4842e08cde fix: show shared mailboxes under each account when several are signed in #1486 2026-11-01 00:24:57 +01:00
Linus Rath 3e79c6e718 fix: keep tags, scheduled order and the subfolder action right on compact shared mailboxes #1342 2026-10-31 22:23:21 +01:00
Jacob Zeitz fca08981a1 feat: compact shared mailboxes in the sidebar #1342
Closes #1483
2026-10-31 22:17:39 +01:00
Linus Rath 663a875972 fix: give the folders their own heading under the unified mailbox in mountain view #1470 2026-10-31 16:31:16 +01:00
Linus Rath fe65ab528b fix: keep a one-digit unread folder count next to its total 2026-10-31 02:01:16 +01:00
Linus Rath 3bb9f7df84 fix: lead with the address when two accounts share a name in the account switcher 2026-10-31 01:37:06 +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 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 8e55184e1f fix: name pane resize handles, expose their width and keep their arrow keys from the mail shortcuts 2026-10-29 17:53:51 +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 ef826972dd fix: put the focus back somewhere sensible after an action removes it 2026-10-29 17:53:36 +01:00
Linus Rath 80a2a212a4 fix: say the unread count with the rail's Mail link and follow the unread count style 2026-10-29 17:53:36 +01:00
Linus Rath 7c282f1f40 fix: say which folder is open and how many are unread in the folder lists 2026-10-29 17:53:36 +01:00
Linus Rath dcc504fcfa feat: add landmarks, an h1 per app, skip links and F6 between panes 2026-10-29 17:53:35 +01:00
Linus Rath 4586c69e72 feat: open text size, contrast and motion from anywhere with Alt+Shift+A 2026-10-29 17:53:33 +01:00
Linus Rath 96797597c5 Merge branch 'main' into feat/org-features 2026-10-28 15:14:34 +01:00
Linus Rath 382b26f128 fix: ask before the rail or the mountain view top bar leaves an event or task with unsaved changes 2026-10-28 12:50:59 +01:00
Linus Rath 2e8382856b Merge branch 'ux/mail3' 2026-10-28 11:19:34 +01:00
Linus Rath 91634f1a6f fix: search every icon in the sidebar app icon picker, not only the popular ones 2026-10-28 11:12:17 +01:00
Linus Rath e654eadd37 Merge branch 'main' into ux/mail3 2026-10-28 11:10:56 +01:00
Linus Rath 9eaf7ca754 fix: show the full folder name as a tooltip when the sidebar cuts it 2026-10-28 10:59:44 +01:00
Linus Rath 339cd4b9ab fix: put Delete folder last in the folder menu, after Refresh 2026-10-28 10:46:20 +01:00
Linus Rath 94029e5aa2 fix: ask before the nav rail or the phone tab bar leaves a contact or group form with changes 2026-10-28 10:43:55 +01:00
Linus Rath 26d9fadc50 feat: count shared tags per group and open their tag view in that group only 2026-10-28 08:58:23 +01:00
Linus Rath 92815cc0ab fix: keep opening a message as cheap as before: mount Mail's new dialogs, the selection bar and the folder options button only when they show 2026-10-28 06:48:00 +01:00
Linus Rath b65b7b07d6 fix: give Mail's small controls on the phone a 44px touch target and a name: folder chevrons, search clear, recipient and attachment remove 2026-10-28 06:26:30 +01:00
Linus Rath 43dd87b301 Merge branch 'main' into ux/mail 2026-10-28 05:16:28 +01:00
Linus Rath 91446a807c fix: make the mail list easier by keyboard: a skip link, named row checkboxes, hover actions on focus, no hidden or nested buttons 2026-10-28 05:16:08 +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 d65cdba181 fix: put the Apps dialog on the shared dialog shell, with a named close button and a backdrop that closes it 2026-10-28 04:12:58 +01:00
Linus Rath a62317ba63 fix: translate the shell's resize, close, folder count and update labels, and announce a waiting update on the admin entry 2026-10-28 04:06:12 +01:00
Linus Rath 1386b12908 fix: open Out of Office from the vacation banner instead of the last settings page 2026-10-28 03:43:51 +01:00