Agent Zero
7a755d32e6
docs(progress): Uebergabe-Konsistenz — M1 done, naechster Schritt M2; Phase-M-Status in_progress statt not_started
2026-08-30 14:06:11 +02:00
Agent Zero
84cb82d2c4
feat(M1): Universal-MiniApp-Registry — Plugin-Layer, permission fail-closed, Lifecycle, /api/v1/miniapps
...
Check Cross-Plugin Imports / check (push) Has been cancelled
- app/plugins/miniapp_registry.py: Registry aus kommunikation in Plugin-Layer gehoben (Plattform-Konzept, hosts chat/dashboard/window)
- MiniAppDef: permission (fail-closed) + settings_schema + col/row_span + hosts + component + order + builtin
- MiniAppContribution + FrontendDashboardWidget (Manifest-Schema) um M1-Felder erweitert — dashboard_widgets ist Alias von miniapps (ein Contribution-Typ, #359-Philosophie)
- BasePlugin.on_activate: automatische Manifest-Registrierung; on_deactivate: unregister_plugin (nur eigene Apps)
- GET /api/v1/miniapps (server-seitig permission-gefiltert, ?host=) + GET /api/v1/miniapps/{app_id} (403/404 fail-closed)
- kommunikation/miniapp_registry.py = Kompatibilitaets-Bruecke (Bestands-Importer unveraendert)
- Doku: api-documentation.md + plugin-development-guide.md (MiniApp-Beitragsmuster)
TDD: Rot 16 failed -> Gruen 16/16; Regressionen: contracts 23/23, lifecycle+route_order 4/4; ruff clean (M1-Dateien, Vorbestand per Stash bewiesen); create_app OK
2026-08-30 13:00:33 +02:00
Agent Zero
5eade3e005
docs(roadmap): Phase P — Page-Lock-Konzept user-bestaetigt (is_locked, 409 page_locked, Lock-Button, Owner/Admin-only)
2026-08-30 12:47:20 +02:00
Agent Zero
65c22e9200
docs(roadmap): Phase P — Notizen-App (Notion-artig, ersetzt Wiki komplett)
...
- P1 Datenmodell (WikiPage: blocks JSONB, parent_id-Hierarchie, Migration Markdown->Text-Bloecke)
- P2 Sidebar Seiten-Baum (dnd-kit, Favoriten, Suche)
- P3 Inline-Block-Editor (Live-Editing ohne Mode-Toggle wie Notion, Slash-Menue, Auto-Save, Quer-Verweise, Drag&Drop)
- P4 MiniApp-Bloecke (erster MiniApp-Konsument) + wiki_blocks()-Contract (Plugin-Erweiterbarkeit, Basis fuer spaeteren Datenbank-Block)
- P5 Vollstaendige Such-Indexierung (content_tsv + Embedding-Chunks, hybrid FTS/vector, Re-Index bei Auto-Save)
- Edit-Konzept recherchiert: Notion hat keinen separaten Edit-Modus (Live-Inline-Editing, Auto-Save); Lese-Ansicht via Permissions + optional Page-Lock
- User-Entscheidungen: Wiki komplett ersetzen, keine Notion-Datenbanken erstmal, MiniApps als Bloecke
2026-08-30 12:42:42 +02:00
Agent Zero
3e5ce47798
chore(cleanup): Chaos-Beseitigung — Doppel-Phase-L aufgeloest, PROGRESS-stand modernisiert
...
- Roadmap: UI-Overhaul umbenannt zu Phase O (L war doppelt vergeben), Bug-Verifikation Phase 1 eingetragen (5/7 bereits erledigt: 1.1+1.4+1.5+1.6+1.7; offen: 1.2 Kontakte-Drag-Drop Ordner, 1.3 MoveDialog)
- AI-Assistant-Konflikt-Notiz entschieden: Option (b) — Seite bleibt, Phase-2-Vorschlag ueberholt
- Phase L Dokumente-Generator als ABGESCHLOSSEN markiert (b311ab7 + 559bba6 , deployed, Alembic 0143)
- PROGRESS.md 'Weitermachen': veraltete Paketliste (alle 6 erledigt) + falscher Produktionsstand (20ff5e2/0142) ersetzt durch realen Stand (L-Deploy, 0143) + offene Phasen M/N/O + Vorbestands-Findings
- Lokale Artefakte entfernt: dump.rdb, frontend/test-results (4.3MB, beides war korrekt ignoriert)
2026-08-30 09:23:30 +02:00
Agent Zero
f6516e48ca
docs(roadmap): Phase N Workspace-Scopes + Workspace/Dashboard-Abgrenzung (user-korrigiert)
...
- Phase N: Modul-Teilmengen pro Workspace (N1 Scope-Registry via Contract, N2 dynamischer Scope-Editor, N3 Contacts/DMS/Mail/Calendar, N4 restliche Module)
- KLARE TRENNUNG Workspace vs Dashboard: Workspace = Admin-Gruppen-Kontext (was verfuegbar ist, workspace_widgets); Dashboard = persoenlich (Phase M, dashboards-Tabelle)
- 0 Umbau: config JSONB + X-Workspace-ID + /context + Sidebar-Consumer existieren bereits
- Security-Invariante dokumentiert: Scope = reine UND-Einschraenkung zu RLS/ABAC/Permissions
2026-08-30 09:18:00 +02:00
Agent Zero
dfe46dff16
docs(roadmap): Phase M — MiniApp-Plattform & Dashboard-Builder verankert (M1-M6, user-abgestimmt)
...
- M1 Universal-Registry (permission fail-closed + settings_schema, /api/v1/miniapps, Server-seitiger Permission-Filter, Lifecycle-Cleanup)
- M2 Dashboard-Backend (dashboards-Tabelle pro User, Tabs, Layout JSONB, RLS, Dual-Path)
- M3 Builder-Frontend (Edit-Modus, dnd-kit Grid, Resize, Tabs, Settings-Form aus settings_schema)
- M4 System-Rueckbau (StatCards->contacts, ActivityFeed->audit, System-Metrics->System-MiniApp, alte Widgets migrieren)
- M5 Plugin-MiniApps (contacts, tasks, calendar, wiki, dms, mail, knowledge, automation)
- M6 Weitere Hosts (AI-Agenten-Tool-Ausgabe, Windows, Wiki-Eval)
- Basis-Live-Bestand dokumentiert inkl. bewiesener Luecken (MiniAppContribution ohne permission, FrontendDashboardWidget ohne settings_schema)
- dashboard_widgets wird Alias von miniapps (ein Contribution-Typ, #359-Philosophie)
2026-08-29 23:06:35 +02:00
Agent Zero
559bba69a4
feat(L4-L5): KI-Steuerung + XRechnung-Format-Layer (EN16931/CII)
...
Check Cross-Plugin Imports / check (push) Has been cancelled
L5 Format-Layer (User-Klaerung: Verkaufsmodul spaeter, Format JETZT):
- einvoice.py: EN16931/XRechnung CII-XML-Generator (ElementTree, XML-Escaping gratis), Pflichtfeld-Validierung mit BT/BG-Codes, Decimal-kommerzielles Rounding, Header-Tax-Breakdown pro VAT-Satz, Profile en16931|xrechnung (XRechnung 3.0)
- POST /einvoice/render (inline->XML), /einvoice/validate (422 mit BT-Fehlliste), /einvoice/render-for (Contract-Resolver einvoice_data() — Andockpunkt Verkaufsmodul, 404 no_data_source ohne Beitrag)
L4 KI-Steuerung:
- POST /documents/suggest: Natuerliche Sprache -> Block-Komposition via zentralem llm_complete (Cost-Tracking, Tenant-Budget), Registry-Sanitizing (ungueltige KI-Bloecke gefiltert, IDs serverseitig), Code-Fence-Stripping, 502 ai_unavailable/invalid_ai_response
- Frontend: KI-Vorschlag-Panel im PrintTemplateEditor (Sparkles-Icon, Prompt-Textarea, Bloecke werden angehaengt), i18n de/en
TDD: Rot 25 failed -> Gruen 25/25 (Validierung, XML-Struktur/Escaping/Summen, Contract-Mocks, API 200/422/403/404, Suggest Mock-LLM/Fence/502). tsc exit 0, Build OK, ruff clean. Doku: api-documentation.md, plugin-development-guide.md (einvoice_data-Contract), PROGRESS.md
2026-08-29 18:05:55 +02:00
Agent Zero
b311ab7aa1
feat(L1-L3): Dokumente-Generator — Briefpapier+Block-System+Drag&Drop-Editor+Renderer
...
Check Cross-Plugin Imports / check (push) Has been cancelled
- Briefpapier (letterheads): Seiten-Setup (A4/A5/Letter, Ränder), Header/Footer-Blöcke, Wasserzeichen, Logo-Upload (DocumentAsset, data:-URI-only)
- Druckvorlagen (print_templates): Block-Komposition mit Briefpapier-Ref + entity_type
- Block-Registry (document_blocks.py): text/image/shape(line/rect/circle)/table/spacer/divider/placeholder/pagebreak + Modul-Beiträge via document_blocks()-Contract
- Renderer (document_renderer.py): Blocks→HTML→PDF via WeasyPrint (SSRF-Sandbox data:-URI-only), @page-Frame mit running header/footer, Placeholder-Beispiel-Defaults gegen StrictUndefined
- Contract-Beitrag contacts: document_placeholders/document_data (#359-Muster wie importexport_entities)
- 13 neue Endpoints in documents.py: Letterhead-CRUD, Template-CRUD, Assets, document-blocks, document-placeholders, preview (HTML), render (PDF)
- Migration: Plugin-SQL 0003 (idempotent) + Alembic 0143 (Dual-Path, RLS fail-closed crm_api)
- Frontend: api/documents.ts, Settings→Dokumente (settings_pages), BlockEditor (@dnd-kit Palette/Canvas/Config/Live-Preview-iframe), LetterheadEditor, PrintTemplateEditor, DocumentGenerationDialog (global, ContactDetailPage-Integration)
- i18n de/en, api-documentation.md, plugin-development-guide.md, PROGRESS.md
Verifikation: 32/32 neue Tests + 9/9 Regressionen, tsc exit 0, Build OK 2.79s, Alembic-Fresh-DB 0143 mit RLS bewiesen, ruff clean
2026-08-29 09:49:16 +02:00
Agent Zero
fa429c3a88
docs(progress): Paket-6-Eintrag + offene Findings gepflegt (Frontend-Vorbestand erledigt, neuer Core-FK-Vorbestandsfund: entity_attachments.dms_file_id -> files blockiert alembic check)
2026-08-29 02:52:42 +02:00
Agent Zero
67c0dcd34c
feat( #357 ): Paket 6 — Contact-Model ins ContactsPlugin (physischer Move + PEP-562-Lazy-Re-Export-Bruecke, ALEMBIC_OWNED_TABLES gegen Schema-Dual-Ownership, outbox-Vorbestands-Fix in models/__init__)
Check Cross-Plugin Imports / check (push) Has been cancelled
2026-08-29 02:48:31 +02:00
Agent Zero
df85fdcb5b
feat( #358 ): Paket 5 — statische /contacts-Routen entfernt nach bewiesenem PluginRouteRenderer (nested Routes, :id-Matching, useParams), Contacts-Seiten in STATIC_COMPONENT_MAP (ARCH-019)
2026-08-29 02:10:32 +02:00
Agent Zero
b5036a1fc0
feat( #357 ): custom_field_definitions generisch — W4b-Muster (422/403-Entity-Checks, {items,total}-Shape, ACL-Fix), zentrale Helper, Plural-Ableitungs-Fix
2026-08-29 01:27:24 +02:00
Agent Zero
36dd7c5101
test( #357 ): Router-Test gefixt (QueryClientProvider+Mocks, 2/2 passed); Geister-Test ContactEditModal nach §10 gelöscht (Komponente weg seit db4701b)
2026-08-28 23:38:01 +02:00
Agent Zero
d9ca8af7e0
docs(progress): Weitermachen-Block fuer naechstes Modell ergaenzt — 7 offene Pakete mit Live-Messung + Repro-Steps, Offene-Findings aktualisiert
2026-08-28 22:49:40 +02:00
Agent Zero
20ff5e2142
feat( #358 ): W3c — /contacts Sidebar-Sonderfall entfernt (P10)
...
Check Cross-Plugin Imports / check (push) Has been cancelled
- ContactsPlugin-Manifest: menu_items + page_routes ergänzt
(/contacts, /contacts/:id, /contacts/dedup — contacts:read-Gate)
- FrontendMenuItem/FrontendPageRoute-Imports in plugin.py ergänzt
- Sidebar.tsx: /contacts aus singleItems entfernt (nur noch dashboard +
system-dashboard als non-plugin items) — contacts kommt jetzt via
getAllMenuItems() aus dem Plugin-Manifest
- Funktionserhalt bewiesen: routePermissions-Tests 6/6 passed
(die durch die Manifest-Änderung betroffen sein könnten)
fixes #358 (P10-Teil)
2026-08-28 22:08:46 +02:00
Agent Zero
eebc2cf4de
docs(roadmap): Phase L — Dokumente-Generator geplant (Briefpapier+Blöcke+Drag/Drop+KI+E-Rechnung, Basis: report_generator, Contract-Muster wie Import/Export)
2026-08-28 21:57:30 +02:00
Agent Zero
ad848a5053
feat( #359 ): export_service.py konsolidiert — /export via ContactsContract
...
Check Cross-Plugin Imports / check (push) Has been cancelled
Der 78-Zeilen-Duplikat-Export (app/services/export_service.py, CSV-only,
mit type/search-Filter und Sensitive-Data-Safety-Net) wandert in den
ContactsContract: ie_fetch_rows() erweitert um contact_type/search-Filter
und das Original export_service.py CSV-Profil (17 Spalten inkl.
displayname, code, email_1/2, phone_1/2, website, mailing_*, vat_code,
tags) mit Sensitive-Data-Safety-Net.
contacts/routes.py /export nutzt jetzt den Contract statt export_service.
app/services/export_service.py geloescht.
Funktionserhalt bewiesen: 15/15 tests/test_performance.py passed
(inkl. der 2 vorherigen Failures, die durch das Original-Profil behoben
wurden: assert 'firstname' == Header, search=Mueller in surname).
fixes #359 (export_service-Konsolidierung)
2026-08-28 20:31:27 +02:00
Agent Zero
b7194f0d58
docs(progress): W4c Custom-Fields-Routen in ContactsPlugin migriert dokumentiert — Funktionserhalt 11/11 bewiesen ( #357 )
2026-08-28 13:25:44 +02:00
Agent Zero
c6decf5556
feat( #357 ): W4c — Custom-Fields-Routen aus Core in ContactsPlugin migriert
...
Check Cross-Plugin Imports / check (push) Has been cancelled
Kritikpunkt 14: app/routes/custom_fields.py war 100% Contact-spezifisch
(importiert Contact, nutzt contacts:read/write, Route /{contact_id}/custom-fields)
aber lag als scheinbar generischer Core-Service.
Fix: Die komplette Logik (2 Endpoints GET/PATCH /{contact_id}/custom-fields,
_collect_custom_field_definitions, _merge_definitions_with_values) wandert in
app/plugins/builtins/contacts/routes.py (gleicher Router-Prefix /api/v1/contacts).
app/routes/custom_fields.py geloescht, main.py bereinigt.
generischer custom_field_definitions.py-Endpoint bleibt im Core (echtes Core-
Entity). Frontend-Endpoint-Shapes unveraendert.
Funktionserhalt bewiesen: 11/11 tests/test_custom_fields.py passed.
fixes #357 (W4c-Teil)
2026-08-28 13:20:54 +02:00
Agent Zero
d7b3c7c1b5
chore: Root node_modules aus Repo entfernt + .gitignore ergänzt (versehentlich committet durch vitest-worker)
2026-08-28 12:42:09 +02:00
Agent Zero
cd988d6163
fix: versehentlich committetes node_modules/.vite entfernt
2026-08-28 12:41:41 +02:00
Agent Zero
0d052ab604
fix( #357 ): Zwei bewiesene Vorbestand-Fixes
...
1. Saved-Views/Filters: invalid entity_type wirft jetzt 422 (FastAPI-
Validierungs-Konvention) statt 400 — Test-Expectation war korrekt.
Beweis: test_create_saved_filter_invalid_entity_returns_422 passed.
2. AppShell.test.tsx: useCurrentUser-Export im @/api/hooks-Mock ergaenzt
(fehlt seit jeher — Vorbestand). Der urspruengliche 'No useCurrentUser
export' Error ist weg.
fixes #357 (Vorbestand-Teil)
2026-08-28 12:41:25 +02:00
Agent Zero
b7b7d41c0c
feat( #357 ): W4b — Saved-Views/Filters von contacts:read entkoppelt
...
Check Cross-Plugin Imports / check (push) Has been cancelled
- ENTITY_PLUGIN_OWNERS-Registry: trackt, welches Plugin welche Entity registriert
- get_entity_read_permission(): leitet die modul-korrekte Permission ab
(contacts -> contacts:read, tasks -> tasks:read, ...) mit Core-Fallback
- registry.activate(): uebergibt plugin_name an register_entity_model
- saved_views.py + saved_filters.py: statische contacts:read-Dependencies
durch dynamische _check_entity_read() ersetzt — Saved Views/Filters fuer
fremde Entities brauchen jetzt die richtige modul-spezifische Permission
Verifikation: 10/11 tests/test_saved_filters.py passed (1 Vorbestand-
Failure per Stash bewiesen), create_app OK, ruff modified-files gruen.
fixes #357 (W4b-Teil)
2026-08-28 12:07:57 +02:00
Agent Zero
9bb1dbae03
docs(progress): W3b Settings Contribution-Wahrheit dokumentiert — 3 Plugin-Duplikate aus hardcodedNavItems entfernt, Dashboard-Loader als Vite-Technik verifiziert
2026-08-28 07:14:14 +02:00
Agent Zero
b1a75510d6
refactor( #358 ): W3b Settings Contribution-Wahrheit — hardcoded mail/ai/notifications Nav-Items entfernt (7 Plugins liefern settings_pages via Manifest, Dedup greift nicht mehr); Dashboard-Verify: Loader-Registry ist Vite-Code-Splitting-Technik, Widgets kommen via Manifest-API (Kritikpunkt 20a teilweise widerlegt)
2026-08-28 07:13:01 +02:00
Agent Zero
1acef9669a
docs(progress): Suite-Isolation behoben ( #357 ) — close_engine nullt globale Engines, Engine-Restore nach Teardown, ACL-Batch 130 passed
2026-08-28 00:03:03 +02:00
Agent Zero
b691dd36c0
fix( #357 ): Suite-Isolation behoben — close_engine() nullt globale Engines
...
Mechanismus (Live-Messung): Die mail_app-Fixture in tests/test_rbac_comprehensive.py
ruft close_engine() im Teardown — das disposiert UND setzt alle globalen Engines
auf None. Jede nachfolgende Test-Suite brach mit 'relation "users" does not exist'.
Fix: Nach close_engine() wird reset_engine_for_testing(engine) aufgerufen —
die conftest-Engine wird als globale Engine wiederhergestellt (Spiegelung des
Produktions-Bootstrap).
Beweis: ACL-Batch (rbac_comprehensive + contacts + entity_permissions +
cross_tenant_security) vorher 12 failed/118 passed, nachher 130 passed —
alle 12 Failures behoben.
fixes #357 (Isolation-Teil)
2026-08-28 00:02:15 +02:00
Agent Zero
9c62d35047
docs(progress): W4a Phase 1+2 dokumentiert — Backend-Kern + Frontend-Dialog deployed, Funktionserhalt 45/45 bewiesen, Vorbestand-Failures Stash-geprueft ( #359 )
2026-08-27 21:35:56 +02:00
Agent Zero
38df597f11
feat( #359 ): W4a Phase 2 — zentraler Import/Export-Dialog (Frontend)
...
- ImportExportDialog.tsx (neu): Modal lg/xl nach bestehendem ui/Modal-Muster
- Export-Tab: Formatauswahl (csv/xlsx/json), Download, Fehler-Handling
- Import-Tab: 4 Schritte (Datei -> Mapping -> Dry-Run -> Ausführung+Report),
Mapping-Vorschau mit Modul-Heuristik, Background-Job-Polling ab 1000 Zeilen
- i18n: 24 importexport.*-Keys in de.json + en.json (keine hardcoded Strings)
- Integration: ContactsList Toolbar-Button (contacts:read-Gate, Upload-Icon,
entityType=contacts vorgewählt) über bestehendes pluginToolbarStore-Muster
Gates: Vitest 12/12 (routePermissions + importExportDialog), tsc exit 0,
Production-Build exit 0 (vor Commit). 6 Failures in contacts/shell Suiten
als Vorbestand bewiesen (Stash-Test: identisch auf clean HEAD f27f047 ).
fixes #359 (Phase 2)
2026-08-27 21:34:13 +02:00
Agent Zero
cd8ef7500c
feat( #359 ): W4a Phase 1 — Import/Export Contribution-Architektur Kern
...
Check Cross-Plugin Imports / check (push) Has been cancelled
- Format-Registry (app/core/importexport_registry.py): FormatHandler-Protokoll,
available_for() Schnittmenge, Singleton + Testing-Reset
- importexport_formats-Plugin (csv/json/xlsx), lifecycle-korrekt: on_activate
registriert Handler in der Core-Registry, on_deactivate unregistriert
- ContactsContract: importexport-Beitrag (ie_*-Methoden) — Contacts besitzt
seine Import/Export-Fachlogik jetzt selbst
- import_export_service.py: generische Engine, delegiert generisch ueber
registry.list_discovered() an den besitzenden Contract (keine hartcodierten
Plugin-Namen mehr); Signaturen identisch
- Funktionserhalt bewiesen: 45/45 import_export-Suite passed (inkl.
Fehler-Multiplizitaet: 2 failed rows -> 3 total_errors, erreicht via
ie_required-Weitergabe + ie_row_valid-Nur-contacts-Early-Return)
fixes #359 (Phase 1)
2026-08-27 21:11:14 +02:00
Agent Zero
d8a4063c48
docs(progress): W4a Import/Export Contribution-Architektur — finale Spec ( #359 ) festgehalten, zentraler Dialog per Toolbar-Button, Formate als Plugins
2026-08-27 20:47:00 +02:00
Agent Zero
56dcc86254
docs(progress): Welle 3a — Route-Permission-Wahrheit dokumentiert ( #358 ), Gates tsc+Build+Vitest bewiesen
2026-08-27 20:06:02 +02:00
Agent Zero
f27f0474ef
fix(#P7-P8): Statische Route-Permissions auf Backend-/Manifest-Wahrheit gestellt — /communication comm:read (Phantom communication:read entfernt), /mail/settings mail:config (Backend verlangt config), /import-export import_export:read (Core-Modul, kein Plugin — Kritik-Aussage korrigiert), /activity audit:read (Phantom activity:read entfernt, Seite nutzt Audit-API), /wiki wiki:read (vorher ungeschützt); Regressionstest routePermissions.test.ts 6/6; Gates: tsc 0, Production-Build exit 0
2026-08-27 20:04:18 +02:00
Agent Zero
88d96d4a49
docs(progress): Welle 2b — Contacts-Entity-Registry Single-Source dokumentiert ( #357 ), Vorbestand-Isolation per Stash bewiesen
2026-08-27 18:54:15 +02:00
Agent Zero
e1a59e759f
refactor(#11-Kritik): Contacts-Entities aus statischem Core-Registry entfernt — ContactsPlugin.get_entity_models() ist Single Source (contact/contacts/company); conftest spiegelt Produktions-Bootstrap idempotent (autouse-Fixture); Regressionstests beweisen Plugin-Registrierung; 12 ACL-Batch-Failures per Stash-Test als Vorbestand bewiesen (Suite-Isolation, identisch auf clean HEAD)
2026-08-27 18:53:12 +02:00
Agent Zero
ad5601eb7d
refactor( #356 ): DSAR-Fachlogik vollstaendig aus dem Core extrahiert — dsar_collect/dsar_erase in die 5 beteiligten Contracts (contacts, mail, tasks, calendar, kommunikation); core/jobs.py sammelt/loescht nur Core-eigene Daten und iteriert generisch ueber die Plugin-Registry; neue Plugins liefern DSAR-Kategorien ohne Core-Aenderung; Counts-/Category-Keys unveraendert; tasks/contracts.py von Patch-Artefakt bereinigt
...
Check Cross-Plugin Imports / check (push) Has been cancelled
fixes #356
2026-08-27 18:09:15 +02:00
Agent Zero
092c2d20fb
fix( #356 ): DSAR-Sammlung auf Contract-Zugriff umgestellt — 4 Core→Plugin-Imports (mail/tasks/calendar/kommunikation) nutzen jetzt get_contract(); MailContract exponiert MailAccount; ImportError-Fallback-Semantik unverändert; Checker 4→0 Verstöße; DSAR-Suite 4/4 passed
...
Check Cross-Plugin Imports / check (push) Has been cancelled
fixes #356
2026-08-27 17:38:06 +02:00
Agent Zero
385521eddc
fix( #355 ): Plugin-Lifecycle Runtime-Registrierungen repariert — Vorher-Status wird jetzt VOR dem registry-Aufruf gelesen (war konstant falsch → Deactivate-Cleanup toter Code); sync_notification_types hinter DB-Statusupdate verschoben; echter Integrationstest tests/test_plugin_lifecycle_service.py (install→activate×2→deactivate×2→re-activate über PluginService) rot→grün
...
Check Cross-Plugin Imports / check (push) Has been cancelled
fixes #355
2026-08-27 13:32:51 +02:00
Agent Zero
422cc6139d
docs(progress): Legacy-Cleanup dokumentiert — toter AI-Copilot entfernt ( b50a933), Vorbestand-Failure #354 bewiesen, gegengepruefte Kritik-Punkte vermerkt
2026-08-27 13:10:12 +02:00
Agent Zero
b50a933d85
chore(cleanup): toten AI-Copilot-Legacy entfernt — Router nie gemountet, Tabellen von Migration 0137 gedroppt (Chat läuft seitdem über kommunikation/comm_conversations); schemas/OpenAPI-Tag bereinigt; Geister-Test test_ai_copilot.py geloescht (pytest.skip seit Phase 2); test_contacts_lifecycle Route-Anzahl-Failure als Vorbestand bewiesen (83 Routen auch auf clean HEAD)
2026-08-27 13:09:09 +02:00
Agent Zero
ebf4b0363c
fix( #351 ): CSRF-403 bei KI-Chat und Wiki-Save behoben — /auth/me liefert csrf_token, streamChat nutzt gemeinsamen Client-Token statt totem sessionStorage-Key; Regressionstests pytest+vitest
2026-08-27 11:03:24 +02:00
Agent Zero
9510b3a7c9
fix(plugins): FastAPI-Route-Matching — /plugins/{name} ( d9aed51) verschlang literale Routen /active-manifests, /manifest, /updates (404 'Plugin not found'); Reihenfolge korrigiert: statische Routen jetzt vor /{name}. Folge war: Sidebar ohne Plugin-Menüeinträge in Produktion (nur Kontakte/Dashboard/System). +2 Regressionstests
2026-08-27 09:58:21 +02:00
Agent Zero
66c11d3d64
revert(frontend): Frontend auf letzten funktionierenden Stand 5680179 zurückgesetzt — i18n-Massen-Batch brach Dashboard-Shell in Produktion; Render-Loop-Fix und DSGVO-Antrags-UI liegen sicher in Historie für kontrollierten Wiedereinspiel
2026-08-27 09:14:21 +02:00
Agent Zero
bea479bfad
chore(tracking): Drei parallele Tracking-Dateien aufgelöst — fix-plan-v3 und test-bugs nach docs/archive/ historisiert; PROGRESS.md ist einzige Source of Truth mit verifizierten offenen Findings (Live-Messung 2026-08-27); Ein-Datei-Regel in AGENTS.md §10
2026-08-27 08:50:18 +02:00
Agent Zero
70dc0af0b6
docs(progress): Verifikationslauf — alle gemeldeten Vorbestand-Testfailures längst grün, echter Render-Loop gefixt, 17 Vitest-Failures nachgezogen, Geister-Tests entfernt
2026-08-27 08:26:47 +02:00
Agent Zero
cfb2bfe7b8
docs(bugs): BUG-022/070/093–098 als erledigt dokumentiert — npm audit live 0 vulnerabilities, pytest-Suiten cross_tenant/api_audit/commands/auth/rls 66 passed + mail 46 passed + phase_g/spike_i 46 passed (2026-08-27 verifiziert)
2026-08-27 08:26:27 +02:00
Agent Zero
5874975ff9
chore(test): 5 Geister-Tests entfernt (Komponenten wurden bereits in db4701b als BUG-080/082 unused gelöscht) und Playwright-e2e-Specs aus der Vitest-Einsammelung ausgeschlossen — sie gehören zum eigenen Runner mit eigener Konfiguration
2026-08-27 08:26:27 +02:00
Agent Zero
1c52d3e502
test(frontend): veraltete Testerwartungen an aktuelle UI angepasst — Tasks 3-Spalten-Layout mit Toolbar-Store statt Inline-Button, MiniAppBlock async-Fetch + DOMPurify-Attributentfernung, Router-QueryClientProvider, Toast-Mocks auf flache echte API-Signatur, automation-Mocks mockResolvedValue
2026-08-27 08:26:27 +02:00
Agent Zero
1a24e3e999
fix(frontend): render-loop in Tasks/Reports/Communication behoben — usePluginToolbarStore wurde ohne Selector destrukturiert; jedes Store-Update re-renderte alle Seiten inkl. registerItems-Effektkette (Maximum update depth in Tests sichtbar). Selektor-Pattern wie Dms/Mail/Calendar/ContactsList
2026-08-27 08:26:27 +02:00