feat: dynamic form fields, JSON output, branched questionnaires

This commit is contained in:
Jonas Miederer 2026-09-27 22:26:48 +02:00
parent 0b03399c1a
commit 0d43b0e8fb
11 changed files with 2579 additions and 92 deletions

View file

@ -6,6 +6,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- Branched questionnaires: `[visible_if feld=Wert]` markers in a
`CustomInputForm` field's `info` (code editor) show the field only when
the condition holds — nested to any depth, with `&` for AND conditions
and quotes for values with spaces. The parser emits `allOf`/`if`/`then`
branches (branch-scoped `required`, template-order placement); unknown
triggers, cycles, and unsupported trigger types fail open (always
visible). New demo flow `bauvorhaben.json` (4 levels + sibling branch +
bool trigger). Values of hidden fields are kept and submitted.
### Changed
- `CustomInputForm.collect()` is now dynamic and returns `Data` (JSON)
instead of `Message`: fields can be renamed, added, or removed in the
Langflow code editor with no `collect()` change, and values travel as a
real JSON object. The form parser keeps `name` keys verbatim (empty
names skipped, collisions suffixed) and the run envelope merges unknown
keys. Note: a terminal `ChatOutput` renders `Data` as a fenced ```json
block, and downstream components should read `.data`, not `.text`.
### 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 nach `backend/flows/*.json` und deployed sie danach