Linus Rath
425eae2227
Merge branch 'slots/mail' into feat/plugin-system-audit
...
# Conflicts:
# lib/__tests__/plugin-slot-catalog.test.ts
2026-10-14 05:07:18 +02:00
Linus Rath
6f18173778
feat: let plugins add frames above and below the message text and entries to the composer's Send and Attach menus
2026-10-14 05:04:09 +02:00
Linus Rath
e5f3ee0b98
refactor: mark calendar day labels as data in the slot catalogue, not clickable actions
2026-10-14 05:01:37 +02:00
Linus Rath
31c2cc1762
Merge branch 'slots/apps' into feat/plugin-system-audit
2026-10-14 04:58:51 +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
6901978109
feat: let plugins add frames above the subject, under the sender, above the quote and above a conversation, and buttons to the reader toolbar and attachment menus
2026-10-14 04:56:55 +02:00
Linus Rath
14b1d4ea95
feat: let plugins add a section to task details and buttons to the task list toolbar
2026-10-14 04:48:29 +02:00
Linus Rath
5e71c22f56
feat: let plugins add a section to contact details and buttons for selected contacts
2026-10-14 04:46:08 +02:00
Linus Rath
d144a6e85c
feat: let plugins add sections to event details and the event form, and label calendar days
2026-10-14 04:43:40 +02:00
Linus Rath
8fbc8a1c1d
feat: let plugins add frames above and in an empty message list and buttons to message rows and the selection toolbar
2026-10-14 04:43:22 +02:00
Linus Rath
1ba53655e5
fix: let identity hooks stop a plugin's change, send notification clicks to plugins that show notifications, and mark reading mail as high risk
2026-10-14 04:37:24 +02:00
Linus Rath
8ee97f23e3
feat: translate the new plugin permissions into every language
2026-10-14 04:34:48 +02:00
Linus Rath
8ad8f44e78
Merge branch 'feat/plugin-host-apis' into feat/plugin-system-audit
...
# Conflicts:
# lib/plugin-sandbox/permission-text.ts
# lib/plugin-sandbox/permissions.ts
# lib/protocol-handlers/mailto.ts
# locales/en/common.json
2026-10-14 04:34:14 +02:00
Linus Rath
5d9268c923
feat: let plugins add buttons, calendar day labels and pages, and use connected accounts from the sandbox
2026-10-14 04:31:43 +02:00
Linus Rath
3a83c00e00
feat: describe every place a plugin can show UI in one catalogue, with a permission for each area
2026-10-14 04:31:43 +02:00
Linus Rath
437bb1d11a
test: require every plugin permission to gate a method, hook or slot
2026-10-14 04:28:24 +02:00
Linus Rath
3a65964d26
feat: let plugins show notifications that name the plugin
2026-10-14 04:26:16 +02:00
Linus Rath
ead925c1b8
feat: let plugins open a filled-in composer and save drafts
2026-10-14 04:23:17 +02:00
Linus Rath
b2b80d1755
feat: translate the plugin account dialog into every language
2026-10-14 04:19:43 +02:00
Linus Rath
31205e44d8
fix: stop cutting off uploads over 10 MB that pass through the server, such as office documents saved from the editor
2026-10-14 04:17:51 +02:00
Linus Rath
08e2d65944
feat: let untrusted plugins save attachments and message sources of a given message
2026-10-14 04:16:31 +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
8fd6bc42c3
feat: let plugins read any message, list a folder and see the folders
2026-10-14 04:13:33 +02:00
Linus Rath
3aec045163
test: require a call site for every plugin hook
2026-10-14 04:06:37 +02:00
Linus Rath
121d8ba30c
feat: let plugins manage templates, sender signatures and the out-of-office reply
2026-10-14 04:06:06 +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
3df031edd1
feat: let plugins read and change calendar events and tasks
2026-10-14 04:02:47 +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
2fe865f108
feat: tell plugins when the server accepted a sent or scheduled message, but not an undone one
2026-10-14 03:58:58 +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
Linus Rath
e93c9f89ae
feat: tell plugins about the out-of-office reply, and let them stop a change to it
2026-10-14 03:52:00 +02:00
Linus Rath
7b2119456d
feat: let plugins stop or prefill the composer and mailto links, and tell them when it opens, closes and saves a draft
2026-10-14 03:50:55 +02:00
Linus Rath
8e72c05a8f
feat: tell plugins when filter rules are loaded or edited, and let them stop a save
2026-10-14 03:49:17 +02:00
Linus Rath
adf5ad6c16
test: require every calendar and task hook to have a call site
2026-10-14 03:46:11 +02:00
Linus Rath
f9c53e5582
feat: tell plugins when templates change or are inserted, and let them rewrite a template before it goes in
2026-10-14 03:45:12 +02:00
Linus Rath
74b194c3e5
feat: tell plugins about sender identity changes and the chosen From, and let them stop a change or rewrite the signature
2026-10-14 03:44:33 +02:00
Linus Rath
be26f96bea
Merge branch 'hooks/calendar' into feat/plugin-system-audit
2026-10-14 03:44:13 +02:00
Linus Rath
348ec1d399
feat: let plugins stop app shortcuts and hear when one ran
2026-10-14 03:44:09 +02:00
Linus Rath
0cf80c1689
feat: tell plugins when tasks are loaded, created, changed, checked off, deleted or filtered, and let them stop changes
2026-10-14 03:43:33 +02:00
Linus Rath
e16e8946a8
test: require every contact and file hook to have a call site
2026-10-14 03:42:34 +02:00
Linus Rath
89452871fb
feat: tell plugins when an event reminder fires and when it is dismissed
2026-10-14 03:40:19 +02:00
Linus Rath
77c7589e04
Merge branch 'hooks/contacts' into feat/plugin-system-audit
2026-10-14 03:40:05 +02:00