Changelog ========= All notable changes to PyStrata are documented in this file. The format is based on `Keep a Changelog `_, and this project adheres to `Semantic Versioning `_. Unreleased ---------- Added ^^^^^ * Comprehensive documentation reorganization with scientific library structure * Enhanced bibtex support with expanded reference database * New examples gallery organization with categorized notebooks * Improved theory section with mathematical foundations * Developer guide with contribution guidelines Changed ^^^^^^^ * Documentation structure follows standard scientific library layout * Examples organized by complexity and application area * References expanded with DOI links and complete citation information Version 0.5.5 (2024-01-XX) --------------------------- Added ^^^^^ * Logic tree functionality for uncertainty quantification * Enhanced profile generation capabilities * Miller-Rice logic tree integration * JSON serialization for logic trees Changed ^^^^^^^ * Build system migrated from hatch to uv + setuptools-scm * Improved version detection with setuptools-scm integration * Updated CI/CD workflows for uv-based builds Fixed ^^^^^ * Dependency resolution issues with modern Python packaging * Version detection compatibility across different installation methods Version 0.5.4 -------------- Added ^^^^^ * Additional nonlinear soil models * Enhanced output options * Improved RVT calculations Fixed ^^^^^ * Bug fixes in frequency domain calculations * Memory optimization for large profile suites Version 0.5.3 -------------- Added ^^^^^ * Frequency-dependent damping support * Enhanced profile simulation capabilities * Additional output formats Changed ^^^^^^^ * Performance improvements for time series analysis * Better error handling and validation Version 0.5.2 -------------- Added ^^^^^ * RVT-based analysis capabilities * Source theory motion generation * Enhanced transfer function calculations Fixed ^^^^^ * Various numerical stability improvements * Documentation corrections Version 0.5.1 -------------- Added ^^^^^ * Additional soil constitutive models * Improved profile generation * Enhanced output processing Fixed ^^^^^ * Bug fixes in nonlinear calculations * Memory leak fixes Version 0.5.0 -------------- Added ^^^^^ * Major API redesign for better usability * Modular architecture with interchangeable components * Comprehensive test suite * Type hints throughout codebase Changed ^^^^^^^ * Breaking changes to API for improved consistency * Better separation of concerns between modules * Improved documentation structure Removed ^^^^^^^ * Deprecated legacy interfaces * Obsolete calculation methods Migration Guide --------------- **From 0.4.x to 0.5.x** The 0.5.0 release introduced significant API changes. Key migration steps: 1. **Import Changes** .. code-block:: python # Old import pystrata.motion as motion # New import pystrata.motion 2. **Profile Creation** .. code-block:: python # Old profile = Profile(layers) # New profile = pystrata.site.Profile(layers) 3. **Calculator Interface** .. code-block:: python # Old calc = Calculator() calc.run(motion, profile) # New calc = pystrata.propagation.LinearElasticCalculator() calc(motion, profile, location) **From 0.3.x to 0.4.x** * Updated motion loading interface * Changes to output handling * New profile specification format Development History ------------------- PyStrata was originally developed as part of research activities at the University of Texas at Austin. The initial focus was on implementing and validating equivalent linear site response methods. Key development milestones: * **2016**: Initial development and basic time series analysis * **2017**: Random vibration theory implementation * **2018**: Nonlinear methods and frequency domain calculations * **2019**: Profile generation and uncertainty analysis * **2020**: Major API redesign and documentation improvements * **2021**: Enhanced testing and validation * **2022**: Performance optimizations and additional features * **2023**: Logic tree implementation and uncertainty quantification * **2024**: Modern packaging migration and documentation reorganization The project continues to evolve with contributions from the earthquake engineering community and ongoing research in computational seismology. Contributing to Changelog -------------------------- When contributing to PyStrata: 1. Add entries to the "Unreleased" section 2. Use the standard categories: Added, Changed, Deprecated, Removed, Fixed, Security 3. Reference issue numbers where applicable 4. Follow the established format and style For more details, see our :doc:`developer/contributing` guide.