Skip to content

Release Notes - Version 2.2.3

Choose a tag to compare

@ratchanonth60 ratchanonth60 released this 16 Feb 08:35
· 9 commits to main since this release

Release Notes - Version 2.2.3

πŸš€ New Features

Centralized Logging & Error Handling (ROP)

  • Railway Oriented Programming (ROP): Adopted the ROP pattern across all core services and ViewModels (MainViewModel, ObservationViewModel, FluxViewModel, CalibrationViewModel) to ensure explicit and verifiable error handling.
  • Persistent Logging: Introduced ILoggerService and LoggerService to write logs to the logs/ directory, improving post-mortem analysis and debugging.
  • Global Exception Handling: Unhandled exceptions are now caught and logged via App.xaml.cs to prevent silent crashes.

Improved Fitting Engine

  • Refactored MathService: Updated MathService to integrate IHemgFittingService via dependency injection, improving testability and modularity.
  • HEMG Stability: Enhanced HemgFittingService with better error trapping and logging.
  • Validation: Added IsValid checks to fitting results to ensure only valid curves are rendered on the plots.

Async I/O & UI Responsiveness

  • Asynchronous File Operations: Converted BaselineFileService, FileHelper, and ObservationExcelHelper to use fully asynchronous patterns, preventing UI freezes during large file processing.
  • Progress Feedback: Updated status bars in UnifiedMainWindow to support indeterminate states for operations with unknown duration.

πŸ› Bug Fixes

  • Kalman Filter: Fixed naming conventions and initialization logic in MathService.KalmanFilter.
  • Plotting: Resolved issues where invalid fitting curves could cause rendering artifacts.
  • UI State: Fixed ProgressBar ranges and indeterminate states to correctly reflect background activity.

πŸ›  Technical Improvements

  • Modern Syntax: Refactored code to use C# collection expressions ([...]) for cleaner and more readable code.
  • Thread Safety: Updated LoggerService to use modern thread-locking mechanisms.
  • Dependency Injection: Registered IHemgFittingService and ILoggerService in the global DI container.