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
lucletoffe and Claude 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