Commit Graph
5124 Commits
Author SHA1 Message Date
Linus Rath 4f0654fb49 fix: ask about turning plugins on in the quick-install dialog itself, with Install only beside it
The test that answered a second question after Install now picks the choice in the first dialog, since that question is no longer asked on quick install.
2026-11-04 12:54:17 +01:00
Linus Rath 60c7efad10 fix: call the default calendar and address book "Calendar" and "Contacts" everywhere, as Settings does
Stalwart names them "Stalwart Calendar (<address>)" and "Stalwart
Address Book (<address>)". Settings already showed plain names; the
sidebars, pickers, the event and task editors, invitations, print and
confirm texts now use the same helper. A colleague's shared default keeps
whose it is. Two test fixtures used Stalwart's default name for a long or
own book name and now use a name the user chose, since a default name is
no longer shown as is.
2026-11-04 12:51:03 +01:00
Linus Rath 68bdaaac33 fix: hold the offline notice until the welcome tips are closed, also when they show in the reading pane 2026-11-04 12:41:37 +01:00
Linus Rath badbd616df Merge branch 'feat/do-ux-p2-settings-search' into feat/do-ux-p2-settings-fix 2026-11-04 12:39:59 +01:00
Linus Rath 641489775b Merge branch 'feat/do-ux-p2-settings-ident' into feat/do-ux-p2-settings-fix 2026-11-04 12:39:57 +01:00
Linus Rath f2ff51a7d5 Merge branch 'feat/do-ux-p2-settings-misc' into feat/do-ux-p2-settings-fix 2026-11-04 12:39:55 +01:00
Linus Rath 01f2860613 feat: edit each address's signature right on the Composing settings page 2026-11-04 12:39:11 +01:00
Linus Rath 3a2be9a7d4 fix: edit the name recipients see on the Account page and stop cutting account addresses
Settings > Account had a "Display name" that edited Stalwart's account
description, while mail went out with the identity's name, so changing
it changed nothing people saw. The page now shows "Your name", the
primary address's name, and saves it to that identity. The account
switcher and avatars take the same name; the principal description is
only used for an account without an identity name. The address editor
calls the field "Your name" too, and "identities" are "addresses" in
the Account section and its dialog, said once instead of twice.

Logged-in accounts show the server only for an account in trouble or
one sharing its address with another, with no drag hint or arrows for a
single account. The switcher wraps addresses instead of cutting them and
has no remove button per row; an account you're not in is removed from
Settings > Account.

Changed tests: auth-store-display-name now expects the identity name to
win over the principal; account-switcher-remove expects no remove
button on the rows; settings-editors-unsaved uses the renamed "Add
address" button and the "Your name" label, which has no placeholder.
2026-11-04 12:38:38 +01:00
Linus Rath 4b426e1469 fix: find the desktop app's own settings in search, and drop browser words from its pages
Settings search knew none of the desktop app's rows, short words matched
a dozen descriptions, and the app's Notifications, Privacy and Backup
pages talked about websites, browsers and Safari.

- Search indexes the app's rows when its bridge is there (tray, start at
  sign-in, menu bar, quiet hours, taskbar, default mail app, updates,
  developer tools, usage info, crash reports) with translated synonyms,
  and the browser-only push rows only in a browser. New synonyms for
  threads, block images, dark mode, timezone, reading pane, week start,
  empty trash and quiet hours. A single word of up to five letters looks
  only in names and synonyms, so "about" finds About.
- In the app, Notifications has no push relay section; one row says the
  app tells about new mail while it runs, with a link to General. Its
  taskbar and quiet hours section is "On this computer". Privacy has no
  relay link there, Backup says "other devices".
- In a browser that can't push, two sentences, and the home screen hint
  only on iPhone and iPad.
- Several accounts get one notification switch each instead of a
  checklist with "Enable for selected" and "Disable for selected".
- Developer tools show only with advanced settings on.
- "Two-step sign-in" heads its section, "Pictures from company websites"
  replaces "Sender favicons", the Privacy relay link no longer points to
  a hidden choice, Offline warns about disk encryption once, and the
  reset confirm says what stays and whether other devices change. A
  reset keeps the choice to sync settings.

Changed assertions: account-security-signin looks for the heading by its
new name, settings-search expects the renamed rows, multi-account-push
tests the switches that replace the checklist.
2026-11-04 12:38:35 +01:00
Linus Rath efdec45f52 fix: let the calendar buttons in settings wrap instead of running past the edge 2026-11-04 12:04:33 +01:00
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 4f1b628f04 fix: keep the found server on Change, focus the field that needs input, and make Sign in the main button once a password is typed 2026-11-04 11:40:59 +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