- implemented: abstract syntax - and/or states - pseudo-states - enter/exit trigger - shallow/deep history - transitions - event/after trigger - event parameters - guard expressions - action language expressions: - arithmetic, logic - variable references - function calls actions: - variable assignment - raising output events semantics - initialization - raising input events - time: - paused / step-wise - (scaled) real time - omniscient debugging TODO - bugs interpreter: pseudo-state semantics is broken - testing use STL for testing https://github.com/mvcisback/py-metric-temporal-logic - maybe support: - explicit order of: - outgoing transitions? - usability stuff: - action language: add increment operations (++) and (--) and (+=) and (-=) - snap: comments only to states triggers only to transitions entry/exit only to states - ability to hide statechart and only show the plant? - hovering over event in side panel should highlight all occurrences of the event in the SC - hovering over error in bottom panel should highlight that rror in the SC - highlight selected shapes while making a selection - highlight about-to-fire transitions - when there is a runtime error, e.g., - variable not found - stuck in pseudo-state - ??? don't crash and show the error - buttons to rotate selection 90 degrees - performance: maybe try this for rendering the execution trace: https://legacy.reactjs.org/docs/optimizing-performance.html#virtualize-long-lists - experimental features: - multiverse execution history stable tree layout? https://pub.dev/packages/ploeg_tree_layout - local scopes for the assignment: *ALL* features add history (look at original Harel paper) add microwave oven add traffic light Publish StateBuddy paper(s): compare CS approach to other tools, not only YAKINDU