## Version 1.41.1 – CI Source Root & Archive Exclusion Hotfix

- produktive ESM-Prüfung ohne historische Übergabeordner
- Pflichtdateiprüfung für Listings und Inventory
- Archive werden weder gepusht noch veröffentlicht
- echter Source-Root-Fehler bleibt release-blockierend

## Version 1.41.0 – Capability Graph Contract Hotfix

### Stabilität

- behebt den Startabbruch `MODULE_CAPABILITY_MISSING` des Modulmanagers
- ergänzt `settings.configuration` als bereitgestellte Capability von `vendoo.settings`
- prüft den realen Gesamtgraph aller 16 Module inklusive Startreihenfolge und Capability-Provider
- behält den FLUX-Worker- und ESM-Export-Hotfix aus 1.40.1 vollständig bei
- keine Datenbankänderung und keine Änderung an bestehenden Modulpaketen

## Version 1.40.0 – Secure Module Manager & Native Runtime Modules

### Modulverwaltung

Administratoren verwalten Module vollständig über **Administration → Module**. Kernmodule sind geschützt. Optionale Vendoo-Module können mit Abhängigkeitsprüfung aktiviert und deaktiviert werden. Installierte Fremdmodule können exportiert und nach Deaktivierung entfernt werden.

### Sichere `.vmod`-Pakete

Modulpakete besitzen ein versioniertes Manifest, Einzeldatei-Prüfsummen und eine Gesamtintegrität. Deklarative Module dürfen keinen ausführbaren Code enthalten. Ausführbare Pakete benötigen eine vertrauenswürdige Signatur und den noch getrennt freizugebenden isolierten Extension-Host; bis dahin bleiben sie in Quarantäne.

### Native Laufzeitmodule

Publishing, AI, FLUX Studio und Quality Center besitzen native Modulmanifeste, Policies und Lebenszyklen. Hintergrundprozessoren werden nur gestartet, wenn ihr Modul aktiv ist. Deaktivierte Module sperren ihre API-Namensräume kontrolliert.

## Slice 32 – Batch Image Factory (1.27.0)


## Version 1.36.0 – Secure Theme Manager

### Persönliche Darstellung

Jeder angemeldete Benutzer kann Theme, UI-Dichte und reduzierte Bewegung über eine eigene Eingabemaske verwalten. Die Präferenz wird serverseitig dem Benutzer zugeordnet und beim nächsten Start erneut geladen.

### Administrative Theme-Profile

Administratoren können validierte Theme-Profile erstellen, bearbeiten, exportieren, importieren und als Systemstandard festlegen. Profile bestehen ausschließlich aus freigegebenen Design Tokens. Freies CSS oder JavaScript wird nicht gespeichert oder ausgeführt.

### Accessibility

Der Theme Manager zeigt Kontrastwerte zentraler Farbkombinationen, bietet ein Hochkontrast-Theme, sichtbare Fokuszustände, reduzierte Bewegung und Mindestzielgrößen für Bedienelemente.

- zentrale Batch-Bildproduktion als eigener Navigationsbereich
- Quellbilder aus FLUX, AI, Artikeln, Editorversionen und früheren Produktionsausgaben
- integrierte Profile für eBay, Vinted, Kleinanzeigen, Etsy, Instagram, Webshop und Originaloptimierung
- eigene Profile mit Größe, Fit-Modus, Hintergrund, Format, Qualität und Dateinamensschema
- mehrere Profile und mehrere Bilder pro Auftrag
- optionale Hintergrundentfernung und Wasserzeichen
- persistente Jobtabellen mit Einzelpositionen, Pause, Fortsetzen, Abbruch, Retry und Neustartwiederaufnahme
- nicht destruktive Versionen und automatische Aufnahme in die zentrale Bildergalerie
- ZIP-Export aller fertigen Ausgaben eines Auftrags

## Stabilitäts- und Diagnosezentrum (1.26.1)

Vendoo überwacht jetzt seine lokale Serververbindung, versieht API-Anfragen mit Diagnose-IDs und zeigt einen klaren Verbindungsstatus statt stiller Folgefehler. Administratoren können unter **Admin → System** eine vollständige, geheimnisfreie Systemprüfung starten und das Ergebnis zusammen mit den letzten Clientfehlern kopieren. Die Oberfläche reagiert zusätzlich auf die reale Breite des Arbeitsbereichs neben der Sidebar und nicht nur auf die Browserbreite.

## Slice 18 – Mobile Mediathek & OpenRouter Diagnostics

- Getrennte Kamera- und Mediathek-Auswahl im QR-Upload
- Mobile Mehrfachauswahl sowie HEIC/HEIF-Konvertierung
- Robuster OpenRouter-Request-Fallback pro Modell
- Dynamische Free-Modell-Diagnose und klarer OpenAI-Fallback-Hinweis

## Slice 17 – LAN QR, OpenRouter Failover & Mobile Navigation

- Automatische private LAN-IP-Auswahl mit Adapter-Priorisierung
- Konfigurierbare `PUBLIC_BASE_URL` für QR-Upload
- Mehrstufiger OpenRouter-Failover über aktuelle Free-Bildmodelle
- Chat-Completions- und Images-API-Fallback für OpenRouter
- Robuste mobile Off-Canvas-Navigation

## Slice 16 – AI Job Queue & Multi-Mode Image Generation

- Queue-basierte AI-Bildgenerierung mit Status-Polling
- 1–3 Varianten statt nur 2–3
- Modi: Model / Ghost Mannequin / Flatlay
- AI-Bildhistorie im Listing-Editor

## Slice 15 – AI Provider Settings Center

- UI für AI-Model-Foto-Provider und Free-Model-Discovery
- Live-Abfrage aktueller OpenRouter-Bildmodelle aus der Settings-Seite
- Konfigurierbare Safety-Flags und Fallback-Logik ohne Codeänderung

## Slice 14 – OpenRouter Free Image Discovery

- Dynamic Lookup gegen OpenRouter Models API (`output_modalities=image`)
- Filter auf kostenlose Bildmodelle, die sich laufend ändern können
- Provider-Automatik: OpenRouter Free zuerst, dann OpenAI-Fallback
- Speicherung von `provider` und `provider_model` für spätere Nachvollziehbarkeit

## Slice 13 – AI-Model-Fotos mit Safety-Filter

- Sichert den Workflow für Modeartikel ohne Person im Originalbild ab
- Erzeugt 1–3 zusätzliche Bilder als Model, Ghost Mannequin oder Flatlay
- Blockiert Unterwäsche, Bademode, transparente Erotik-Looks und Kinderkleidung
- Speichert Generierungen und erzeugte Bilder in separaten Tabellen für spätere Nachverfolgung

# Vendoo - Feature-Dokumentation

> Lokaler Multi-Plattform Listing-Generator mit AI, Lagerverwaltung und Publishing-System.
> Stand: 2026-07-09 | Version 1.39.0


## Version 1.39.0 – Native Listings, Inventory & Media

- Artikel, Papierkorb, Lager und Medienbibliothek als native Plattformmodule
- 15 registrierte Module, davon 9 nativ und 6 Legacy Bridges
- bekannte API-Pfade und bestehende Oberfläche bleiben kompatibel
- serverseitige Artikel-Allowlist und HTML-Bereinigung
- Bearbeitungssperren bei Artikelupdates
- endgültiges Löschen ausschließlich aus dem Papierkorb
- Lager-Bulk-Limit von 500 eindeutigen Artikeln
- sichere Medienpfade und Schutz aktiver Artikelreferenzen
- Repository-Injektion für testbare, speicherunabhängige Services
- bestehende Datenbanktabellen und Daten bleiben erhalten

## Design-Freeze 2026

Die freigegebenen Referenzen in `MockupDesign/` sind die verbindliche UI-/UX-Richtung. Die Startseite wird als **Studio Flow** umgesetzt und bildet den Artikelzyklus `Erfassen → AI-Prüfung → Bereit → Geplant → Veröffentlicht → Verkauft` ab. Gemeinsame Design-Tokens, App-Shell, Navigation, Dark Mode und Kontextpanels werden zentral gepflegt.

---

## Tech Stack

| Komponente | Technologie |
|---|---|
| Backend | Node.js + Express (ESM) |
| Frontend | Vanilla HTML/CSS/JS (kein Framework, kein Build) |
| Datenbank | SQLite via `better-sqlite3` (WAL-Modus) |
| AI | Anthropic Claude, OpenAI, OpenRouter, Ollama (lokal) |
| Bildverarbeitung | `sharp` (Resize, Hintergrund, Wasserzeichen) |
| Rich-Text | Quill Editor |
| QR-Codes | QRious |
| E-Mail | Nodemailer (SMTP) |
| Auth | Scrypt-Hashing, Session-basiert, Magic Links |
| Extension | Chrome/Edge Manifest v3, Firefox WebExtension, Safari Web Extension |

---

## Projektstruktur

```
Vendoo/
├── server.mjs              # Express-Server (1253 Zeilen, alle API-Routen)
├── package.json             # Dependencies + Scripts (start, dev)
├── setup.bat / setup.ps1    # Windows-Installer (Install/Update/Repair/Uninstall)
├── .env / .env.example      # Konfiguration (API-Keys, SMTP, Port)
├── db/
│   ├── schema.sql           # DB-Schema (listings, templates, settings, publish_log)
│   └── vendoo.db            # SQLite-Datenbank
├── lib/
│   ├── db.mjs               # Datenbank-Zugriff (alle CRUD-Funktionen, ~390 Zeilen)
│   ├── auth.mjs             # Auth-System (Users, Sessions, Rate-Limiting, Audit, ~290 Zeilen)
│   ├── ai-router.mjs        # AI-Provider-Dispatcher
│   ├── ai-claude.mjs        # Anthropic Claude Vision API
│   ├── ai-openai.mjs        # OpenAI GPT-4o Vision API
│   ├── ai-openrouter.mjs    # OpenRouter Multi-Modell API (~110 Zeilen)
│   ├── ai-local.mjs         # Ollama lokale Inferenz
│   ├── images.mjs           # Bildverarbeitung (Resize, BG-Remove, Watermark)
│   ├── fees.mjs             # Gebührenberechnung pro Plattform
│   ├── categories.mjs       # Kategorie-Bäume pro Plattform (~360 Zeilen)
│   ├── html-templates.mjs   # Plattform-spezifische HTML-Beschreibungs-Wrapper
│   ├── mailer.mjs           # SMTP E-Mail-Versand + Templates (~210 Zeilen)
│   ├── etsy-api.mjs         # Etsy REST API v3 + OAuth2 PKCE (~185 Zeilen)
│   └── ebay-api.mjs         # eBay REST API + OAuth2 (~270 Zeilen)
├── platforms/
│   ├── vinted.mjs           # Vinted Prompt-Template + Parsing
│   ├── ebay-ka.mjs          # eBay Kleinanzeigen
│   ├── ebay-de.mjs          # eBay.de
│   └── etsy.mjs             # Etsy
├── public/
│   ├── index.html           # Haupt-UI (Single Page, ~845 Zeilen)
│   ├── login.html           # Login-Seite (Setup, Magic Link, Passwort)
│   ├── style.css            # Komplettes Styling inkl. Dark Mode (~1200 Zeilen)
│   └── app.js               # Frontend-Logik (~3240 Zeilen)
├── extension/
│   ├── manifest.json        # Chrome Extension Manifest v3
│   ├── background.js        # Service Worker
│   ├── popup.html/js        # Extension-Popup
│   ├── content.js           # Content Script für Vinted (~1170 Zeilen)
│   ├── content.css          # Injiziertes Styling
│   └── vinted-categories.js # Vinted-Kategorie-Mapping
└── uploads/                 # Hochgeladene Produktfotos
```

---

## Datenbank-Schema

### Tabelle: `listings`
| Spalte | Typ | Beschreibung |
|---|---|---|
| id | INTEGER PK | Auto-Increment |
| platform | TEXT NOT NULL | vinted, ebay-ka, ebay-de, etsy |
| ai_provider | TEXT NOT NULL | claude, openai, openrouter, local |
| title | TEXT | Listing-Titel |
| description | TEXT | Beschreibungstext |
| tags | TEXT (JSON) | Array von Tags/Hashtags |
| photos | TEXT (JSON) | Array von Dateinamen |
| seller_notes | TEXT | Verkaeuferbemerkungen |
| brand | TEXT | Marke |
| category | TEXT | Produktkategorie |
| size | TEXT | Groesse |
| color | TEXT | Farbe |
| condition | TEXT | Zustand |
| price | REAL | Preis in EUR |
| status | TEXT DEFAULT 'active' | active, sold, reserved |
| language | TEXT DEFAULT 'de' | Sprache (de,en,fr,nl,pl,es,it,pt) |
| sku | TEXT | Artikelnummer (VD-0001 Format) |
| storage_location | TEXT | Lagerort (z.B. "Regal A2") |
| deleted_at | TEXT | Soft-Delete Timestamp |
| created_at | TEXT | Erstellungsdatum |
| updated_at | TEXT | Letzte Aenderung |

### Tabelle: `templates`
| Spalte | Typ | Beschreibung |
|---|---|---|
| id | INTEGER PK | Auto-Increment |
| name | TEXT NOT NULL | Vorlagen-Name |
| platform | TEXT | Plattform (null = alle) |
| seller_notes | TEXT | Verkaeuferbemerkungen |
| language | TEXT DEFAULT 'de' | Sprache |
| default_tags | TEXT (JSON) | Standard-Tags |
| created_at | TEXT | Erstellungsdatum |

### Tabelle: `publish_log`
Tracking aller Veroeffentlichungen (listing_id, platform, status, external_id, external_url, published_at)

### Tabelle: `ebay_queue`
eBay-Publish-Warteschlange (listing_id, status, ebay_item_id, ebay_url, error, retries)

### Tabelle: `scheduled_publish`
Zeitgesteuerte Veroeffentlichungen (listing_id, platform, scheduled_at, status, error)

### Tabelle: `settings`
Key-Value Store (default_platform, default_ai, seller_notes, API-Keys, SMTP-Config)

### Tabelle: `users`
Benutzerverwaltung (email, name, password_hash, role, active, avatar_color, invited_by)

### Tabelle: `sessions`
Auth-Sessions (user_id, token_hash, ip, user_agent, expires_at)

### Tabelle: `auth_tokens`
Magic Links + Einladungen (email, token_hash, type, expires_at, used)

### Tabelle: `rate_limits`, `audit_log`, `login_history`
Sicherheit und Nachverfolgung

---

## Features im Detail

### 1. AI-Listing-Generator (Kernfeature)

**Was:** Fotos hochladen → AI generiert komplettes Listing (Titel, Beschreibung, Tags, Metadaten)

**Ablauf:**
1. Fotos per Drag & Drop oder Dateiauswahl hochladen (max. 10, je 20MB)
2. Plattform waehlen (Vinted, eBay KA, eBay.de, Etsy)
3. AI-Provider waehlen (Claude, OpenAI, OpenRouter, Ollama)
4. Modell waehlen (bei OpenRouter/Ollama)
5. Sprache waehlen (8 Sprachen)
6. Varianten waehlen (1-3)
7. Optional: Vorlage waehlen (Seller Notes)
8. „Artikel generieren“ klicken
9. AI analysiert Fotos und liefert: Titel, Beschreibung, Tags, Marke, Kategorie, Groesse, Farbe, Zustand, Preisvorschlag
10. Ergebnis in editierbaren Feldern anzeigen (Quill WYSIWYG-Editor)
11. HTML-Vorlage mit plattform-spezifischem Styling generieren
12. Gebuehrenberechnung automatisch anzeigen
13. Speichern erzeugt Listing mit auto-generierter SKU (VD-XXXX)

**Dateien:** `server.mjs` (POST /api/generate), `lib/ai-*.mjs`, `platforms/*.mjs`, `public/app.js`

**API:** `POST /api/generate`, `POST /api/upload`, `GET /api/providers`, `GET /api/platforms`

---

### 2. Foto-Management & Editor

**Upload:**
- Drag & Drop Dropzone
- Multi-File-Auswahl (nur Bilder: jpg, png, webp, gif)
- Vorschau-Thumbnails mit Entfernen-Button
- Drag-to-Sort (Reihenfolge aendern)

**Bildbearbeitung (Canvas-basiert):**
- Helligkeit (-100 bis +100)
- Kontrast (-100 bis +100)
- Saettigung (-100 bis +100)
- Drehen (links/rechts 90°)
- Spiegeln (horizontal)
- Zuschneiden (Crop-Tool)
- Zuruecksetzen auf Original
- Uebernehmen/Abbrechen

**Bildtools:**
- Hintergrund entfernen (Corner-Sample-Methode, Toleranz 60)
- Wasserzeichen hinzufuegen (Text-Overlay, 4% Schriftgroesse, 40% Opazitaet)

**API:** `POST /api/upload`, `POST /api/images/remove-bg`, `POST /api/images/watermark`

---

### 3. Listing-Verwaltung (Historie)

**Such- und Filteroptionen:**
- Volltextsuche (Titel, Beschreibung, Marke) mit 300ms Debounce
- Plattform-Filter (Dropdown)
- Status-Filter (Aktiv, Verkauft, Reserviert)
- Datumsbereich-Filter (Von/Bis)

**Listenansicht:**
- Thumbnail + Titel + SKU-Badge
- Plattform + AI-Provider + Preis + Datum
- Lagerort-Anzeige (wenn zugewiesen)
- Publish-Status-Badges pro Plattform (published/copied/pending)
- Inline-Status-Aenderung (Dropdown)
- Duplizieren-Button
- Loeschen-Button (Soft-Delete → Papierkorb)

**Batch-Operationen:**
- Alle auswaehlen / Einzelauswahl
- Ausgewaehlte loeschen
- Alle loeschen (gefiltert)
- Status massenweise aendern (Aktiv/Verkauft/Reserviert)
- Etiketten drucken (ausgewaehlte)

**Pagination:**
- Seitengroesse: 10 / 20 / 50 / Alle
- Vor/Zurueck (oben + unten)
- Seite X von Y, Gesamtanzahl

**Export:**
- CSV-Export (mit Plattform/Status-Filter)
- JSON-Export (alle gefilterten Listings)

**Detail-Ansicht:**
- vollständiger Listing-Arbeitsbereich statt reduziertem Detailformular
- Fotogalerie mit großem Cover, Thumbnail-Leiste und vollständiger Bilddarstellung
- Fotos hinzufügen, entfernen, per Drag & Drop sortieren und als Cover festlegen
- vorhandene Bilder direkt mit Helligkeit, Kontrast, Sättigung, Rotation, Spiegelung und Crop bearbeiten
- QR-Code (SKU + ID, via QRious)
- Alle Felder editierbar: Plattform, AI-Provider, Sprache, SKU, Status, Titel, Tags, Verkäufernotizen, Marke, Kategorie, Groesse, Farbe, Zustand, Preis, Lagerort
- Beschreibung gleichzeitig im Quill-WYSIWYG und im HTML-Code bearbeiten
- WYSIWYG- und HTML-Codeansicht sind live und bidirektional synchronisiert
- separate sandboxed Plattformvorschau
- Editor-HTML und vollständiges Plattform-HTML separat kopierbar
- Aenderungen speichern
- Alles kopieren
- Etikett erstellen
- Datenblatt erstellen
- Loeschen

**API:** `GET/POST/PUT/DELETE /api/listings`, `POST /api/listings/:id/duplicate`, `GET /api/export/csv`

---

### 4. Vorlagen-System (Templates)

**3 vordefinierte Vorlagen (Seed):**
1. "Sneaker & Schuhe" (Vinted, DE) — Versand-/Zustandshinweise + Sneaker-Tags
2. "Vintage Kleidung" (Vinted, DE) — Vintage-spezifische Hinweise + Retro-Tags
3. "Elektronik & Zubehoer" (eBay.de, DE) — Funktionshinweise + Technik-Tags

**Verwaltung:**
- Liste aller Vorlagen (Name, Plattform, Sprache)
- Erstellen: Name, Plattform (optional), Sprache, Seller Notes (Quill), Standard-Tags
- Bearbeiten / Loeschen
- Vorlagen-Auswahl im Generator (Dropdown)
- Bei Auswahl: uebernimmt Plattform + Sprache + Seller Notes + Tags

**API:** `GET/POST/PUT/DELETE /api/templates`

---

### 5. Publishing-System

**UI 2026 / Slice 05 – Publish-Center:**
- gemeinsame Arbeitsoberfläche für Smart Copy, Direkt-Publishing, eBay Queue und Zeitplanung
- bildorientierte Listing-Auswahl mit Suche, Filtern, Sortierung und Mehrfachauswahl
- inline bearbeitbare Publish-Daten mit Pflichtfeld- und Integrationsprüfung
- Queue-Status, Fehlerwiederholung, Aktivitätsverlauf und Schnellaktionen in einer Statusleiste
- keine separaten Browserfenster für interne Publish-Arbeitsschritte

**Smart Copy (manuelles Veroeffentlichen):**
- Schritt-fuer-Schritt-Anleitung pro Plattform
- Fotogalerie mit Download
- Kopierbare Felder: Titel, Beschreibung (Text + HTML), Tags, Preis, Metadaten
- "Plattform oeffnen" Button (Direkt-URL)
- "Als veroeffentlicht markieren" Button

**Direkte API-Veroeffentlichung:**
- Etsy: OAuth2 + PKCE → Listing erstellen + Bilder hochladen
- eBay.de: OAuth2 → Inventory Item + Offer + Publish

**eBay-Warteschlange:**
- Listings zur Queue hinzufuegen (Batch)
- Queue-Ansicht: SKU, Titel, Status, Fehler
- Alle verarbeiten / Fehlgeschlagene wiederholen / Queue leeren
- Status-Tracking: pending → uploading → published/failed

**Zeitgesteuerte Veroeffentlichung:**
- Datum + Uhrzeit waehlen
- Plattform waehlen
- Batch-Scheduling moeglich
- Uebersicht aller geplanten Veroeffentlichungen
- Background-Job prüft alle 60 Sekunden auf faellige Items

**Publish-Status-Tracking:**
- Publish-Log pro Listing + Plattform
- Status-Badges in Historie + Publish-Ansicht

**API:** `POST /api/publish/smart-copy`, `POST /api/publish/mark`, `POST /api/publish/etsy`, `POST /api/ebay/publish/:id`, `GET/POST/DELETE /api/ebay/queue`, `GET/POST/DELETE /api/schedule`

---

### 6. Lagerverwaltung (Inventory)

**Uebersicht:**
- Statistik-Karten: Artikel gesamt, Lagerorte, Aktive Artikel, Lagerwert (EUR)
- Lagerort-Kacheln mit: Name, Artikelanzahl (aktiv/verkauft/reserviert), Gesamtwert
- "Ohne Lagerort" Kachel fuer nicht zugewiesene Artikel
- Neuen Lagerort anlegen

**Detail-Ansicht (pro Lagerort):**
- Artikelliste mit Checkboxen
- SKU, Titel, Plattform, Preis, Status
- Lagerort umbenennen
- Ausgewaehlte Artikel an anderen Ort verschieben (Bulk)

**Integration:**
- Lagerort-Feld in Listing-Detail editierbar
- Lagerort-Feld im Generator (bei Erstellung setzbar)
- Lagerort in Historie-Listenansicht sichtbar

**API:** `GET /api/inventory/locations`, `GET /api/inventory/unassigned`, `GET /api/inventory/location/:loc`, `PUT /api/inventory/bulk-location`

---

### 7. SKU / Artikelnummer-System

- Auto-Generierung: VD-0001, VD-0002, ... (4-stellig, aufsteigend)
- Backfill fuer bestehende Listings ohne SKU
- SKU in Detail-Ansicht editierbar
- SKU in QR-Codes kodiert (JSON: {sku, id})
- SKU auf Etiketten und Datenblaettern

---

### 8. Gebuehrenrechner

**Plattform-Gebuehren:**
| Plattform | Provision | Fixkosten |
|---|---|---|
| Vinted | 5% Kaeuferschutz | + 0,70 EUR |
| eBay Kleinanzeigen | 0% | Kostenlos |
| eBay.de | 11% Verkaufsprovision | + 0,35 EUR |
| Etsy | 6,5% + 4% Payment | + 0,30 + 0,20 EUR |

- Echtzeit-Berechnung bei Preiseingabe
- Zeigt: Brutto, Gebuehren, Netto pro Plattform
- Auch im Generator bei Preisvorschlag

**API:** `GET /api/fees`

---

### 9. Kategorie-System

- Hierarchischer Kategorie-Picker (Baum mit Gruppen/Untergruppen)
- Suchfunktion mit Scoring (Name + Pfad)
- Plattform-spezifische Kategorien (Vinted, eBay KA, eBay.de, Etsy)
- Caching fuer Performance
- Ausgewaehlte Kategorie mit Clear-Button

**API:** `GET /api/categories/:platform`, `GET /api/categories/:platform/match`

---

### 10. Druck-Funktionen

**Etiketten (Labels):**
- 2-Spalten-Grid, A4-druckfertig
- QR-Code + SKU + Titel (40 Zeichen) + Plattform + Preis
- Batch-Druck fuer mehrere Listings

**Datenblaetter:**
- Volle Listing-Details auf A4
- QR-Code + bis zu 4 Fotos
- Beschreibung (200 Zeichen) + Metadaten-Tabelle

---

### 11. Auth & Benutzerverwaltung

**Authentifizierung:**
- Passwort-Login (Scrypt-Hashing)
- Magic Links per E-Mail (15 Min gueltig)
- Setup-Modus (erster Admin erstellt Konto)
- CSRF-Token-Validierung
- Rate-Limiting (5 Versuche / 15 Min)
- Session-basiert (3 Tage Ablauf, automatische Bereinigung)

**Benutzerverwaltung (Admin):**
- Benutzer einladen (Magic Link oder Auto-Passwort)
- Rollen: Admin, Editor
- Benutzer aktivieren/deaktivieren
- Passwort zuruecksetzen
- Login-Verlauf einsehen
- Sessions verwalten (eigene + alle)
- Einladung erneut senden

**Audit-Log:**
- Alle Aktionen protokolliert (Login, CRUD, Settings, etc.)
- Benutzer, Aktion, Ziel, IP, Timestamp
- Paginierte Ansicht

**API:** `POST /auth/login`, `POST /auth/setup`, `POST /auth/invite`, `GET /api/me`, Admin-Routen unter `/api/admin/*`

---

### 12. E-Mail / SMTP

- Konfigurierbar ueber Admin-Panel oder .env
- SMTP-Verbindungstest
- Magic-Link-Versand
- Einladungs-E-Mails mit Passwort
- Gebrandetes HTML-Template (Vendoo-Header)
- Fallback: Console-Output wenn SMTP nicht konfiguriert

**API:** `GET/PUT /api/admin/smtp`, `POST /api/admin/smtp/test`

---

### 13. System & Backup (Admin)

**System-Info:**
- Node.js Version, Uptime, RAM-Verbrauch
- Datenbank-Groesse
- Benutzer- und Listing-Anzahl
- Aktive Sessions

**Backup & Restore:**
- DB-Download als .db-Datei
- DB-Restore per Upload (erstellt Backup der alten DB)
- Abgelaufene Sessions bereinigen

**API:** `GET /api/admin/system`, `GET /api/backup`, `POST /api/restore`

---

### 14. Chrome Extension

**Zweck:** Automatisches Ausfuellen von Vinted-Listing-Formularen

**Features:**
- Verbindung zum Vendoo-Server (localhost:8124)
- Queue-Verwaltung: naechstes Listing aus Warteschlange
- Auto-Fill: Titel, Beschreibung, Fotos, Kategorie, Metadaten
- Vinted-Kategorie-Mapping (337 Zeilen)
- Status-Badge (Connected/Offline)
- Batch-Verarbeitung mit konfigurierbarem Delay (Standard 45s)

**Host Permissions:** localhost:8124, vinted.de/.fr/.co.uk/.com

---

### 15. Einstellungen

- API-Keys: Anthropic, OpenAI, OpenRouter (maskiert angezeigt)
- Ollama-URL (Standard: localhost:11434)
- Etsy API Key + OAuth-Verbindung
- eBay Client ID/Secret/RuName + OAuth + Sandbox-Toggle
- Standard-Plattform, Standard-AI, Standard-Sprache
- Verkaeuferbemerkungen (global, in jedes Listing eingefuegt)

**API:** `GET/PUT /api/settings`

---

### 16. UI / Design

- **Sidebar-Navigation** (links, 230px, fixed) mit 4 Gruppen: Allgemein, Listings, Tools, System
- **Topbar** mit dynamischem Titel, Suchen-Button und „Neuer Artikel“-Button
- **Dark Mode** (Toggle im Sidebar-Footer, localStorage-Persistenz, System-Praeferenz)
- **Responsive** (Mobile: Sidebar versteckt, Hamburger-Menue, Overlay)
- **Toast-Benachrichtigungen** (2,5s)
- **Browser-Notifications** (Listing gespeichert, eBay Queue, Scheduled)
- **Quill WYSIWYG-Editor** (Toolbar: H1-H3, Bold, Italic, Underline, Strike, Listen, Links, Farben)
- **Live-HTML-Workbench**: WYSIWYG, editierbarer HTML-Code und Plattformvorschau gleichzeitig sichtbar

---

### 17. Installer (setup.bat + setup.ps1)

**Menue-Optionen:**
1. Installieren (Node.js pruefen/installieren, npm install, .env erstellen, Ordner)
2. Starten (Server + Browser oeffnen)
3. Update (Dependencies aktualisieren, neue .env-Eintraege)
4. Reparieren (node_modules loeschen + neu installieren)
5. Deinstallieren (node_modules + optional Daten entfernen)
6. Status (Node/npm/Dependencies/.env/DB/Uploads pruefen)

**CLI-Modus:** `setup.bat install`, `setup.bat update`, etc.

---

## API-Endpunkt-Uebersicht

### Auth
| Methode | Route | Beschreibung |
|---|---|---|
| POST | /auth/setup | Erstes Admin-Konto erstellen |
| POST | /auth/login | Anmelden |
| POST | /auth/logout | Abmelden |
| POST | /auth/invite | Einladung senden |
| POST | /auth/accept-invite | Einladung annehmen |
| GET | /auth/magic | Magic-Link-Redirect |
| GET | /auth/setup-check | Setup-Modus pruefen |
| GET | /auth/etsy | Etsy OAuth starten |
| GET | /auth/etsy/callback | Etsy OAuth Callback |
| GET | /auth/ebay | eBay OAuth starten |
| GET | /auth/ebay/callback | eBay OAuth Callback |

### Listings
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/listings | Alle Listings (q, platform, status) |
| GET | /api/listings/:id | Einzelnes Listing |
| POST | /api/listings | Listing erstellen |
| PUT | /api/listings/:id | Listing aktualisieren |
| DELETE | /api/listings/:id | Listing loeschen (Soft-Delete) |
| POST | /api/listings/:id/duplicate | Listing duplizieren |

### Generator & AI
| Methode | Route | Beschreibung |
|---|---|---|
| POST | /api/generate | AI-Listing generieren |
| POST | /api/upload | Fotos hochladen |
| GET | /api/providers | AI-Provider + Modelle |
| GET | /api/platforms | Marktplatz-Plattformen |
| GET | /api/categories/:platform | Kategorie-Baum |
| GET | /api/categories/:platform/match | Kategorie-Suche |
| GET | /api/price-suggest | Preisvorschlag |

### Bilder
| Methode | Route | Beschreibung |
|---|---|---|
| POST | /api/images/remove-bg | Hintergrund entfernen |
| POST | /api/images/watermark | Wasserzeichen hinzufuegen |

### Templates
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/templates | Alle Vorlagen |
| POST | /api/templates | Vorlage erstellen |
| PUT | /api/templates/:id | Vorlage aktualisieren |
| DELETE | /api/templates/:id | Vorlage loeschen |

### Publishing
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/publish/info/:id | Publish-Status + Verfuegbarkeit |
| POST | /api/publish/smart-copy | Smart-Copy-Daten |
| POST | /api/publish/mark | Als veroeffentlicht markieren |
| GET | /api/publish/status | Batch-Status-Abfrage |
| POST | /api/publish/etsy | Direkt auf Etsy veroeffentlichen |
| POST | /api/ebay/publish/:id | Direkt auf eBay veroeffentlichen |

### eBay Queue
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/ebay/queue | Warteschlange anzeigen |
| POST | /api/ebay/queue | Listings hinzufuegen |
| DELETE | /api/ebay/queue/:id | Aus Queue entfernen |
| DELETE | /api/ebay/queue | Queue leeren |
| POST | /api/ebay/queue/process | Alle verarbeiten |
| POST | /api/ebay/queue/retry | Fehlgeschlagene wiederholen |
| GET | /api/ebay/policies | eBay-Richtlinien abrufen |

### Scheduling
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/schedule | Geplante Veroeffentlichungen |
| POST | /api/schedule | Veroeffentlichung planen |
| DELETE | /api/schedule/:id | Geplante entfernen |

### Inventory
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/inventory/locations | Lagerorte mit Statistiken |
| GET | /api/inventory/unassigned | Artikel ohne Lagerort |
| GET | /api/inventory/location/:loc | Artikel pro Lagerort |
| PUT | /api/inventory/bulk-location | Bulk-Lagerort-Zuweisung |

### Papierkorb
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/trash | Geloeschte Listings |
| GET | /api/trash/count | Anzahl im Papierkorb |
| POST | /api/trash/:id/restore | Wiederherstellen |
| DELETE | /api/trash/:id | Endgueltig loeschen |
| DELETE | /api/trash | Papierkorb leeren |

### Gebuehren & Export
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/fees | Gebuehren berechnen |
| GET | /api/export/csv | CSV-Export |
| GET | /api/dashboard/stats | Dashboard-Statistiken |
| GET | /api/html-templates | HTML-Beschreibungs-Templates |
| POST | /api/html-wrap | Gespeichertes Listing in Plattform-HTML wrappen |
| POST | /api/html-render | Nicht persistierende Live-HTML-Vorschau rendern |

### Mobiler Foto-Upload
| Methode | Route | Beschreibung |
|---|---|---|
| POST | /api/mobile-upload-sessions | Zeitlich begrenzte Upload-Sitzung und QR-Link erzeugen |
| GET | /api/mobile-upload-sessions/:id | Upload-Sitzung vom Desktop pollen |
| DELETE | /api/mobile-upload-sessions/:id | Upload-Sitzung schließen |
| GET | /mobile-upload/:token | Responsive Smartphone-Uploadseite |
| GET | /mobile-upload-api/:token | Öffentlichen Sitzungsstatus abrufen |
| POST | /mobile-upload-api/:token/photos | Fotos mit Bearer-Token aus dem QR-Link hochladen |

### Einstellungen & System
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/settings | Alle Einstellungen |
| PUT | /api/settings | Einstellungen speichern |
| GET | /api/me | Aktueller Benutzer |
| PUT | /api/me | Profil aktualisieren |
| GET | /api/backup | DB-Backup herunterladen |
| POST | /api/restore | DB wiederherstellen |
| GET | /api/etsy/status | Etsy-Verbindungsstatus |
| GET | /api/ebay/status | eBay-Verbindungsstatus |

### Admin (erfordert Admin-Rolle)
| Methode | Route | Beschreibung |
|---|---|---|
| GET | /api/admin/users | Alle Benutzer |
| POST | /api/admin/users/invite | Benutzer einladen |
| PUT | /api/admin/users/:id | Benutzer bearbeiten |
| DELETE | /api/admin/users/:id | Benutzer loeschen |
| GET | /api/admin/sessions | Alle Sessions |
| DELETE | /api/admin/sessions/:id | Session beenden |
| GET | /api/admin/audit | Audit-Log |
| GET | /api/admin/system | System-Info |
| GET/PUT | /api/admin/smtp | SMTP-Konfiguration |
| POST | /api/admin/smtp/test | SMTP testen |

## Slice 07 – Cross-Browser Extensions & Mobile Upload

- `extensions/chrome`, `extensions/edge` und `extensions/firefox`
- Vendoo Link Icon-Set in vier Browsergrößen
- neues Popup und neues In-Page-Panel im freigegebenen Vendoo-Design
- Plattformvorschau/HTML als Umschalter im Generator und Listing-Editor
- responsive Layouts für Desktop, Notebook, iPad und Smartphone
- QR-Code-Upload vom Smartphone mit 20 Minuten gültiger Upload-Sitzung
- Handy-Fotos erscheinen automatisch im Generator beziehungsweise geöffneten Listing

## Extension UX 1.4.0

- Kompakte Queue-Karten mit Produktbild, Preis, SKU und Status
- Direkte Einzelaktion „Nur ausfüllen“ ohne Entwurf und ohne Veröffentlichung
- Option „Daten + Bilder ausfüllen“ ohne Abschlussaktion
- Explizit getrennte Aktionen für Entwurf und Veröffentlichung
- Gleichstand der Chrome-, Edge- und Firefox-Unterordner


## Interaktives Dashboard und Studio Flow V2

- eigenständiger Dashboard-Menüpunkt mit realen Kennzahlen und interaktiven SVG/CSS-Diagrammen
- Studio Flow verwendet die verständlichen Zustände Bereit, Geplant, Veröffentlicht, Verkauft und Benötigt Aufmerksamkeit
- mehrere Fotodateien werden automatisch als ZIP heruntergeladen
- Publish-Center verfügt über Retry- und Stale-Render-Schutz beim ersten Laden


## Local FLUX / ComfyUI Integration (Slice 19)
- New local image provider option for AI model photos
- Auto provider order: Local FLUX / ComfyUI -> OpenRouter Free -> OpenAI
- Local status route, bootstrap install route and token regeneration route
- Setup menu extended with local FLUX bootstrap + status
- Security concept: backend-to-backend access, optional token, localhost by default


## Slice 20 – Local FLUX Full Installer

- Vollautomatischer ComfyUI-Portable-Installer für Windows
- Dynamische Auswahl des aktuellen offiziellen Release-Assets
- GPU-Erkennung und passende Portable-Variante
- Optionaler FLUX.1-schnell-FP8-Modell-Download
- Fortschrittsanzeige in der Vendoo-UI
- Update-, Start-, Stop- und Statusaktionen
- Autostart über geplante Windows-Aufgabe
- Localhost-only Sicherheitsmodus


## Slice 21 – FLUX Install Diagnostics
- Detailed install readiness dashboard
- Real BITS download progress for ComfyUI and FLUX
- Resume-safe `.part` downloads
- 7-Zip path and PowerShell 5.1 compatibility fix
- Install log preview and error source details
- Setup CLI status with component checks


## Slice 22 – Reliable extraction status
- Supervised 7-Zip extraction with timeout and activity checks
- Live UI telemetry: progress, elapsed seconds, file count, extracted MB and heartbeat
- Separate 7-Zip output/error log display
- Automatic stale-state detection and safe resume

## Slice 23 – FLUX Product Reference, Live Progress & Settings Command Center

- Product photos are uploaded to local ComfyUI and used as a real image-to-image reference.
- Reference fidelity can be configured from 30–90 percent.
- Local FLUX job progress updates across preparation, upload, rendering, moderation and persistence.
- Settings are grouped into General, AI & APIs, Marketplaces and Local FLUX.
- Local FLUX has explicit enabled/disabled/running/stopped/not-installed states.
- Admin actions: install/repair, update, start, stop, status check and safe uninstall.
- Real installation files override stale or unreadable installer-state metadata.
- Uninstall keeps download archives by default and never removes listings, uploads or database data.

## Slice 28 – Eigenständiges FLUX Studio und VTO-Bereinigung

### FLUX Studio
- eigener Hauptmenüpunkt und eigene Seite
- freier Textprompt ohne automatische Produktreferenz
- Stilvorlagen, quadratische/Hochformat-/Querformat-Ausgabe
- Seed und Inferenzschritte steuerbar
- Live-Fortschritt aus ComfyUI
- Vorschau, Download und persistente Bildhistorie
- Übernahme eines erzeugten Bildes in den Listing-Generator
- nachträgliche Bearbeitung: Zuschneiden, Drehen, Spiegeln, Helligkeit, Kontrast und Sättigung
- Bearbeitungen werden als neue Bildversion gespeichert; Original bleibt erhalten

### Bereinigte Architektur
- keine FASHN-/VTO-Engine, kein Python-/Torch-/ONNX-Stack und kein VTO-Dienst mehr
- keine VTO-Menüs, API-Routen, Datenbankmodelle oder aktiven Installationsoptionen
- alte VTO-Runtime und Autostarts werden beim Upgrade einmalig entfernt
- FLUX/ComfyUI, Listings, Datenbank, Uploads und Konfiguration bleiben erhalten

## Slice 30 – FLUX Studio Pro

- persistente SQLite-Aufträge und einzelne Varianten
- 1, 2 oder 4 Varianten pro Auftrag
- eindeutige Seeds, Seed Lock und exakte Seed-Wiederholung
- „Ähnlich erneut erzeugen“ mit übernommenem Prompt-/Parameterstand und neuem Seed
- Favoriten und Favoritenfilter
- Job-Center für wartende, laufende, teilweise fertige, fehlgeschlagene und abgebrochene Aufträge
- Abbruch und Wiederholung
- ComfyUI-Queue, -History und -Systemdaten einschließlich GPU/VRAM
- Wiederaufnahme über persistierte ComfyUI-Prompt-IDs nach Vendoo-Neustart
- phasenbasierter Fortschritt ohne geschätzte Prozentwerte
- reiner Text-Prompt-Workflow ohne Produktreferenz oder VTO


## Slice 31 – Advanced Image Editor

- nicht destruktiver Editor für Generator-, Listing- und FLUX-Bilder
- Undo/Redo und lokale Bearbeitungshistorie
- persistente Versionenkette über `image_edit_versions`
- Original jederzeit wiederherstellbar
- Vorher-/Nachher-Ansicht
- freier Zuschnitt und feste Seitenverhältnisse 1:1, 4:5, 3:4, 16:9 und Original
- Drehen, horizontales/vertikales Spiegeln und Begradigen
- Belichtung, Helligkeit, Kontrast, Lichter, Schatten, Temperatur, Sättigung und Schärfe
- Export als JPEG, WebP oder PNG mit Qualität und Zielgröße
- serverseitiges Rendering in voller Auflösung mit `sharp`
- jede Speicherung erzeugt eine neue Datei; vorhandene Bilder werden nicht überschrieben
- Hintergrundentfernung und Wasserzeichen sind als nicht destruktive Editor-Werkzeuge integriert
- keine Platzhalter für Inpainting, Outpainting oder Maskeneditor



## Hotfix 1.23.2 – FLUX-Layout und kompakte Aufträge

- System- und ComfyUI-Karte steht unterhalb von Prompt & Auftrag
- Vorschau bleibt separat, damit Bildaktionen beim Scrollen nicht verdeckt werden
- komplettes Job-Center ein-/ausklappbar
- einzelne Aufträge kompakt ein-/ausklappbar
- aktive Aufträge standardmäßig geöffnet, abgeschlossene standardmäßig kompakt
- Wasserzeichen mit Text, Position und Deckkraft im Advanced Image Editor
- Hintergrundentfernung im Advanced Image Editor mit transparenter PNG-Ausgabe


## Version 1.24.0 – Responsive UI, FLUX-Archiv und Bildergalerie

### Responsive Oberfläche

- Die Listing-Tabelle passt sich auf Desktop, Tablet und Smartphone an.
- Unterhalb von 860 Pixeln werden Listings als kompakte Karten mit klar beschrifteten Datenzeilen dargestellt.
- Filter, Batch-Aktionen, Pagination, Detailansichten und Aktionsleisten umbrechen ohne die Seitenbreite zu sprengen.
- Galerie, FLUX-Job-Center, Einstellungen, Generator- und Publish-Bereiche erhalten zusätzliche Breiten- und Overflow-Sicherungen.

### Hintergrundentfernung mit Intensität

- Die Hintergrundentfernung im Advanced Image Editor besitzt einen Regler von 0 bis 100.
- Niedrige Werte schützen feine Kanten und ähnliche Produktfarben.
- Hohe Werte entfernen einen größeren Farbbereich des erkannten Hintergrunds.
- Vorschau und serverseitiger Export verwenden dieselbe Intensitätslogik.

### FLUX-Auftragsarchiv und Pagination

- Abgeschlossene, fehlgeschlagene und abgebrochene Aufträge können einzeln oder gesammelt archiviert werden.
- Laufende, wartende und abbrechende Aufträge sind gegen Archivierung geschützt.
- Archivierte Aufträge können einzeln oder gesammelt wiederhergestellt werden.
- Im Archiv lassen sich einzelne, mehrere oder alle Aufträge endgültig löschen.
- Das Löschen von Auftragsdaten löscht keine bereits erzeugten Bilder.
- Aktive Liste und Archiv verwenden serverseitige Pagination mit 10, 20 oder 50 Aufträgen pro Seite.

### Zentrale Bildergalerie

- Eigener Navigationspunkt „Bilder“.
- Gemeinsame Bibliothek für FLUX-Bilder, bearbeitete Versionen, AI-Bilder und Bilder aktiver Listings.
- Raster- und Listenansicht.
- Suche nach Prompt, Titel und Dateiname.
- Filter nach Quelle und Favoriten sowie Sortierung nach Datum oder Name.
- Pagination mit 24, 48 oder 96 Bildern pro Seite.
- Mehrfachauswahl, ZIP-Download und kontrollierte Mehrfachlöschung.
- Große Lightbox mit Metadaten, Prompt, Download, Favorit, Bearbeiten und Löschen.
- Direkte Übergabe eines Galeriebildes an den Generator oder Advanced Image Editor.
- Bilder, die in aktiven Listings verwendet werden, sind vor physischer Löschung geschützt.



## Version 1.26.0 – Artikel-Navigation, Publish, Zoom & Extensions

- „Neuer Artikel“ als eigener Menüpunkt unmittelbar unter Dashboard; Hauptbereich „Artikel“ statt „Listings“.
- Generierungsaktion heißt konsistent „Artikel generieren“.
- Publish-Workspace lädt auch bei älteren oder beschädigten JSON-Feldern robust; direkter Publish-Scope korrigiert.
- Smart Copy wird als zentriertes Popup geöffnet, während die mittlere Arbeitsfläche die vollständigen Verkaufsdaten zeigt.
- Galerie-Lightbox mit stufenlosem Zoom, Fit, 100 %, Mausradsteuerung und Verschieben.
- Kleine lokale SVG-Icons für Auswahl, Favorit und Medienaktionen.
- Gebührenmodell auf private Verkäufer ausgerichtet; Etsy als Shop-Sonderfall transparent ausgewiesen.
- Eigenes Extension Center mit Browsererkennung und Vorbereitung für Chrome, Edge, Firefox und Safari.
- Safari-Quelle enthält Konvertierungsskript für Xcode/macOS.

## Version 1.25.1 – Adaptive Bildergalerie

- Vollständig fließendes Galerie-Raster ohne starre Zwei-/Einspalten-Breakpoints
- Bildfläche selbst öffnet die Vorschau; kein separater Öffnen-Button
- Kartenbreiten, Overlay-Steuerungen und Aktionsdock passen sich per Container Query an
- Direkte Seitenauswahl oberhalb und unterhalb der Galerie
- Kompakte Symbolaktionen auf sehr schmalen Karten und vollständige Beschriftung bei ausreichender Breite
- Saubere Tastaturbedienung für Bildöffnung, Auswahl, Favorit und Pagination

## Version 1.25.0 – Detail-Responsive, Gallery UX, Smart Copy & Prompt Lab

- Inhaltsbreitenabhängiger Listing-Detail-Editor mit Container Queries, flexiblen Formularrastern und umbrechender WYSIWYG-Toolbar.
- Überarbeitete Galerie-Karten mit eigener Auswahlsteuerung, Favoriten-Overlay, klarer Vorschau und stabiler Aktionsmatrix.
- Smart Copy als responsives Modal statt verlorenem Inline-Workflow.
- Ruhiger Publish-Refresh ohne rotierenden Gesamtbutton.
- FLUX-Bildbibliothek mit serverseitiger Pagination (5/10/15).
- FLUX Job-Center mit begrenzten Seitengrößen 5/10/15.
- Prompt Lab für lokale Strukturierung und AI-gestützte Prompt-Veredelung über den aktiven Text-AI-Provider.
## Version 1.28.0 – Artikel Quality Center

- Zentrale Qualitätsprüfung aller Artikel mit Score 0–100 und verständlichen Noten A–E.
- Harte Publishing-Blocker getrennt von Warnungen und freiwilligen Empfehlungen.
- Prüfung von Inhalt, Metadaten, Bildern, Preis, Organisation, Duplikaten und Vendoo-Plattformprofilen.
- Bildmetadatenanalyse und persistenter Qualitätsverlauf.
- Gebühren- und Erlösübersicht direkt im Qualitätsbericht.
- AI-Vorschläge für Titel, Beschreibung und Tags mit verpflichtender Nutzerbestätigung.
- Suche, Status-/Notenfilter und Pagination.



## Version 1.29.0 – Publishing Hardening

Vendoo bündelt direkte API-Veröffentlichungen und Extension-Workflows in einer persistenten Publishing-Queue. Aktive Doppelaufträge werden zusammengeführt; bereits live protokollierte Artikel benötigen eine ausdrückliche erneute Freigabe. Temporäre API-Fehler werden kontrolliert wiederholt. Alle Schritte erzeugen Audit-Ereignisse. eBay-Angebote können anhand der gespeicherten Offer-ID synchronisiert, aktualisiert und beendet werden. Etsy unterstützt Veröffentlichung und Statusabgleich. Vinted und Kleinanzeigen bleiben sichere, vom Nutzer bestätigte Browser-Extension-Abläufe.


## Version 1.30.0 – Operations Center

- Betriebszentrale unter **Admin → System** mit getrennten Bereichen für Backup & Restore, Update Center und Extension-Diagnose.
- Konsistente SQLite-Snapshots über die Backup-API statt direkter Kopie der geöffneten Datenbank.
- Manuelle Voll- oder Datenbankbackups mit Uploads, optionaler `.env`, Manifest und SHA-256-Prüfsummen.
- Sofortige Prüfung jedes Backups einschließlich SQLite-`integrity_check`.
- Rotierende tägliche automatische Backups mit Uhrzeit, Aufbewahrung und Upload-Option.
- Verifizierte Wiederherstellung mit automatisch vorgeschaltetem Sicherheitsbackup.
- Update-Staging prüft neue Version, Pflichtdateien und verbotene Laufzeitdaten.
- Updates und Wiederherstellungen werden ausschließlich bei beendetem Server über Setup-Menüpunkt 11 angewendet.
- Setup-Menüpunkt 12 stellt den vorherigen Programm- und Laufzeitstand aus einem lokalen Rollback-Snapshot wieder her.
- Sichtbarer Migrationsstatus, letzte Operation und ausstehende Operation.
- Optionale Online-Updateprüfung über eine selbst konfigurierte öffentliche Manifest-URL.
- Vendoo Link 1.9.0 sendet Diagnose-Heartbeats; Chrome, Edge, Firefox und Safari werden getrennt geprüft.
- Automatische Backups enthalten niemals `.env`; Update-Pakete mit `.env`, Datenbank, Uploads oder `node_modules` werden blockiert.
## Version 1.31.0 – Mehrbenutzer, Rollen und Server-Sicherheit

### Benutzer und Rollen
- Rollenmatrix mit Administrator, Manager, Editor, Publisher und Leser.
- Serverseitige Berechtigungsprüfung für Artikel, Medien, AI/FLUX, Publishing, Einstellungen, Benutzer, Sitzungen, Audit und Operations Center.
- Schutz davor, den letzten aktiven Administrator zu deaktivieren oder zu löschen.

### Sitzungen und Login-Schutz
- Sichere, gehashte Session-Tokens mit absoluter Laufzeit und Inaktivitäts-Timeout.
- Widerruf einzelner oder aller Benutzersitzungen.
- Kontosperre nach wiederholten Fehlanmeldungen.
- Starke Passwortregeln für Setup, Einladung und Passwortwechsel.

### Zusammenarbeit
- Persistente Artikel-Bearbeitungssperren mit Benutzeranzeige, automatischer Verlängerung und Ablauf.
- Leser und gesperrte Benutzer sehen Artikel schreibgeschützt.
- `created_by` und `updated_by` werden bei neuen Änderungen gespeichert.

### Server-Härtung
- Standardbindung an localhost.
- Konfigurierbare Host- und Origin-Freigaben.
- Rate Limits für lesende und verändernde API-Aufrufe.
- Helmet/CSP, Request-IDs und restriktive CORS-Antworten.
- Filterbares Audit-Protokoll mit CSV-Export.



## Version 1.33.0 – Docker, NAS und Produktionsbereitstellung

- Dockerfile und Compose für reproduzierbaren Betrieb
- nicht privilegierter, read-only Hauptcontainer
- getrennte persistente Datenbereiche
- Liveness, Readiness und geordneter Shutdown
- Reverse-Proxy-, Cookie-, Origin- und Erst-Setup-Härtung
- sichere Docker-/NAS-Backup-, Restore- und Updateabläufe
- Windows-Lokalbetrieb bleibt vollständig erhalten
- FLUX/ComfyUI bleibt ein optionaler externer Dienst

## 1.33.0 – Multiplatform Deployment & UX Fixes

- Windows-Zielauswahl: lokal, Docker Desktop, NAS/Portainer, VPS/Linux
- Linux-/NAS-/VPS-Assistent `setup.sh`
- neutraler FLUX-Studio-Start und Arbeitsbereich-Reset
- stabilisierte Benutzerbearbeitung und sichere Update-Antwort



---

## Plattformarchitektur ab 1.35.0

Vendoo wird als modularer Monolith weiterentwickelt. Version 1.35.0 ergänzt einen Plattformkernel, validierte Modulmanifeste, Lifecycle, Event Bus, Feature Flags, Policy Engine und Routenverträge. Die bestehenden Fachbereiche sind als `legacy-bridge` registriert und werden in späteren Releases einzeln migriert.

Das Design-System verwendet eine versionierte Tokenquelle unter `public/design-system/tokens/source.json`. Light, Dark und High Contrast werden deterministisch in CSS erzeugt. Freies CSS ist für den geplanten Theme Manager ausgeschlossen.

Neue Kernel-Routen benötigen zwingend einen Modulbesitzer und eine explizite Policy. Unbekannte Policies verweigern den Zugriff. Externe Erweiterungen dürfen nicht im Hauptprozess ausgeführt werden; der isolierte Extension-Host bleibt als deaktivierter Feature-Flag vorbereitet.

## Vendoo 1.41.0 – Coolify und kontrollierte Web-Updates

- native Deployment-Verwaltung über `vendoo.deployments`
- Coolify-Webhook- und API-Modus
- verschlüsselte Deployment-Secrets
- Pflichtbackup und Bestätigung `DEPLOY`
- GitHub-Repository, Branch und Update-Kanal im Update Center
- `/app/data` als persistenter Produktionsbereich
- FLUX Studio beim ersten Coolify-Start deaktiviert
- 17 Module, 15 nativ, 2 Legacy Bridges und 38 aufgelöste Capabilities
- GHCR-Releasebilder mit versionierten, `stable`- und `latest`-Tags



## 1.41.2 – Git Ignore Boundary & Module Tracking

- Root-verankerte Runtime-Ignores
- `app/modules/` und `app/modules/sessions/` bleiben versionierter Source
- Git-Ignore-Semantiktest mit echtem temporärem Repository
- Pflichtdatei- und Tracking-Gate im GitHub-Deploy-Assistenten


## 1.42.0 – Production Operations & Controlled Update Completion

- Persistente Deployment-State-Machine: `checking`, `backup_pending`, `backup_running`, `backup_verified`, `deploy_requested`, `deploy_running`, `health_wait`, `succeeded`, `failed`, `rollback_required`.
- Idempotente Aufträge und harter Doppelstartschutz.
- Verifiziertes Vorab-Backup mit SHA-256-/Manifestbezug.
- Coolify-API-Statusabfrage über konfigurierbaren relativen Endpunkt; Webhook-Modus mit expliziter Abschlussbestätigung.
- Readiness- und Zielversionsprüfung vor Erfolgsmeldung.
- Persistenter Ereignisverlauf, Neustart-Wiederaufnahme und kontrollierte Aufhebung einer Rollback-Sperre.
- Produktionsstatus und Produktionscheck im Update Center.
- Additive Migration ohne Reset bestehender Produktivdaten.


## 1.43.0 – Module-aware Navigation, Listing Studio & Updater Status UI

- Authentifizierter Modulstatus-Endpunkt `/api/modules/navigation` mit minimaler Antwortfläche.
- Navigationselemente und optionale UI-Panels sind über `data-module` beziehungsweise `data-module-panel` an den realen Modulstatus gekoppelt.
- Modulstatus wird vor geschützten Modul-APIs geladen; ein deaktiviertes AI-Modul blockiert den App-Start nicht.
- Neuer Manifestvertrag `defaultEnabled`, damit ein Modul standardmäßig aus, aber administrativ aktivierbar sein kann.
- `vendoo.product-image-tools` stellt `product-images.variants` bereit und startet standardmäßig deaktiviert.
- Listing Studio mit sticky Command Bar, klarer Zwei-Spalten-Arbeitsfläche und dauerhaft sichtbaren Aktionen.
- Grafische Update-Oberfläche mit Fortschritt, Phase, Detailmeldung, Live-Protokoll, sicherer einmaliger Coolify-Eingabe und korrektem Exit-Code.
