4.7 KiB
4.7 KiB
Changelog
All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Flow-Sync ist jetzt ein manueller Full-Pass:
POST /api/flows/sync(Button "Aus Langflow synchronisieren" in der Verwaltung) holt erst alle Flows aus Langflow nachbackend/flows/*.jsonund deployed sie danach automatisch (Report mitpulled-Liste). Der Hintergrund-Beobachter und der Startup-Sync bleiben dateibasiert. Die Verwaltung zeigt eine deutsche Schritt-Anleitung direkt beim Sync-Button. - LLM-Provider-Umgebung für Langflow:
OPENAI_API_KEY+OPENAI_BASE_URLin.env(OpenAI-kompatible Endpoints) erzeugen automatisch restart-feste Global Variables in Langflow; LFX liest dieselben Werte. - Langflow-Sitzungen halten länger:
LANGFLOW_REFRESH_TOKEN_EXPIRE_SECONDS(Default weiter 7 Tage, Dev-Beispiel 90) + stabile JWT-Signatur viaLANGFLOW_SECRET_KEY— kein Re-Login nach Container-Restarts.
Fixed
- Flow-Sync aus Langflow: neue Flows blieben unsichtbar, weil LFX-Uploads
mit
Permission deniedscheiterten (named Volume root-owned, LFX läuft rootless).lfx-entrypoint.shchownt/flowsper gosu vor dem Start; zusätzlich Pull-Dedup (wiederverwendet gleichnamige/identische Dateien statt Bindestrich-Duplikate wiesimple-rule.json, die jede Sync-Meldung mit Namenskonflikten füllten). - Sync-Dateinamen behalten die Langflow-Namen (
test_flow.jsonstatttest-flow.json; nur dateisystem-reservierte Zeichen werden ersetzt). - Gezogene Flow-Dateien sind world-readable (0o644):
mkstemperzeugte 0o600-Dateien, die Langflow beim Start abstürzen ließen (Permission deniedin/app/flows, Crash-Loop) und der API Fehler (unreadable) verursachten. LANGFLOW_SECRET_KEYmuss ein gültiger Fernet-Key sein (44 Zeichen, urlsafe-base64): ein Hex-String brach die Variablen-Verschlüsselung mitFernet key must be 32 url-safe base64-encoded bytes(500 beim Anlegen von Global Variables — Provider-Keys ließen sich nicht speichern)..env.exampledokumentiert die Erzeugung.- LFX runtime user gets a home directory (
useradd -m,HOMEset): without one every flow run failed with "Settings service not found".
Security
- Production ops:
scripts/check_prod.pyvalidates.envsecrets and modes before deploy (with tests); README production checklist (proxy gates for Langflow, secret rotation, upgrade runbook).
Security
- API authorization: flow management is admin-only, runs and run/approval
reads require login with strict session-tenant scoping, approval
decisions record the session user, and flow callbacks authenticate with
a shared
X-Callback-Token(CALLBACK_TOKEN). Request-controlledtenant_id,callback_base_urlandcontinuation_flow_idwere removed (SSRF / cross-tenant / flow-chaining hardening); continuations now resolve from the admin-authored definition. - Frontend:
/app/*routes require login; approver is the session user. - Edge hardening: interactive API docs only with debug, security headers (nosniff/frame/Referrer-Policy), 2 MiB body cap, per-IP run throttle, generic upstream-error responses, magic links never logged.
- Containers run rootless (api/vite as uid 1000, lfx as
lfxuser); frontend fails closed to preview mode unlessFRONTEND_MODE=dev.
Added
- Landing page: status-quo problem block, 5-step process with quote, portal overview with admin areas, AI platform parts, exception tiers, quantified benefits, integrations, use-case examples, pilot-program section, expanded FAQ (8 items incl. KI data usage, price model, responsibility).
Changed
- Landing page copy overhauled after 3 reviewer rounds (church-admin compliance wording: "entwickelt nach DSG-EKD/DSGVO" + AVV/TOMs, human release responsibility, honest pilot framing instead of invented testimonials; CTA now "Pilotgespräch vereinbaren").
- New photo
pilot-meeting.webp(consultation scene, self-hosted). - Backend lint + format standards via ruff (pinned dev dependency,
enforced in CI):
uv run ruff check .,uv run ruff format.
[0.1.0] - 2026-09-13
Added
- Repo scaffold: docker-compose dev/prod, version-pinned images, devcontainer.
- Magic-link auth, access requests, RBAC, frontend access-management UI.
- File-based flow source of truth + sync engine + LFX runtime.
- RJSF dynamic forms, router, Mantine dark-mode design system.
- Conversion landing page, automated screenshots, bell-tower favicon.
- Email-first login, branded multipart HTML magic-link mails.
- lfx level-4 validation on all canonical flows + regression test.