Form View: a form-based view for running a workflow
- Dominant language
- Scala
- Stars
- 314
- Forks
- 187
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 214
Description
### Feature Summary
Today a workflow can only be used through the operator canvas. That's the right tool for authors, but
too much for someone who just needs to change a couple of inputs, run, and read a result.
Form View is a second, form-based view of an existing workflow. An author marks selected
operator properties as "exposed"; a reader opens the same workflow as a simple form, fills in those
inputs, runs it on a computing unit, and sees the results the author chose to surface. It edits the
same workflow the canvas does, never a copy. Every workflow can be opened in either view when the
feature flag is on; a per-workflow default_view preference (canvas or form) chooses which view it
opens in, and either view can switch to the other at any time. The whole feature is gated behind a
form-view-enabled config flag (default off).
### Proposed Solution or Design
A new /user/workflow/:id/form page (WorkflowFormComponent) reusing the existing workflow graph model, the read-only workflow-editor + mini-map preview, and the property editor. The form is a lens over the same shared graph, not a fork.
- Authoring: in the property editor, tick which properties are exposed and give each an editable label, backed by a form-binding service that owns the operator-to-field bindings.
- Reader: exposed bindings render as ngx-formly fields; edits write back to operator properties; an optional author instruction (markdown) shows above; run/stop reuses the canvas run-button state machine plus a computing-unit selector; chosen results render as cards.
- Persistence: a default_view enum column (CANVAS or FORM) on the workflow with a set-default-view endpoint, carried through workflow listing/search, so the dashboard opens each workflow in its default view without parsing content.
- Feature flag: form-view-enabled (served via /api/config/gui as formViewEnabled), default off, gating every entry point (the dashboard card opens in the workflow's default view plus a per-card toggle, the route, and the canvas menu view switch).
Delivered as stacked sub-issues, bottom-up:
- [x] #8013 — feat(config): add form-view-enabled feature flag, default off
- [x] #8014 — feat(workflow): persist default_view and add a set-default-view endpoint
- [x] #8015 — feat(workflow): shared types and collab-model support for Form View
- [x] #8016 — feat(workflow): form-binding service for Form View
- [x] #8017 — feat(property-editor): choose which properties the Form View exposes (PR5, #8318)
- [x] #8018 — feat(workflow-form): Form View page shell, load, and the shared spec harness (PR6)
- [x] #8019 — feat(workflow-form): Form View title bar, save, and modification lock (PR7)
- [x] #8020 — feat(workflow-form): embed the read-only workflow preview (PR8)
- [x] #8021 — feat(workflow-form): share the operator property panel's field-type rules — custom formly types + exposability (PR9, #8436 merged)
- [x] #8370 — feat(workflow-form): render the exposed inputs and write values back (PR10, #8437)
- [x] #8022 — feat(workflow-form): render nested and array sub-field inputs (PR11, #8438)
- [x] #8023 — feat(workflow-form): run the workflow from the form and show the author's instruction (PR12, #8440)
- [x] #8024 — feat(workflow-form): show the chosen results (PR13, #8441)
- [x] #8025 — feat(workflow-form): open a step to inspect its settings read-only (PR14, #8442)
- [x] #8026 — feat(workflow-form): Form View edit mode, with instruction and result authoring (PR15a, #8516; split from #8455)
- [x] #8027 — feat(workflow-form): author the Form View's inputs in place: rename, hide, reorder, remove (PR15b, #8517; issue reused from the computing-unit item folded into #8028)
- [x] #8028 — feat(workflow-form): entry points and remember the computing unit (PR16, #8456)
- [ ] #8537 — feat(config): turn the Form View on by default (PR17, #8528)
### Follow-ups (post-MVP)
- [ ] #8439 — feat(workflow-form): Form View widget refinements (render canvas-only widgets fully, HuggingFace form mode, compile-on-blur) — deferred refinements from the #8436 / #8437 reviews
Rollout: the flag stays off through the whole stack; the final entry-points PR flips it on and wires the entry points.
### Affected Area
Storage / Metadata, Workflow UI
Contributor guide
Assessment
This issue has not been assessed yet.