Skip to content

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 jetztDefault-Provider(statt Mistral)
    • RTX 4000 Ada GPU-Beschleunigung via CUDA 12.4
    • 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) nebenMistralOcrProvider(Cloud)
  • Surya-Modelle als Singleton (einmal laden, im Speicher halten)
  • CPU/GPU-bound OCR viaasyncio.to_thread()(blockiert nicht den Event-Loop)
  • Dockerfile:nvidia/cuda:12.4.1-runtime-ubuntu22.04+ Python 3.12
  • 36 Unit-Tests (Syntax, Schemas, Factory, Mistral-Logik, Surya-Logik)

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

Neue Features

  • Universeller OCR-Servicemit 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.processfuer 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-UIfuer Kontakt-Aktionen in Profil-Einstellungen
    • 3-Button-Auswahl: "Immer fragen" / "Webmailer/Browserphone" / "System-App"
    • Zuruecksetzen auf Standard
  • XContactLink-Integrationin 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,noreferrerbei 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