Commit Graph
631 Commits
Author SHA1 Message Date
Linus Rath b611d9c028 feat: refresh sender icons that changed on the sender's website #960 2026-10-17 19:18:18 +02:00
Linus Rath 1c3cc35a7c feat: set the counter per folder, e.g. keep the Drafts count with totals off #982 2026-10-17 19:18:16 +02:00
Linus Rath 3fd93df4b2 feat: extend the message selection with shift+arrow keys #992 2026-10-17 19:18:15 +02:00
Linus Rath b76624466f feat: show the folder on search results from all folders #1172 2026-10-17 19:18:11 +02:00
Linus Rath f47fe778d0 feat: add a setting to hide the account dot in the unified view #912 2026-10-17 19:18:01 +02:00
Linus Rath 7d882be734 fix: delete only the clicked mail when another account has a message with the same id #857 2026-10-17 19:18:00 +02:00
Linus Rath 49beaef852 fix: show zero-length events ending at their start instead of midnight #837 2026-10-17 19:17:50 +02:00
Linus Rath a854447346 fix: apply admin policy defaults to user settings #1248 2026-10-17 19:17:46 +02:00
Linus Rath 76d12cff30 feat: ask before leaving the admin panel with unsaved changes #1255 2026-10-16 22:44:38 +02:00
Linus Rath 964626794b feat: browse the company directory in contacts and the composer #1253 2026-10-16 20:46:27 +02:00
Linus Rath 5319551e9f fix: put new calendars after the reordered ones #1244 2026-10-15 23:54:41 +02:00
Linus Rath 0e61705841 Merge pull request #1244 from lucletoffe/feat/calendar-sort-order
feat(calendar): order calendars by sortOrder and let users reorder them
2026-10-15 23:54:41 +02:00
Linus Rath 0b49d01a76 fix: keep synced calendar subscriptions from stale devices and past deletions #1064 2026-10-15 23:54:37 +02:00
Linus Rath fe40567398 Merge pull request #1064 from sanitz/feat/sync-ical-subscriptions
feat(calendar): sync iCal subscriptions via encrypted settings store
2026-10-15 23:54:37 +02:00
Linus Rath 07e6838d90 fix: stop the mail list skeleton flickering after a reload or account switch 2026-10-15 23:44:06 +02:00
lucletoffeandClaude Opus 5.5 de388a1d12 feat(calendar): order calendars by sortOrder and let users reorder them
Calendars were listed in the order the server returns them, which for
Stalwart is creation order, and the sortOrder property was never read.
Follow the JMAP Calendars rule instead: lower sortOrder first, equal
sortOrder by name (case- and accent-insensitive, numbers by value). The
store keeps the list sorted, so the sidebar, the calendar pickers and the
settings all show the same order; each account's calendars stay together.

Calendar settings gain move up / move down buttons, visible on touch
screens too, and drag and drop for the user's own calendars. A move
renumbers that account's calendars 1, 2, 3... and writes sortOrder only
where it changes. The renumbering also covers the account's calendars the
settings list does not show (iCal subscriptions), so they keep their
place relative to the others. Shared calendars are not offered for
reordering, their order is the owner's.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 22:31:07 +02:00
Linus Rath dd2104cdda feat: mute notifications for single folders or whole accounts #1169 2026-10-15 21:50:08 +02:00
Linus Rath 6ef0d97900 fix: count storage quota against softLimit when the server sets one #1242 2026-10-15 14:31:09 +02:00
Linus Rath 6f5d20454c fix: stop the message list reordering and repainting when switching accounts 2026-10-15 14:15:20 +02:00
Linus Rath 1b8b6e9424 fix: reload into the login page in Lite, where the in-place route gets a trailing slash 2026-10-15 08:57:45 +02:00
Linus Rath 2ee59aa41b perf: stop navigating twice after signing in from the home page 2026-10-15 05:39:12 +02:00
Linus Rath 817ba8fee1 perf: open the mail view without waiting for the remembered session to be stored 2026-10-15 03:49:33 +02:00
Linus Rath a30ae541f9 perf: show the login form without loading the app a second time 2026-10-15 03:27:44 +02:00
Linus Rath d0abf6b494 perf: read the Sent folder for recipient suggestions once, after login settles 2026-10-15 02:57:30 +02:00
Linus Rath 4edaf2663f perf: stop loading the mailboxes and first page twice after login 2026-10-15 02:16:50 +02:00
Linus Rath a0563c1fed perf: reopen a visited folder without re-reading or redrawing its list 2026-10-15 01:03:02 +02:00
Linus Rath 9e5f78ab6d perf: show the message header from the list row while its body loads 2026-10-15 00:41:07 +02:00
Linus Rath db2c0aff3d perf: load conversation sizes with the folder page instead of in a second request 2026-10-15 00:14:57 +02:00
Linus Rath 06d00e10ee perf: keep the list on screen while a search runs and stop re-rendering on every keystroke 2026-10-15 00:12:59 +02:00
Linus Rath 2d67442a2b perf: list search results without waiting for the highlighted excerpts 2026-10-14 23:51:17 +02:00
Linus Rath 3fac196d3f fix: ask plugins before creating archive folders and marking whole folders read 2026-10-14 20:08:37 +02:00
Linus Rath f8448c6a45 fix: stop reporting calendar, task and contact changes as done when a plugin stopped them 2026-10-14 19:56:06 +02:00
Linus Rath 8204678847 fix: stop reporting mail actions as done when a plugin stopped them 2026-10-14 19:44:54 +02:00
Linus Rath 607f1b2496 feat: let plugin notifications carry a link to the plugin's own server 2026-10-14 10:58:19 +02:00
Linus Rath 78f72e0c03 fix: give plugins settings that change after they started, let their frames copy to the clipboard and tell them the user's time zone 2026-10-14 09:01:03 +02:00
Linus Rath 7a6a0fc67f Merge branch 'slots/nav' into feat/plugin-system-audit
# Conflicts:
#	lib/__tests__/plugin-slot-catalog.test.ts
2026-10-14 05:30:34 +02:00
Linus Rath 8bf4df4513 feat: add a notifications panel for plugin notifications and app errors 2026-10-14 05:25:16 +02:00
Linus Rath eb34caa381 feat: let plugins add entries to file menus and the selection toolbar, and a section to file previews 2026-10-14 04:58:21 +02:00
Linus Rath 60257bb732 feat: let users connect accounts for plugins in a dialog the plugin can't read, and disconnect them in settings 2026-10-14 04:14:13 +02:00
Linus Rath 1307280fd8 Merge branch 'hooks/settings' into feat/plugin-system-audit 2026-10-14 04:05:47 +02:00
Linus Rath 0a98ffa711 fix: give plugins plain message data, let them add only real messages to search results and skip a draft save 2026-10-14 04:05:43 +02:00
Linus Rath c464ca2030 Merge branch 'hooks/mailstore' into feat/plugin-system-audit 2026-10-14 04:00:59 +02:00
Linus Rath cc9553590c Merge branch 'hooks/mailui' into feat/plugin-system-audit 2026-10-14 04:00:45 +02:00
Linus Rath 022b83c005 feat: let plugins use accounts and API keys through the server without seeing them
Plugins that talk to Nextcloud, Paperless or an AI provider used to need
the password or key in their own settings, readable by the plugin and
stored in the browser. A plugin can now declare credentials in its
manifest and send requests "with credential X" through the server:

- `credentials` in the manifest: admin scope (secret and server from the
  admin config) or user scope (the user connects an account; the server
  address is fixed or chosen by the user)
- `/api/plugin-secrets`: the user's connected accounts, encrypted per
  mail account under `PLUGIN_SECRETS_DIR`; listing never returns secrets
- `/api/plugin-proxy`: adds the secret and forwards only to the
  credential's own origin, through the SSRF guard unless the admin set
  the server up or listed it in `PLUGIN_PROXY_PRIVATE_ORIGINS`; no
  redirects or WebDAV moves to other servers, streamed bodies capped at
  512 MB up and 2 GB down, 300 requests a minute per plugin, 8 at once
  per user, and one audit line per request without paths or bodies
- a capture mode that stores a secret from a sign-in response (Nextcloud
  Login Flow v2) and removes it from what the plugin gets back
2026-10-14 04:00:36 +02:00
Linus Rath 122ca1dc8b feat: tell plugins when the selection or the open folder changes 2026-10-14 04:00:14 +02:00
Linus Rath 58b6e914b3 feat: let plugins change a search's query and filters before it runs 2026-10-14 03:58:47 +02:00
Linus Rath 7323310b21 feat: tell plugins about new inbox mail, sync progress and the live-update connection 2026-10-14 03:56:37 +02:00
Linus Rath fb397d7457 feat: tell plugins when the password, two-factor sign-in, app passwords, encryption or display name change 2026-10-14 03:55:20 +02:00
Linus Rath 77d8b604ae feat: tell plugins when folders are created, renamed, deleted or emptied, and when the quota changes 2026-10-14 03:55:18 +02:00
Linus Rath 286cce6877 feat: tell plugins when messages are deleted, moved, archived, marked or tagged, and let them stop it 2026-10-14 03:54:40 +02:00