Commit Graph
5090 Commits
Author SHA1 Message Date
Linus Rath 2cb70d475e Merge branch 'feat/do-ux-pim-contact' into feat/do-ux-pim-fixes 2026-11-04 11:09:24 +01:00
Linus Rath e25d3e1e56 fix: keep a contact's address as stored when other fields change, and lay addresses out by country 2026-11-04 11:06:40 +01:00
Linus Rath f39f10d593 fix: mark the contact a menu is for, and no member on a group's page 2026-11-04 11:05:37 +01:00
Linus Rath 3df3b800f8 fix: wrap a long contact name to two lines with the full name on hover 2026-11-04 11:04:28 +01:00
Linus Rath 08767b3b77 fix: leave the app's own Trusted Senders book out of the Contacts sidebar 2026-11-04 11:03:34 +01:00
Linus Rath 629ba34419 fix: put rarely used contact fields under More fields and mark dialog items with …
The contacts-app tests now click the new Import contacts… label (key import_menu) instead of import.title.
2026-11-04 11:02:17 +01:00
Linus Rath fae888728b fix: hide the line of the week scrolled under the month header at 150 % 2026-11-04 11:00:58 +01:00
Linus Rath 0c6782e004 fix: show every week of the month on one screen, with +n more for full days 2026-11-04 10:57:58 +01:00
Linus Rath 409c7110c0 feat: mark unanswered invitations in the calendar grid and answer them from it 2026-11-04 10:57:13 +01:00
Linus Rath a1bd39f684 fix: shorten the calendar search placeholder when the field is narrow 2026-11-04 10:55:58 +01:00
Linus Rath 7c7800c639 fix: write the week title and other date ranges the way each language does 2026-11-04 10:55:56 +01:00
Linus Rath 6cd05da510 fix: call a voice number Phone and a private entry Home on contacts
The contact-detail test now expects the new label key for private, since the wording moved to the ux_pim_contact namespace.
2026-11-04 10:55:22 +01:00
Linus Rath d783981373 Merge branch 'feat/desktop-offline' into feat/do-ux-pim-fixes
The settings pass hid each calendar's CalDAV address behind "Use in
other apps"; pim-26 lists the address once per account. The list now
waits behind one "Use in other apps" button, and the wording test
clicks the new Edit… button instead of the old pencil.
2026-11-04 10:09:03 +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 15f554a85e test: check event time zones and the invitation card on both Stalwarts 2026-11-04 09:54:44 +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 3134205260 fix: show an invitation's date once, its zone only when it differs, and the answer once given
Changed assertions: the schedule tests in calendar-invitation.test now
expect Intl's range format ("Tue, Oct 20, 16:00 – 16:25") with the
event's own times after it when its zone's clock differs, instead of
the repeated date and "GMT+2". The banner test's next-intl mock gets
useLocale.
2026-11-04 09:35:37 +01:00
Linus Rath 10c5e51da1 fix: open the event editor as a sheet over the calendar so the week keeps its width 2026-11-04 09:35:37 +01:00
Linus Rath f607f48bf2 fix: keep events in their own time zone and ask for the time first in the event form
Saving an event wrote it in the user's zone, so a title change moved a
New York meeting to Europe/Berlin. The form now shows and saves the
times on the event's own clock, with a time zone field ("Time zone: New
York", or a "Time zone" link when it is yours), and the popover shows
"10:00–11:00 New York (16:00–17:00 your time)". The form asks for the
date and time right after the title and for the description last.
Participant answers read in plain words ("Not answered yet"), the
untitled preview is translated, and the quick editor grows to fit long
calendar names.

Changed assertions: rsvp-buttons.test expects the plain status key, and
event-modal-organizer.test expects an unchanged save to keep the event's
New York zone instead of rewriting it into the user's.
2026-11-04 09:35:22 +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 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 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 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 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 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 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 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 16273e447f feat: put user features and settings with the organisation pages under Users and let features apply to one domain or group
The admin skeleton test and the outgoing-hosts path test now expect the
sidebar heading "Users" and the page "Features and settings": the
Organisation group was renamed and User policy moved into it.
2026-11-04 08:22:41 +01:00
Linus Rath 5a7f22b7cf feat: show a plugin's publisher and permissions before a quick install from the marketplace 2026-11-04 08:10:18 +01:00
Linus Rath 3609b5c99f fix: hide the stored keyword under each tag in settings
Tag rows no longer show "$label:…" under the name; with advanced
settings on it is the tag's tooltip. The page and the recover section
no longer talk about JMAP keywords, and the recover section is called
"Find tags on your messages that are missing here".

The keyword-settings test asserted the "$label:…" line; it now asserts
the line is gone and the tooltip shows with advanced settings on.
2026-11-04 08:08:26 +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