feat(M5): Plugin-MiniApps — dms, mail, wiki, graph_rag, automation (#363)
Check Cross-Plugin Imports / check (push) Has been cancelled

- 5 Manifest-Beiträge (MiniAppContribution): dms_folders (dms:read), mail_unread (mail:read), wiki_recent (wiki:read), graph_overview (graph:read), automation_status (automation:read) — je settings_schema max_items, order 60-100
- 5 Frontend-Widgets auf bestehenden API-Clients (keine neuen Backend-Endpoints): DmsFoldersWidget, MailUnreadWidget, WikiRecentWidget, GraphOverviewWidget, AutomationStatusWidget
- MiniAppHost-Registry +5; tsc clean, build OK
- Tests: M5 7/7 (TDD rot->gruen), Backend-Regression 53/53, Vitest 22/22
This commit is contained in:
Agent Zero
2026-08-31 00:10:31 +02:00
parent 24dc78977c
commit 7ed5349e86
12 changed files with 524 additions and 2 deletions
+20
View File
@@ -12,6 +12,7 @@ from app.plugins.manifest import (
FrontendMenuItem,
FrontendPageRoute,
FrontendSettingsPage,
MiniAppContribution,
PluginManifest,
PluginRouteDef,
)
@@ -138,6 +139,25 @@ class MailPlugin(BasePlugin):
],
events=[],
migrations=["0001_initial.sql", "0006_flag_type.sql", "0007_sync_queue.sql", "0008_sync_queue_deleted_at.sql", "0009_remove_mail_soft_delete.sql", "0010_add_deleted_at.sql"],
miniapps=[
MiniAppContribution(
app_id="mail_unread",
name="Postfach-Status",
icon="Mail",
description="Ungelesene E-Mails je Konto und Ordner.",
permission="mail:read",
settings_schema={
"fields": [
{"name": "max_items", "label": "Max. Ordner", "type": "number", "default": 6},
]
},
col_span=2,
row_span=1,
hosts=["chat", "dashboard", "window"],
component="@/components/dashboard/MailUnreadWidget",
order=70,
),
],
permissions=["mail:read", "mail:send", "mail:config", "mail:share", "mail:write", "mail:delete"],
menu_items=[
FrontendMenuItem(label_key='nav.mail', label='E-Mail', path='/mail', icon='Mail', order=30, permission='mail:read'),