Commit Graph

32 Commits

Author SHA1 Message Date
Lucio Lelii 5a6d650f90 style(container): add identifying tab 2026-09-30 12:54:16 +02:00
Lucio Lelii 36a43d3349 style(container): restore inner border 2026-09-30 12:46:32 +02:00
Lucio Lelii 41f1e44ff4 style(container): widen inner border 2026-09-30 12:45:45 +02:00
Lucio Lelii f0e9de8c12 style(container): clarify double border 2026-09-30 12:44:44 +02:00
Lucio Lelii 124bf419b7 style(container): add distinctive inner border 2026-09-30 12:42:34 +02:00
Lucio Lelii 7aae9bef1a style(container): align node card visuals 2026-09-30 12:40:35 +02:00
Lucio Lelii 5bb339a6f0 refactor(nodes): share socket geometry 2026-09-30 11:29:43 +02:00
Lucio Lelii 64ff042993 fix(container): align sockets with card edge 2026-09-30 11:27:02 +02:00
Lucio Lelii 08df0219b1 fix(container): keep output sockets visible 2026-09-30 11:25:28 +02:00
Lucio Lelii 44a4ff09a9 ui: make node settings collapsible 2026-09-29 18:56:17 +02:00
Lucio Lelii 67d6bc6b71 ui: align node sockets and widen resource cards 2026-09-29 11:14:11 +02:00
Lucio Lelii 5787a6fe44 Add the SPDX licence header to every source file
Mechanical: three comment lines at the top of every .ts, .html and .css
under src, and nothing else. Split out from the licence commit so the
files that carry an actual change stay readable in the history, and kept
to its own commit because it moves the blame line on 390 files.

The short SPDX form rather than the full GNU notice - it is
machine-readable under REUSE, it satisfies the requirement to keep the
licence notice intact, and it points at LICENSE-ADDENDUM instead of
restating the attribution term in every file.

The template and stylesheet headers do not reach the bundle: Angular
discards template comments and the production build strips CSS ones. The
one in index.html survives, since that file is served as written, which is
no loss.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 12:10:18 +02:00
Lucio Lelii 43bcc38b9e Honour optional groups in the container node too
Same annotation, same control, same write-back as in a block: one button that
opens the whole object, a badge saying how many settings are set, and a group
that disappears when everything is cleared.

The one container-specific piece is how a select resolves its options, which the
shared round trip takes as a callback.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 14:08:17 +02:00
Lucio Lelii 14f78b79ce fix(editor): render container subflows and long port labels 2026-08-03 17:21:28 +02:00
Lucio Lelii 31e2700c5a feat: refine subflow editing navigation and zoom 2026-07-27 17:48:51 +02:00
Lucio Lelii 0f155e2040 feat(flow-editor): add swimlanes and JSON IO type support
Implements the frontend side of the control-flow engine's Fase 4-5
backend extension: presentation-only swimlanes for grouping nodes by
actor/responsibility, and a new IOType.JSON for structured input/
output descriptors. Both are additive/optional fields, backward
compatible with existing flows.

Swimlanes:
- Model: FlowLane (id, name, description, order, color), FlowData.lanes,
  and an optional laneId on every block/container.
- Lane management (add/rename/reorder/color/delete) in a new "Lanes"
  section of the title toolbar, mirroring the existing Global Inputs
  editor. Deleting a lane clears laneId on any node that referenced it,
  avoiding an immediate NODE_LANE_NOT_FOUND validation error.
- Real visual swimlanes on the rete.js canvas: horizontal color-coded
  bands with labels that pan/zoom together with the nodes, backed by a
  transform layer kept in sync with the area's live transform.
- Drag-to-reassign: moving a node updates its laneId based on the drop
  Y position, but only for genuine pointer drags — programmatic moves
  (initial load, clone, server-side node regeneration) are excluded via
  the existing programmatic-translation tracking, so loading a flow
  never silently reassigns lanes.
- A small lane badge on the node header confirms the current
  assignment after a drag.
- The readonly/execution-view diff and patch logic now accounts for
  laneId and lanes so live updates are detected correctly.

Also fixes a data-loss bug found while wiring this up: exportGraph()
rebuilt each node and the top-level FlowData as explicit object
literals that never carried laneId/lanes through, and flowFromApi()
never normalized lanes coming back from the backend — both would have
silently dropped the field on save/reload, the same class of bug fixed
earlier for biasAnnotations.

JSON IO type:
- Global input type picker now offers JSON alongside TEXT/FILE.
- Behavioral probe editor: JSON-typed mock outputs default to {} and
  use the JSON textarea editor instead of a plain text input.
- portSelectableKinds (generic-node) includes JSON among the concrete
  types offered wherever a port's kind is ANY.

Verified with the full suite (253/253, 21 new tests) and a live
end-to-end browser check: created two lanes, dragged a node from the
unassigned area into a lane (confirmed via the node's lane badge),
saved, and reopened the saved flow with the lane assignment intact.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 14:54:43 +02:00
Lucio Lelii 9f54896545 feat(bias-impact): extend bias annotation support to containers
Mirrors the existing block-side bias impact feature onto containers,
reusing the same descriptor, form and error handling as the backend
integration doc specifies, rather than duplicating them:

- FlowContainer now carries biasAnnotations, matching FlowBlock.
- ContainersService/ContainersCallService gained
  retrieveBiasCapabilities/retrieveBiasCapabilitiesForInstance,
  backed by GET/POST /containers/types/{type}/bias-capabilities.
- bias-annotations and behavioral-probe-editor now accept FlowNode
  instead of FlowBlock only; the probe editor dispatches capability
  lookups to BlocksService or ContainersService based on nodeFamily,
  so container annotations reuse the exact same shared components
  and UI instead of a second, parallel implementation.
- container-node gained the bias badge, the bias-annotations panel,
  and preserves annotations across recreateContainer() the same way
  generic-node already does across block regeneration.
- task-execution-viewer's bias-rerun candidate list now includes
  containers with executable probes, not just blocks.

Also fixes a real data-loss bug found while wiring this up:
rete-editor's exportGraph explicitly stripped bias annotations from
containers on every flow save, silently discarding anything entered
through the new panel.

Verified with the full suite (238/238, 6 new tests) and a live
end-to-end browser check: an annotation added to a container only
offered INPUT_TRANSFORMATION/OUTPUT_TRANSFORMATION (per the fake
container capabilities), and survived a save + reopen of the saved
flow, proving the exportGraph fix actually round-trips the data.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 09:59:46 +02:00
Lucio Lelii a258064eb5 feat: add execution groups and schema-driven flow fields 2026-07-20 16:22:50 +02:00
Lucio Lelii 4bcb9f5d3e feat(editor): add focus mode for container and generic nodes 2026-05-13 12:18:13 +02:00
Lucio Lelii 9b0e2bbd89 Update nodes: schema-driven fields, node utility, generic/container/task-step nodes 2026-04-24 12:33:21 +02:00
Lucio Lelii a377c1d793 Refactor schema-driven node fields and fix validation highlights 2026-04-17 17:42:32 +02:00
Lucio Lelii d508ccf6d1 Refine container rendering and assistant runtime config 2026-03-27 17:39:59 +01:00
Lucio Lelii 27f9bc1285 Add dependency flow validation and execution input UX updates 2026-03-27 15:18:03 +01:00
Lucio Lelii 167e301a21 Refine task previews and add node clone actions 2026-03-25 16:53:05 +01:00
Lucio Lelii 3bf669180d look and feel in the longtext parmeter changed 2026-03-24 14:05:21 +01:00
Lucio Lelii 55418d2226 Refine execution viewer and schema-driven node handling 2026-03-24 13:45:32 +01:00
Lucio Lelii 19b0dadacc Improve schema-driven nodes and interactive execution chat 2026-03-19 15:18:09 +01:00
Lucio Lelii 971d829685 Make container nodes schema-driven 2026-03-17 11:54:07 +01:00
Lucio Lelii 2a42817ef3 Support containers in task execution views 2026-03-16 16:50:44 +01:00
Lucio Lelii 8a8978937f Refine container handling and readonly flow behavior 2026-03-16 15:41:08 +01:00
Lucio Lelii 533a1e7f43 Split containers into dedicated services and sidebar list 2026-03-15 06:07:10 +01:00
Lucio Lelii 25e133ac04 Add first-class container nodes and subflow preview 2026-03-14 15:50:55 +01:00