# Change Log All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.3] - [2026-08-xx] ### Added * **Reaction Progression:** Multi-stage reaction template generation to handle multi stage reaction progressions, copolymerizations and small molecules which needs few templates for the polymerization reactions. * **Looping Control:** A new loop control parameter in the input file to prevent the explosion of unnecessary reactions. Defaults to `5` loops, but can be optimized by setting `loop: ` or disabled entirely with `loop: False`. * **Advanced Detection:** Index-based functional group detection and index-based reaction detection to accurately identify reacting atoms post-first reaction. * **Pathway Deduplication:** NetworkX-based deduplication detection to actively filter redundant reaction pathways. * **Reaction Libraries:** Robust library modules for various polymer chemistries, including Epoxies, Polyamides, Polyesters, Polycarbonates, Polysiloxanes, Polyureas, Polyurethanes, and Vinyl polymers. * **Force Field Parameters:** PCFF force field additions, specifically including new `s_m` sulfone parameters. ### Changed * **Library Organization:** Centralized the reaction libraries into dedicated modules to improve maintainability and expandability. * **Structure Generation:** Improved 3D molecule embedding to better handle highly congested polymer structures. ### Removed * **Legacy Code:** Removed legacy compatibility shims (`_compat.py`). ### Fixed * Addressed various stability and progression issues tracked in recent bug reports. * Improved Error handling when no reaction instances are found for the specified monomer combinations. ## [0.2.3] - [2026-06-24] ### Added * Added a new `Session` class to centralize session-based input/output handling across the entire package. * Added a new `ARXCLI` module to provide a streamlined Command-Line Interface for running the AutoREACTER workflow with a single command. - The CLI supports input file parsing, session management, and orchestrating the end-to-end workflow. ### Changed * Centralized state management across the entire package. The `Session` object is now the single source of truth. All modules and functions have been refactored to use the `Session` for accessing inputs, outputs, and configuration. * Centralized the versioning system to dynamically pull from the package's `__version__` attribute. * Updated all documentation, examples, and CI configuration to reflect the new API and workflow changes. ## [0.2.2] - 2026-06-09 ### Added * Added a new PyPI-ready version of **AutoREACTER**. * Added new reactions to the **reaction library**. * Added the `ARXSession` module for centralized session-based input/output handling. * Added unit tests for the LUNAR API wrapper. * Added `MANIFEST.in` to support packaging of required non-Python files. * Added outputs save direction same as the input file directory. ### Changed * Refactored cache and staging logic to use temporary/session-based directories instead of manually managed `base_dir` paths. * Updated `.frc` file handling to use package-included force field files. * Moved `frc_files` inside the AutoREACTER package for more reliable access after installation. * Improved PCFF `.frc` directory discovery to be more robust against repository layout changes. * Updated `prepare_reactions.py`, `molecule_3d_preparation.py`, `REACTER_files_builder.py`, and `lunar_api_wrapper.py` to use session-based inputs. * Updated documentation, examples, CI configuration, and getting-started instructions. ### Deprecated * Deprecated direct `base_dir`-style path handling in favor of `ARXSession`-based workflow management. ### Removed * Removed older manual cache directory resolution logic. * Removed temporary/editor backup files from the repository. * Removed outdated path-resolution behavior that depended on repository-relative assumptions. * Removed the old dated folder output method. ### Fixed * Fixed `.frc` file path resolution issues when running AutoREACTER from different locations. * Improved error messages for missing or unresolved `.frc` files. ### Security * No security-related changes in this release. --- ## [0.2.1] - 2026-05-04 ### Fixed - Fixed issue where `cache/00_cache` was not cleared when initiating a new AutoREACTER run. - Improved cache handling to prevent bugs caused by deleting cache files in the middle of a run. - Added a warning message when the `--cleanup` command is used to delete all cached runs, to prevent accidental data loss. ## [0.2.0] - 2026-05-01 ### Breaking - Migrated to a class-based architecture (not backward compatible). - Updated input schema: explicit density and temperature per replica required. - Replaced RDKit atom map numbers with isotope-based tracking. - Changed output structure to dated run directories. - Introduced library-driven workflow for reactions and functional groups. ### Added - CLI interface (AutoREACTER.py) with --help and --cleanup support. - Jupyter-based interactive visualization tools. - Support for string-based LAMMPS atom types (e.g., PCFF). - Force field selection via input.json. - Retention cleanup utility for managing old runs. - Modular detectors and libraries for workflow stages. - Control over non-reactive species retention. ### Changed - Refactored core workflow into modular classes. - Improved atom mapping robustness using isotopes. - Optimized input generation to reduce unnecessary LAMMPS files. ### Fixed - Enforced strict validation of external tool paths. --- ## [0.1.0] - 2026-02-17 ### Added - Initial release of AutoREACTER as a script-based workflow for polymer simulation preparation. - Support for Jupyter Notebook–based interactive execution. - Functional group detection using SMARTS-based pattern matching (step-growth monomers only). - Library-driven workflow with structured definitions for functional groups and reactions. - Deterministic reindexing for consistent reaction templates and mapping files. - Generation of REACTER-compatible LAMMPS input files using integer-based atom typing. - Unified input parsing via a single structured input file for simulation configuration.