StatifierUI
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.
Installation
def deps do
[
{:statifier_ui, "~> 0.1"}
]
end
The :kino (Livebook) and :phoenix_live_view integrations are optional
dependencies - add whichever your host actually renders with.
Status
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.
Documentation
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.
Development
mise install # provision erlang + elixir
mix deps.get
mix quality # the full gate: format, compile, credo, dialyzer, docs, tests
mix 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.
License
MIT. See LICENSE.