WIP: Vendoo 1.44.0 – UX Foundation & Guided Workspaces #29

Draft
Masterluke77 wants to merge 284 commits from release/1.44.0-ux-foundation-production-update-v1 into main
Showing only changes of commit 209d9f4140 - Show all commits
@@ -0,0 +1,141 @@
# Vendoo 1.44.0 UX Slice 17: Universal Action Registry
## Referenz
- Branch: `release/1.44.0-ux-foundation-production-update-v1`
- Ausgangs-Head: `7bc8a81bba5a220f4dda5bcc6911d40060c257a5`
- App-Ziel: Vendoo `1.44.0`
- Updater: `3.4.0`
## Ziel
Vendoo erhält eine zentrale, erweiterbare Action-Plattform. Fachmodule und UX-Workspaces registrieren Aktionen künftig einmalig. Aus demselben Vertrag können Command Palette, Toolbars, Kontextmenüs, Mobile Action Sheets, Shortcuts, Mehrfachauswahl und Plugin-Surfaces gespeist werden, ohne Handler oder Berechtigungslogik zu duplizieren.
## Öffentliche API
`window.VendooActions`
- `register(action, options)`
- `registerMany(actions, options)`
- `unregister(id)`
- `get(id)`
- `list(options)`
- `resolve(id, context)`
- `canExecute(id, context)`
- `execute(id, context)`
- `refresh(id?)`
- `renderSurface(container, options)`
- `mountSurface(container, options)`
- `normalizeShortcut(shortcut)`
- `setConfirmationProvider(provider)`
- `setAuditSink(sink)`
- `subscribe(listener)`
## Action-Vertrag
Verbindliche Felder:
- `id`
- `title`
- `handler`
Unterstützte Metadaten:
- `description`, `icon`, `group`
- `aliases`, `keywords`
- `surfaces`, `shortcut`, `priority`
- `permission`, `visible`, `enabled`, `disabledReason`
- `contexts`, `selection.min`, `selection.max`
- `danger`: `none`, `caution`, `destructive`
- `confirm`
- `concurrency`: `single` oder `parallel`
- `allowInInput`
- `rollback`
- `commandId`
Doppelte Action-IDs werden standardmäßig abgewiesen. Eine bewusste Ersetzung ist nur mit `{ replace: true }` möglich.
## Sicherheitsmodell
- Permissions werden vor Darstellung und unmittelbar vor Ausführung geprüft.
- Eine deklarierte Permission ohne verfügbaren Resolver wird nach Deny-by-default nicht freigegeben.
- Destruktive Actions benötigen immer eine zusätzliche Bestätigung.
- `window.confirm` wird nicht verwendet; die Standardbestätigung ist ein barrierearmer Vendoo-Dialog.
- Optional kann eine Bestätigungsphrase verlangt werden.
- Single-Flight verhindert unbeabsichtigte Doppelausführungen.
- Ein optionaler Rollback-Hook wird bei fehlgeschlagenen Actions kontrolliert ausgeführt.
- Registry und UI-Surfaces implementieren keine Fachlogik und keine direkten Netzwerkaufrufe.
- Serverseitige Berechtigungs-, CSRF- und Validierungsregeln bleiben maßgeblich.
## Plattformintegration
Actions mit der Surface `command-palette` werden automatisch als `kind: action` in `window.VendooCommands` registriert. Die Ctrl+K-Palette bleibt dadurch weiterhin vollständig Registry-getrieben.
Deklarative UI-Elemente können mit `data-vendoo-action="<action-id>"` gebunden werden. Die Registry synchronisiert `disabled`, `aria-disabled`, Running- und Danger-Zustände. Dynamische Surfaces können über `renderSurface(...)` oder `mountSurface(...)` aufgebaut werden.
## Events und Audit-Anbindung
Die Registry emittiert unter anderem:
- `vendoo:actions-ready`
- `vendoo:actions-changed`
- `vendoo:action-state-changed`
- `vendoo:action-executing`
- `vendoo:action-executed`
- `vendoo:action-failed`
- `vendoo:action-blocked`
- `vendoo:action-cancelled`
- `vendoo:action-rolled-back`
- `vendoo:action-rollback-failed`
- `vendoo:action-shortcut-conflict`
Ein optionaler Audit Sink kann diese bereits bereinigten Lifecycle-Ereignisse übernehmen. Die Registry selbst sendet keine Telemetrie und speichert keine fachlichen Nutzdaten.
## Accessibility und UX
- semantische Buttons und ARIA-Zustände
- vollständige Tastaturbedienung
- Shortcuts mit Konflikterkennung und Prioritäten
- keine Shortcut-Ausführung in Eingabefeldern ohne explizites `allowInInput`
- Fokusfalle und Fokus-Rückgabe im Bestätigungsdialog
- responsive Toolbar-, Menü- und Sheet-Surfaces
- Reduced-Motion-Unterstützung
- Theme-Token statt fest verdrahteter Produktfarben
## Verifikation
Neues Gate: `npm run verify:universal-actions`
Das Gate prüft statisch und in einer isolierten Runtime:
- öffentlichen Registry-Vertrag
- Command-Palette-Adapter
- Kontext-, Permission- und Auswahlauflösung
- Duplicate-ID-Schutz
- destruktive Bestätigung
- Single-Flight
- Rollback
- Lifecycle-Events
- Shortcut-Normalisierung
- DOM-/Surface-Vertrag
- Asset-Ladereihenfolge
- Ausschluss von Netzwerk-, Polling-, innerHTML- und direkten Fachaktionen
- Einbindung in `verify:all`
## Daten-, Release- und Rollback-Grenzen
- keine Datenbankänderung
- keine Migration
- keine Route, API oder Modul-ID umbenannt
- keine bestehende Fachaktion automatisch migriert oder ausgelöst
- kein Merge, Deployment oder Release
Rollback erfolgt durch Rücknahme von:
- `public/action-registry.js`
- `public/action-registry.css`
- Loader-Erweiterung in `public/module-extension-workspace.js`
- `tools/verify-universal-action-registry-1.44.0.mjs`
- `package.json`
Persistente Artikel-, Medien-, Benutzer-, Modul-, Publishing- oder Einstellungsdaten werden nicht verändert.