UI components for authoring, observing, inspecting, and debugging statifier statecharts and predicator expressions.
Debug-first and text-first: SCXML is the source of truth, and the visualization reads it. See the GUI research and direction document for how that direction was reached, and the architecture decision records for the decisions themselves.
Statifier already emits trace effects at every Appendix D phase boundary,
stamps them with (macrostep, round) counters, and retains source locations on
states, transitions, and expressions. A UI is one more interpreter of those
effects; the engine needs nothing changed to support it.
def deps do
[
{:statifier_ui, "~> 0.1"}
]
endThe :kino (Livebook) and :phoenix_live_view integrations are optional
dependencies - add whichever your host actually renders with.
Early. The first milestone is the Livebook inspector:
StatifierUI.Kino.inspect/3 over a running Statifier.Session -
notebooks/inspector.livemd
walks it end to end.
Published guides on hexdocs:
- Architecture - the layers of statifier-ui, what each piece is for, and the boundary with the engine it visualizes.
- Trace wire format - the normative specification of the language-neutral JSON trace stream a UI consumes.
mise install # provision erlang + elixir
mix deps.get
mix quality # the full gate: format, compile, credo, dialyzer, docs, testsmix quality --profile loop is the faster inner-loop variant - it skips
dialyzer and coverage and runs only the tests covering changed code.
CI runs the same gate on every push and pull request. See .quality.exs.
MIT. See LICENSE.