From 9d8fb931758ff94087b458dc9f819d4b6542ac9c Mon Sep 17 00:00:00 2001 From: Masterluke77 <163446896+Masterluke77@users.noreply.github.com> Date: Tue, 14 Jul 2026 14:15:25 +0200 Subject: [PATCH] docs(actions): document first safe workspace action migration --- .../ux-slice-18-safe-action-adapters.md | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 docs/engineering/ux-slice-18-safe-action-adapters.md diff --git a/docs/engineering/ux-slice-18-safe-action-adapters.md b/docs/engineering/ux-slice-18-safe-action-adapters.md new file mode 100644 index 0000000..ab0fcdf --- /dev/null +++ b/docs/engineering/ux-slice-18-safe-action-adapters.md @@ -0,0 +1,116 @@ +# Vendoo 1.44.0 – UX Slice 18: Safe Action Adapters + +## Referenz + +- Branch: `release/1.44.0-ux-foundation-production-update-v1` +- Ausgangs-Head: `bd87f739992085bf0d06060b9b075bb5d2219175` +- App-Ziel: Vendoo `1.44.0` +- Updater: `3.4.0` + +## Ziel + +Die Universal Action Registry aus Slice 17 wird erstmals mit bestehenden Vendoo-Funktionen verbunden. Der Slice migriert ausschließlich nicht destruktive Aktionen. Jeder Adapter delegiert an einen bereits vorhandenen, geprüften DOM-Handler und enthält keine neue Fach-, Netzwerk- oder Persistenzlogik. + +## Migrierte Aktionen + +### Module & Extensions + +- `workspace:modules:refresh` + - ruft ausschließlich den vorhandenen Button `#module-manager-refresh` auf +- `workspace:modules:filter-all` + - delegiert an den vorhandenen Modulfilter `all` +- `workspace:modules:filter-problems` + - delegiert an den vorhandenen Modulfilter `problems` + +### Artikel + +- `workspace:articles:open-current` + - öffnet den zuletzt fokussierten oder ausgewählten Artikel über `.history-article-title` +- `workspace:articles:view-cards` + - delegiert an die bestehende Kartenansicht +- `workspace:articles:view-list` + - delegiert an die bestehende Listenansicht + +### Medien + +- `workspace:media:open-current-preview` + - öffnet das zuletzt fokussierte oder ausgewählte Bild über den vorhandenen Preview-Handler +- `workspace:media:density-comfortable` + - delegiert an die vorhandene mittlere Galeriedichte +- `workspace:media:reset-filters` + - delegiert an den vorhandenen Medienfilter-Reset + +## Kontextmodell + +Artikel- und Medienaktionen arbeiten nicht mit willkürlich gewählten Datensätzen. Der Adapter merkt sich ausschließlich den zuletzt per Fokus oder Pointer adressierten Artikel beziehungsweise die zuletzt adressierte Medienvorschau. + +Falls kein solcher Kontext vorhanden ist, kann alternativ eine bereits ausgewählte Zeile beziehungsweise Medienkarte verwendet werden. Ohne eindeutigen Kontext bleibt die Action deaktiviert. + +## Command-Palette-Integration + +Alle neun Adapter werden über `window.VendooActions.registerMany(...)` registriert und nutzen ausschließlich die Surface `command-palette`. + +Dadurch erscheinen sie in der bestehenden Ctrl+K-Palette, ohne eine zweite Command-Liste einzuführen. Sichtbarkeit und Enablement werden unmittelbar vor Darstellung und Ausführung erneut gegen den aktuellen DOM-Kontext geprüft. + +## Sicherheitsgrenzen + +- ausschließlich `danger: none` +- keine destruktiven oder vorsichtigen Actions +- keine Veröffentlichung +- keine Löschung +- keine Installation oder Deinstallation +- keine Modulaktivierung oder -deaktivierung +- keine Statusänderung +- keine Speicherung +- keine Datenbankänderung +- keine Migration +- keine neuen API-Aufrufe +- kein Polling +- kein `window.confirm` +- kein `innerHTML` + +Die Adapter rufen nur vorhandene Buttons oder Links per `click()` auf. Serverseitige Berechtigungen, CSRF-Schutz, Validierungen und bestehende Handler bleiben unverändert maßgeblich. + +## Asset-Ladereihenfolge + +`public/module-extension-workspace.js` lädt jetzt in dieser Reihenfolge: + +1. Command Platform +2. Universal Action Registry +3. Global Navigation +4. Safe Action Adapters + +Der Adapter wartet zusätzlich auf `vendoo:actions-ready`, falls die Action Registry beim Laden noch nicht verfügbar ist. + +## Verifikation + +Neues Gate: + +```bash +npm run verify:safe-action-adapters +``` + +Das Gate prüft statisch und in einer isolierten Runtime: + +- alle neun stabilen Action-IDs +- ausschließliche Command-Palette-Surface +- ausschließlich Gefahrstufe `none` +- korrekte Asset-Ladereihenfolge +- Modul-Refresh-Delegation +- Modulfilter-Delegation +- Artikelansicht-Delegation +- fokussierten Artikelkontext +- fokussierten Medienkontext +- Galeriedichte und Medienfilter-Reset +- Ready-Event +- Ausschluss von Netzwerk-, Polling-, `innerHTML`-, Bestätigungs- und direkter Fachlogik +- Einbindung in `verify:all` + +## Daten- und Releasegrenzen + +- keine bestehenden Routen, APIs, Feld-IDs oder Modul-IDs umbenannt +- keine bestehenden Handler ersetzt +- keine persistenten Nutzdaten verändert +- kein Merge +- kein Deployment +- kein Release