Commit Graph
2506 Commits
Author SHA1 Message Date
Linus Rath 1f89e89ce5 feat: let plugins refresh their message-list badges, which now need only the read permission 2026-10-14 06:26:10 +02:00
Linus Rath 11b1ec2fa5 feat: show plugin setting labels in the user's language when the plugin translates them 2026-10-14 06:24:32 +02:00
Linus Rath 49511dff38 feat: let plugins read their own non-secret admin settings without the admin permission 2026-10-14 06:23:10 +02:00
Linus Rath f1a84b5aa1 feat: list a message's attachments in the view plugins get 2026-10-14 06:21:17 +02:00
Linus Rath e9b2ef3258 fix: let plugin frames use forms without letting them post anywhere 2026-10-14 06:19:12 +02:00
Linus Rath 5615704f5e fix: start plugins on every page, not only after the mail view opened 2026-10-14 06:18:19 +02:00
Linus Rath ae28122f67 fix: send plugin uploads through the proxy with their length, so servers like Paperless receive the file 2026-10-14 06:10:05 +02:00
Linus Rath ab5f298b1f test: say why the remount test's effect has no dependencies 2026-10-14 05:44:35 +02:00
Linus Rath 14c5b10c6a feat: tell a plugin page which of its pages is open 2026-10-14 05:30:34 +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 a4b100c82c test: require every app, navigation and settings slot to be mounted 2026-10-14 05:25:38 +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 86e593a752 feat: add a command palette on Ctrl+K where plugins can add their own commands 2026-10-14 05:10:10 +02:00
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 d6eac01d1f feat: let plugins add a page of their own in Settings, under a Plugins group 2026-10-14 05:01:33 +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 b8b7a4ed15 feat: let plugins add pages of their own with an entry in the navigation 2026-10-14 04:57:00 +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 b57fa64557 feat: let plugins add buttons to the top bar, and to the header menu on phones 2026-10-14 04:50:21 +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 37846bec44 feat: let plugins add collapsible sections to the mail sidebar 2026-10-14 04:45:24 +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