Zum Inhalt

Changelog

Versionsverlauf der xynap Platform. Format: Datum — Version — Kategorie.


2026-03-12 — v2.5.1 — OCR: Surya Provider (Lokal/GPU)

Neue Features

  • Surya OCR Provider — lokale GPU-beschleunigte Dokumentenerkennung
    • Kein Cloud-Dienst, keine API-Kosten, DSGVO-konform
    • Surya ist jetzt Default-Provider (statt Mistral)
    • RTX 4000 Ada GPU-Beschleunigung via CUDA 12.8 (torch 2.10)
    • PDF/Bild-Verarbeitung via pdf2image + Surya Detection/Recognition
  • Provider-Auswahl im Frontend — prominent ueber den Tabs, mit Default-Badge
  • Docker GPU-Passthrough — nvidia-container-runtime fuer platform-api
  • Surya-Modell-Cache persistent unter /var/lib/xynap/surya-models

Architektur

  • Neuer Provider: SuryaOcrProvider (lokal) neben MistralOcrProvider (Cloud)
  • Surya-Modelle als Singleton (einmal laden, im Speicher halten)
  • CPU/GPU-bound OCR via asyncio.to_thread() (blockiert nicht den Event-Loop)
  • Dockerfile: nvidia/cuda:12.4.1-runtime-ubuntu22.04 + Python 3.12 + torch 2.10 (cu128)
  • 36 Unit-Tests (Syntax, Schemas, Factory, Mistral-Logik, Surya-Logik)

2026-03-12 — v2.5 — OCR Service

Neue Features

  • Universeller OCR-Service mit Provider-Abstraktion
    • Provider: Mistral OCR 3 (mistral-ocr-latest)
    • 4 API-Endpoints: GET /ocr/providers, POST /ocr/process, POST /ocr/process/structured, POST /ocr/upload
    • Unterstuetzte Formate: PDF, PNG, JPG, WebP, DOCX, PPTX u.a.
    • Strukturierte Extraktion via JSON-Schema (Rechnungen, Formulare)
    • Datei-Upload (Multipart, max. 50 MB)
  • OCR Frontend-View (/app/ocr)
    • Drag & Drop Upload oder URL-Eingabe
    • Markdown-Ergebnis pro Seite, Copy/Download
    • Erweiterte Optionen: Tabellenformat, Sprache, Bilder/Header/Footer
    • Vollstaendig i18n (DE + EN)
  • Permissions: ocr.read, ocr.process fuer admin, reseller, customer, user

Architektur

  • Factory-Pattern (wie DNS-Provider): BaseOcrProviderMistralOcrProvider
  • Erweiterbar: Neue Provider ohne API-Aenderung ergaenzbar
  • API-Key via Secret Store oder Umgebungsvariable
  • 25 Unit-Tests (Syntax, Schemas, Factory, Provider-Logik)

2026-03-11 — v2.4 — Security-by-Design

Architekturprinzip

Alle Datenzugriffe laufen ueber die API. Die API erzwingt RBAC basierend auf Rollen/Rechten. Jeder User und jedes System hat eine Rolle mit definierten Rechten.

Neue Features

  • User-Preferences API (GET/PUT /api/v1/settings/preferences)
    • Mail-Handler und Call-Handler Praeferenzen ueber API statt nur localStorage
    • Whitelist-Validierung fuer Keys und Werte
    • RBAC: Jeder User kann nur eigene Praeferenzen aendern
  • Settings-UI fuer Kontakt-Aktionen in Profil-Einstellungen
    • 3-Button-Auswahl: "Immer fragen" / "Webmailer/Browserphone" / "System-App"
    • Zuruecksetzen auf Standard
  • XContactLink-Integration in weiteren Views
    • ContactsView (Tabelle): E-Mail/Telefon klickbar
    • CRM ContactTable Widget: E-Mail/Telefon klickbar
    • CRM EntityFields Widget: E-Mail/Telefon/Website klickbar

Security-Fixes

  • v-html XSS (KRITISCH): DOMPurify fuer alle 3 v-html-Stellen
    • SignatureManager.vue — E-Mail-Signaturen
    • TextBlock.vue — CMS-Benutzercontent
    • ClientSetupView.vue — Defense-in-depth
  • Payment-Webhook HMAC (KRITISCH): HMAC-SHA256 Signaturpruefung fuer Stripe/PayPal Webhooks
    • Erzwungen wenn Secret konfiguriert, Dummy-Modus ohne Secret
    • Settings: payments.stripe_webhook_secret, payments.paypal_webhook_secret
  • Compose-Parameter Injection (HOCH): URL-Parameter im Webmailer werden sanitized
    • E-Mail-Validierung fuer ?to= und ?cc=
    • HTML-Escaping fuer ?body= (kein v-html mehr)
    • Laengenbegrenzung fuer Subject (200) und Body (2000)
  • XContactLink Sanitierung (bestehend, dokumentiert):
    • Alle 5 Kontakttypen mit Input-Validierung
    • javascript:, data:, vbscript: blockiert
    • noopener,noreferrer bei externen Links

Entfernte Dateien

  • phoneLink.ts — Obsolet, ersetzt durch XContactLink
  • ActionChoiceDialog.vue — In XContactLink integriert

Betroffene Dateien

Backend:

Datei Aenderung
app/core/settings/router.py User-Preferences Endpoints
app/core/payments/router.py HMAC-Verifikation

Frontend:

Datei Aenderung
shell/utils/sanitizeHtml.ts Neuer DOMPurify-Wrapper
shell/composables/useActionPreferences.ts API statt localStorage
shell/settings/SettingsProfile.vue Kontakt-Aktionen UI
shell/contacts/ContactsView.vue XContactLink in Tabelle
crm/widgets/lists/ContactTable.vue XContactLink in Widget
crm/widgets/detail/EntityFields.vue XContactLink in Detail
modules/mail/components/SignatureManager.vue DOMPurify
modules/mail/components/ComposeDialog.vue Parameter-Sanitierung
modules/cms/components/blocks/TextBlock.vue DOMPurify
modules/services/views/ClientSetupView.vue DOMPurify

Neue Features

  • XContactLink — Universelle klickbare Kontakt-Links (E-Mail, Telefon, Website, Telegram, WhatsApp)
  • useActionPreferences — Composable fuer Mail/Call Handler-Praeferenzen
  • useSoftphone — Respektiert Call-Praeferenzen, PostMessage-Integration
  • Globale Suche — E-Mail/Telefon-Buttons in Suchergebnissen (TopBar)

Integration

  • ContactDetailView: E-Mail, Telefon, Website als XContactLink
  • CustomerDetailView: E-Mail, Telefon als XContactLink
  • UserDetailView: E-Mail als XContactLink