Compare commits

..
461 changed files with 2606 additions and 905 deletions
+12 -3
View File
@@ -1,4 +1,4 @@
# Vendoo 1.36.0 Beispielkonfiguration für Windows, Docker und NAS
# Vendoo 1.37.0 Beispielkonfiguration für Windows, Docker und NAS
# Diese Datei enthält ausschließlich Platzhalter. Für den Betrieb als .env kopieren.
# Niemals eine produktive .env in Release-ZIPs, Git oder Support-Logs aufnehmen.
@@ -44,7 +44,7 @@ VENDOO_DOMAIN=
# Optional: öffentliche JSON-Manifest-URL für die Updateprüfung
VENDOO_UPDATE_MANIFEST_URL=
# Server-, Mehrbenutzer- und Deployment-Sicherheit (1.36.0)
# Server-, Mehrbenutzer- und Deployment-Sicherheit (1.37.0)
# Standardmäßig nur auf diesem PC erreichbar. Für LAN bewusst auf 0.0.0.0 setzen.
VENDOO_BIND_HOST=127.0.0.1
# Kommagetrennte zusätzliche Hostnamen/IPs, z. B. vendoo.intern,192.168.178.50
@@ -59,7 +59,7 @@ VENDOO_READ_RATE_LIMIT=360
VENDOO_MUTATION_RATE_LIMIT=120
# Produktionsbereitstellung 1.36.0
# Produktionsbereitstellung 1.37.0
# Mindestens 32 zufällige Zeichen. Wird beim ersten Admin-Setup abgefragt.
VENDOO_SETUP_TOKEN=
VENDOO_REQUIRE_SETUP_TOKEN=true
@@ -78,3 +78,12 @@ VENDOO_OPERATIONS_DIR=
VENDOO_LOG_DIR=
# Docker setzt automatisch /app/data/config/vendoo.env; lokal bleibt dieser Wert leer.
VENDOO_CONFIG_PATH=
# Security, Secrets & Observability (1.37.0)
# Normalerweise automatisch verwaltet; keine manuelle Bearbeitung erforderlich.
# VENDOO_SECRETS_PATH=/app/data/config/secrets.enc.json
# VENDOO_MASTER_KEY_FILE=/app/data/config/master.key
# Optional: externer 32-Byte-Master-Key als Base64 oder 64 Hex-Zeichen.
# VENDOO_MASTER_KEY=
VENDOO_JSON_LOGS=true
SMTP_TLS_REJECT_UNAUTHORIZED=true
+3
View File
@@ -51,6 +51,9 @@ jobs:
- name: Theme Manager, Accessibility und Komponenten-Tokens prüfen
run: npm run verify:themes
- name: Security, Secrets und Observability prüfen
run: npm run verify:security
- name: Deployment-Gate
run: npm run verify:deployment
+1
View File
@@ -50,6 +50,7 @@ jobs:
npm run check
npm run verify:architecture
npm run verify:themes
npm run verify:security
npm run verify:deployment
npm run verify:config
npm run verify:installer-shell
@@ -1,28 +0,0 @@
# Vendoo 1.36.0 START HIER
Dieses Paket ist ein vollständiges Drüberkopier-Release für **Vendoo 1.36.0 Secure Theme Manager, Accessibility & Component Token Foundation**.
## Wichtig
- Bestehenden Vendoo-Ordner **nicht löschen oder leeren**.
- Keine `.env`, Datenbank, Uploads, Backups, Operations-Daten, Updates, FLUX-Modelle oder ComfyUI-Daten löschen.
- Der Windows-Lokalbetrieb bleibt erhalten.
- Docker, NAS/Portainer und VPS bleiben unterstützt.
- FASHN VTON und Virtual-Try-on bleiben entfernt.
- FLUX bleibt ein separater Text-zu-Bild-Dienst.
- Originalbilder werden nicht überschrieben.
## Update unter Windows
1. Vendoo vollständig schließen.
2. Dieses ZIP entpacken.
3. Den **Inhalt** des Ordners `vendoo` über die bestehende Vendoo-Installation kopieren.
4. Dateien ersetzen bestätigen.
5. `setup.bat` starten.
6. Im bestehenden System **Update** wählen.
7. Vendoo starten.
8. Unter **Einstellungen → Darstellung** den Theme Manager öffnen.
9. Light, Dark, System und High Contrast prüfen.
10. Als Administrator ein Test-Theme erstellen, in der Vorschau prüfen und wieder löschen.
Die Installation und Konfiguration erfolgt über Eingabemasken beziehungsweise geführte Assistenten. Konfigurationsdateien müssen nicht manuell bearbeitet werden.
@@ -1,46 +0,0 @@
# Neue Funktionen in Vendoo 1.36.0
## Nativer Theme Manager
`vendoo.themes` ist der erste Fachbereich, der vollständig auf den modularen Plattformkernel migriert wurde. Das Modul besitzt eigene Tabellen, Services, Policies, API-Verträge und Frontend-Komponenten.
## Persönliche Darstellung
Jeder Benutzer kann über eine Eingabemaske auswählen:
- System, Light, Dark oder High Contrast
- normale, kompakte oder komfortable UI-Dichte
- reduzierte Bewegung
- ein freigegebenes benutzerdefiniertes Theme
## Administrative Theme-Verwaltung
Administratoren können:
- Theme-Profile erstellen und duplizieren
- ein Basistheme wählen
- ausschließlich freigegebene Design Tokens ändern
- Änderungen live vorab ansehen
- Kontrastwerte prüfen
- Profile importieren und exportieren
- den systemweiten Standard festlegen
- Profile sicher löschen
## Sicherheit
- kein freies CSS
- kein JavaScript oder HTML
- keine URLs oder Dateipfade als Theme-Werte
- serverseitige Wiederholungsvalidierung
- getrennte Benutzer- und Administrator-Policies
- Audit-Protokoll für Änderungen
- unbekannte Tokens und Theme-IDs werden abgewiesen
## Design-System
- 42 typisierte Design Tokens
- Light, Dark und High Contrast
- erste Komponenten-Tokens für Buttons, Eingaben, Karten und Dialoge
- Fokusbreite und Mindestzielgröße
- reduzierte Bewegung
- bestehendes Design bleibt über eine Kompatibilitätsbrücke erhalten
@@ -1,38 +0,0 @@
# Installation und Abnahme Vendoo 1.36.0
## Bestehende Windows-Installation aktualisieren
1. Vendoo und offene Node-/FLUX-Fenster schließen.
2. Das ZIP in einen temporären Ordner entpacken.
3. Den Inhalt des enthaltenen Ordners `vendoo` in den bestehenden Vendoo-Ordner kopieren.
4. Windows bei Rückfrage **Dateien ersetzen** lassen.
5. Bestehende Laufzeitdaten nicht löschen.
6. `setup.bat` doppelklicken.
7. **Update** wählen.
8. Danach Vendoo starten.
## Neuinstallation
- Windows lokal oder Docker Desktop: `setup.bat` starten und die grafische Maske verwenden.
- Linux, NAS oder VPS: `chmod +x setup.sh && ./setup.sh` ausführen und dem Assistenten folgen.
- Beim VPS werden Domain und Betriebsparameter abgefragt; Caddy übernimmt HTTPS, sobald DNS und Ports korrekt eingerichtet sind.
Es ist keine manuelle Bearbeitung von `.env`, Compose- oder Theme-Dateien erforderlich.
## Funktionsabnahme
1. `http://127.0.0.1:8124/readyz` aufrufen.
2. Anmelden und bestehende Benutzer, Artikel und Bilder prüfen.
3. **Einstellungen → Darstellung** öffnen.
4. Persönliche Auswahl speichern und Seite neu laden.
5. Dark, Light und High Contrast prüfen.
6. UI-Dichte und reduzierte Bewegung prüfen.
7. Als Administrator ein eigenes Theme anlegen.
8. Live-Vorschau und Kontrastliste prüfen.
9. Theme exportieren und wieder importieren.
10. Systemstandard setzen und mit einem zweiten Benutzer prüfen.
11. Sicherstellen, dass normale Benutzer keine administrativen Profile verändern können.
## GitHub
Nach erfolgreicher lokaler Prüfung `GitHub-Deploy-Assistent.bat` starten. Der Zielbranch ist `release/1.36.0-theme-manager`, der vorbereitete Draft Pull Request ist #9. Erst nach grünem Sicherheitsgate und geprüftem Git-Status `PUSH` bestätigen.
@@ -1,26 +0,0 @@
# Ist- und Lückenanalyse Vendoo 1.36.0
## Erreicht
- modularer Plattformkernel aus 1.35.0 bleibt aktiv
- Theme-Bereich ist erstes natives Fachmodul
- persönliche und systemweite Darstellung sind getrennt
- sichere Theme-Profile ohne freien Code
- additive Datenbanktabellen für Profile und Benutzerpräferenzen
- 42 versionierte Design Tokens
- Live-Vorschau und Kontrastprüfung
- Theme-Gate in lokaler Prüfung, CI und Release
- erste allgemeine UI-Komponenten nutzen Komponenten-Tokens
## Bewusst noch offen
- die übrigen elf Fachmodule sind weiterhin Legacy Bridges
- `public/app.js`, `public/style.css`, `public/index.html` und `server.mjs` sind noch groß
- noch nicht alle Alt-Komponenten verwenden ausschließlich Komponenten-Tokens
- vollständige Tastatur-/Screenreader-E2E-Abnahme auf realen Browsern steht aus
- ein isolierter Drittanbieter-Extension-Host ist noch nicht umgesetzt
- Secret Provider und umfassendes ASVS-Sicherheitsdashboard folgen in späteren Slices
## Bewertung
1.36.0 schafft einen produktiven, sichtbaren Beweis für die neue Architektur. Weitere Fachmodule sollten jetzt schrittweise nach demselben Muster migriert werden; ein Big-Bang-Umbau bleibt ausdrücklich ausgeschlossen.
@@ -1,31 +0,0 @@
# Abnahmebericht Vendoo 1.36.0
## Bestanden
- JavaScript-/MJS-Syntax
- Plattform-Architecture-Gate
- Theme-Manager-Gate
- Deployment-Gate
- Git-Sicherheitsgate mit 385 geprüften Dateien
- Secret- und Staging-Regressionstests
- persistenter Konfigurationsspeicher
- simulierte Docker-, NAS- und VPS-Installationsdialoge
- 12 Modulmanifeste: 1 natives Theme-Modul und 11 Legacy Bridges
- 42 Design Tokens und 3 integrierte Themes
- additive Theme-Tabellen auf frischer und bestehender Datenbank
- 68 Migrationsblöcke in beiden Datenbanktests
- bestehender Testdatensatz blieb erhalten
- reproduzierbare Paketauflösung mit 151 Paketen über `npm ci --ignore-scripts`
- 384 Quelldateien im Release-Staging einzeln per SHA-256 verifiziert
## Nicht als real getestet ausgegeben
- Browser-End-to-End-Test unter echtem Windows
- Docker-/NAS-/VPS-Livestart
- Caddy-/TLS-Livetest
- GitHub-Actions-Livelauf
- native Kompilierung/Ausführung von `better-sqlite3` in dieser Sandbox
## Ergebnis
Die statische, architektonische, sicherheitsbezogene und migrationsbezogene Abnahme ist bestanden. Die plattformspezifische Funktionsabnahme ist nach dem Drüberkopieren in der echten Zielumgebung auszuführen.
@@ -1,22 +0,0 @@
# Vendoo Roadmap nach 1.36.0
## Nächster empfohlener Slice: 1.37.0
**Security Core, Secret Provider & Observability Foundation**
- Secret-Provider-Abstraktion für Windows, Docker und Tests
- API-Schlüssel niemals an den Browser zurückgeben
- strukturierte JSON-Logs und Correlation IDs
- zentrale Request-Schemata und Fehlerverträge
- CSP-Nonce-Vorbereitung
- Security Dashboard und ASVS-Matrix
- Backup-Verschlüsselungs- und Rotation-Vertrag
## Danach
- 1.38.0: Auth, Users & Settings als native Module
- 1.39.0: Listings, Inventory & Media als native Module
- 1.40.0: Publishing, AI & FLUX als native Module
- später: isolierter, signierter Extension Host
Jeder Slice muss Windows lokal, Docker, NAS und VPS erhalten, bestehende Daten migrieren statt zurücksetzen und vor Änderungen ein überprüfbares Backup ermöglichen.
@@ -1,26 +0,0 @@
{
"schemaVersion": 1,
"id": "vendoo.security",
"name": "Security Core",
"version": "1.0.0",
"type": "core",
"status": "legacy-bridge",
"description": "Vertrag für den bestehenden Vendoo-Bereich Security Core; schrittweise Migration ohne Funktionsbruch.",
"requires": [
"vendoo.system"
],
"permissions": [
"security.manage"
],
"provides": [
"security.policies",
"security.audit"
],
"consumes": [
"platform.events"
],
"owns": [
"security.permissions",
"security.rate-limits"
]
}
@@ -1,10 +0,0 @@
{
"schema": "vendoo-update-manifest-v1",
"version": "1.36.0",
"name": "Vendoo Modular Platform Kernel & Design-System Foundation",
"channel": "stable",
"minimum_node": "18",
"notes": "Modularer Plattformkernel, validierte Modulmanifeste, Deny-by-default-Routenverträge, Feature Flags, Lifecycle/Event Bus sowie versionierte Design Tokens mit sicherem Theme-Vertrag. Bestehendes Verhalten bleibt über Legacy-Bridges erhalten.",
"download_url": "",
"sha256": ""
}
@@ -0,0 +1,22 @@
# Vendoo 1.37.0 Start hier
Dieses Paket aktualisiert Vendoo 1.36.0 auf **Vendoo 1.37.0 Security, Secrets & Observability Foundation**.
## Wichtig
- Bestehenden Vendoo-Ordner nicht löschen.
- `.env`, Datenbank, Uploads, Backups, Operations-Daten, `updates/`, FLUX-Modelle und ComfyUI-Daten nicht löschen.
- Den Inhalt des Ordners `vendoo` über die vorhandene Installation kopieren und vorhandene Programmdateien ersetzen.
- Danach `setup.bat` starten und **Update** ausführen.
## Hauptänderungen
- `vendoo.security` ist jetzt ein natives Kernmodul.
- API-Schlüssel und Passwörter werden AES-256-GCM-verschlüsselt gespeichert.
- Bestehende Runtime-Secrets werden mit Sicherungskopie migriert.
- Inline-Skripte und Inline-Eventhandler werden per CSP blockiert.
- Request- und Correlation-IDs sowie strukturierte JSON-Telemetrie sind aktiv.
- Neue Kernel-Routen unterstützen zentrale Input-Schemas.
- Die Sicherheitszentrale zeigt Secret-Provider, CSP- und Requeststatus, aber niemals Secret-Klarwerte.
Lies danach `02_INSTALLATION_UND_ABNAHME.md`.
@@ -0,0 +1,42 @@
# Neue Funktionen in Vendoo 1.37.0
## Verschlüsselter Secret-Speicher
Vendoo speichert freigegebene Zugangsdaten in `secrets.enc.json` mit AES-256-GCM. Der Master-Key liegt getrennt in `master.key`. Beide Dateien befinden sich im persistenten Konfigurationsbereich und werden nicht in Git oder Release-Pakete aufgenommen.
Unterstützt werden unter anderem OpenAI, Anthropic, OpenRouter, Etsy, eBay, SMTP und der externe FLUX-Dienst.
## Sichere Migration
Beim ersten Start werden bekannte Secrets aus der Runtime-Konfiguration erkannt. Vor der Änderung wird eine Datei mit der Endung `.pre-secrets-1.37.0.bak` erzeugt. Anschließend werden die Secret-Werte verschlüsselt gespeichert und aus der Klartext-Konfiguration entfernt.
Ein vorhandenes SMTP-Passwort aus der Datenbank wird ebenfalls in den Secret-Speicher migriert und anschließend aus dem bisherigen Feld entfernt.
## Content Security Policy
- keine Inline-Skripte
- keine Inline-Eventhandler
- Login-Logik in externer Datei
- zentrale Eventdelegation im Hauptfrontend
- `script-src-attr 'none'`
- HSTS in Produktionsumgebungen
Inline-Stile bleiben vorerst für den Legacy-Bestand erlaubt und werden in späteren Modulslices schrittweise entfernt.
## Observability
Jeder Request erhält:
- `X-Vendoo-Request-ID`
- `X-Correlation-ID`
- Dauer, Status und Route in strukturierter JSON-Telemetrie
Die Sicherheitszentrale zeigt aggregierte Werte wie Requestanzahl, aktive Requests, Serverfehler und blockierte Host-/Origin-Anfragen.
## Zentrale Eingabeverträge
Neue Kernel-Routen können ein serverseitiges Input-Schema definieren. Unbekannte Felder, falsche Typen, zu lange Werte und ungültige Formate werden vor dem Handler abgewiesen. Die Berechtigungsprüfung erfolgt vor der Eingabevalidierung.
## Backup-Härtung
Docker-/NAS-Backups enthalten jetzt zusätzlich den persistenten Ordner `config/`. Secret-Speicher und Master-Key werden dadurch immer gemeinsam gesichert und beim Restore gemeinsam wiederhergestellt.
@@ -0,0 +1,48 @@
# Installation und Abnahme Vendoo 1.37.0
## Update einer vorhandenen Windows-Installation
1. Vendoo vollständig schließen.
2. ZIP vollständig entpacken.
3. Den Inhalt des enthaltenen Ordners `vendoo` über die vorhandene Vendoo-Installation kopieren.
4. Das Ersetzen vorhandener Programmdateien bestätigen.
5. Den Zielordner vorher nicht löschen oder leeren.
6. `.env`, Datenbank, Uploads, Backups, Operations-Daten, `updates/`, FLUX-Modelle und ComfyUI-Daten erhalten.
7. `setup.bat` starten.
8. **Update** auswählen.
9. Vendoo starten.
## Automatische Secret-Migration
Beim ersten Start von 1.37.0:
- bekannte Klartext-Secrets werden erkannt,
- eine Sicherung der Runtime-Konfiguration wird erstellt,
- Werte werden verschlüsselt gespeichert,
- die ursprünglichen Secret-Zeilen werden entfernt.
Der neue Speicher liegt standardmäßig unter:
```text
<data>/config/secrets.enc.json
<data>/config/master.key
```
Diese Dateien nicht einzeln zwischen Installationen austauschen. Für Restore oder Umzug müssen beide zusammen mit dem Konfigurationsvolume gesichert werden.
## Abnahme
1. `http://127.0.0.1:8124/readyz` öffnen.
2. `platform-kernel` muss erfolgreich sein.
3. Als Administrator **Admin → Sicherheit** öffnen.
4. Prüfen, dass `Secret-Speicher` den Provider `encrypted-file` zeigt.
5. Prüfen, dass keine Secret-Klarwerte angezeigt werden.
6. AI-/Marktplatz-/SMTP-Einstellungen speichern und Vendoo neu starten.
7. Prüfen, dass die Verbindungen weiterhin als konfiguriert erscheinen.
8. Im Browser-Netzwerk prüfen, dass Antworten `X-Vendoo-Request-ID` und `X-Correlation-ID` enthalten.
9. Login, Benutzerverwaltung, Theme Manager, Artikel, Upload und FLUX Studio testen.
10. Danach `GitHub-Deploy-Assistent.bat` starten, Git-Status prüfen und erst anschließend `PUSH` eingeben.
## Docker/NAS/VPS
Der persistente Konfigurationsbereich `/app/data/config` enthält Runtime-Konfiguration, Secret-Speicher und Master-Key. Das vorhandene `vendoo_config`-Volume beziehungsweise der NAS-Bind-Mount muss erhalten bleiben und in Backups eingeschlossen werden.
@@ -0,0 +1,36 @@
# Ist- und Lückenanalyse Vendoo 1.36.0 zu 1.37.0
## Real bestätigter Ausgangsstand
- modularer Plattformkernel vorhanden
- Theme-Modul nativ, elf Bereiche als Legacy Bridges
- sichere Theme-Tokens und Theme Manager vorhanden
- Request-ID bereits rudimentär vorhanden
- API- und SMTP-Secrets teilweise in Runtime-`.env` oder Datenbank gespeichert
- CSP erlaubte Inline-Skripte
- Login enthielt Inline-JavaScript
- mehrere Inline-Eventhandler waren vorhanden
- Security-Dashboard zeigte Netzwerk, Sessions, Limits und Locks, aber keine Secret-/CSP-/Request-Telemetrie
## Geschlossene Lücken
- nativer Security-Kern
- verschlüsselter Secret-Speicher mit separatem Schlüssel
- sichere Klartextmigration mit Backup
- keine Secret-Rückgabe an Browser
- strikte Script-CSP
- Entfernung aller Inline-Eventhandler im öffentlichen Frontend
- externe Login-Datei
- zentrale Request-/Correlation-IDs
- strukturierte Request-Telemetrie
- zentrale Input-Schema-Grundlage
- Security-Dashboard erweitert
- SMTP-Zertifikatsprüfung standardmäßig aktiviert
## Bewusst verbleibende Lücken
- Inline-Stile im Legacy-Frontend erfordern weiterhin `style-src 'unsafe-inline'`.
- Windows-DPAPI, Docker Secrets und externe Vault-Systeme sind noch keine eigenen Provider.
- Telemetrie ist pro Prozess und noch nicht langfristig persistiert.
- Vollständige Security-Event-Korrelation und Alarmierung folgen später.
- Auth-, User- und Settings-Code befinden sich überwiegend noch im Legacy-Server.
@@ -0,0 +1,45 @@
# Abnahmebericht Vendoo 1.37.0
## Bestanden
- JavaScript-/MJS-Syntax
- Git-Sicherheitsgate
- Git-Sicherheits-Regression
- Git-Staging-Regression
- Theme-Manager-Gate 1.37.0
- Security-Foundation-Gate 1.37.0
- Plattform-Architecture-Gate 1.37.0
- Deployment-Gate 1.37.0
- persistenter Konfigurationsspeicher
- Shell-Installer-Simulation für Docker, NAS und VPS
- 68 Migrationsblöcke gegen frische Datenbank
- 68 Migrationsblöcke gegen bestehende Datenbank
- vorhandener Testdatensatz blieb erhalten
- AES-256-GCM-Ver- und Entschlüsselung
- Klartextmigration mit Sicherung
- Secret-Maskierung
- Ablehnung unbekannter und mehrzeiliger Secrets
- CSP ohne Inline-Skripte und Inline-Eventhandler
- Docker-Backup und Restore schließen `config/` samt Secret-Speicher und Master-Key ein
- Request-/Correlation-ID und Telemetrie
- zwölf Module: zwei nativ, zehn Legacy Bridges
## Nicht als praktisch ausgeführt ausgewiesen
- vollständiger Windows-/PowerShell-Lauf
- Browser-End-to-End-Test unter echtem Windows
- Docker-/NAS-/VPS-Livestart
- Caddy-/TLS-Livetest
- GitHub-Actions-Livelauf
- native `better-sqlite3`-Kompilierung in dieser Sandbox
- Prüfung echter externer AI-, SMTP- und Marktplatzkonten
## Abhängigkeiten
`npm ci --ignore-scripts --no-audit --no-fund` löste die Lockdatei reproduzierbar auf und installierte 151 Pakete. Die native Kompilierung von `better-sqlite3` konnte in der Sandbox nicht abgeschlossen werden, weil GitHub-Prebuilds und Node-Header wegen fehlender DNS-/Netzwerkverbindung nicht geladen werden konnten. Dieser Punkt wird deshalb ausdrücklich nicht als Laufzeittest gewertet.
## Release-Staging
Der bereinigte Vendoo-Release-Stand enthält 397 per SHA-256 erfasste Quelldateien. Alle 397 Prüfsummen wurden im getrennten Release-Staging erfolgreich zurückverifiziert.
Das vollständige Übergabepaket enthält 405 Dateien. Das Paketmanifest erfasst 404 Dateien zuzüglich seiner eigenen Manifestdatei; der enthaltene Vendoo-Ordner umfasst 398 Dateien einschließlich seines eigenen Prüfsummenmanifests.
@@ -0,0 +1,32 @@
# Vendoo Roadmap nach 1.37.0
## 1.38.0 Auth, Users & Settings Native Modules
- Authentifizierung aus `server.mjs` lösen
- Benutzer, Rollen und Sessions in native Module überführen
- Settings-Modul mit zentralen Schemas
- Secret-UI vollständig in das Security-/Settings-Modul integrieren
- standardisierte API-Fehler und Audit-Verträge
## 1.39.0 Listings, Inventory & Media Modules
- Artikel-, Lager- und Medienlogik modularisieren
- Repositories statt direkter DB-Zugriffe in Routes
- Upload-Pipeline mit Magic-Byte- und Bilddecoder-Prüfung
- modulare Frontend-Lebenszyklen
## 1.40.0 Publishing, AI & FLUX Modules
- Plattformadapter und Publishing-Jobs trennen
- AI-Anbieter über Adapterverträge
- FLUX als klar isolierter externer Dienst
- Capability-basierte Extension-Kommunikation
## Spätere Sicherheitsschritte
- DPAPI-/Keychain-/Docker-Secret-Provider
- optionale Vault-Integration
- persistente Security-Event-Telemetrie
- Alarmregeln und Benachrichtigungen
- Entfernung von `style-src 'unsafe-inline'`
- vollständige OWASP-ASVS-L2-Abnahmematrix
@@ -1,22 +1,23 @@
24c6f27679a6107cd9de55495df89bfef6948032f8f65920a1bb7ed08a6ab4a6 00_START_HIER.md
ccc0254f3e2f399f922db8c4f9dbc08b9fa12be334b5850ad5befda62db830cc 01_NEUE_FUNKTIONEN.md
7e879172a9a6207edc9707f5d742dfc39ccef9913e507cc7cc7c8caa5e22c026 02_INSTALLATION_UND_ABNAHME.md
43a560944cb3224152578930e2058f3e6b84fc9a093fc06d0bffc34c7aaadbc9 03_IST_UND_LUECKENANALYSE.md
1d8a9e0f3b7d9190f3a9c3a4fe9caa4b42d55dd3a3e342c0a269bcbec0284935 04_ABNAHMEBERICHT.md
36a4176af45431c0b5be5046d3023e0704b52bd20d63bfcf45fe7f3e8d3b8099 05_ROADMAP.md
afa423368ca683c5e237931c95c1fce8632af7052eed6a35a37774e6e61e47eb 00_START_HIER.md
fbe36d0040052cfaa31933ce9d191b4abe2f3925641fd65429a56a30e9ddc981 01_NEUE_FUNKTIONEN.md
12bec6fab408a113a31855202e2c12901197e789e54af903d82f160a9c3dafb0 02_INSTALLATION_UND_ABNAHME.md
d51225e4748ee07fd608c343fa4119f04b5fcdaa946fd1c9ff9d252b0226b788 03_IST_UND_LUECKENANALYSE.md
962fd825225026de0ce4820a3412ea808f6458280e5d7ec6f20126d2e7817837 04_ABNAHMEBERICHT.md
db19a5a2dddf67182e011c6f5df5cc587345f8ff94bc0e20f79886137427a433 05_ROADMAP.md
f344f75df655bc133e6c4abb2d215b2234fb22a4bb155c217317c36ee4f0f8fb vendoo/.dockerignore
196b4f6848e886de83ce63810e60a2b129ff3e4e71f080efb9611432c4b845be vendoo/.env.example
e5cc1e85c80485ceda76fd6c69330e085ccc7bc1248be810fe4243712cf39118 vendoo/.env.example
58e3f4b76cc9398f32dcd5481b2080e7e5ba322aca04b8b8374446299c5d7dd6 vendoo/.github/CODEOWNERS
5bd335eb750d084ca12b6a3b3f35d0cd7bc454ba24ed280187c66acf75eaf396 vendoo/.github/dependabot.yml
f65684e98b01d0e0b6bfe1284b5de3354559e4cd51e634fe9e9e2e5473b890e5 vendoo/.github/pull_request_template.md
f037cc2a7fc97f78646cc834f35ecd28811ac46c960373f24ee2aff8a48558e8 vendoo/.github/workflows/ci.yml
dea64cf55cb8eb8922b0f1156cbce5f4e853dfbc679d9f7b4058a7fd4bdd34d2 vendoo/.github/workflows/release.yml
6641ae3ef2b49dbf2d0f76fe1d0c8a76554fb154a0c82738c49848f466cc776b vendoo/.github/workflows/ci.yml
e3efad6c06973cb58958c9d4f8cdb8adec61907acb82804c06b6b6a0aaa1d160 vendoo/.github/workflows/release.yml
9e7decb6c419fc032644ad361043e69770104ea5904bfcce4942f9416787d975 vendoo/.gitignore
9bfa732952ad571d06527b32d96d79133fc23fa607df00de440b2802f543608c vendoo/.npmrc
a29b1b7f6fa480d9d7a801e41df54aab5e8e1e5bde52c69794ef22b59bcfc76d vendoo/CHANGELOG.md
3ae3049aaf372d61f1d39f53c97f697128b352aff1726c6e3b99feb86223a264 vendoo/CHANGELOG.md
61823fc9fdc036170cce6edeecbb612b442d1c65fc9f7a7eaba47e5016316ee5 vendoo/CLAUDE.md
2e0077cd6dd83d3a07fcef25b7e37ab5fc056dbe1ca034b33d55135234045882 vendoo/Dockerfile
3a72c2ba86fca6655af49a47e853a335532586dbf5ea620d909570ec7d76cb02 vendoo/FEATURES.md
118ef8630141ca6402fce456687363c020f9444e496912b8cc6c7553e0975279 vendoo/FILE_CHECKSUMS_SHA256.txt
7f78a0d512de717ba76c9a5e3e1bd2e52db9edf146e8eeb7297458fde5d92afa vendoo/GitHub-Deploy-Assistent.bat
302ab1609d08b3059ba6563b676c64f0709651f2e3c531857bfca3840c535a79 vendoo/MockupDesign/AdminDashboard.png
49f7625a1299a16576feabfd7824ec3511391bd9b7c53a1fba9232da7e8bd6c6 vendoo/MockupDesign/ChatGPT Image 7. Juli 2026, 10_05_19 (1).png
@@ -30,31 +31,34 @@ b1c62e118d9be316274e966c558cdcccdd41afb3a9f05a60ec1e4a3433d2ca0c vendoo/MockupD
a52983b9ea2bf920d115485d10bc30226da88bc5cba8b00bebf801b21c096346 vendoo/MockupDesign/Publish.png
8c8bf278d0c6725e1dbb97b3c3d0c36a9bfc0753c3c86433fdc294bec70dbc0e vendoo/MockupDesign/Startseite.png
62f14221b1d71c9e631efdadd221397ff657adae4b737df52c8bff1610b90999 vendoo/MockupDesign/Vorlagen.png
da56aefa73aaa46fa2c1931ddc8075028b75fae68def3a03d2af98c4b1d8db65 vendoo/README.md
332011f0281e4fb21397ccadf6e7e37ceef13242ad43e5a87ad55fa625b3009c vendoo/SECURITY.md
13ab5b29d5bb22a7c48e7a782a901681de0a5ea314fb243d863c063f6a39d3bb vendoo/README.md
3cc4cbb3f67a7cff7fc1892dd1b9d695dd1b6ed1596ce454b2edbd11ecf76faf vendoo/SECURITY.md
2851c914a1b50a036cb265ddd32e5545cc7e8e34ba9d682445926acc23eb8f28 vendoo/THIRD_PARTY_NOTICES.md
4c424ef64a09639953388bd2e749d45e9a0d3d533c8b6fce547292237a0a48f9 vendoo/app/architecture-boundaries.json
a6bdb9b6fdc97a0b2bbc052bd242a9885a75bcc46ee4f0414d8b7e215b6940de vendoo/app/contracts/module.schema.json
918cddaee5056cadddcff39d86744cf68ab409fbff46aa54b6b465b72b199c01 vendoo/app/core/security/secret-contract.mjs
7f38b3ac792e61e030c9f69355e2378f8f61e8e61c7b29c82cd0fa7ec930cfec vendoo/app/core/themes/theme-contract.mjs
d84a573699e413e0a0803459e0d05c5c4e6e35d3499eb634f95302d151e75c4b vendoo/app/kernel/errors.mjs
a34333cbc784d39b39a8071a437972c6175c551104dc2d82fc4c0e0506b18259 vendoo/app/kernel/event-bus.mjs
0e8f691f96e1ef0a7a86d32cae7b7e1db04325fe94a32b8c1f484a5b6950f3b4 vendoo/app/kernel/feature-flags.mjs
e2e0b74fa04efa787c0494c0d4b755b9445c6f38dc8d9cd7ec206683b0fb1da8 vendoo/app/kernel/input-schema.mjs
a0223a00691908862aaf1fd9383b6d86d67f26325c509280b8c2daa5cfcee28e vendoo/app/kernel/lifecycle.mjs
ba1f4f799a508ff113738cce7ac9f5af27739cb60d7f04d7a6c5878de3c5b7f4 vendoo/app/kernel/module-contract.mjs
1baa99ffd80fffcfed69f21a5db8911500f35c0bd9df23cd02a7fb3b563266df vendoo/app/kernel/module-registry.mjs
3020a4f447f5af3d77efb918e5d074c79e3badea073e3fe0997bc6cf03bde312 vendoo/app/kernel/platform-kernel.mjs
99931e7923b879bd68ceea3cb400ad041f3353e5c341e8a5643fe77f662ac213 vendoo/app/kernel/platform-kernel.mjs
7944f68d995a5d70273f8a985973f668fc62a414d85636d92f3774e34d39a37f vendoo/app/kernel/policy-engine.mjs
8fd120558114a0357d55b070c3a150464f57d6d87a84594c10562774ed994213 vendoo/app/kernel/route-registry.mjs
7547f4cae608feed54669fe94cc787ba2a06baad3c9c969d072fd11cca34288c vendoo/app/kernel/route-registry.mjs
0bb099111f7cf49780389d0b078083756a448b663661ee22475d84d38a5f9719 vendoo/app/modules/ai/module.json
83ad66e0eba88246d292c96fb1ec02b9c59ed15614bbbf4a4a989787fe51e2d3 vendoo/app/modules/auth/module.json
1e63f30aa7616f5582c2b1d151f5da29ae92dbfdcc5e69d516d8780950debf24 vendoo/app/modules/catalog.mjs
dd28d6157d97aa812894a2db96c02f78200565e5adaf5913f92b1fcde759a705 vendoo/app/modules/catalog.mjs
083db2c78089db389e51e743078c847f1067f3d1a39081080c601d31556f15fd vendoo/app/modules/flux-studio/module.json
82b31b548c603cdc4e21b50707fd3d21114b85ef1f61db607c881f9ac1809132 vendoo/app/modules/listings/module.json
6453b41f4074b37c7f7a2c30aa8a0eba8c4233f8d474251919094ed0c15fe38d vendoo/app/modules/media/module.json
9723a9b12a9b472b2ed8c4635cdce663b2f0f65643d8ae0b6219715d853f740d vendoo/app/modules/operations/module.json
b71c0f607bbba70b4485fcce883a7d2ab4a533a6dc203eb7de616aa4d8bae435 vendoo/app/modules/publishing/module.json
61aa66129d18e2c5e6c2e7319de836a4713fde1ddcc31c6a5ca56c22d22d9b48 vendoo/app/modules/quality/module.json
1f02d199bac34cdfe2e41c32dfd450f2160493d9589b11eb1ca595fba74d5daf vendoo/app/modules/security/module.json
747febc12aec7d81ccfdf6e9ea7158655ef5fdc536c519ce447de329314612a8 vendoo/app/modules/security/index.mjs
700be862cd70be6947919c1e1f0e25e7e88c313b1fcdddc104d54d88a74edbb2 vendoo/app/modules/security/module.json
452a5262c418b393bdd8754fe90f9ea14edf61338f8dcfd6438f0852920f608c vendoo/app/modules/system/module.json
92d968c993ee5a2afc14df557b7cba552cae9a41722989007eb0b784514333ff vendoo/app/modules/themes/index.mjs
1e062db871f9bf13b487c972f6cd4dd9cfe1b3046cd9b53ed43e0a0babc9d285 vendoo/app/modules/themes/migrations/001_theme_profiles.sql
@@ -62,10 +66,10 @@ b71c0f607bbba70b4485fcce883a7d2ab4a533a6dc203eb7de616aa4d8bae435 vendoo/app/mod
3c3dc5974976672cd0e9141867a8a1d78a0dfaa54582bafb8f360bea571bf11a vendoo/app/modules/themes/repository.mjs
4e2c348a184384739408894f26b02c56c6bfd4dd531eebb9c67d2fb7fbad3009 vendoo/app/modules/themes/service.mjs
11b4a1bc94b68998a3a2a8bec766bc56c7ff829939d914b0ce896f963feb10ed vendoo/app/modules/users/module.json
69ce3be6a8a4a28725c5c7f9dc8803415ab0d1e503047b66dfcc9a44c9e90109 vendoo/bootstrap.mjs
c197ce417fbce6dab1d8ee157b0a105a099dd2021ece4dac3891d0b2022a0d58 vendoo/bootstrap.mjs
4a3273ec603224a70ceb81c0d5ed6617c3ba2d3111342b4e646a79752f4b3f87 vendoo/compose.bind-mounts.example.yaml
9f865115da62b2689e06156da34c97e10a0b9831a77f967f7f418e100543d789 vendoo/compose.vps.yaml
0226a6661724b6a5a88a615dc7955f7c601930b7a3f6f4b328becd0f6866f46b vendoo/compose.yaml
66d2e8a35289748f472d3ca2d703fe878f616b22ba30b1344251f78af07e3ecf vendoo/compose.vps.yaml
69b9d6721198f5a93840ee4fb6ece45caf2898f036c3f9bba9aa05f0f4199964 vendoo/compose.yaml
6323f984f1e04ab135356a14ec151941638041f6b305ed68772d5e1812972075 vendoo/db/schema.sql
49690c4e4c8e84de8eb40ffe79823493b7be20fe46fa2ad9e6544f7f0afbfd2c vendoo/deploy/Caddyfile
cc794bca282d79a27d860d0bfef4641769f4e9f31172778a1d9d8205558d948e vendoo/docs/ABNAHMEBERICHT_1_32_0.md
@@ -76,6 +80,7 @@ f792d366c13c5a4a9b4e8d4054e26190d9c327a7a770005d74bbe2b31bb84ab3 vendoo/docs/AB
bc638fd21222ada7b15e40adff80a318aebec58139978109cbfd30040815a8d4 vendoo/docs/ABNAHMEBERICHT_1_34_3.md
c0ae5c4176ba6f7510be047d4feaf383cd646152131003ebccc6bfbf8c8056f5 vendoo/docs/ABNAHMEBERICHT_1_35_0.md
c050c8e11f2bdb0a742851423dcff864bafba9cc839c52b2f8d48b75f7b18633 vendoo/docs/ABNAHMEBERICHT_1_36_0.md
1f3e96ba13844a3f1cefecca99b3d6313aebf86faae914897db0404ea031c491 vendoo/docs/ABNAHMEBERICHT_1_37_0.md
67a1be91b0c2d2797716f785f2f770c881cf88d7fd617722468df8d949d0638a vendoo/docs/AUDIT_1_31_0_IST_UND_LUECKENANALYSE.md
2acba8fcc5da42e5a808925a86628bc0c6fc817ddb082b0ead3857c6a43460f1 vendoo/docs/BRANDING.md
f23c643236c84b0e3715620598f358065748b6d090229003e23df8ad9320b54e vendoo/docs/FULL_LISTING_EDITOR_2026.md
@@ -119,6 +124,7 @@ e7bb3bb950e3c5303746f43139ca8f7c985d2d73896b44f5b707dd46a9152529 vendoo/docs/RE
33eb9f0059a2ddc4b4debe5bf733720f2a5bb22f2710bab0a0cc9ac1b898ff11 vendoo/docs/RELEASE_1_35_0_VERIFICATION.json
5a9fcfa0ea6e9c5c13f6d943e1de4d31c21e21fcff9186e8a714d7a16ed1c18f vendoo/docs/RELEASE_1_36_0_SECURE_THEME_MANAGER.md
2dfe705857424865f101e861f4e633c8a7fb3c0e8dab874cb6620fd09b1ca902 vendoo/docs/RELEASE_1_36_0_VERIFICATION.json
527806c00fb51334457726a9a7e9f6fc13f4dacd985fa2d2b97d5eb21c543853 vendoo/docs/RELEASE_1_37_0_SECURITY_SECRETS_OBSERVABILITY.md
fe5756f788b2ab131f0832504d90d46d1ed744bfe470fd040803985234afa3cf vendoo/docs/SLICE_02_ACCEPTANCE.md
05614ecf41becc399acfa6a3b2f681f37a8c80f5ce0130b98c578b2c8c60713c vendoo/docs/SLICE_05_ACCEPTANCE.md
0838bcc6464a6beff39f0b4b056e513c1a390193521d9a8fc5d440d38034e9d0 vendoo/docs/SLICE_06_ACCEPTANCE.md
@@ -155,6 +161,7 @@ e5f065ba8d516a5ebd47e7e6859d0aab40ef69797413e358d969ef27c454fcdd vendoo/docs/ar
cc0edf92756a51414563b4407dedb21d1e3b36682f4bfbbc334aeb33a22ae1b4 vendoo/docs/architecture/MIGRATION_ROADMAP_1_35_0.md
eb47b055dd336e8360ec7c4712dee4ae37f109f3820e3f185969e2327d790cf8 vendoo/docs/architecture/MODULE_SYSTEM_1_35_0.md
d7773faac0e93510a5a51c91de997df03547b51f3124267dcf137d4e99299562 vendoo/docs/architecture/SECURITY_ARCHITECTURE_1_35_0.md
58cd43938b06e29520b92516a1e816d17d2c08d4847b99c1ee700b2185f46f20 vendoo/docs/architecture/SECURITY_FOUNDATION_1_37_0.md
771c4771c4d7335750c5a2d976c765b4ed66ed936d8550d7af69de14a16705bb vendoo/docs/architecture/THEME_MANAGER_1_36_0.md
cc77a92ca268d3c444c6113a9cfaa38d3c805a579f6b1b21b7dd43a6ada58551 vendoo/docs/superpowers/specs/2026-07-06-autolister-features-design.md
c7db96df5fed3c8336062204322d62b4870f5c8ab1d30ea48cc6e7e38ed3513b vendoo/extension/README.txt
@@ -258,32 +265,34 @@ ee6aa662a1875f9df8da1000804a6061f1a0f52c7a266df3d515cab4d410465b vendoo/lib/aut
3e2b75c0758703e590233cbcc9b589e3177134accecf5ed921791891cbfc8522 vendoo/lib/categories.mjs
86793fb57a1dad32f4d93e34c27ffe9e77a95785dd30b2b55ffb67d0ad5e14fb vendoo/lib/config-store.mjs
8c203e70e9ab07b996d4a53031892bbf37b10efd024f9e0013266cf2af0244a4 vendoo/lib/db.mjs
75827cb79cebc95cf9ae25469efe28c04cebac2900b62f731552329f0c055e91 vendoo/lib/ebay-api.mjs
b4460619cb14a4e4b810adc78bdd662c9d375c483c979ef619f8b95dfefd3f73 vendoo/lib/etsy-api.mjs
54722d3f76ad9ee4fbe731d3a65c2a03d343eb82d98f8ea5a5996b1bec24d57f vendoo/lib/ebay-api.mjs
524f1b48d467998da819f0b947f2551ad45784e588eb442304c5f6e925dffaee vendoo/lib/etsy-api.mjs
5b2c566ff14fa502ba2cd4d4c918fe238a8e93c3283d521144093a897f9d8018 vendoo/lib/fees.mjs
7dcb2fb5606140afb7a019094d20ef88e9b4e2c70041f77b06d67d8992fd25ce vendoo/lib/html-templates.mjs
844f0f8bc1de849bacc8df5d57006d5fc1100c706acc1140939a981dfdf2df4b vendoo/lib/image-batch-jobs.mjs
5ca5fc65a7de7c27243646d291dc42c0b5267a47705a09b306cd2c2eae2a77c8 vendoo/lib/image-editor.mjs
5e7aa66faddd3d19bc6ebb9ddc13abfc4ab4f17d8c51bb39b2c4e0279385d788 vendoo/lib/images.mjs
0248ef19a04e8f1265cf89c170875c3a8051c91c6151b762a849cb55104e93f3 vendoo/lib/mailer.mjs
606f4cb1013c711d971dd201ab06df84ecb128bf5d5277095ce2e2ea56029e45 vendoo/lib/mailer.mjs
ad53b2b39f894a685f79e723b3f2b987fc9d9a3b75d39d0059ad225bc36c08cf vendoo/lib/operations-center.mjs
78d30585aac7dc663e803a19927c89ab02414c0495d81df503e28f7bae58701a vendoo/lib/publishing-jobs.mjs
3a728417dd668d60fd1526ec738cb9b302f86c01d62b2227f12b2e44b7d389c7 vendoo/lib/quality-center.mjs
faa5d84ca6b26d1602e53a402de74a5c9e3f9ef9a72233159101f2b0bb0e499f vendoo/lib/runtime-paths.mjs
d3d862ab32fd276ecffb54c0307976ca680135d92f24d024c95d365a50257643 vendoo/lib/secret-store.mjs
cbd60791ee86fe09f07fc9ed85be3654f7aa5a310baafd9053440952619e2bc9 vendoo/lib/security.mjs
2fd970a6a357a26211f0b9bcf432e59e79f73dc9a4cd35f88cca939655eefdff vendoo/lib/structured-logger.mjs
ddb9c7677600795a4adf8a19a7525b7551455459d16eed4cdfbe751ef9ddf0eb vendoo/lib/zip.mjs
2924f4e8abe5ebbd099fe1ceb2bc6ceb4bdda55fa3e57dd299cfc05d310a9246 vendoo/local-ai/start-local-flux.ps1
7c6176d8311b1ba9d511beb40edd41b8248e61c298528bbec3f9ef1171856c05 vendoo/local-ai/stop-local-flux.ps1
5f220a2dca02cc0764f6d0157677611b26c88860b48367eb661b6e47a1b92265 vendoo/local-ai/workflows/vendoo_flux_schnell_api.json
2571f42e92a40e5483c762b1489b38294627dccfeecf388ac2b1156d82666d8b vendoo/package-lock.json
098e7758e0cf9fa92d2ab1e9c01c62e59196576c79d845292b8a36ca4ed6960a vendoo/package.json
c848163a1cf38336947778d73c3b7f4039771270a4cf974352b0ea85e7879415 vendoo/package-lock.json
3d70a7f7d0d100d3ce336f130f1e7a7de3e2244dbf8fbcfd1d8e3f06d254b6da vendoo/package.json
3da71dd28cb25c7c7317b9061855d40c6a3ab8bc39391963b49ee1e707f838e5 vendoo/platforms/ebay-de.mjs
cc1ca2b4384c8c548bf755dc33101d248541bf893c3d5f35369961f904afcc00 vendoo/platforms/ebay-ka.mjs
fa52b247dd758aeee06120499bd1ae6c53e9f460f8bd7762b8f06141b201e32b vendoo/platforms/etsy.mjs
5c925e3934a4c9e2f26dc15b3449a249f5ce20ecebbd459b15365a34804824d6 vendoo/platforms/vinted.mjs
a2ea3f5f56dba8bd4d23fa54a26fd941567b4febdd1ed1b4e9f5bcc1c9786e53 vendoo/public/android-chrome-192x192.png
46ea6ba4ca6ca2352f37353b8bc4ca258935d29ecb8d3c9b133a48ea75c0c58f vendoo/public/android-chrome-512x512.png
90689f16d004d8ddd3ae4edd5ec0ca1bde89901fb36de163aadd10d710bf347c vendoo/public/app.js
4177569df5648213a0f8d65a5c0a9ae2c4f07ce28974a318ac03cf8c1b4e4a9e vendoo/public/app.js
e0e7b8ef01c36f0625b6157aa46bd69de05c17be0b054208fb635d6507b52154 vendoo/public/apple-touch-icon.png
a2ea3f5f56dba8bd4d23fa54a26fd941567b4febdd1ed1b4e9f5bcc1c9786e53 vendoo/public/brand/favicons/android-chrome-192x192.png
46ea6ba4ca6ca2352f37353b8bc4ca258935d29ecb8d3c9b133a48ea75c0c58f vendoo/public/brand/favicons/android-chrome-512x512.png
@@ -325,8 +334,9 @@ fb3dbcd03f7ed15b773b582c2a2b785c3040d3319aba5b7c682a7e74e1cf3b4e vendoo/public/
4d69e2cb6b7f9f63b54d708a5d8b1ebefcdcb9f88a977053db5031c05b098464 vendoo/public/design-system/tokens/source.json
4a9e65edeaee3421edc3dd4831230062494f1a42f8495f4cb979fde8664d06c4 vendoo/public/design-system/tokens.css
15bf8dd655b34a8015447e834d387af12685238ede598f5f0e7927eea2933483 vendoo/public/favicon.ico
6e5ba2d8fbe559861428ccf4ebe7e8d1c82357d8b29b7548e40398a605f17c28 vendoo/public/index.html
141c261b2d0ea713af140d2e89f98b9c9046584bef60e97d8bf3d6b6f504efa2 vendoo/public/login.html
5157f9a0acad9e663d84e1b064a4b626ed61d08f3472ad058848a076bc7074b4 vendoo/public/index.html
da7f1b6488e33c9ff94323d2da3bdcea91e386484c11e5202432e567721704b4 vendoo/public/login.html
e37558ee9612a36db8a19999fbb320f1c249a8e155f94c83a82926bec920f989 vendoo/public/login.js
59291f75eca405e3856bafea76cc601d681060eb6b36bf82a4be3c3ab7eac290 vendoo/public/mobile-upload-expired.html
f046f166d89fc32774b87deb02e6d144fd2f40c0925aac67487e5b7c489a0ec1 vendoo/public/mobile-upload.css
6152e4fe715efbf8fd6a7c4286f23172bc3cf15dde085e5e4f7389ad5e65ad73 vendoo/public/mobile-upload.html
@@ -334,23 +344,23 @@ f13846801a8493aa43df6ec3d78b826b21b59e8f21d47735f68fd0b278e440c7 vendoo/public/
01f2bd124257220005032bf234d122b9942fdd8fd57ed8195748b2fb1f5a5cfb vendoo/public/modules/README.md
2d7a004db3e22b30ad3a682ba445bcee3fc1c5f0ed5e8fee45b5892c5b335e51 vendoo/public/modules/theme-manager/theme-manager.css
0edc61f0c2bb604c3adc40813b18fe5ca8d9b846ec2a3d9f406ae26ae313d3ee vendoo/public/modules/theme-manager/theme-manager.js
a26f11bfb9627e878961feacf6d56211a40746731a63a7649bb327a383d60639 vendoo/public/style.css
e0a6c981d4231eab26d981be62647d0e6f89e05e8371baad121348202ad54f49 vendoo/public/style.css
ff525e0af963e6f54636cfdc1bd2d045aaf82e7b0199755eb5cdf4c52110be2e vendoo/public/vendoo-icons.js
deb1a45f6414a2357046ff1d66fc58114549ba5ad695ed40fcceef2aef9f64a8 vendoo/scripts/docker-backup.sh
cc90bb9042d7f3c5b73a061c4621f36cf44c8841d35083c3033bae725d8525c0 vendoo/scripts/docker-backup.sh
20e7590a7633b6c61086a5596d0bec1d343f0ff0eecc444ac932130ff363e258 vendoo/scripts/docker-entrypoint.sh
be72c39f00415cd57b69835346f00043841ce9f853b10436eb1799ca42980cb5 vendoo/scripts/docker-restore.sh
3f1005ade493905e37f90314e8b4667189f28297acf88575fee3d2fa5df00216 vendoo/scripts/github-deploy.ps1
1461b07a51d41c72be59b3903d36937d5912cadd600d8519142c47478d0d40c3 vendoo/scripts/github-deploy.sh
50d93e7f9f71fa72071e5b2f3c63a548e4252c8096f6f8fa78342e5cf51db5c9 vendoo/scripts/docker-restore.sh
9a692ace2e8f92ff245be890277a74541c252e295591818597b8cfe08b3176a1 vendoo/scripts/github-deploy.ps1
00f950df71ddd4c5f62385529620cd85bfc73fb54e991489cedee05217ebe556 vendoo/scripts/github-deploy.sh
0a9bafc79c1c5d59fb9b51ebc34c00eec4a4e9a5e873ce1818f50f3ab983da70 vendoo/scripts/install-local-flux.ps1
2924f4e8abe5ebbd099fe1ceb2bc6ceb4bdda55fa3e57dd299cfc05d310a9246 vendoo/scripts/runtime-start-local-flux.ps1
7c6176d8311b1ba9d511beb40edd41b8248e61c298528bbec3f9ef1171856c05 vendoo/scripts/runtime-stop-local-flux.ps1
1a5736cf5fccc991df122163977c2eac80281bd99a54a5680b3d7eae99e4b79d vendoo/scripts/start-local-flux.bat
3bf3aa74f5cc1f2946bb2da637eb30fe8daec783a32f9721ebb0468e20df90bd vendoo/scripts/uninstall-local-flux.ps1
aa58e3380d0e5c8e5df2bf7d09dea4cfca996ecc1991c11e2518e840f72b8bf2 vendoo/server.mjs
a7384ecbf3977245d31097ea4ff224142d998c3e80d0e44f49aaa8a2d4395728 vendoo/setup-gui.ps1
241b006d4066a68e330e26c8e38a041559b4e5c1368ad8cf3db5e2f63d6d8397 vendoo/server.mjs
3c33e7042bf4e95fa56a5e163a42f156b7995e7d89fef9e8db7d48577037828f vendoo/setup-gui.ps1
cf4519ce5adc01f05458e3286e86f3a419cceaff5fcdd869a1d07f1c1d1a0d8c vendoo/setup.bat
5b3d8fb189b7efb656a64fc41c1bf0cde2202ac91aaefbea74c927acd9d9727a vendoo/setup.ps1
bf3bf58517beaa27e837f9b5c75d0149b640bba8cf4df6f0a6b2566fd36d7193 vendoo/setup.sh
9658fe68ddff2903505b92998a9e78385dc73dd269804dc5a7447099b8a0457f vendoo/setup.ps1
24f9614b10f0a970f5233d9ac7083bca6c3d305b37ff29b57a5c21473b7f30a7 vendoo/setup.sh
90485a16e3468cb9a6750646700fbb036cb9ac410e9b8bd5c582f7b923bf3c31 vendoo/tools/build-release.mjs
ac8440bce2659a035302609722f1dfed5d125223376cd575ffc0636397c94b54 vendoo/tools/generate-design-tokens.mjs
294659f2beb607540abbc3d6b4a1658525448a42f8880f2b282081a259c4e35b vendoo/tools/prepare-git-staging.mjs
@@ -363,6 +373,7 @@ cbd91b45d97e11bd4f5ca2f9d2edf2b5931cb2aa336cb71afc30aad9cffbe1e0 vendoo/tools/v
906767e574c06aedebb2d7797150bda2f1e4c4536e8f82f4c7de2e3cc8398c8e vendoo/tools/verify-deployment-1.34.3.mjs
71d00227a59592cc0ad8ba321c63350ec25748ef965d8cd0eff1317738c7fba8 vendoo/tools/verify-deployment-1.35.0.mjs
b65eec7fd54e1459b363d99d20f9438ae5bc4b518e775de8b97e33e89a382e42 vendoo/tools/verify-deployment-1.36.0.mjs
22a5ba1951b2e8dbc924e60aaff8be7c41189ae7b30de9ecf50d0b741e84e13a vendoo/tools/verify-deployment-1.37.0.mjs
1f052446f6c9627420afeb48aa09771b61f9e08ba573f6a0651b2843ef0b79f8 vendoo/tools/verify-git-safety-regression.mjs
5bba3d7ae042b0bcf4eb56bacb3f6e41e1b0e00cadd7666505792ba6748cc987 vendoo/tools/verify-git-safety.mjs
2f8d687319619240efe5849c276f7723e69755c66aa3b9609e41fdf0cda01e55 vendoo/tools/verify-git-staging.mjs
@@ -370,6 +381,7 @@ b65eec7fd54e1459b363d99d20f9438ae5bc4b518e775de8b97e33e89a382e42 vendoo/tools/v
44c95844422be3deaad6054ee3f0cced9c25986815d976e0c64b042d0c2c5e1e vendoo/tools/verify-installer-shell.sh
cab03e98687af87f359f6424d440fc0b644da97b3c614509b8c7d008d4b18a8d vendoo/tools/verify-platform-architecture-1.35.0.mjs
732bb15431746a829e45ae55c695360cbf1dd21d4fc3be26a98f35708d571e84 vendoo/tools/verify-platform-architecture-1.36.0.mjs
ee8ae7bed4e93a2ef278662552a4ae5d751306aad7133a93f380bbf2a5d5a28c vendoo/tools/verify-platform-architecture-1.37.0.mjs
36e35fedb08923c22fd8551389d33432b66dbd4215d95c594ef29bfc790c98e0 vendoo/tools/verify-release-1.25.0.mjs
89621694b7bad18b6f3f1ac1956032f64112c40d3edc069ca581dc813d57d628 vendoo/tools/verify-release-1.25.1-static.mjs
c908f5186cf2d71ef83d5e649327ae19965568933acfb32057ca00d29cf890bc vendoo/tools/verify-release-1.25.1.mjs
@@ -381,10 +393,12 @@ d9a75c45f40d857c84790d51dca2fd088c3851ca250405871a7e32773918c66e vendoo/tools/v
3f30260dabbdf0fa7b042381cb9e24f840d0c3ddbc44fe309763789a7d14afb7 vendoo/tools/verify-release-1.30.0.mjs
b1ceed5dfc17dbd3b038b7168e61076e4d39a0f1d67e2b87677a91c4dbb2daff vendoo/tools/verify-release-1.31.0.mjs
a372258b97aa68d59a1fe0fd3f380d019c59412d5c408a6064f437d5cfc6e709 vendoo/tools/verify-security-1.31.0.py
08820d9bb7be1dec496c04e9ea4a39b2ebb84d373a9481136610d16dea0edde3 vendoo/tools/verify-security-foundation-1.37.0.mjs
31a120622ce8bb8451014f2662366f81abd28d0f3be59adfe35d17e0ada1838f vendoo/tools/verify-slice30-mock.mjs
20957a4a038b9afdb01a8c98b881644daf793d2a6bb778a4c8e04780687d00e4 vendoo/tools/verify-slice31-image-editor.mjs
21061ed5dc88feef48e80efffd9a1054d38598dce5a5d3f9f6bde39b539b83f0 vendoo/tools/verify-slice32-batch.mjs
0f05b1ac3b686cf535bcfb3e6f6df24a29c3429ade1b3c666c1b99abb1a7311b vendoo/tools/verify-slice32-image-render.mjs
c9aa6693aa93ff1f220a2ce3bc35ef714a0b18a53eae0f907879fc92c66c1e38 vendoo/tools/verify-theme-manager-1.36.0.mjs
1e61c4b180aa09de3dae9e72aef313b09a6f422229f180984b69a8d226e7cd8d vendoo/tools/verify-theme-manager-1.37.0.mjs
0f3f684019763a14f5fbaec42e42c680cf748d930d46cd607fc61eb413ca4553 vendoo/tools/verify-ui-contracts-1.26.1.mjs
d677548be9b02ebd3b53e93158aeb740a11bd3e6d52b07898f1908c74a22294f vendoo/update-manifest.json
63bef319d33f6998c4c378f12710733d98f2007e8b0ff313cb80c978320800f4 vendoo/update-manifest.json
@@ -51,6 +51,9 @@ jobs:
- name: Theme Manager, Accessibility und Komponenten-Tokens prüfen
run: npm run verify:themes
- name: Security, Secrets und Observability prüfen
run: npm run verify:security
- name: Deployment-Gate
run: npm run verify:deployment
@@ -50,6 +50,7 @@ jobs:
npm run check
npm run verify:architecture
npm run verify:themes
npm run verify:security
npm run verify:deployment
npm run verify:config
npm run verify:installer-shell
@@ -1,5 +1,25 @@
# Changelog
## 1.37.0 Security, Secrets & Observability Foundation
### Neu
- `vendoo.security` als natives Kernmodul.
- AES-256-GCM-verschlüsselter Secret-Speicher mit separatem Master-Key.
- Automatische Migration vorhandener Runtime- und SMTP-Secrets mit Sicherungskopie.
- Strikte Script-CSP ohne Inline-Skripte und Inline-Eventhandler.
- Request- und Correlation-IDs sowie strukturierte JSON-Telemetrie.
- Zentrale Input-Schema-Validierung für neue Kernel-Routen.
- Erweitertes Security-Dashboard für Secret-Provider, CSP und Requeststatus.
- SMTP-Zertifikatsprüfung standardmäßig aktiv.
- GitHub Draft Pull Request #10 für `release/1.37.0-security-foundation`.
### Kompatibilität
- Keine Datenbankablösung und keine destruktive Migration.
- Windows, Docker, NAS und VPS bleiben unterstützt.
- Theme Manager und vorhandene Daten bleiben erhalten.
## 1.36.0 Secure Theme Manager, Accessibility & Component Token Foundation
### Neu
@@ -1,34 +1,57 @@
f344f75df655bc133e6c4abb2d215b2234fb22a4bb155c217317c36ee4f0f8fb .dockerignore
196b4f6848e886de83ce63810e60a2b129ff3e4e71f080efb9611432c4b845be .env.example
e5cc1e85c80485ceda76fd6c69330e085ccc7bc1248be810fe4243712cf39118 .env.example
58e3f4b76cc9398f32dcd5481b2080e7e5ba322aca04b8b8374446299c5d7dd6 .github/CODEOWNERS
5bd335eb750d084ca12b6a3b3f35d0cd7bc454ba24ed280187c66acf75eaf396 .github/dependabot.yml
f65684e98b01d0e0b6bfe1284b5de3354559e4cd51e634fe9e9e2e5473b890e5 .github/pull_request_template.md
f037cc2a7fc97f78646cc834f35ecd28811ac46c960373f24ee2aff8a48558e8 .github/workflows/ci.yml
dea64cf55cb8eb8922b0f1156cbce5f4e853dfbc679d9f7b4058a7fd4bdd34d2 .github/workflows/release.yml
6641ae3ef2b49dbf2d0f76fe1d0c8a76554fb154a0c82738c49848f466cc776b .github/workflows/ci.yml
e3efad6c06973cb58958c9d4f8cdb8adec61907acb82804c06b6b6a0aaa1d160 .github/workflows/release.yml
9e7decb6c419fc032644ad361043e69770104ea5904bfcce4942f9416787d975 .gitignore
9bfa732952ad571d06527b32d96d79133fc23fa607df00de440b2802f543608c .npmrc
3ae3049aaf372d61f1d39f53c97f697128b352aff1726c6e3b99feb86223a264 CHANGELOG.md
61823fc9fdc036170cce6edeecbb612b442d1c65fc9f7a7eaba47e5016316ee5 CLAUDE.md
2e0077cd6dd83d3a07fcef25b7e37ab5fc056dbe1ca034b33d55135234045882 Dockerfile
3a72c2ba86fca6655af49a47e853a335532586dbf5ea620d909570ec7d76cb02 FEATURES.md
7f78a0d512de717ba76c9a5e3e1bd2e52db9edf146e8eeb7297458fde5d92afa GitHub-Deploy-Assistent.bat
302ab1609d08b3059ba6563b676c64f0709651f2e3c531857bfca3840c535a79 MockupDesign/AdminDashboard.png
49f7625a1299a16576feabfd7824ec3511391bd9b7c53a1fba9232da7e8bd6c6 MockupDesign/ChatGPT Image 7. Juli 2026, 10_05_19 (1).png
7b8cc9c5db8718b0b653ec6aa9d2a8bfa1bba03810248c3ba17745b6f15cc412 MockupDesign/Dashboard.png
4e3e797ed5d3ed0b60d00d8e567fbe51543c08578b858ef71e77b274ae449fd0 MockupDesign/Einstellungen.png
c78fd6f673c0e59789ea313396b12c2f21f75a2ee6c7ad2de81a6b89f6d90588 MockupDesign/ExtensionDesignMockup.png
ed20bc04cab8e85245a855810a61b736a682f972eb85e23340edc9b558851a93 MockupDesign/Heute StudioFlow.png
1ad88f45f377ab9b3f35f96a0ceaaa7f75cb0a996e83370d76c54f527392a08d MockupDesign/IconLogoMockup.png
0e8b4a31d075f1f83ea62b5eeeb53e89859e395a696deb43155932a23e7cef86 MockupDesign/Lager.png
b1c62e118d9be316274e966c558cdcccdd41afb3a9f05a60ec1e4a3433d2ca0c MockupDesign/Listings.png
a52983b9ea2bf920d115485d10bc30226da88bc5cba8b00bebf801b21c096346 MockupDesign/Publish.png
8c8bf278d0c6725e1dbb97b3c3d0c36a9bfc0753c3c86433fdc294bec70dbc0e MockupDesign/Startseite.png
62f14221b1d71c9e631efdadd221397ff657adae4b737df52c8bff1610b90999 MockupDesign/Vorlagen.png
13ab5b29d5bb22a7c48e7a782a901681de0a5ea314fb243d863c063f6a39d3bb README.md
3cc4cbb3f67a7cff7fc1892dd1b9d695dd1b6ed1596ce454b2edbd11ecf76faf SECURITY.md
2851c914a1b50a036cb265ddd32e5545cc7e8e34ba9d682445926acc23eb8f28 THIRD_PARTY_NOTICES.md
4c424ef64a09639953388bd2e749d45e9a0d3d533c8b6fce547292237a0a48f9 app/architecture-boundaries.json
a6bdb9b6fdc97a0b2bbc052bd242a9885a75bcc46ee4f0414d8b7e215b6940de app/contracts/module.schema.json
918cddaee5056cadddcff39d86744cf68ab409fbff46aa54b6b465b72b199c01 app/core/security/secret-contract.mjs
7f38b3ac792e61e030c9f69355e2378f8f61e8e61c7b29c82cd0fa7ec930cfec app/core/themes/theme-contract.mjs
d84a573699e413e0a0803459e0d05c5c4e6e35d3499eb634f95302d151e75c4b app/kernel/errors.mjs
a34333cbc784d39b39a8071a437972c6175c551104dc2d82fc4c0e0506b18259 app/kernel/event-bus.mjs
0e8f691f96e1ef0a7a86d32cae7b7e1db04325fe94a32b8c1f484a5b6950f3b4 app/kernel/feature-flags.mjs
e2e0b74fa04efa787c0494c0d4b755b9445c6f38dc8d9cd7ec206683b0fb1da8 app/kernel/input-schema.mjs
a0223a00691908862aaf1fd9383b6d86d67f26325c509280b8c2daa5cfcee28e app/kernel/lifecycle.mjs
ba1f4f799a508ff113738cce7ac9f5af27739cb60d7f04d7a6c5878de3c5b7f4 app/kernel/module-contract.mjs
1baa99ffd80fffcfed69f21a5db8911500f35c0bd9df23cd02a7fb3b563266df app/kernel/module-registry.mjs
3020a4f447f5af3d77efb918e5d074c79e3badea073e3fe0997bc6cf03bde312 app/kernel/platform-kernel.mjs
99931e7923b879bd68ceea3cb400ad041f3353e5c341e8a5643fe77f662ac213 app/kernel/platform-kernel.mjs
7944f68d995a5d70273f8a985973f668fc62a414d85636d92f3774e34d39a37f app/kernel/policy-engine.mjs
8fd120558114a0357d55b070c3a150464f57d6d87a84594c10562774ed994213 app/kernel/route-registry.mjs
7547f4cae608feed54669fe94cc787ba2a06baad3c9c969d072fd11cca34288c app/kernel/route-registry.mjs
0bb099111f7cf49780389d0b078083756a448b663661ee22475d84d38a5f9719 app/modules/ai/module.json
83ad66e0eba88246d292c96fb1ec02b9c59ed15614bbbf4a4a989787fe51e2d3 app/modules/auth/module.json
1e63f30aa7616f5582c2b1d151f5da29ae92dbfdcc5e69d516d8780950debf24 app/modules/catalog.mjs
dd28d6157d97aa812894a2db96c02f78200565e5adaf5913f92b1fcde759a705 app/modules/catalog.mjs
083db2c78089db389e51e743078c847f1067f3d1a39081080c601d31556f15fd app/modules/flux-studio/module.json
82b31b548c603cdc4e21b50707fd3d21114b85ef1f61db607c881f9ac1809132 app/modules/listings/module.json
6453b41f4074b37c7f7a2c30aa8a0eba8c4233f8d474251919094ed0c15fe38d app/modules/media/module.json
9723a9b12a9b472b2ed8c4635cdce663b2f0f65643d8ae0b6219715d853f740d app/modules/operations/module.json
b71c0f607bbba70b4485fcce883a7d2ab4a533a6dc203eb7de616aa4d8bae435 app/modules/publishing/module.json
61aa66129d18e2c5e6c2e7319de836a4713fde1ddcc31c6a5ca56c22d22d9b48 app/modules/quality/module.json
1f02d199bac34cdfe2e41c32dfd450f2160493d9589b11eb1ca595fba74d5daf app/modules/security/module.json
747febc12aec7d81ccfdf6e9ea7158655ef5fdc536c519ce447de329314612a8 app/modules/security/index.mjs
700be862cd70be6947919c1e1f0e25e7e88c313b1fcdddc104d54d88a74edbb2 app/modules/security/module.json
452a5262c418b393bdd8754fe90f9ea14edf61338f8dcfd6438f0852920f608c app/modules/system/module.json
92d968c993ee5a2afc14df557b7cba552cae9a41722989007eb0b784514333ff app/modules/themes/index.mjs
1e062db871f9bf13b487c972f6cd4dd9cfe1b3046cd9b53ed43e0a0babc9d285 app/modules/themes/migrations/001_theme_profiles.sql
@@ -36,15 +59,12 @@ b71c0f607bbba70b4485fcce883a7d2ab4a533a6dc203eb7de616aa4d8bae435 app/modules/pu
3c3dc5974976672cd0e9141867a8a1d78a0dfaa54582bafb8f360bea571bf11a app/modules/themes/repository.mjs
4e2c348a184384739408894f26b02c56c6bfd4dd531eebb9c67d2fb7fbad3009 app/modules/themes/service.mjs
11b4a1bc94b68998a3a2a8bec766bc56c7ff829939d914b0ce896f963feb10ed app/modules/users/module.json
69ce3be6a8a4a28725c5c7f9dc8803415ab0d1e503047b66dfcc9a44c9e90109 bootstrap.mjs
a29b1b7f6fa480d9d7a801e41df54aab5e8e1e5bde52c69794ef22b59bcfc76d CHANGELOG.md
61823fc9fdc036170cce6edeecbb612b442d1c65fc9f7a7eaba47e5016316ee5 CLAUDE.md
c197ce417fbce6dab1d8ee157b0a105a099dd2021ece4dac3891d0b2022a0d58 bootstrap.mjs
4a3273ec603224a70ceb81c0d5ed6617c3ba2d3111342b4e646a79752f4b3f87 compose.bind-mounts.example.yaml
9f865115da62b2689e06156da34c97e10a0b9831a77f967f7f418e100543d789 compose.vps.yaml
0226a6661724b6a5a88a615dc7955f7c601930b7a3f6f4b328becd0f6866f46b compose.yaml
66d2e8a35289748f472d3ca2d703fe878f616b22ba30b1344251f78af07e3ecf compose.vps.yaml
69b9d6721198f5a93840ee4fb6ece45caf2898f036c3f9bba9aa05f0f4199964 compose.yaml
6323f984f1e04ab135356a14ec151941638041f6b305ed68772d5e1812972075 db/schema.sql
49690c4e4c8e84de8eb40ffe79823493b7be20fe46fa2ad9e6544f7f0afbfd2c deploy/Caddyfile
2e0077cd6dd83d3a07fcef25b7e37ab5fc056dbe1ca034b33d55135234045882 Dockerfile
cc794bca282d79a27d860d0bfef4641769f4e9f31172778a1d9d8205558d948e docs/ABNAHMEBERICHT_1_32_0.md
de0d86f806a70195050613f5b56f6c4da1ee2eff02a9a991b6aacee229c46ca5 docs/ABNAHMEBERICHT_1_33_0.md
947745174897470de0bebf4f7c2b29a0c0ef3f1a762f277374c2614d9e3dec4f docs/ABNAHMEBERICHT_1_34_0.md
@@ -53,11 +73,7 @@ f792d366c13c5a4a9b4e8d4054e26190d9c327a7a770005d74bbe2b31bb84ab3 docs/ABNAHMEBE
bc638fd21222ada7b15e40adff80a318aebec58139978109cbfd30040815a8d4 docs/ABNAHMEBERICHT_1_34_3.md
c0ae5c4176ba6f7510be047d4feaf383cd646152131003ebccc6bfbf8c8056f5 docs/ABNAHMEBERICHT_1_35_0.md
c050c8e11f2bdb0a742851423dcff864bafba9cc839c52b2f8d48b75f7b18633 docs/ABNAHMEBERICHT_1_36_0.md
e5f065ba8d516a5ebd47e7e6859d0aab40ef69797413e358d969ef27c454fcdd docs/architecture/DESIGN_SYSTEM_1_35_0.md
cc0edf92756a51414563b4407dedb21d1e3b36682f4bfbbc334aeb33a22ae1b4 docs/architecture/MIGRATION_ROADMAP_1_35_0.md
eb47b055dd336e8360ec7c4712dee4ae37f109f3820e3f185969e2327d790cf8 docs/architecture/MODULE_SYSTEM_1_35_0.md
d7773faac0e93510a5a51c91de997df03547b51f3124267dcf137d4e99299562 docs/architecture/SECURITY_ARCHITECTURE_1_35_0.md
771c4771c4d7335750c5a2d976c765b4ed66ed936d8550d7af69de14a16705bb docs/architecture/THEME_MANAGER_1_36_0.md
1f3e96ba13844a3f1cefecca99b3d6313aebf86faae914897db0404ea031c491 docs/ABNAHMEBERICHT_1_37_0.md
67a1be91b0c2d2797716f785f2f770c881cf88d7fd617722468df8d949d0638a docs/AUDIT_1_31_0_IST_UND_LUECKENANALYSE.md
2acba8fcc5da42e5a808925a86628bc0c6fc817ddb082b0ead3857c6a43460f1 docs/BRANDING.md
f23c643236c84b0e3715620598f358065748b6d090229003e23df8ad9320b54e docs/FULL_LISTING_EDITOR_2026.md
@@ -101,6 +117,7 @@ e7bb3bb950e3c5303746f43139ca8f7c985d2d73896b44f5b707dd46a9152529 docs/RELEASE_1
33eb9f0059a2ddc4b4debe5bf733720f2a5bb22f2710bab0a0cc9ac1b898ff11 docs/RELEASE_1_35_0_VERIFICATION.json
5a9fcfa0ea6e9c5c13f6d943e1de4d31c21e21fcff9186e8a714d7a16ed1c18f docs/RELEASE_1_36_0_SECURE_THEME_MANAGER.md
2dfe705857424865f101e861f4e633c8a7fb3c0e8dab874cb6620fd09b1ca902 docs/RELEASE_1_36_0_VERIFICATION.json
527806c00fb51334457726a9a7e9f6fc13f4dacd985fa2d2b97d5eb21c543853 docs/RELEASE_1_37_0_SECURITY_SECRETS_OBSERVABILITY.md
fe5756f788b2ab131f0832504d90d46d1ed744bfe470fd040803985234afa3cf docs/SLICE_02_ACCEPTANCE.md
05614ecf41becc399acfa6a3b2f681f37a8c80f5ce0130b98c578b2c8c60713c docs/SLICE_05_ACCEPTANCE.md
0838bcc6464a6beff39f0b4b056e513c1a390193521d9a8fc5d440d38034e9d0 docs/SLICE_06_ACCEPTANCE.md
@@ -131,9 +148,16 @@ d425fc1724ac55853bf3433348486de8f8aab111f53fefee3c532beb1deb82af docs/SLICE_32_
1d5411f69c62222d3155f0e89f2b4b5a3effe317ea1e59347efa7730a8e1b0e9 docs/SLICE_33_VERIFICATION.json
1161decfabd73c40ff1d2ffbc7d1b9b5168a8fb5fa392187c1b431e9a7f3a78f docs/SLICE_34_PUBLISHING_HARDENING.md
aa7ebc90470071566749c61b0dece4169f87666dcca4b88922f7fbafcfdd5a84 docs/SLICE_34_VERIFICATION.json
cc77a92ca268d3c444c6113a9cfaa38d3c805a579f6b1b21b7dd43a6ada58551 docs/superpowers/specs/2026-07-06-autolister-features-design.md
4b66a14b4515e38477f10325ab9d03d9782ad0d426845aefe2d508986ed2cd81 docs/UI_FOUNDATION_2026.md
5e655fcf3bb1182f8850b4104b56697ea952b01d2698af6d3d40b05e338b3506 docs/UI_UX_FIXES_SLICE_03.md
e5f065ba8d516a5ebd47e7e6859d0aab40ef69797413e358d969ef27c454fcdd docs/architecture/DESIGN_SYSTEM_1_35_0.md
cc0edf92756a51414563b4407dedb21d1e3b36682f4bfbbc334aeb33a22ae1b4 docs/architecture/MIGRATION_ROADMAP_1_35_0.md
eb47b055dd336e8360ec7c4712dee4ae37f109f3820e3f185969e2327d790cf8 docs/architecture/MODULE_SYSTEM_1_35_0.md
d7773faac0e93510a5a51c91de997df03547b51f3124267dcf137d4e99299562 docs/architecture/SECURITY_ARCHITECTURE_1_35_0.md
58cd43938b06e29520b92516a1e816d17d2c08d4847b99c1ee700b2185f46f20 docs/architecture/SECURITY_FOUNDATION_1_37_0.md
771c4771c4d7335750c5a2d976c765b4ed66ed936d8550d7af69de14a16705bb docs/architecture/THEME_MANAGER_1_36_0.md
cc77a92ca268d3c444c6113a9cfaa38d3c805a579f6b1b21b7dd43a6ada58551 docs/superpowers/specs/2026-07-06-autolister-features-design.md
c7db96df5fed3c8336062204322d62b4870f5c8ab1d30ea48cc6e7e38ed3513b extension/README.txt
3873602c1529daad6647a7585c858d817821de0afbec93a26d1b3f5a7b9cb01e extension/background.js
b86f00c7afa1dc921dd66f5cfea8c817eebc8876b9daca6a55dfd03680156c79 extension/content.css
8ee8d1a94bbf83e5d09aee3c7d8c4ea5f216b2a51e73b6dbc74f7e6b99017a1c extension/content.js
@@ -146,8 +170,8 @@ c2fdc0530c71ef400fe9d52aed914f65d331b0d89dfae7ef1d156d54d1a22a6b extension/mani
e61fd8e1264995fd633bd76e71329813dd02f361286329832a18dfd5a8bdd372 extension/popup.css
bdf5b794473cae818789cf95a28a9c9a9d50f81529d72fdf45a536247a783922 extension/popup.html
d7893cfdd686d4a6a1bea333468d4ba72cfff0e7166687181a2d37ba1faf3332 extension/popup.js
c7db96df5fed3c8336062204322d62b4870f5c8ab1d30ea48cc6e7e38ed3513b extension/README.txt
273322e8dc29b0c6b639a6cc7e44a9570ceece09306fd46003b05a8fc86c88b7 extension/vinted-categories.js
48b5f9f4ecc1c1c42f37321e9bb2fc857c646b9c16c34520fc7d4ca59a1036ac extensions/README.md
3873602c1529daad6647a7585c858d817821de0afbec93a26d1b3f5a7b9cb01e extensions/background.js
3873602c1529daad6647a7585c858d817821de0afbec93a26d1b3f5a7b9cb01e extensions/chrome/background.js
c5a0ca59a8858e9bd484d1e5fb7a2aca72db092fb062674f531bb76f5a0c952e extensions/chrome/content.css
@@ -204,9 +228,8 @@ e4ea31f91a4c8df18901bfc77fc351a8808d19d690243b80bc4faa140e18f851 extensions/pac
e3a3863b58a571a0f0180bdd333f9389b918415b4ea96b70f3ab6d4105d95c50 extensions/popup.css
559dc70841ebb186ff96f9f2ba32ef26a3a7f8edd08363f09c0d7163049eae5a extensions/popup.html
2bf2d5ccf02622cf1d62fd553d21c0ef1b744616742e7962ac302c10d37426e2 extensions/popup.js
48b5f9f4ecc1c1c42f37321e9bb2fc857c646b9c16c34520fc7d4ca59a1036ac extensions/README.md
0b2a03d06faae7aaebeee8ec9fe1864422c8651f17ae90b185fd31474ac5eeb0 extensions/safari/build-safari-extension.command
afd76deccd8bcf26d39f8c86deb1de578873ddd8b09ac18eebacae33169bb420 extensions/safari/README_SAFARI.md
0b2a03d06faae7aaebeee8ec9fe1864422c8651f17ae90b185fd31474ac5eeb0 extensions/safari/build-safari-extension.command
3873602c1529daad6647a7585c858d817821de0afbec93a26d1b3f5a7b9cb01e extensions/safari/web-extension/background.js
c5a0ca59a8858e9bd484d1e5fb7a2aca72db092fb062674f531bb76f5a0c952e extensions/safari/web-extension/content.css
22bd64723d279a6229bccba2a4cec56f1ae83f4cd5628bd1a1841930b0f442f6 extensions/safari/web-extension/content.js
@@ -221,8 +244,6 @@ e3a3863b58a571a0f0180bdd333f9389b918415b4ea96b70f3ab6d4105d95c50 extensions/saf
2bf2d5ccf02622cf1d62fd553d21c0ef1b744616742e7962ac302c10d37426e2 extensions/safari/web-extension/popup.js
273322e8dc29b0c6b639a6cc7e44a9570ceece09306fd46003b05a8fc86c88b7 extensions/safari/web-extension/vinted-categories.js
273322e8dc29b0c6b639a6cc7e44a9570ceece09306fd46003b05a8fc86c88b7 extensions/vinted-categories.js
3a72c2ba86fca6655af49a47e853a335532586dbf5ea620d909570ec7d76cb02 FEATURES.md
7f78a0d512de717ba76c9a5e3e1bd2e52db9edf146e8eeb7297458fde5d92afa GitHub-Deploy-Assistent.bat
9a5bfcafdce53130d7bc36695090a8f87096b4ead9dd5ccc3d46d1d80c07a0fa lib/ai-claude.mjs
b53b7a8dea3bd46bee9c32e2ea840d618b5cb31cceba49937c057ec615fb87b5 lib/ai-flux-prompt-jobs.mjs
347778ce521a1919ec0679918171dc625d7f04d6dec26c8a4700e702bc78de67 lib/ai-local-images.mjs
@@ -237,44 +258,34 @@ ee6aa662a1875f9df8da1000804a6061f1a0f52c7a266df3d515cab4d410465b lib/auth.mjs
3e2b75c0758703e590233cbcc9b589e3177134accecf5ed921791891cbfc8522 lib/categories.mjs
86793fb57a1dad32f4d93e34c27ffe9e77a95785dd30b2b55ffb67d0ad5e14fb lib/config-store.mjs
8c203e70e9ab07b996d4a53031892bbf37b10efd024f9e0013266cf2af0244a4 lib/db.mjs
75827cb79cebc95cf9ae25469efe28c04cebac2900b62f731552329f0c055e91 lib/ebay-api.mjs
b4460619cb14a4e4b810adc78bdd662c9d375c483c979ef619f8b95dfefd3f73 lib/etsy-api.mjs
54722d3f76ad9ee4fbe731d3a65c2a03d343eb82d98f8ea5a5996b1bec24d57f lib/ebay-api.mjs
524f1b48d467998da819f0b947f2551ad45784e588eb442304c5f6e925dffaee lib/etsy-api.mjs
5b2c566ff14fa502ba2cd4d4c918fe238a8e93c3283d521144093a897f9d8018 lib/fees.mjs
7dcb2fb5606140afb7a019094d20ef88e9b4e2c70041f77b06d67d8992fd25ce lib/html-templates.mjs
844f0f8bc1de849bacc8df5d57006d5fc1100c706acc1140939a981dfdf2df4b lib/image-batch-jobs.mjs
5ca5fc65a7de7c27243646d291dc42c0b5267a47705a09b306cd2c2eae2a77c8 lib/image-editor.mjs
5e7aa66faddd3d19bc6ebb9ddc13abfc4ab4f17d8c51bb39b2c4e0279385d788 lib/images.mjs
0248ef19a04e8f1265cf89c170875c3a8051c91c6151b762a849cb55104e93f3 lib/mailer.mjs
606f4cb1013c711d971dd201ab06df84ecb128bf5d5277095ce2e2ea56029e45 lib/mailer.mjs
ad53b2b39f894a685f79e723b3f2b987fc9d9a3b75d39d0059ad225bc36c08cf lib/operations-center.mjs
78d30585aac7dc663e803a19927c89ab02414c0495d81df503e28f7bae58701a lib/publishing-jobs.mjs
3a728417dd668d60fd1526ec738cb9b302f86c01d62b2227f12b2e44b7d389c7 lib/quality-center.mjs
faa5d84ca6b26d1602e53a402de74a5c9e3f9ef9a72233159101f2b0bb0e499f lib/runtime-paths.mjs
d3d862ab32fd276ecffb54c0307976ca680135d92f24d024c95d365a50257643 lib/secret-store.mjs
cbd60791ee86fe09f07fc9ed85be3654f7aa5a310baafd9053440952619e2bc9 lib/security.mjs
2fd970a6a357a26211f0b9bcf432e59e79f73dc9a4cd35f88cca939655eefdff lib/structured-logger.mjs
ddb9c7677600795a4adf8a19a7525b7551455459d16eed4cdfbe751ef9ddf0eb lib/zip.mjs
2924f4e8abe5ebbd099fe1ceb2bc6ceb4bdda55fa3e57dd299cfc05d310a9246 local-ai/start-local-flux.ps1
7c6176d8311b1ba9d511beb40edd41b8248e61c298528bbec3f9ef1171856c05 local-ai/stop-local-flux.ps1
5f220a2dca02cc0764f6d0157677611b26c88860b48367eb661b6e47a1b92265 local-ai/workflows/vendoo_flux_schnell_api.json
302ab1609d08b3059ba6563b676c64f0709651f2e3c531857bfca3840c535a79 MockupDesign/AdminDashboard.png
49f7625a1299a16576feabfd7824ec3511391bd9b7c53a1fba9232da7e8bd6c6 MockupDesign/ChatGPT Image 7. Juli 2026, 10_05_19 (1).png
7b8cc9c5db8718b0b653ec6aa9d2a8bfa1bba03810248c3ba17745b6f15cc412 MockupDesign/Dashboard.png
4e3e797ed5d3ed0b60d00d8e567fbe51543c08578b858ef71e77b274ae449fd0 MockupDesign/Einstellungen.png
c78fd6f673c0e59789ea313396b12c2f21f75a2ee6c7ad2de81a6b89f6d90588 MockupDesign/ExtensionDesignMockup.png
ed20bc04cab8e85245a855810a61b736a682f972eb85e23340edc9b558851a93 MockupDesign/Heute StudioFlow.png
1ad88f45f377ab9b3f35f96a0ceaaa7f75cb0a996e83370d76c54f527392a08d MockupDesign/IconLogoMockup.png
0e8b4a31d075f1f83ea62b5eeeb53e89859e395a696deb43155932a23e7cef86 MockupDesign/Lager.png
b1c62e118d9be316274e966c558cdcccdd41afb3a9f05a60ec1e4a3433d2ca0c MockupDesign/Listings.png
a52983b9ea2bf920d115485d10bc30226da88bc5cba8b00bebf801b21c096346 MockupDesign/Publish.png
8c8bf278d0c6725e1dbb97b3c3d0c36a9bfc0753c3c86433fdc294bec70dbc0e MockupDesign/Startseite.png
62f14221b1d71c9e631efdadd221397ff657adae4b737df52c8bff1610b90999 MockupDesign/Vorlagen.png
2571f42e92a40e5483c762b1489b38294627dccfeecf388ac2b1156d82666d8b package-lock.json
098e7758e0cf9fa92d2ab1e9c01c62e59196576c79d845292b8a36ca4ed6960a package.json
c848163a1cf38336947778d73c3b7f4039771270a4cf974352b0ea85e7879415 package-lock.json
3d70a7f7d0d100d3ce336f130f1e7a7de3e2244dbf8fbcfd1d8e3f06d254b6da package.json
3da71dd28cb25c7c7317b9061855d40c6a3ab8bc39391963b49ee1e707f838e5 platforms/ebay-de.mjs
cc1ca2b4384c8c548bf755dc33101d248541bf893c3d5f35369961f904afcc00 platforms/ebay-ka.mjs
fa52b247dd758aeee06120499bd1ae6c53e9f460f8bd7762b8f06141b201e32b platforms/etsy.mjs
5c925e3934a4c9e2f26dc15b3449a249f5ce20ecebbd459b15365a34804824d6 platforms/vinted.mjs
a2ea3f5f56dba8bd4d23fa54a26fd941567b4febdd1ed1b4e9f5bcc1c9786e53 public/android-chrome-192x192.png
46ea6ba4ca6ca2352f37353b8bc4ca258935d29ecb8d3c9b133a48ea75c0c58f public/android-chrome-512x512.png
90689f16d004d8ddd3ae4edd5ec0ca1bde89901fb36de163aadd10d710bf347c public/app.js
4177569df5648213a0f8d65a5c0a9ae2c4f07ce28974a318ac03cf8c1b4e4a9e public/app.js
e0e7b8ef01c36f0625b6157aa46bd69de05c17be0b054208fb635d6507b52154 public/apple-touch-icon.png
a2ea3f5f56dba8bd4d23fa54a26fd941567b4febdd1ed1b4e9f5bcc1c9786e53 public/brand/favicons/android-chrome-192x192.png
46ea6ba4ca6ca2352f37353b8bc4ca258935d29ecb8d3c9b133a48ea75c0c58f public/brand/favicons/android-chrome-512x512.png
@@ -316,8 +327,9 @@ fb3dbcd03f7ed15b773b582c2a2b785c3040d3319aba5b7c682a7e74e1cf3b4e public/core/sa
4d69e2cb6b7f9f63b54d708a5d8b1ebefcdcb9f88a977053db5031c05b098464 public/design-system/tokens/source.json
4a9e65edeaee3421edc3dd4831230062494f1a42f8495f4cb979fde8664d06c4 public/design-system/tokens.css
15bf8dd655b34a8015447e834d387af12685238ede598f5f0e7927eea2933483 public/favicon.ico
6e5ba2d8fbe559861428ccf4ebe7e8d1c82357d8b29b7548e40398a605f17c28 public/index.html
141c261b2d0ea713af140d2e89f98b9c9046584bef60e97d8bf3d6b6f504efa2 public/login.html
5157f9a0acad9e663d84e1b064a4b626ed61d08f3472ad058848a076bc7074b4 public/index.html
da7f1b6488e33c9ff94323d2da3bdcea91e386484c11e5202432e567721704b4 public/login.html
e37558ee9612a36db8a19999fbb320f1c249a8e155f94c83a82926bec920f989 public/login.js
59291f75eca405e3856bafea76cc601d681060eb6b36bf82a4be3c3ab7eac290 public/mobile-upload-expired.html
f046f166d89fc32774b87deb02e6d144fd2f40c0925aac67487e5b7c489a0ec1 public/mobile-upload.css
6152e4fe715efbf8fd6a7c4286f23172bc3cf15dde085e5e4f7389ad5e65ad73 public/mobile-upload.html
@@ -325,26 +337,23 @@ f13846801a8493aa43df6ec3d78b826b21b59e8f21d47735f68fd0b278e440c7 public/mobile-
01f2bd124257220005032bf234d122b9942fdd8fd57ed8195748b2fb1f5a5cfb public/modules/README.md
2d7a004db3e22b30ad3a682ba445bcee3fc1c5f0ed5e8fee45b5892c5b335e51 public/modules/theme-manager/theme-manager.css
0edc61f0c2bb604c3adc40813b18fe5ca8d9b846ec2a3d9f406ae26ae313d3ee public/modules/theme-manager/theme-manager.js
a26f11bfb9627e878961feacf6d56211a40746731a63a7649bb327a383d60639 public/style.css
e0a6c981d4231eab26d981be62647d0e6f89e05e8371baad121348202ad54f49 public/style.css
ff525e0af963e6f54636cfdc1bd2d045aaf82e7b0199755eb5cdf4c52110be2e public/vendoo-icons.js
da56aefa73aaa46fa2c1931ddc8075028b75fae68def3a03d2af98c4b1d8db65 README.md
deb1a45f6414a2357046ff1d66fc58114549ba5ad695ed40fcceef2aef9f64a8 scripts/docker-backup.sh
cc90bb9042d7f3c5b73a061c4621f36cf44c8841d35083c3033bae725d8525c0 scripts/docker-backup.sh
20e7590a7633b6c61086a5596d0bec1d343f0ff0eecc444ac932130ff363e258 scripts/docker-entrypoint.sh
be72c39f00415cd57b69835346f00043841ce9f853b10436eb1799ca42980cb5 scripts/docker-restore.sh
3f1005ade493905e37f90314e8b4667189f28297acf88575fee3d2fa5df00216 scripts/github-deploy.ps1
1461b07a51d41c72be59b3903d36937d5912cadd600d8519142c47478d0d40c3 scripts/github-deploy.sh
50d93e7f9f71fa72071e5b2f3c63a548e4252c8096f6f8fa78342e5cf51db5c9 scripts/docker-restore.sh
9a692ace2e8f92ff245be890277a74541c252e295591818597b8cfe08b3176a1 scripts/github-deploy.ps1
00f950df71ddd4c5f62385529620cd85bfc73fb54e991489cedee05217ebe556 scripts/github-deploy.sh
0a9bafc79c1c5d59fb9b51ebc34c00eec4a4e9a5e873ce1818f50f3ab983da70 scripts/install-local-flux.ps1
2924f4e8abe5ebbd099fe1ceb2bc6ceb4bdda55fa3e57dd299cfc05d310a9246 scripts/runtime-start-local-flux.ps1
7c6176d8311b1ba9d511beb40edd41b8248e61c298528bbec3f9ef1171856c05 scripts/runtime-stop-local-flux.ps1
1a5736cf5fccc991df122163977c2eac80281bd99a54a5680b3d7eae99e4b79d scripts/start-local-flux.bat
3bf3aa74f5cc1f2946bb2da637eb30fe8daec783a32f9721ebb0468e20df90bd scripts/uninstall-local-flux.ps1
332011f0281e4fb21397ccadf6e7e37ceef13242ad43e5a87ad55fa625b3009c SECURITY.md
aa58e3380d0e5c8e5df2bf7d09dea4cfca996ecc1991c11e2518e840f72b8bf2 server.mjs
a7384ecbf3977245d31097ea4ff224142d998c3e80d0e44f49aaa8a2d4395728 setup-gui.ps1
241b006d4066a68e330e26c8e38a041559b4e5c1368ad8cf3db5e2f63d6d8397 server.mjs
3c33e7042bf4e95fa56a5e163a42f156b7995e7d89fef9e8db7d48577037828f setup-gui.ps1
cf4519ce5adc01f05458e3286e86f3a419cceaff5fcdd869a1d07f1c1d1a0d8c setup.bat
5b3d8fb189b7efb656a64fc41c1bf0cde2202ac91aaefbea74c927acd9d9727a setup.ps1
bf3bf58517beaa27e837f9b5c75d0149b640bba8cf4df6f0a6b2566fd36d7193 setup.sh
2851c914a1b50a036cb265ddd32e5545cc7e8e34ba9d682445926acc23eb8f28 THIRD_PARTY_NOTICES.md
9658fe68ddff2903505b92998a9e78385dc73dd269804dc5a7447099b8a0457f setup.ps1
24f9614b10f0a970f5233d9ac7083bca6c3d305b37ff29b57a5c21473b7f30a7 setup.sh
90485a16e3468cb9a6750646700fbb036cb9ac410e9b8bd5c582f7b923bf3c31 tools/build-release.mjs
ac8440bce2659a035302609722f1dfed5d125223376cd575ffc0636397c94b54 tools/generate-design-tokens.mjs
294659f2beb607540abbc3d6b4a1658525448a42f8880f2b282081a259c4e35b tools/prepare-git-staging.mjs
@@ -357,6 +366,7 @@ cbd91b45d97e11bd4f5ca2f9d2edf2b5931cb2aa336cb71afc30aad9cffbe1e0 tools/verify-d
906767e574c06aedebb2d7797150bda2f1e4c4536e8f82f4c7de2e3cc8398c8e tools/verify-deployment-1.34.3.mjs
71d00227a59592cc0ad8ba321c63350ec25748ef965d8cd0eff1317738c7fba8 tools/verify-deployment-1.35.0.mjs
b65eec7fd54e1459b363d99d20f9438ae5bc4b518e775de8b97e33e89a382e42 tools/verify-deployment-1.36.0.mjs
22a5ba1951b2e8dbc924e60aaff8be7c41189ae7b30de9ecf50d0b741e84e13a tools/verify-deployment-1.37.0.mjs
1f052446f6c9627420afeb48aa09771b61f9e08ba573f6a0651b2843ef0b79f8 tools/verify-git-safety-regression.mjs
5bba3d7ae042b0bcf4eb56bacb3f6e41e1b0e00cadd7666505792ba6748cc987 tools/verify-git-safety.mjs
2f8d687319619240efe5849c276f7723e69755c66aa3b9609e41fdf0cda01e55 tools/verify-git-staging.mjs
@@ -364,6 +374,7 @@ b65eec7fd54e1459b363d99d20f9438ae5bc4b518e775de8b97e33e89a382e42 tools/verify-d
44c95844422be3deaad6054ee3f0cced9c25986815d976e0c64b042d0c2c5e1e tools/verify-installer-shell.sh
cab03e98687af87f359f6424d440fc0b644da97b3c614509b8c7d008d4b18a8d tools/verify-platform-architecture-1.35.0.mjs
732bb15431746a829e45ae55c695360cbf1dd21d4fc3be26a98f35708d571e84 tools/verify-platform-architecture-1.36.0.mjs
ee8ae7bed4e93a2ef278662552a4ae5d751306aad7133a93f380bbf2a5d5a28c tools/verify-platform-architecture-1.37.0.mjs
36e35fedb08923c22fd8551389d33432b66dbd4215d95c594ef29bfc790c98e0 tools/verify-release-1.25.0.mjs
89621694b7bad18b6f3f1ac1956032f64112c40d3edc069ca581dc813d57d628 tools/verify-release-1.25.1-static.mjs
c908f5186cf2d71ef83d5e649327ae19965568933acfb32057ca00d29cf890bc tools/verify-release-1.25.1.mjs
@@ -375,10 +386,12 @@ d9a75c45f40d857c84790d51dca2fd088c3851ca250405871a7e32773918c66e tools/verify-r
3f30260dabbdf0fa7b042381cb9e24f840d0c3ddbc44fe309763789a7d14afb7 tools/verify-release-1.30.0.mjs
b1ceed5dfc17dbd3b038b7168e61076e4d39a0f1d67e2b87677a91c4dbb2daff tools/verify-release-1.31.0.mjs
a372258b97aa68d59a1fe0fd3f380d019c59412d5c408a6064f437d5cfc6e709 tools/verify-security-1.31.0.py
08820d9bb7be1dec496c04e9ea4a39b2ebb84d373a9481136610d16dea0edde3 tools/verify-security-foundation-1.37.0.mjs
31a120622ce8bb8451014f2662366f81abd28d0f3be59adfe35d17e0ada1838f tools/verify-slice30-mock.mjs
20957a4a038b9afdb01a8c98b881644daf793d2a6bb778a4c8e04780687d00e4 tools/verify-slice31-image-editor.mjs
21061ed5dc88feef48e80efffd9a1054d38598dce5a5d3f9f6bde39b539b83f0 tools/verify-slice32-batch.mjs
0f05b1ac3b686cf535bcfb3e6f6df24a29c3429ade1b3c666c1b99abb1a7311b tools/verify-slice32-image-render.mjs
c9aa6693aa93ff1f220a2ce3bc35ef714a0b18a53eae0f907879fc92c66c1e38 tools/verify-theme-manager-1.36.0.mjs
1e61c4b180aa09de3dae9e72aef313b09a6f422229f180984b69a8d226e7cd8d tools/verify-theme-manager-1.37.0.mjs
0f3f684019763a14f5fbaec42e42c680cf748d930d46cd607fc61eb413ca4553 tools/verify-ui-contracts-1.26.1.mjs
d677548be9b02ebd3b53e93158aeb740a11bd3e6d52b07898f1908c74a22294f update-manifest.json
63bef319d33f6998c4c378f12710733d98f2007e8b0ff313cb80c978320800f4 update-manifest.json
@@ -1,4 +1,16 @@
# Vendoo 1.36.0
# Vendoo 1.37.0
Vendoo 1.37.0 erweitert den modularen Plattformkern um einen nativen Sicherheitsbereich. Zugangsdaten werden verschlüsselt gespeichert, Inline-Skripte per CSP blockiert und Requests über eindeutige Request-/Correlation-IDs nachvollziehbar protokolliert.
## Security Foundation 1.37.0
- AES-256-GCM-Secret-Speicher mit separatem Master-Key
- automatische Migration bestehender Runtime-Secrets mit Sicherungskopie
- strikte Script-CSP ohne Inline-Skripte oder Inline-Eventhandler
- strukturierte JSON-Telemetrie und Request-/Correlation-IDs
- zentrale Input-Schema-Validierung für neue Kernel-Routen
- erweitertes Security-Dashboard ohne Klartext-Secrets
Vendoo 1.36.0 führt den ersten vollständig nativen Fachbereich auf dem Plattformkernel ein: den **Secure Theme Manager**. Benutzer können ihre persönliche Darstellung über geprüfte Eingabemasken wählen; Administratoren verwalten sichere Theme-Profile und den Systemstandard. Freies CSS, JavaScript, URLs oder Dateipfade werden nicht akzeptiert.
@@ -168,7 +180,7 @@ Lokaler Multi-Plattform Listing-Generator mit AI, Lagerverwaltung und Publishing
## Aktueller Entwicklungsstand
- Version: `1.36.0`
- Version: `1.37.0`
- UI-Slice: `UI 2026 / Slice 07 Cross-Browser Extensions, Responsive UI & Mobile Upload`
- Startseite: `Studio Flow`
- Tech Stack: Node.js, Express (ESM), Vanilla JS, SQLite (`better-sqlite3`)
@@ -79,3 +79,10 @@ Sicherheitsprobleme nicht mit Zugangsdaten oder personenbezogenen Daten in öffe
- Importierte Profile durchlaufen dieselbe Validierung wie manuell erstellte Profile.
- Kontrastprüfungen verhindern nicht automatisch jede bewusste administrative Gestaltung, zeigen problematische Paare aber vor dem Speichern deutlich an.
## Security Foundation ab 1.37.0
Zugangsdaten werden bevorzugt im verschlüsselten Secret-Speicher unter dem persistenten Konfigurationsbereich abgelegt. Die Verschlüsselung verwendet AES-256-GCM; der Master-Key liegt getrennt und wird nicht in Git oder Release-Pakete aufgenommen. Bestehende Secrets aus der Runtime-Konfiguration werden beim ersten Start gesichert, verschlüsselt migriert und aus der Klartextdatei entfernt.
Die Weboberfläche verwendet eine erzwungene Content Security Policy ohne Inline-Skripte und Inline-Eventhandler. Request- und Correlation-IDs werden in Antworten ausgegeben und in der strukturierten Telemetrie geführt.
@@ -0,0 +1,49 @@
export const SECRET_DEFINITIONS = Object.freeze({
ANTHROPIC_API_KEY: { label: 'Anthropic API-Key', category: 'AI', editable: true },
OPENAI_API_KEY: { label: 'OpenAI API-Key', category: 'AI', editable: true },
OPENROUTER_API_KEY: { label: 'OpenRouter API-Key', category: 'AI', editable: true },
ETSY_API_KEY: { label: 'Etsy API-Key', category: 'Marktplatz', editable: true },
ETSY_ACCESS_TOKEN: { label: 'Etsy Access Token', category: 'Marktplatz', editable: false },
ETSY_REFRESH_TOKEN: { label: 'Etsy Refresh Token', category: 'Marktplatz', editable: false },
EBAY_CLIENT_SECRET: { label: 'eBay Client Secret', category: 'Marktplatz', editable: true },
EBAY_ACCESS_TOKEN: { label: 'eBay Access Token', category: 'Marktplatz', editable: false },
EBAY_REFRESH_TOKEN: { label: 'eBay Refresh Token', category: 'Marktplatz', editable: false },
LOCAL_IMAGE_TOKEN: { label: 'FLUX Dienst-Token', category: 'FLUX', editable: true },
SMTP_PASS: { label: 'SMTP-Passwort', category: 'E-Mail', editable: true },
VENDOO_SETUP_TOKEN: { label: 'Ersteinrichtungs-Token', category: 'System', editable: false },
});
export const SECRET_NAMES = Object.freeze(Object.keys(SECRET_DEFINITIONS));
const SECRET_NAME = /^[A-Z][A-Z0-9_]{2,80}$/;
export function validateSecretName(name) {
const normalized = String(name || '').trim();
if (!SECRET_NAME.test(normalized) || !SECRET_DEFINITIONS[normalized]) {
const error = new Error(`Unbekanntes Secret: ${normalized || '(leer)'}`);
error.code = 'SECRET_NAME_INVALID';
throw error;
}
return normalized;
}
export function validateSecretValue(value) {
const normalized = String(value ?? '');
if (/\r|\n|\0/.test(normalized)) {
const error = new Error('Secrets dürfen keine Zeilenumbrüche oder Nullbytes enthalten.');
error.code = 'SECRET_VALUE_INVALID';
throw error;
}
if (Buffer.byteLength(normalized, 'utf8') > 16_384) {
const error = new Error('Secret ist zu groß.');
error.code = 'SECRET_VALUE_TOO_LARGE';
throw error;
}
return normalized;
}
export function maskSecret(value) {
const text = String(value || '');
if (!text) return '';
if (text.length <= 4) return '••••';
return `••••••••${text.slice(-4)}`;
}
@@ -0,0 +1,37 @@
import { PlatformError } from './errors.mjs';
function fail(message, field) {
throw new PlatformError(message, { code: 'INPUT_VALIDATION_FAILED', status: 400, expose: true, details: { field } });
}
export function objectSchema(fields, { allowUnknown = false } = {}) {
const contract = Object.freeze({ ...fields });
return input => {
const source = input && typeof input === 'object' && !Array.isArray(input) ? input : {};
const output = {};
if (!allowUnknown) for (const key of Object.keys(source)) if (!contract[key]) fail(`Unbekanntes Eingabefeld: ${key}`, key);
for (const [name, rule] of Object.entries(contract)) {
let value = source[name];
if (value === undefined || value === null) {
if (rule.required) fail(`${name} ist erforderlich.`, name);
continue;
}
if (rule.type === 'string') {
value = String(value);
if (rule.trim !== false) value = value.trim();
if (rule.minLength && value.length < rule.minLength) fail(`${name} ist zu kurz.`, name);
if (rule.maxLength && value.length > rule.maxLength) fail(`${name} ist zu lang.`, name);
if (rule.pattern && !rule.pattern.test(value)) fail(`${name} besitzt ein ungültiges Format.`, name);
} else if (rule.type === 'boolean') {
if (typeof value !== 'boolean') fail(`${name} muss true oder false sein.`, name);
} else if (rule.type === 'number') {
value = Number(value);
if (!Number.isFinite(value)) fail(`${name} muss eine Zahl sein.`, name);
if (rule.min !== undefined && value < rule.min) fail(`${name} ist zu klein.`, name);
if (rule.max !== undefined && value > rule.max) fail(`${name} ist zu groß.`, name);
}
output[name] = value;
}
return Object.freeze(output);
};
}
@@ -20,6 +20,9 @@ export function createPlatformKernel({ version, hasPermission }) {
policies.register('platform.security-admin', ({ user }) => Boolean(user && hasPermission(user.role, 'security.manage')), {
description: 'Erfordert die Berechtigung security.manage.',
});
policies.register('security.secrets.manage', ({ user }) => Boolean(user && hasPermission(user.role, 'security.manage')), {
owner: 'vendoo.security', description: 'Erfordert security.manage für verschlüsselte Zugangsdaten.',
});
policies.register('themes.use', ({ user }) => Boolean(user), {
owner: 'vendoo.themes', description: 'Erfordert eine gültige Sitzung für persönliche Darstellungseinstellungen.',
});
@@ -29,6 +32,9 @@ export function createPlatformKernel({ version, hasPermission }) {
features.define('platform.module-kernel', { defaultValue: true, description: 'Aktiviert den modularen Plattformkernel.' });
features.define('platform.route-contracts', { defaultValue: true, description: 'Aktiviert registrierte Routenverträge.' });
features.define('security.encrypted-secret-store', { defaultValue: true, owner: 'vendoo.security', description: 'Aktiviert AES-256-GCM-verschlüsselte Zugangsdaten außerhalb der Runtime-Konfiguration.' });
features.define('security.request-telemetry', { defaultValue: true, owner: 'vendoo.security', description: 'Aktiviert Request-/Correlation-IDs und strukturierte Telemetrie.' });
features.define('security.strict-script-csp', { defaultValue: true, owner: 'vendoo.security', description: 'Blockiert Inline-Skripte und Inline-Eventhandler per CSP.' });
features.define('themes.token-runtime', { defaultValue: true, owner: 'vendoo.themes', description: 'Aktiviert den versionierten Design-Token-Vertrag.' });
features.define('themes.manager', { defaultValue: true, owner: 'vendoo.themes', description: 'Aktiviert den sicheren Theme Manager mit Benutzerpräferenzen.' });
features.define('themes.accessibility-gate', { defaultValue: true, owner: 'vendoo.themes', description: 'Prüft Theme-Kontraste und sichere Tokenwerte.' });
@@ -31,6 +31,7 @@ export class RouteRegistry {
owner: String(definition.owner),
policy: String(definition.policy),
audit: String(definition.audit || ''),
input: definition.input ? 'validated' : 'none',
rateLimit: String(definition.rateLimit || 'default'),
csrf: definition.csrf !== false,
stability: String(definition.stability || 'internal'),
@@ -46,6 +47,7 @@ export class RouteRegistry {
details: { policy: contract.policy, reason: decision.reason },
});
}
if (typeof definition.input === 'function') req.validatedBody = definition.input(req.body);
await definition.handler(req, res, { route: contract, decision });
} catch (error) {
if (res.headersSent) return next(error);
@@ -2,9 +2,10 @@ import { readFileSync } from 'fs';
import { dirname, join } from 'path';
import { fileURLToPath } from 'url';
import { createThemesModule } from './themes/index.mjs';
import { createSecurityModule } from './security/index.mjs';
const here = dirname(fileURLToPath(import.meta.url));
const moduleNames = ['system', 'security', 'auth', 'users', 'media', 'listings', 'ai', 'flux-studio', 'quality', 'publishing', 'operations'];
const moduleNames = ['system', 'auth', 'users', 'media', 'listings', 'ai', 'flux-studio', 'quality', 'publishing', 'operations'];
function legacyModule(name) {
return {
@@ -18,5 +19,5 @@ function legacyModule(name) {
}
export function loadBuiltInModules() {
return [...moduleNames.map(legacyModule), createThemesModule()];
return [...moduleNames.map(legacyModule), createSecurityModule(), createThemesModule()];
}
@@ -0,0 +1,26 @@
import { readFileSync } from 'node:fs';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
import { secretStoreStatus } from '../../../lib/secret-store.mjs';
import { getRequestTelemetry } from '../../../lib/structured-logger.mjs';
const here = dirname(fileURLToPath(import.meta.url));
const manifest = JSON.parse(readFileSync(join(here, 'module.json'), 'utf8'));
export function createSecurityModule() {
return {
manifest,
lifecycle: {
async start() {},
async stop() {},
async health() {
const secrets = secretStoreStatus();
return { ok: true, provider: secrets.provider, encrypted_secrets: secrets.encrypted };
},
},
};
}
export function getSecurityFoundationStatus() {
return { secrets: secretStoreStatus(), requests: getRequestTelemetry() };
}
@@ -0,0 +1,31 @@
{
"schemaVersion": 1,
"id": "vendoo.security",
"name": "Security Core",
"version": "2.0.0",
"type": "core",
"status": "native",
"description": "Nativer Sicherheitskern für verschlüsselte Secrets, Request-Telemetrie, Sicherheitsheader und Security-Dashboard.",
"requires": [
"vendoo.system"
],
"permissions": [
"security.manage"
],
"provides": [
"security.policies",
"security.audit",
"security.secrets",
"security.telemetry",
"security.headers"
],
"consumes": [
"platform.events"
],
"owns": [
"security.permissions",
"security.rate-limits",
"security.secret-store",
"security.request-telemetry"
]
}
@@ -22,4 +22,9 @@ if (runtimeConfigPath !== rootEnvPath && existsSync(runtimeConfigPath)) {
dotenv.config({ path: runtimeConfigPath, override: true });
}
const { hydrateSecretsToEnvironment, migrateRuntimeConfigSecrets } = await import('./lib/secret-store.mjs');
const migration = migrateRuntimeConfigSecrets();
if (migration.migrated.length) console.log(`Security: ${migration.migrated.length} Secrets aus der Runtime-Konfiguration verschlüsselt migriert.`);
hydrateSecretsToEnvironment();
await import('./server.mjs');
@@ -4,7 +4,7 @@ services:
build:
context: .
dockerfile: Dockerfile
image: vendoo:1.36.0
image: vendoo:1.37.0
container_name: vendoo
restart: unless-stopped
init: true
@@ -4,7 +4,7 @@ services:
build:
context: .
dockerfile: Dockerfile
image: vendoo:1.36.0
image: vendoo:1.37.0
container_name: vendoo
restart: unless-stopped
init: true
@@ -0,0 +1,3 @@
# Abnahmebericht 1.37.0
Siehe die vollständige Release-Abnahme im Paketroot `04_ABNAHMEBERICHT.md`. Die automatisierten Gates prüfen Secret-Migration, Verschlüsselung, CSP, Request-IDs, Telemetrie, Architektur, Deployment, Installer und Datenbankkompatibilität.

Some files were not shown because too many files have changed in this diff Show More