Commit Graph
303 Commits
Author SHA1 Message Date
Linus Rath 5931cd1678 feat: send an oauth resource indicator when one is configured #1461 2026-10-31 16:14:35 +01:00
Linus Rath 4887ed457c fix: stop list toolbar timers from firing after the toolbar is gone 2026-10-31 02:28:55 +01:00
Linus Rath 605a3983b1 feat: show a warning shield instead of the sender icon when the sender check fails 2026-10-29 21:13:36 +01:00
Linus Rath 50b3ddccec feat: let admins keep the refresh token valid on sign-out so Stalwart keeps the consent #1388 2026-10-29 20:47:18 +01:00
Linus Rath 0b4e501142 feat: make the login email placeholder configurable #1423 2026-10-29 20:24:26 +01:00
Linus Rath b22968a7df fix: show the message list, not only the reader, with a large browser text size and wrap cut-off labels 2026-10-29 19:38:45 +01:00
Linus Rath a1ee9035de fix: scroll without gliding when reduce motion is on 2026-10-29 19:38:45 +01:00
Linus Rath be423637fc feat: show one column and an optional paged message list in simple mode 2026-10-29 19:14:41 +01:00
Linus Rath 623c9e1792 feat: let operators set accessibility statement, barrier report, help, Easy Read and sign language links 2026-10-29 18:27:35 +01:00
Linus Rath 84c487e6c3 fix: give each settings and admin page its own tab title and translate the admin page list 2026-10-29 18:02:58 +01:00
Linus Rath af3019ea2b feat: read a message aloud with the browser's voice, highlighting what it reads 2026-10-29 17:53:58 +01:00
Linus Rath bb78697981 feat: pause animated images in mail with a play button 2026-10-29 17:53:57 +01:00
Linus Rath 3c4d63006c feat: scale wide mail down to the pane on any screen with fit wide mail on 2026-10-29 17:53:56 +01:00
Linus Rath 8cc0f8f258 feat: keep message lines to about 80 characters with the comfortable reading width 2026-10-29 17:53:56 +01:00
Linus Rath dcc0d600f4 feat: show HTML mail in the app's font, colours and spacing when styles are overridden 2026-10-29 17:53:56 +01:00
Linus Rath 24a13cc1f8 fix: stop animations inside mail when reduce motion is on 2026-10-29 17:53:55 +01:00
Linus Rath 324a0f76b2 fix: leave mail colours to the browser in Windows contrast themes 2026-10-29 17:53:55 +01:00
Linus Rath c07ba1a370 feat: show message bodies at the chosen text size and enlarge text below the minimum 2026-10-29 17:53:55 +01:00
Linus Rath cf4d02b49b feat: draw calendar, tag and folder colours in a colour-blind-safe palette when that setting is on 2026-10-29 17:53:51 +01:00
Linus Rath 23813be9b9 feat: tell screen readers when a folder or search has loaded and when the connection drops 2026-10-29 17:53:50 +01:00
Linus Rath d713d31af3 feat: announce how much new mail came and flash the tab title slowly with visual alerts 2026-10-29 17:53:49 +01:00
Linus Rath 4af4404962 feat: undo the last mail actions with Ctrl+Z or z, newest first 2026-10-29 17:53:46 +01:00
Linus Rath 8d2ebccf08 feat: keep undo toasts, errors and reminders as long as the notification duration says 2026-10-29 17:53:45 +01:00
Linus Rath e2fc2c750a feat: read toasts out to screen readers, errors assertively 2026-10-29 17:53:44 +01:00
Linus Rath 13d697ddfb feat: turn off every single-key shortcut when the setting is off 2026-10-29 17:53:34 +01:00
Linus Rath 368acca121 fix: stop app shortcuts from acting behind open dialogs and menus 2026-10-29 17:53:33 +01:00
Linus Rath d42fc053dd fix: let Escape close a dialog right after its form closed 2026-10-29 15:35:36 +01:00
Linus Rath 69d2f35d78 fix: keep the install card off the send button and remember not now #1411 2026-10-29 14:32:43 +01:00
Linus Rath f12a13e1fd feat: create documents in the formats the document editor can edit from New file #1393 2026-10-29 00:01:13 +01:00
Linus Rath 96797597c5 Merge branch 'main' into feat/org-features 2026-10-28 15:14:34 +01:00
Linus Rath 9a4f46f553 fix: show the first hour label whole under the day header when the day and week views open 2026-10-28 13:06:49 +01:00
Linus Rath e654eadd37 Merge branch 'main' into ux/mail3 2026-10-28 11:10:56 +01:00
Linus Rath 8566cf2b29 Merge branch 'ux/calendar3' 2026-10-28 11:06:37 +01:00
Linus Rath 9014dda3cb Merge branch 'ux/contacts-files2' 2026-10-28 11:04:04 +01:00
Linus Rath 87323d4137 fix: keep tab in the week or day in view instead of walking into the hidden days on either side 2026-10-28 10:45:42 +01:00
Linus Rath 2f790a2d75 fix: keep toasts above the Save and Cancel buttons of the contact and group forms 2026-10-28 10:43:55 +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 4dc13c229b fix: list a repeating event under its own title in calendar search when one occurrence was renamed 2026-10-28 10:28:13 +01:00
Linus Rath 715c3f03a3 fix: let Enter on the skip link move focus to the message list instead of opening a message 2026-10-28 10:22:00 +01:00
Linus Rath 82aeddfdaa fix: keep hover previews closed while an editor, card or dialog is open and after one closes until the pointer moves 2026-10-28 10:19:02 +01:00
Linus Rath e48a0ed8f6 fix: write event dates in each language's own order on the event card, the event view and the import preview 2026-10-28 10:13:53 +01:00
Linus Rath d5ff1c6727 fix: show the day as a short date in the phone day view's title and put the back arrow in the menu's place so it fits 2026-10-28 10:08:05 +01:00
Linus Rath 2fbfa7a177 fix: give the focus back to the folder or message checkbox after closing a menu opened with Shift+F10 2026-10-28 09:57:32 +01:00
Linus Rath 5f34700553 fix: stop the React warning about isPressed on every Contacts visit 2026-10-28 09:48:43 +01:00
Linus Rath 5d90a850bd Merge branch 'feat/org-recovery' into feat/org-features
# Conflicts:
#	components/email/email-list.tsx
2026-10-28 09:17:56 +01:00
Linus Rath 272083399c Merge branch 'feat/org-tags' into feat/org-features
# Conflicts:
#	lib/admin/restriction-keys.ts
#	lib/jmap/client.ts
2026-10-28 09:15:17 +01:00
Linus Rath f1a666777b Merge branch 'feat/org-features' into feat/org-recovery 2026-10-28 09:08:49 +01:00
Linus Rath 4d846cfc91 fix: read the whole deleted items archive newest first and only for the account shown #1319
Stalwart's x:ArchivedItem/query without calculateTotal scans ids
ascending, stops at 5000 and only then reverses them, so the newest
items of a large archive never showed, and admin accounts got every
account's items. The review of the branch also found gaps around
account switches, restores and focus.

- Read the archive in pages of 500 with calculateTotal, newest first,
  stop at a whole page older than the days limit, and offer
  "Show older" after 2000 items; detection asks for one item.
- Send the accountId filter and fall back without it on
  unsupportedFilter; keep only items of the account, never one without
  an account id.
- Ask nothing until config and policy are loaded and the policy is the
  current account's; the later check after a refusal is forced.
- Show the Trash link only when the archive holds a message inside the
  days limit; the Settings page shows whenever the server has the
  feature and says that archiving must be on in Stalwart.
- Restore: notFound leaves the list with a note, forbidden hides the
  page, results for another account are dropped, the button keeps focus.
- Forget what servers said at a full sign-out.
2026-10-28 09:08:44 +01:00
Linus Rath 33ca8efb0f fix: keep shared tags safe when members edit at once or the server fails
The first version wrote the whole tag list on every change, guessed a
group when the server wouldn't say, and treated a failed read like a
server without metadata. Now:

- Definitions are a map by tag id under `tags`, and each change patches
  one tag (`metadata/org.bulwarkmail.tags/tags/<id>`), so two members
  adding tags at once both keep theirs. Fields and colors this version
  doesn't know survive. The `{ list }` and bare-array shapes are still
  read and converted by the first save.
- Shared tags appear only for confirmed group principals. A failed
  principal lookup keeps the user's own tags and asks again later.
- "No metadata advertised" (0.16) and "the read failed" are separate.
  A failed read keeps the last good tags; a failed save keeps the change,
  says so, and sends it with the next good read after the client's
  pause.
- Push reloads wait for 5 s of quiet and skip the echo of our own save;
  a returning tab reloads definitions only, and the scan for unnamed tags
  runs once per sign-in and then at most every 30 minutes.
- The editor names its buttons after the tag, shows the delete warning
  and 44 px buttons on phones, returns focus to the edit button, and
  asks for Inbox rights only for confirmed groups.
2026-10-28 08:58:11 +01:00
Linus Rath 0cd28097e6 Merge branch 'main' into ux/mail2 2026-10-28 08:16:51 +01:00