All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Entries for unreleased work are not written here directly. Each issue drops a
fragment in changelog.d/; the fragments are assembled
into a version section at release. See that README for the format and for when a
change warrants an entry at all.
[0.1.0] 2026-08-22
First release: authoring, observing, and debugging components for the statifier statechart engine, consuming its effect stream through the language-neutral trace wire format (format version 1). The Livebook inspector is the first assembled frontend; the panes underneath it are pure folds any other frontend can render.
Added
StatifierUI.Diagram.render/2renders a compiled machine and an active configuration as MermaidstateDiagram-v2source forKino.Mermaid, with composite nesting, parallel regions, active-state highlighting, and cross-hierarchy transitions lifted to the composite level with a[lifted: ...]marker.StatifierUI.EventLog.build/1folds a trace message stream into a log grouped by(macrostep, round), ordered by the producer's stamps rather than arrival, andStatifierUI.EventLog.Markdown.render/2renders it as collapsible Markdown forKino.Markdown, with wire-format indexes resolved to state and transition names byStatifierUI.EventLog.Labels.StatifierUI.EventInjection.build/1turns an ADR-0003 fixture bundle (ornil) into the event-injection pane model: a sorted palette of editable event buttons viaStatifierUI.EventInjection.Palette, afree_form_only?flag for the fixture-less degraded mode, andsend/2/send_draft/3to deliver aStatifierUI.EventInjection.DraftthroughStatifier.Session.send_event/2- the ordinary recordable input path, per statifier ADR-0029.StatifierUI.DatamodelExplorer.build_authoring/3andbuild_live/2build a read-only datamodel tree - document<data id>declarations, spec 5.10.1 system variables, predicator provider functions in scope, and either a fixture scenario or a live session's datamodel with entries markedchanged?per macrostep - andStatifierUI.DatamodelExplorer.Markdown.render/2renders it as Markdown forKino.Markdown.StatifierUI.Kino.inspect/3assembles the Livebook inspector: the configuration diagram, datamodel explorer, event injection, and event log panes composed over one shared subscriber, live-updating, detaching cleanly on cell re-evaluation. Compiled only when the optional:kinodependency is present.StatifierUI.Trace.Subscriber.attach/3acceptscatch_up: true: on a session started withrecord: truethe missed prefix is replayed into the buffer atomically with the subscription (statifier ADR-0049); an unrecorded session falls back to live delivery with a:not_recordeddiagnostic the inspector surfaces as "Live-only".StatifierUI.Inspector- the pure pane-assembly fold the Kino shell renders, usable by any other frontend.notebooks/inspector.livemd- the demo notebook, doubling as the milestone's manual acceptance test.- Serializes statifier's
DatamodelChangeeffect as theeffect.datamodel_changewire type, so consumers can observe datamodel values as they are written instead of only the variable namessession.datamodelcarries. New types are additive under the wire format's must-ignore rule. - Every
effect.*wire message carries the engine'sroundstamp in its envelope, alongsidemacrostepandmicrostep; consumers reading older recorded streams must still tolerateeffect.*messages without the key.