Status: backlog Priority: P1 Created: 2026-02-25 Blocked by: viz-visualizer-enhancements, viz-simulator
The existing viz demo app (src/examples/com/fulcrologic/statecharts/visualization/app/) already has chart selection, session viewing, and the Visualizer component wired up via shadow-cljs :viz build. We expand it with a mode selector, event panel, guard panel, and simulator integration rather than creating a separate app.
app/ui.cljs: connected vs simulatorapp/ui.cljs or new app/event_panel.cljs if large)simulator/available-events):data parameter)df/load! + remote send-event mutation (existing resolver)simulator/send-event!, updates configuration in Fulcro statesimulator/extract-guards:diagram/condition label for each guardsimulator/start-simulation! with the chart definitionui-visualizer via :current-configuration computed propsimulator/reset-simulation!simulator/toggle-guard!Visualizer (existing, via ui-visualizer)src/examples/com/fulcrologic/statecharts/visualization/app/ui.cljs — expand with mode selector, event panel, guard panel, simulator wiringapp/event_panel.cljs and app/guard_panel.cljs if ui.cljs gets too largeExpand the existing ChartViewer component to be mode-aware. In simulator mode, it creates a simulator instance (from visualization/simulator.cljc) and passes its configuration to ui-visualizer. Event and guard panels are new components rendered alongside the chart. Connected mode retains existing behavior.
:viz build compiles without errorsRun shadow-cljs watch viz + start server. Open browser at http://localhost:8090.
Connected mode (existing behavior preserved): 2. [ ] Chart picker still works, shows all demo charts 3. [ ] Session ID input still works, shows active configuration 4. [ ] Event panel shows events available from current configuration 5. [ ] Click event + send → session state updates
Simulator mode (new):
6. [ ] Switch to simulator mode
7. [ ] Select a chart with guards (e.g. :conditional-demo or :label-demo)
8. [ ] Visualizer shows initial configuration highlighted
9. [ ] Guard panel lists all guards with labels
10. [ ] Toggle a guard to false → visual feedback
11. [ ] Event panel shows available events
12. [ ] Click event + send → configuration updates, visualizer highlights new active states
13. [ ] Toggle guard back to true, send same event → different transition taken
14. [ ] Reset button → returns to initial configuration
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |