Skip to content

Add interactive graph builder and managed execution - #17

Merged
cboulay merged 5 commits into
devfrom
feature/graph-builder
Sep 26, 2026
Merged

cboulay merged 5 commits into
devfrom
feature/graph-builder

Conversation

@cboulay

@cboulay cboulay commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

The dashboard can now build and run processing graphs alongside its existing live graph inspector. Users can start with an empty graph, add their own source and processing components, or connect a live Unit/Collection output to a new managed graph.

Changes

  • Migrate to React Flow 12 and share the canvas between Build and Monitor. Draft cards reuse live sizing/port styling; shading identifies managed components.
  • Discover registered Units and Collections through ezmsg.components entry points. Browse by extension and nested module, with search automatically revealing matching branches. Inspect metadata in disposable processes and keep unavailable registrations visible.
  • Add a persistent, exportable graph document with component insertion, unique names, drag connections, Delete/Backspace removal, and schema-driven settings widgets shared with Monitor.
  • Validate installed component identities, settings and connections before Run/Apply. New Units share a process by default; Collections retain their declared process layout. Apply replaces the whole managed group; Stop preserves external processes and GraphService.
  • Support optional connections from live Unit outputs and reachable Collection output aliases. Monitor displays actual runtime nodes with activity highlighting and inspector navigation, without duplicate applied drafts.
  • Include rebuilt frontend assets, documentation and regression tests.

Dependencies and release sequencing

Requires ezmsg 3.10 APIs; the package minimum is raised to 3.10.0b3. Correct generic stream metadata additionally needs ezmsg-org/ezmsg#270. Python CI temporarily pins integration commit 8442e35bd1b9cb703f1b4506b4563821cae28d2c from ezmsg-org/ezmsg#271, which includes optional JSON Schema settings support. Local setup is documented in docs/graph-builder.md.

Before publishing the dashboard, release a core beta containing that stack, raise the core minimum to the new beta, and remove the temporary CI Git pin. The core matrix currently has a Windows Python 3.14 fixture-encoding failure in test_inspect_command.py; that remains a core release prerequisite. Component discovery also needs the local ezmsg-lsl/ezmsg-sigproc entry-point changes published (or installed editable).

Validation

  • Full Python suite against the core integration checkout: 172 passed (Python 3.12, macOS).
  • Frontend unit tests: 91 passed.
  • Playwright interaction and screenshot tests: 40 passed.
  • Production frontend build, packaged asset consistency, Ruff lint/format and diff checks pass.
  • Real-process tests cover Run/Apply/Stop, external-process preservation, failure handling, generic output types and a Collection output feeding a multiprocess Collection.

Current limits

Apply resets managed buffers/filter state and can lose samples. Startup failure does not automatically restore the previous graph. Nested Collection authoring, arbitrary live-graph import, undo/redo, and connections from managed outputs into externally owned consumers are deferred. Scientific payload constraints still require component-level validation.

Requires ezmsg>=3.10.0b4 (preserving optional extras). Dependency metadata parses successfully and git diff --check passes.

CI now installs the declared ezmsg beta instead of a temporary Git pin. Managed workers receive a cooperative stop request before forced termination, allowing Windows to join child processes and release graph-unit ownership before Apply restarts the graph. Validation: all 10 execution tests pass locally; Ruff passes.

@cboulay
cboulay marked this pull request as ready for review September 26, 2026 03:07
@cboulay
cboulay merged commit 15392b6 into dev Sep 26, 2026
11 checks passed
@cboulay
cboulay deleted the feature/graph-builder branch October 1, 2026 23:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant