StateSmith 0.7.4-alpha

This is a prerelease version of StateSmith.
There is a newer version of this package available.
See the version list below for details.
dotnet add package StateSmith --version 0.7.4-alpha
                    
NuGet\Install-Package StateSmith -Version 0.7.4-alpha
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StateSmith" Version="0.7.4-alpha" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="StateSmith" Version="0.7.4-alpha" />
                    
Directory.Packages.props
<PackageReference Include="StateSmith" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add StateSmith --version 0.7.4-alpha
                    
#r "nuget: StateSmith, 0.7.4-alpha"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=StateSmith&version=0.7.4-alpha&prerelease
                    
Install StateSmith as a Cake Addin
#tool nuget:?package=StateSmith&version=0.7.4-alpha&prerelease
                    
Install StateSmith as a Cake Tool

[0.7.4-alpha]

Added


[0.7.3-alpha]

Added

  • draw.io - add support for draw.io plugin and new drawing style where a state can have its text event handlers as a child text node instead of its label #77.

[0.7.2-alpha]

Added

  • draw.io - embedded images inside of a draw.io diagram are now ignored. Issue #77.
    • images are sometimes embedded in state machine diagrams for documentation purposes.
  • draw.io - treat null labels as blank instead of throwing exception. Null labels don't normally occur. Issue #77.
  • improved $notes validations.

[0.7.1-alpha]

Added

  • Add initial support for draw.io files as alternative to yEd files. https://github.com/StateSmith/StateSmith/issues/77
    • Supported file extensions:
      • .drawio.svg Recommended as design file is a valid svg image that can be used in markdown and other files!
      • .drawio
      • .dio

[0.7.0-alpha]

Changed

  • Generated .h file now automatically includes <stdint.h> (required for history states).

Added

Fixed

  • Pseudo state transition de-duplication now considers initial state parent incoming transition count too.
  • Improved exit handling optimization.

[0.6.1-alpha]

Added

  • Improve generated code clarity by showing step 1,2,3... and other small things.
  • Improve generated code clarity by removing if (true) for behaviors with no guard clause.
  • Improve generated code by nulling ancestor_event_handler only when actually needed. https://github.com/StateSmith/StateSmith/issues/14
  • Throw helpful exception message when duplicate state name used. Previously relied on c compiler and user to catch the problem.
VertexValidationException: Duplicate state name `OPTION` also used by state `Statemachine{LaserTagMenu1Sm}.State{MENUS_GROUP}.State{MAIN_MENU}.State{OPTION}`.
    Vertex
    Path: Statemachine{LaserTagMenu1Sm}.State{MENUS_GROUP}.State{MM_SHOW_INFO}.State{OPTION}
    Diagram Id: n0::n3::n2::n2
    Children count: 0
    Behaviors count: 3
    Incoming transitions count: 2

[0.6.0-alpha]

Fixed

Changed

Added

  • Support $choice pseudo states/points https://github.com/StateSmith/StateSmith/issues/40
    • supported in PlantUML as well.
  • Support multiple transitions for initial states, entry points, exit points. https://github.com/StateSmith/StateSmith/issues/40
    • Allow multiple transitions from initial state.
    • Initial state must have a default transition (always true).
    • Allow incoming transitions to initial state.
    • Allow multiple transitions from entry point.
    • Entry point must have a default transition (always true).
    • Allow incoming transitions to entry point.
    • Allow multiple transitions from exit point.
    • Exit point must have a default transition (always true).
  • Allow specifying else on transitions https://github.com/StateSmith/StateSmith/issues/59
  • Optimize pseudo state transitions to avoid code duplication.
    • Especially important for when History states are eventually implemented as the code de-duplication savings can rack up big there.
  • Improve entry and exit point validations.
    • Detect duplicate labels in the same scope.
    • Allow exit points to target parent state. Same as a self transition on parent.
  • grammar - support backtick strings and other ASCII symbols https://github.com/StateSmith/StateSmith/issues/42

[0.5.9-alpha]

Added

  • Runner - set process exit code to -1 on failure.
  • Runner - output additional exception details to <diagram_file_path>.err.txt. This is useful for generic assert like exceptions that don't yet have useful error messages. https://github.com/StateSmith/StateSmith/issues/38
  • validation - new exception: State machines must have exactly 1 initial state. Actual count: 0.
  • validation - helpful error messages for when state machine design is not found.
  • Add Describe() methods for Behavior and Vertex.
  • Add TracingModder class and experimental Runner.postParentAliasValidation() callback that allows graph modification.

Fixed


[0.5.7-alpha]

Added

Fixed


[0.5.6-alpha]

Added


[0.5.5-alpha]

Fixed

  • Fix generated comment regarding marking event as handled when not for a transition

[0.5.4-alpha]

Added


[0.5.3-alpha]

Fixed

  • Fix generated comment about exiting to LCA name
  • Fix FinishCodeBlock() when BracesOnNewLines = false;
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.17.5 147 4/19/2025
0.17.4 198 4/15/2025
0.17.3 142 2/22/2025
0.17.2 123 1/8/2025
0.17.1 5,354 10/16/2024
0.17.0 117 10/4/2024
0.16.0 120 9/22/2024
0.15.1 148 9/12/2024
0.15.0 142 9/9/2024
0.14.0 157 9/7/2024
0.13.2 136 9/4/2024
0.13.1 126 9/4/2024
0.13.0 139 8/30/2024
0.12.2-alpha 102 8/29/2024
0.12.1-alpha 94 8/29/2024
0.12.0-alpha 132 8/19/2024
0.11.2-alpha 139 7/6/2024
0.9.14-alpha 132 5/25/2024
0.9.13-alpha 109 5/14/2024
0.9.12-alpha 141 4/29/2024
0.9.10-alpha 172 4/24/2024
0.9.9-alpha 30,796 8/10/2023
0.9.7-alpha 173 7/25/2023
0.9.6-alpha 227 6/14/2023
0.9.5-alpha 165 5/29/2023
0.9.4-alpha-fix-2 155 5/26/2023
0.9.4-alpha 151 5/19/2023
0.9.3-alpha 323 4/30/2023
0.9.2-alpha 516 4/21/2023
0.9.1-alpha 147 4/17/2023
0.9.0-alpha 165 4/16/2023
0.8.15-alpha 160 4/15/2023
0.8.14-alpha-grammar-2 149 4/12/2023
0.8.14-alpha-grammar-1 164 4/7/2023
0.8.14-alpha 166 4/7/2023
0.8.13-alpha 182 4/4/2023
0.8.12-alpha 183 3/29/2023
0.8.11-alpha 169 3/27/2023
0.8.10-alpha 165 3/23/2023
0.8.9-alpha 183 3/21/2023
0.8.8-alpha 180 3/19/2023
0.8.7-alpha 172 3/16/2023
0.8.6-alpha 156 3/13/2023
0.8.5-alpha 164 3/12/2023
0.8.4-alpha 170 3/12/2023
0.8.3-alpha 164 3/10/2023
0.8.2-alpha 171 3/9/2023
0.8.1-alpha 228 3/8/2023
0.8.0-alpha 169 3/7/2023
0.7.16-alpha 167 2/24/2023
0.7.15-alpha 164 2/22/2023
0.7.13-alpha 173 2/14/2023
0.7.12-alpha 207 2/11/2023
0.7.11-alpha 182 2/8/2023
0.7.10-alpha 175 2/8/2023
0.7.9-alpha 167 2/8/2023
0.7.8-alpha 164 2/7/2023
0.7.7-alpha 174 2/6/2023
0.7.6-alpha 184 2/2/2023
0.7.5-alpha 177 2/1/2023
0.7.4-alpha 188 1/21/2023
0.7.3-alpha 190 1/8/2023
0.7.2-alpha 185 1/4/2023
0.7.1-alpha 175 1/3/2023
0.7.0-alpha 193 12/31/2022
0.6.1-alpha 182 12/17/2022
0.6.0-alpha 258 12/15/2022
0.5.9-alpha 207 10/10/2022
0.5.7-alpha 204 9/28/2022
0.5.6-alpha 217 9/25/2022
0.5.5-alpha 206 9/18/2022
0.5.4-alpha 208 9/16/2022
0.5.3-alpha 188 9/9/2022
0.5.2-alpha 182 9/8/2022
0.5.0-alpha 226 9/6/2022