Skip to content

Latest commit

Β 

History

History
352 lines (239 loc) Β· 13 KB

File metadata and controls

352 lines (239 loc) Β· 13 KB

Changelog

All notable changes to CTBase will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.18.8] - 2026-05-04

✨ New Features

SolverFailure Exception

  • New exception type: Added SolverFailure exception for reporting solver/integrator failures across the toolbox
  • Generic retcode support: Accommodates different solver types (SciML integrators, NLP solvers, linear solvers)
    • SciML: :Unstable, :DtLessThanMin, :MaxIters
    • NLP: :Infeasible, :MaxIterations, :Stalled
    • Linear: condition number indicators, singular matrix flags
  • Enriched context: Fields for retcode, suggestion, and context to provide actionable error information
  • User-friendly display: Emoji-based display with πŸ”§ for return codes
  • Cross-package utility: Suitable for use across CTFlows, CTDirect, and other control-toolbox packages

Documentation Updates

  • Exception guide: Added comprehensive SolverFailure section to docs/src/guide/exceptions.md
  • Hierarchy update: Updated exception hierarchy diagram to include SolverFailure
  • Quick reference: Added SolverFailure to decision table for exception selection
  • Usage examples: Provided examples for ODE integration, optimization, and linear solver failures

πŸ§ͺ Testing

  • Comprehensive test coverage: Added tests for SolverFailure in all test suites
    • test_types.jl: Hierarchy and construction tests
    • test_display.jl: Display tests (minimal, full fields, edge cases)
    • test_exceptions.jl: Exception throwing and output tests
  • All tests passing: 315 tests pass including 15 new tests for SolverFailure

πŸ“¦ API Changes

  • Exception module: Exported SolverFailure from CTBase.Exceptions
  • Display module: Added display logic in format_user_friendly_error and Base.showerror

[0.18.7] - 2026-03-31

🧹 Maintenance

Version Stabilization

  • Stable release: Bumped from 0.18.6-beta to 0.18.7 for stable release
  • No functional changes: Version promotion only, all features from 0.18.6-beta preserved

Code Quality

  • Code formatting: Applied JuliaFormatter across the codebase for consistent style
  • Standardized formatting: Improved readability and maintainability

Infrastructure

  • CI improvements: Enhanced CompatHelper workflow with subdirs input
  • Better dependency management: More robust compatibility checking

[0.18.6-beta] - 2026-03-17

πŸ›  Enhancements

Documenter Color Compatibility

  • ANSI escape sequence support: Added ANSI color formatting for exception display in generated documentation
  • Replaced printstyled calls: Migrated from printstyled() to raw ANSI escape sequences in src/Exceptions/display.jl
  • Automatic CSS conversion: Documenter now automatically converts ANSI sequences to CSS classes for web display
  • Helper functions: Added _ansi_color(), _ansi_reset(), and _print_ansi_styled() for consistent color formatting
  • Type support: Extended color formatting to support String, Symbol, and Type inputs

Testing Updates

  • Updated exception display tests to verify ANSI output format
  • All tests pass with new ANSI color implementation (106/106)

🧹 Maintenance

  • Version bump to 0.18.6-beta for feature enhancement

[0.18.5] - 2026-03-09

🧹 Maintenance

Documentation Reference Fixes

  • Fixed cross-reference syntax in docstrings by removing unnecessary @ref macros
  • Updated references in src/Exceptions/types.jl for cleaner documentation links
  • Updated references in src/Descriptions/ module files for consistency
  • Updated references in extension files (ext/TestRunner.jl, ext/DocumenterReference.jl, ext/CoveragePostprocessing.jl)
  • Improved documentation rendering and link consistency across the codebase

Version Update

  • Bumped version to 0.18.5 for maintenance release

[0.18.4] - 2026-03-02

🧹 Maintenance & Documentation

Test Artifacts Cleanup

  • Removed test/extras/ directory containing progress bar demos and example scripts
  • Removed test/src/ temporary artifacts from Documenter testing
  • Updated .gitignore to exclude test/_test_*/ pattern for temporary test artifacts
  • Improved repository hygiene by removing 2286 lines of test artifacts

πŸ“š Documentation

TestRunner Internal Documentation

  • Added comprehensive docstrings for internal TestRunner helper functions
  • Documented _FULL_BAR_THRESHOLD constant and its purpose for progress bar resolution
  • Added detailed documentation for severity mapping functions (_severity, _color_for_severity, _block_char_for_severity)
  • Documented backward compatibility shim _default_on_test_done with usage guidance

[0.18.3-beta] - 2026-02-19

πŸ›  Enhancements

  • TestRunner: Full-resolution progress bar up to 50 tests with cumulative coloring (green/yellow/red), brackets reflect max severity; compressed mode retains uniform bar.
  • Progress demo: Added test/extras/progress/real_bar.jl for realistic bar simulation with history (skips/failures).
  • Documentation: Module docstrings now appear on public API pages only.

πŸ§ͺ Testing

  • Updated progress display tests for new 50-width threshold and cumulative bar rendering.

[0.18.2-beta] - 2026-02-16

🧹 Maintenance

  • Version bump only; no functional changes recorded.

[0.18.1-beta] - 2026-02-16

🧠 Documentation

  • Public API pages now include module docstrings (private pages unaffected).

🧹 Maintenance

  • Removed .vscode/ artefacts from version control (gitignore hygiene).

[0.18.0-beta] - 2025-02-04

πŸš€ Major Features

Modular Architecture Overhaul

  • Complete reorganization of the codebase into thematic modules:
src/
β”œβ”€β”€ Core/           # Fundamental types and utilities
β”œβ”€β”€ Exceptions/     # Enhanced error handling system
β”œβ”€β”€ Unicode/        # Unicode character utilities
β”œβ”€β”€ Descriptions/   # Description management
└── Extensions/     # Extension system with tag-based dispatch
  • Improved maintainability through clear separation of concerns
  • Better testability with isolated module boundaries

Enhanced Exception System

  • New exception types with rich context:
    • PreconditionError: Replaces UnauthorizedCall for state-related errors
    • ParsingError: For syntax and structure validation errors
    • AmbiguousDescription: Enhanced with diagnostic capabilities
    • ExtensionError: Improved with feature and context information
  • Rich error messages with optional fields for suggestions, context, and diagnostics
  • User-friendly display with emojis and structured formatting
  • Better debugging experience with detailed error context

Professional Extension System

  • Tag-based dispatch for extension points:
    • AbstractDocumenterReferenceTag / DocumenterReferenceTag
    • AbstractCoveragePostprocessingTag / CoveragePostprocessingTag
    • AbstractTestRunnerTag / TestRunnerTag
  • Three core extensions:
    • DocumenterReference: API documentation generation
    • CoveragePostprocessing: Test coverage analysis and reporting
    • TestRunner: Advanced test execution with glob patterns
  • Clean separation between extension points and implementations

Advanced Test Runner

  • Glob pattern support for test selection
  • Configurable filename/function name builders
  • Dry run mode for test planning
  • Recursive test discovery in subdirectories
  • Integration with Julia's test ecosystem

πŸ“ˆ Enhancements

Documentation Improvements

  • Complete documentation rewrite with modular tutorials
  • API reference generation with automatic categorization
  • Enhanced coverage reporting with visual summaries
  • Professional documentation guides for developers

Testing Infrastructure

  • Modular test organization by functionality (not source structure)
  • Comprehensive test coverage with quality metrics
  • Automated code quality checks with Aqua.jl
  • Performance and type stability testing

Developer Experience

  • Improved error messages with actionable suggestions
  • Better Unicode support for mathematical notation
  • Enhanced description management with intelligent completion
  • Professional project structure following Julia best practices

πŸ”§ Internal Changes

Code Quality

  • Strict adherence to Julia style guidelines
  • Comprehensive type annotations for better performance
  • Memory allocation optimization for critical paths
  • Extensive documentation for all public APIs

Testing Standards

  • Contract-first testing methodology
  • Unit and integration test separation
  • Mock and fake implementations for isolated testing
  • Deterministic and reproducible tests

Performance

  • Type stability improvements throughout the codebase
  • Reduced memory allocations in hot paths
  • Optimized Unicode operations
  • Efficient description matching algorithms

πŸ“¦ Dependencies

New Dependencies

  • Aqua = "0.8": Code quality and consistency checks
  • OrderedCollections = "1": Ordered data structures for testing

Updated Compatibility

  • Julia 1.10+ (increased from 1.8+)
  • Updated all package compatibility bounds

πŸ—οΈ Project Structure

New Directory Organization

src/
β”œβ”€β”€ Core/           # Fundamental types and utilities
β”œβ”€β”€ Exceptions/     # Enhanced error handling system
β”œβ”€β”€ Unicode/        # Unicode character utilities
β”œβ”€β”€ Descriptions/   # Description management
└── Extensions/     # Extension system

test/
β”œβ”€β”€ suite/          # Modular test suites by functionality
β”œβ”€β”€ extras/         # Example tests and diagnostics
└── src/           # Source-level integration tests

docs/
└── src/           # Modular documentation tutorials

Extension System

ext/
β”œβ”€β”€ CoveragePostprocessing.jl  # Coverage analysis
β”œβ”€β”€ DocumenterReference.jl    # API documentation
└── TestRunner.jl             # Advanced test execution

🎯 Breaking Changes

See BREAKINGS.md for detailed migration guide.

πŸ™ Acknowledgments

This major release represents a significant investment in code quality, developer experience, and long-term maintainability. The modular architecture provides a solid foundation for future enhancements while maintaining backward compatibility where possible.


[0.18.0-beta.1] - 2025-02-09

πŸš€ TestRunner Enhancements

Advanced Progress Bar System

  • Adaptive bar width: Width equals total for ≀20 tests, fixed at 20 for >20 tests
  • Visual consistency: Uses β–ˆ (filled) and β–‘ (empty) characters without gaps
  • Smart failure detection: Correctly detects both exceptions and @test assertion failures
  • Zero-padded indices: Aligned test numbers for better readability

Robust Failure Detection

  • Before/after results scanning: Compares testset results before and after eval
  • Recursive failure detection: Scans nested testsets for Test.Fail and Test.Error
  • More reliable than anynonpass: Works regardless of testset completion timing

Enhanced User Experience

  • Path prefix stripping: Users can write test/suite or suite interchangeably
  • Guard against conflicts: Prevents test/ subdirectory in test directory
  • Comprehensive callbacks: on_test_start and on_test_done with TestRunInfo context
  • Configurable progress: Built-in progress bar with option for custom callbacks

Professional Documentation

  • Complete docstring overhaul: All functions follow project documentation standards
  • Safe, runnable examples: All examples use julia-repl with proper imports
  • Cross-reference resolution: Fully qualified @ref links to prevent header conflicts
  • API reference reorganization: Clean separation in src/api/ without prefixes

πŸ“ˆ Documentation Improvements

Better Organization

  • User guides in src/guide/: Clear separation from API reference
  • API reference in src/api/: Auto-generated with clean filenames
  • Updated navigation: Changed "Tutorials" to "User Guides" for clarity
  • Fixed cleanup: Generated API files properly removed after build

πŸ”§ Technical Improvements

Code Quality

  • Fixed @ref conflicts: All TestRunner references now use fully qualified names
  • Enhanced error handling: Better detection and reporting of test failures
  • Improved type safety: Comprehensive type annotations throughout
  • Memory optimization: Efficient progress bar rendering and failure detection

[0.17.4] - Previous Release

πŸ“ Previous Changes

  • Stable version with basic exception handling
  • Simple description management
  • Basic Unicode utilities
  • Foundation for Control Toolbox ecosystem

For older versions, please refer to the git commit history.