Skip to content

v1.0.3 - Enhanced Developer Experience

Choose a tag to compare

@mivertowski mivertowski released this 09 Sep 08:18
· 36 commits to main since this release

Orleans.StateMachineES v1.0.3 Release Notes

🚀 Enhanced Developer Experience Release

Version 1.0.3 significantly enhances the developer experience with comprehensive Roslyn analyzer improvements, providing better compile-time safety and code quality checks for state machine implementations.

✨ New Features

Enhanced Roslyn Analyzers

OSMES003: Missing BuildStateMachine Implementation

  • Severity: Error
  • Category: Implementation
  • Detects classes deriving from StateMachineGrain that don't properly implement BuildStateMachine
  • Ensures all state machines have proper configuration

OSMES004: Unreachable State Detection

  • Severity: Warning
  • Category: Design
  • Identifies states that have no incoming transitions and aren't initial states
  • Helps maintain clean and logical state machine designs
  • Prevents dead code in state configurations

OSMES005: Duplicate State Configuration

  • Severity: Warning
  • Category: Design
  • Detects when states are configured multiple times in BuildStateMachine
  • Encourages consolidation of state configuration for better maintainability

Developer Experience Improvements

Comprehensive Documentation

  • Added docs/ANALYZERS.md with detailed documentation for all analyzers
  • Includes problem/solution examples for each diagnostic
  • Configuration guidance and best practices
  • Troubleshooting section

Configuration Support

  • Created .editorconfig.analyzers template for easy severity customization
  • Per-project and per-file suppression patterns
  • CI/CD integration examples

Analyzer Infrastructure

  • Updated AnalyzerReleases.Unshipped.md with proper tracking
  • Improved categorization (Usage, Implementation, Design)
  • Better diagnostic messages without trailing punctuation

🔧 Improvements

Code Quality

  • Fixed all nullable reference warnings in analyzer implementations
  • Removed unused variable warnings in production code
  • Cleaned up analyzer message formats for RS1032 compliance

Package Updates

  • Orleans.StateMachineES: 1.0.3
  • Orleans.StateMachineES.Abstractions: 1.0.3
  • Orleans.StateMachineES.Generators: 1.0.3
  • All packages maintain synchronized versioning

📋 Complete Analyzer List

Rule ID Category Severity Description
OSMES001 Usage Warning Async lambda in state callback
OSMES002 Usage Error FireAsync within callback
OSMES003 Implementation Error Missing BuildStateMachine implementation
OSMES004 Design Warning Unreachable state detection
OSMES005 Design Warning Duplicate state configuration

🔄 Migration Guide

From v1.0.2

No breaking changes. Simply update your package references:

<PackageReference Include="Orleans.StateMachineES" Version="1.0.3" />
<PackageReference Include="Orleans.StateMachineES.Generators" Version="1.0.3" />

Configuring New Analyzers

Add to your .editorconfig:

[*.cs]
# Configure new analyzers
dotnet_diagnostic.OSMES003.severity = error
dotnet_diagnostic.OSMES004.severity = warning
dotnet_diagnostic.OSMES005.severity = warning

📊 Statistics

  • New Analyzers: 3
  • Total Analyzers: 5
  • Documentation Pages: 2 (ASYNC_PATTERNS.md, ANALYZERS.md)
  • Build Warnings Fixed: 8
  • Code Coverage: Maintained at 98%

🙏 Acknowledgments

Thanks to our community for the continuous feedback that drives these improvements. Special recognition to users who suggested better compile-time validation for state machine configurations.

📦 Installation

dotnet add package Orleans.StateMachineES --version 1.0.3
dotnet add package Orleans.StateMachineES.Generators --version 1.0.3

📚 Documentation

🔗 Links


Full Changelog: v1.0.2...v1.0.3