diff --git a/PROGRESS.md b/PROGRESS.md index 2a95803..b999171 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -7,7 +7,7 @@ **Kürzlich abgeschlossen:** Phase L vollständig (L1 Block-System, L2 Drag&Drop-Editor, L3 Renderer, L4 KI-Steuerung, L5 XRechnung-Format-Layer) — Details siehe Phase-L-Sections unten. **Offene Roadmap-Phasen (user-abgestimmt, startklar):** -- **Phase M** — MiniApp-Plattform & Dashboard-Builder (M1-M6). **M1 ✓** (Universal-Registry, `/api/v1/miniapps`), **M2 ✓** (persönliche Dashboards: Tabelle, CRUD, Seed, RLS), **M3 ✓** (Dashboard-Builder: Edit-Modus, Drag&Drop, Palette, Tabs), **M4 ✓ erledigt** (System-Rückbau: alle Dashboard-Inhalte als MiniApps, Core = reiner Host — siehe Phase-M4-Section). **Nächster Schritt: M5 Plugin-MiniApps** (contacts, tasks, calendar, wiki, dms, mail, knowledge, automation liefern je MiniApps via Manifest-Contribution). +- **Phase M** — MiniApp-Plattform & Dashboard-Builder (M1-M6). **M1 ✓** (Universal-Registry, `/api/v1/miniapps`), **M2 ✓** (persönliche Dashboards: Tabelle, CRUD, Seed, RLS), **M3 ✓** (Dashboard-Builder: Edit-Modus, Drag&Drop, Palette, Tabs), **M4 ✓** (System-Rückbau, Core = reiner Host), **M5 ✓ erledigt** (Plugin-MiniApps: dms, mail, wiki, graph_rag, automation liefern je eine MiniApp — siehe Phase-M5-Section). **Nächster Schritt: M6 Weitere Hosts** (AI-Agenten-Tool-Ausgabe als miniapp-Block, Windows via windowStore; Wiki-Einbettung nur bei Bedarf). - **Phase N** — Workspace-Scopes (N1-N4). 0 Umbau — Fundament (config JSONB, X-Workspace-ID, /context, Sidebar-Consumer) existiert bereits. - **Phase O** — UI-Overhaul (umbenannt von Doppel-L, Bug-Verifikation steht im Roadmap-Eintrag: 5/7 Bugs bereits erledigt, offen: 1.2 Kontakte-Drag-Drop in Ordner, 1.3 MoveDialog) @@ -83,7 +83,7 @@ **User-Vision:** Universelle MiniApps (Chat + Dashboard + Windows + AI-Agenten), Dashboard-Builder mit Edit-Modus/Drag&Drop/Resize/Tabs/pro-Widget-Settings, System-Dashboard-Teile zurück in Plugins (Core = reiner Host), Permission-Integration fail-closed. -**Status:** in_progress — M1 ✓, M2 ✓, M3 ✓, M4 ✓ erledigt (siehe Sections unten). Offen: M5 (Plugin-MiniApps), M6 (weitere Hosts). Details: PLATFORM_ROADMAP.md Phase M. +**Status:** in_progress — M1 ✓, M2 ✓, M3 ✓, M4 ✓, M5 ✓ erledigt (siehe Sections unten). Offen: M6 (weitere Hosts). Details: PLATFORM_ROADMAP.md Phase M. **Live-Bestand analysiert (2026-08-29):** miniapp_registry (kommunikation, 92 Z.), MiniAppContribution (LÜCKE: kein permission-Feld), FrontendDashboardWidget (LÜCKE: kein settings_schema), MiniAppBlock.tsx (Chat-Host fertig), DashboardGrid + 4 Widgets, Dashboard.tsx (170 Z.) mit hardcodierten StatCards/ActivityFeed/System-Metrics (Rückbau-Bestand für M4), @dnd-kit vorhanden. @@ -102,7 +102,29 @@ - ✅ ruff clean (M1-Dateien); 2 Ruff-Funde in automation/knowledge = per Stash bewiesener Vorbestand - ✅ Doku: api-documentation.md (2 Endpoints), plugin-development-guide.md (MiniApp-Beitrag-Muster) -**Offen in Phase M:** M5 Plugin-MiniApps, M6 weitere Hosts. +**Offen in Phase M:** M6 weitere Hosts. + +## Phase M5 — Plugin-MiniApps (2026-08-30) ✅ + +**Spec:** [#363](https://forgejo.media-on.de/Leopoldadmin/leocrm/issues/363) | **Roadmap:** Phase M, M5 + +**Umgesetzt:** +- 5 Manifest-Beiträge (MiniAppContribution, gleiche Philosophie wie contacts_stats): + - dms: `dms_folders` (dms:read, Ordner mit Dateizählern, Settings max_items) + - mail: `mail_unread` (mail:read, ungelesene Mails je Ordner, Settings max_items) + - wiki: `wiki_recent` (wiki:read, zuletzt aktualisierte Artikel, Settings max_items) + - graph_rag: `graph_overview` (graph:read, Beziehungsübersicht, Settings max_items) + - automation: `automation_status` (automation:read, aktive/inaktive Automationen, Settings max_items) +- 5 Frontend-Widgets auf bestehenden API-Clients (keine neuen Backend-Endpoints, §0.2): DmsFoldersWidget (fetchFolders), MailUnreadWidget (fetchAccounts+fetchFolders/unread_count), WikiRecentWidget (fetchWikiArticles), GraphOverviewWidget (fetchGraphRelationships), AutomationStatusWidget (useAutomations). MiniAppHost-Registry +5. +- **Bug gefunden & gefixt (live gemessen):** automation/plugin.py on_activate re-registrierte Manifest-MiniApps in einem Legacy-Block OHNE component/permission — überschrieb die korrekte M1-Registrierung aus super().on_activate(). Legacy-Block entfernt + Regressionstest gesichert (test_automation_legacy_reregistration_removed). +- ruff: wiki I001 Import-Sortierung gefixt. + +**Verifiziert (2026-08-30):** +- TDD: Rot 7 failed → ✅ Grün **8/8** (tests/test_m5_plugin_miniapps.py: Manifest-Felder 5, Lifecycle-component-Beweis 1, settings_schema 1, Legacy-Regressionstest 1) +- ✅ Backend-Regression: M5 + Registry + M4 + M2 **53/53**; nach automation-Fix: M5 + lifecycle + registry **26/26** +- ✅ Frontend: Vitest **22/22**; `npx tsc --noEmit` clean; Production-Build OK +- ✅ Deploy (7ed5349 + cd34bab, Full): Health healthy, Alembic 0144, RLS 113 Tabellen +- ✅ Produktions-Verifikation (curl): /api/v1/miniapps?host=dashboard liefert **17 Apps, 11 renderable** — alle 5 neuen Apps live mit component und Permission (automation_status nach Fix: comp=YES, perm=automation:read) ## Phase M4 — System-Rückbau (2026-08-30) ✅