# Changelog
All notable changes to this project will be documented in this file.

## [3.10.0] - 2026-10-12

### Vector PDF Plotting & Modular Visualization Architecture
- **Vector PDF Export Engine**: Implemented high-fidelity vector PDF plotting (`PdfPlotter`, `correlation_pdfgen`) for single histogram and multi-dataset comparison overlay plots with embedded vector typography, precise grid clipping, custom styling, and legends.
- **PlotController Subsystem Decomposition**: Refactored monolithic `PlotController` into focused single-responsibility services adhering to SOLID principles:
  - `PlotViewportNavigator`: Decoupled pan, continuous ROI box zoom, wheel zoom, and manual axis limits.
  - `PlotMarkerManager`: Thread-safe lifecycle and layout management for custom measurement markers.
  - `PlotRenderPipeline`: Asynchronous background rendering with LRU cache eviction and cancellation.
  - `PlotExportManager`: Thread-safe export pipeline coordinating SVG, PNG, and PDF disk writes with status notification callbacks.
- **Plotter Internal Linkage**: Enclosed SVG rendering state (`SvgComparisonRenderer`, `SvgHistogramRenderer`) in anonymous namespaces to guarantee internal linkage, preventing ODR symbol leakage and enabling compiler optimizations.

### Material Slint UI Architecture & Modularization
- **PreviewCard Component Decomposition**: Refactored `PreviewCard.slint` into seven focused subcomponents (`WorkflowStepper`, `PreviewHeader`, `HeroEmptyState`, `PlotReticleOverlay`, `ImagingToolbar`, `CurveSidebar`, `PlotDataTable`) under `ui/cards/preview/components/` with explicit layout bounds.
- **Property Aggregation & Event Streamlining**: Consolidated 59 redundant property aliases in `AppWindow.slint` into domain model structs (`FileMetadata`, `WorkflowState`) and streamlined property change listeners.
- **Controller Decoupling & Direct Routing**: Removed 18 trivial passthrough trampoline methods from `AppController`, binding UI callbacks directly to `OptionsResetService` and `BondCutoffController`.

### Analytical Engine & C++23 Safety
- **Mandatory `[[nodiscard]]` Enforcement**: Enforced `[[nodiscard]]` attributes across pure analytical calculators and mathematical utilities (`DistributionFunctions`, `StructuralElectronicCorrelation`, `FFTUtils`, `ChiralityCalculator`, `SteinhardtCalculator`, `StructureFactorCalculator`, `XRDCalculator`, `CNACalculator`, `CNCalculator`, `DADCalculator`, `MotifFinder`, `PADCalculator`, `RDCalculator`, `RDFCalculator`, `VoronoiCalculator`, `MSDCalculator`, `VACFCalculator`).

### Python Ecosystem & Packaging
- **Import Resolution & Dual Packaging**: Aligned import resolution between `matcorr` and `correlation`, re-exporting adapters and handling graceful pytest skips when the C++ extension is unbuilt.
- **PyPI Trove Classifiers Compliance**: Corrected package metadata in `pyproject.toml` by removing invalid `Materials Science` classifier and adhering to PyPI Trove standards.
- **Project Version Milestone**: Bumped core engine project version to `3.10.0`.

## [3.9.12] - 2026-10-12

### Interactive Plotting & Imaging Toolbar
- **Continuous Box Zoom**: Preserved active zoom mode (`active_tool = 1`) across sequential selection box releases, allowing consecutive ROI box zoom operations without having to re-engage the toolbar button between drags.
- **Dedicated Click-to-Zoom-Out Tool**: Added an interactive Zoom Out tool (`active_tool = 4`) and custom Material Design `zoom_out.svg` icon to the floating imaging toolbar, allowing users to step viewport limits out (~1.18x) centered on clicked coordinates.
- **Mode-Aware Dynamic Reticle & Axis Guidelines**: Enhanced plot hover crosshairs to dynamically highlight the relevant measurement axis (high-contrast 2.5px vertical guideline for +X markers, high-contrast 2.5px horizontal guideline for +Y markers) and styled dual guidelines in cohesive tertiary amber tint during zoom modes.
- **Precision Floating Mode Indicator Badges**: Implemented mathematically centered cursor-adjacent badge pills (`+14px, -22px`) displaying active mode glyphs (`Icons.zoom_in`, `Icons.zoom_out`, `+X`, `+Y`) with mode-specific accent styling.
- **Workflow Stepper Relocation**: Streamlined `PreviewCard` UI layout by elevating and polishing the workflow step indicator above the main visualization area.

### Build & Platform Modernization
- **CI Matrix Cleanup**: Removed legacy macOS 13 x86_64 runner configurations from packaging and automated build workflows.
- **Atom Pointer Formatting**: Cleaned up element pointer initialization formatting in `Atom.hpp`.
- **Project Version Milestone**: Bumped core engine project version to `3.9.12`.

## [3.9.11] - 2026-10-08

### Memory Optimization & High-Throughput I/O
- **Atom Flyweight Pattern (`ElementPool`)**: Interned chemical `Element` structs through a thread-safe `ElementPool`, transitioning `Atom` to store lightweight immutable pointers (`const Element*`) instead of value copies. Drastically reduces memory footprint and improves cache locality for multi-million atom trajectories.
- **Zero-Allocation Coordinate & Cell Parsing**: Replaced heap-allocating `std::stod`/`std::stoi` calls in `XYZReader` and `CifReader` with `std::from_chars` and `std::string_view`, accelerating file ingestion throughput and eliminating transient allocations during trajectory parsing.

### Calculator Robustness & Boundary Condition Guards
- **Partial Key Bounds Protection**: Added defensive index bounds verification to `RDFCalculator` and `DistributionFunctions::getPartialKey`, returning fallback `"Unknown-Unknown"` keys when atom species indices exceed element array boundaries.
- **Dynamic & Spatial Calculator Edge Cases**:
  - Clamped angular dot products in `HBondCalculator` via `std::clamp` to strictly avoid NaN results from floating-point roundoff in `std::acos`.
  - Hardened normalization in `PADCalculator` to ensure non-zero count thresholds.
  - Guarded `DynamicsAnalyzer::calculateVDOS` against non-positive timesteps ($\le 0.0$) and added zero-atom trajectory protection across VACF and MSD routines.

### Material UI & Interactive Plotting
- **Modular Side Panel Architecture**: Decomposed monolithic `SidePanelHost.slint` into six isolated single-responsibility panel components under `ui/nav/panels/` (`OperationsPanel`, `StructurePanel`, `AdvancedOptionsPanel`, `PlotSettingsPanel`, `AnalysesPanel`, `SaveExportPanel`), strictly enforcing component granularity and clean model bindings.
- **Ashcroft Weight-Ranked Partial Ordering**: Enforced deterministic series ordering across SVG preview rendering and Slint toggle models where `Total` is permanently anchored at index 0 and partial curves are ranked descending by Ashcroft-Langreth weight (with L1 curve integral magnitude fallback and alphabetical tie-breaking).
- **Default 10-Curve Visibility Gate**: Configured `PlotSeriesManager` to enable `Total` and a maximum of 10 highest-ranked partial curves by default, ordering remaining partials descending by weight below visible entries in the sidebar checklist.
- **Stable Palette Engine & SVG Layering**: Decoupled color assignment from visibility toggles to guarantee curve colors remain strictly stable across toggle interactions. `Total` renders in theme-adaptive neutral (`#000000` Light / `#FFFFFF` Dark) physically layered on top of partial polylines in the SVG canvas, with legend entries aligned 1:1 top-to-bottom with the sidebar checklist.
- **Smooth Plot Panning & Mouse Handling**: Consolidated fragmented `mouse-x` and `mouse-y` property change triggers in `PreviewCard.slint` into a unified `moved` event handler, eliminating input lag and redundant redraws during canvas panning.
- **Comparison Overlay State Synchronization**: Added `pinned_runs_count` tracking and responsive reset controls across comparison overlay panels.

### Build System, Modular Targets & WebAssembly
- **Modular Plotter Libraries**: Isolated vector font data and embedded PDF generation into dedicated CMake targets (`correlation_pdfgen` C11 library and `plotters_obj` object library).
- **WebAssembly Whole-Archive Linking**: Configured `--whole-archive` linker flags and explicit target dependencies for Emscripten / WebAssembly builds (`correlation_wasm`).
- **Extended Roboto Typography**: Integrated extended Roboto vector font glyph definitions supporting international character sets.
- **Dependency & Release Optimization**: Optimized `FetchContent` dependency configurations in `Dependencies.cmake` and streamlined release workflow matrices.

## [3.9.10] - 2026-10-05

### Order Parameter Analysis & Steinhardt Averaged Invariants
- **Lechner-Dellago Averaged Invariants ($\bar{q}_l, \bar{w}_l$)**: Implemented coarse-grained Steinhardt bond-orientational order parameters averaging complex spherical harmonics over the local coordination shell $N_b(i)$, significantly improving structural discrimination in disordered and amorphous phases.
- **Normalized $\hat{W}_4$ Metric**: Added $\hat{W}_4 = W_4 / (\sum |q_{4m}|^2)^{3/2}$ invariant computation for cubic and icosahedral symmetry characterization.
- **Reference Parity Benchmarks**: Validated Steinhardt order parameter accuracy against classical analytical reference values for BCC, FCC, HCP, and icosahedral clusters.

### Core Crystallography & Automatic Supercell Expansion
- **Automatic Supercell Expansion**: Added auto-supercell generation (`Cell::expandToCutoff`) replicating simulation cells whose minimum perpendicular widths are smaller than the calculation cutoff ($2 \times r_{\text{cut}}$) to preserve the minimum image convention and eliminate finite-box artifacts.
- **Element Indexing & Direct Lookup**: Refactored `Cell` and `RDFCalculator` to use $O(1)$ direct element lookup arrays, accelerating pairwise histogram binning for multicomponent systems.
- **XYZ Parsing Throughput**: Optimized line tokenization in `XYZReader` by avoiding heap reallocations during coordinate scanning.

### Material UI & Interactive Accessibility
- **InputSelect Keyboard Navigation**: Added full keyboard navigation (Up/Down arrow scrolling, Enter/Space selection, Escape dismissal) and item hover highlighting to the Material `InputSelect` drop-down component.
- **Preset Management**: Updated default ring statistics cutoff and presets across analysis configurations.

### Architecture Modernization & CI Automation
- **AnalysisRunner Thread Lifecycle**: Decomposed worker thread lifecycle management, progress polling, and task completion handling into modular, single-responsibility methods.
- **Type-Safe Enums & Code Hygiene**: Added explicit underlying types to analysis and distribution enums, refreshed `clang-tidy` rules, and removed redundant string initializations.
- **Composite GitHub Actions**: Extracted CI workflows into reusable composite GitHub Actions (`.github/actions/`), standardizing build, test, and release pipelines across Linux, macOS, and Windows.
- **macOS Build Hardening**: Configured strict build flags and artifact packaging verification checks in release workflows.

## [3.9.9] - 2026-09-29

### PyPI Distribution & MatCorr Python Suite
- **PyPI Package Brand (`matcorr`)**: Renamed and registered Python distribution metadata under `matcorr` (Materials Correlation), providing structural and correlation analysis for liquid, amorphous, and nanostructured materials simulations.
- **Python CLI Suite (`matcorr` / `mcor` / `correlation`)**: Implemented Python command-line interface in `python/matcorr/cli.py` and `python/matcorr/__main__.py` with full material presets (amorphous, liquid, crystalline), simulation frame windowing, kernel smoothing, and automated CSV export.
- **Automated PyPI Release Pipeline**: Integrated `cibuildwheel` matrix (Linux x86_64/aarch64, macOS Intel/Apple Silicon, Windows AMD64) and PyPI Trusted Publishing via GitHub Actions OIDC (`pypa/gh-action-pypi-publish@release/v1`) directly into `.github/workflows/release.yml`.
- **Static Structure Ingestion**: Extended Python I/O bindings (`correlation.read()`) with automated `readStructure` fallback for static CAR, CIF, and crystal coordinate files.
- **C++ Version Milestone**: Bumped core engine project version to `3.9.9`.

## [3.9.8] - 2026-09-28

### Interactive Plotting & Coordinate Inspection
- **Interactive Box Zoom & View Reset**: Implemented interactive rectangle-based box zooming (`handleZoomRect`) and reset-to-fit auto-scaling (`handleResetZoom`) across SVG histogram and comparison plots.
- **Dynamic Cursor Coordinate Inspection**: Integrated real-time screen-to-data coordinate transformation (`screenToData`) displaying precise $(X, Y)$ values dynamically on hover.
- **Reference Line Markers**: Added clicked-coordinate reference marker inspection (`handleAddMarkerAt`, `handleClearMarkers`) allowing vertical ($X$) and horizontal ($Y$) alignment guides with color-coded badges and clear actions.
- **Preview Card Toolbar Controls**: Added zoom reset, clear markers, and interaction toolbars in `PreviewCard.slint` backed by Material Design icon assets.

### UI & Architecture Polish
- **Centralized Export Workflow**: Streamlined `PreviewCard.slint` by removing redundant local save plot triggers, consolidating all export functions into dedicated export options panels.
- **Navigation & Layout Improvements**: Refined `MiniSideBar.slint` navigation button structure and `AppWindow.slint` responsive card presentation.
- **Controller Modernization**: Refactored `PlotController` interaction APIs to ensure clean variable naming standards, comprehensive Doxygen interface documentation, and strict static analysis compliance.
- **Repository Hygiene**: Excluded transient `.agents/.hook_state.json` from git tracking.

## [3.9.7] - 2026-09-27

### Consolidated Zip Export Bundles & Export UI
- **Embedded Miniz Zip Archive Engine**: Integrated embedded `miniz` library via CMake FetchContent with move-only RAII `ZipArchiveWriter` wrapping `mz_zip_archive`.
- **ExportBundleWriter Pipeline**: Implemented consolidated export bundle writer (`include/writers/ExportBundleWriter.hpp`, `src/writers/ExportBundleWriter.cpp`) packaging in-memory SVG plots (`plots/`), CSV tabular datasets (`csv/`), HDF5 containers (`hdf5/`), Apache Parquet tables (`parquet/`), and simulation parameters (`summary.txt`) into a single archive.
- **Export Options & Granular Algorithm Filtering**: Introduced `ExportOptions` struct with fine-grained algorithm selection (RDF, SQ, XRD, MSD, VACF, VDOS, DAD, PAD, CN, etc.) and format toggles (CSV, SVG, HDF5, Parquet, Zip Bundle).
- **Dedicated Export UI Cards**: Added `ExportOptionsCard.slint` and `SaveExportPanelCard.slint` with dynamic checkboxes, algorithm filter cards, format selection, and save directory dialogs wired into `MiniSideBar` and `AppWindow`.
- **CLI Zip & Bundle Arguments**: Added `--zip` and `--bundle` flags to `CliParser` and `correlation-cli` for batch calculation export packaging directly from the terminal.

### Application Architecture Decomposition (SOLID Refactoring)
- **Specialized Domain Services**: Decomposed monolithic `AppBackend` into single-responsibility domain services:
  - `TrajectoryLoader`: Frame ingestion, trajectory format validation, and dataset lifecycle management.
  - `AnalysisDispatcher`: Asynchronous calculation orchestration, worker task dispatching, and export execution.
  - `BondCutoffService` & `BondCutoffController`: Dynamic covalent radius lookups, cutoff matrix management, and view model synchronization.
  - `PhysicsService`: Isolated physical property evaluations, unit cell validation, and density calculations.
  - `ValidationRuleService`: Extracted input validation business logic from `InputValidator` into isolated validation rules.
  - `OptionsSyncService` & `OptionsResetService`: Bidirectional synchronization between Slint UI and `ProgramOptions`, plus options reset policies.
  - `PlotSeriesManager` & `PlotTableFormatter`: Decoupled plot series state management and formatted data table generation.
- **Elimination of Legacy AppBackend**: Completely removed legacy `AppBackend` facade and transitional adapters in favor of direct dependency injection across `AppController`, view models, and CLI runners.
- **Application Directory Modularization**: Reorganized application headers and sources into domain-driven subdirectories (`include/app/core/`, `include/app/services/`, `include/app/viewmodel/`, `include/app/formatters/`).
- **Service Integration Tests**: Migrated application integration testing suites to `tests/functional/app/ServiceIntegrationTests.cpp`.

### GPU Acceleration & Calculator Modernization
- **Multi-Vendor GPU Acceleration (CUDA / HIP)**: Added and updated GPU acceleration support for pairwise distance calculations (`GPUDistanceCalculator`), Steinhardt order parameters (`GPUSteinhardtCalculator`), structure factor $S(Q)$ (`GPUSQCalculator`), and Powder XRD Debye scattering (`GPUXRDCalculator`).
- **HIP Kernel & Portability Modernization**: Refactored GPU kernel launches, portability wrappers (`GPUPortability.hpp`), and preprocessor conditionals for seamless compilation across NVIDIA CUDA and AMD ROCm/HIP.
- **Calculator Directory Reorganization**: Reorganized calculator interfaces and implementations into domain categories (`calculators/spatial/`, `calculators/scattering/`, `calculators/temporal/`, `calculators/order/`, `calculators/gpu/`, and `calculators/ml/`).

### Numerical Stability & Bug Fixes
- **Search Grid Degeneracy Guards**: Added numerical degeneracy guards to `buildSearchGridConfig` preventing division-by-zero or infinite loops on non-positive cutoffs, zero-volume cells, and collinear lattice vectors.
- **Parallel Test Race Condition Fix**: Isolated output file prefixes across `WriterTests` to prevent parallel CTest deletion race conditions during automated testing runs.

## [3.9.6] - 2026-09-24

### WebAssembly & Browser Runtime
- **Standalone Web Application Decoupling**: Relocated client-side WebAssembly application files from `ui/wasm_app/` to dedicated top-level `web/` (`web/app.js`, `web/index.html`, `web/style.css`, `web/worker.js`):
  - Cleanly decoupled browser demonstration runtime from desktop Slint UI.
  - Updated GitHub Actions CI deployment pipeline (`.github/workflows/wasm.yml`) and project documentation.

### UI / UX Modernization & Slint Architecture
- **XRD Options Card**: Added dedicated Powder X-ray Diffraction configuration card (`ui/cards/xrd_card.slint`), integrating radiation source presets (Cu, Mo, Fe, Ag, Cr) and angular $2\theta$ range parameters.
- **Collapsible MiniSideBar & Navigation**: Added `MiniSideBar` component with Material Design icons for streamlined workspace section navigation.
- **MaterialScrollView**: Implemented custom `MaterialScrollView` component replacing standard Slint `ScrollView` across parameter cards for uniform scrolling behavior.
- **UI Modularization & Directory Reorganization**: Reorganized Slint cards into structured subdirectories (`ui/cards/`, `ui/material/`, `ui/nav/`).
- **Bond Cutoff Tuning Controls**: Extended `BondCutoffsCard` with dynamic factor controls (minimum factor, maximum factor, uniform cutoff, scale factor) for real-time covalent cutoff tuning.
- **File Reloading & Trajectory Controls**: Added instant file reloading (`on_reload_file`), frame stride controls, and periodic boundary box diagnostics to the operations panel.

### Decoupled Application Services (SOLID Foundations)
- **PlotExportService**: Extracted plot export and file writing logic to a dedicated service (`include/app/PlotExportService.hpp`, `src/app/PlotExportService.cpp`).
- **BondCutoffMapper**: Implemented stateless mapping service (`include/app/BondCutoffMapper.hpp`, `src/app/BondCutoffMapper.cpp`) translating between UI models and domain cutoff matrices.

### C++20/C++23 Modernization & Core Refactoring
- **I/O & Plotting Overhaul**: Modernized simulation readers, writers, and plotters to modern C++20/C++23 standards (`std::span`, ranges, RAII).
- **Calculator Standardization**: Modernized calculator codebase with camelCase naming conventions and standardized interfaces.
- **Unit Test Modernization**: Modernized unit test suites across `tests/unit/core/` and `tests/unit/math/` with C++20/C++23 practices.

### Bug Fixes
- **macOS LLVM 18 Compatibility**: Fixed compilation error caused by missing `std::ranges::iota` in Apple Clang / LLVM 18.
- **Histogram Units**: Corrected y-axis units for structure factor $S(Q)$ and pair distribution function $g(r)$ in SVG plot rendering.

## [3.9.5] - 2026-09-21

### Simulation Readers & Formats
- **NequIP & Allegro Extended XYZ Parser**: Implemented native `NequipReader` (`include/readers/NequipReader.hpp`, `src/readers/NequipReader.cpp`) for single-frame structures and multi-frame trajectories generated by NequIP and Allegro machine learning interatomic potentials:
  - ExtXYZ format parsing with lattice vectors, periodic boundary conditions, per-atom forces, and energy metadata extraction.
  - Automatic format sniffing and reader registration in `ReaderFactory`.
  - Comprehensive unit test suite (`tests/unit/readers/NequipReaderTests.cpp`) and libFuzzer harness with dedicated corpus (`tests/fuzz/fuzz_nequip.cpp`, `tests/fuzz/corpus/nequip/minimal.nequip`).

### WebAssembly & Browser Runtime
- **Web Worker Background Execution**: Refactored the client-side WebAssembly application (`web/worker.js`, `web/app.js`) to offload heavy structural analysis and histogram accumulation to a dedicated Web Worker:
  - Asynchronous non-blocking execution prevents UI freezing during multi-thousand-atom calculations.
  - Structured event dispatching and progress reporting between UI and WebAssembly worker thread.

### UI / UX Modernization & Tooltips (Slint)
- **Mouse-Following Tooltips**: Refactored tooltip positioning logic across all options cards (`ui/material/ui/components/tooltip.slint`, `PreviewCard.slint`, `ExportSettingsCard.slint`, `OperationsCard.slint`, and parameter cards):
  - Tooltip positions dynamically track cursor coordinates instead of static offsets, improving visual ergonomics and preventing occlusion.

### Python Bindings & Ecosystem
- **NequIP Reader Python API**: Exposed `NequipReader` through Pybind11 extension bindings (`src/bindings/core_bindings.cpp`).
- **Adapter Enhancements**: Updated data conversion adapters in `python/correlation/adapters.py` with accompanying automated tests (`tests/test_adapters.py`).

### Interactive Tutorials & Documentation
- **New Jupyter Notebook Tutorials**: Added three in-depth scientific tutorials in `notebooks/`:
  - `05_plotting_and_export.ipynb`: Publication-grade Matplotlib visual styling, multi-curve comparison plotting, and SVG/PNG export pipelines.
  - `06_structural_classification.ipynb`: Coordination number clustering, polyhedral template matching, and structural characterization workflows.
  - `07_xrd_scattering.ipynb`: Powder X-ray diffraction patterns, Debye scattering equation evaluation, and reciprocal space analysis.
- **API Stability Specification**: Added `docs/API_STABILITY.md` establishing explicit stability guarantees, semantic versioning policy, deprecation schedules, and ABI compatibility contracts for C++ core libraries and Python APIs.

### Build System & Static Analysis
- **Clang-Tidy CMake Integration**: Added automated `clang-tidy` static analysis configuration and build targets in `CMakeLists.txt` with updated `.clang-tidy` checks.
- **Fuzzing Infrastructure**: Integrated NequIP fuzzing target into CTest fuzz harness (`cmake/RunFuzzTest.cmake`).

## [3.9.4] - 2026-09-19

### Build System
- **Fixed Slint jemalloc linker failure**: Slint 1.18.0 unconditionally enables `jemalloc` for `slint-compiler` when not cross-compiling, ignoring `SLINT_FEATURE_JEMALLOC`. This caused undefined `_rjem_*` symbol errors during linking because `tikv-jemalloc-sys`'s `cargo:rustc-link-lib` directives don't propagate through Corrosion's linker override. The fix strips `jemalloc` from `slint-compiler`'s `CORROSION_FEATURES` after `FetchContent_MakeAvailable(Slint)`.

## [3.9.3] - 2026-09-18

### UI / UX Modernization & Accessibility (Slint)
- **InputSelect Component**: Replaced static `DropDownMenu` in `PreviewCard` with a responsive, searchable combobox (`input_select.slint`):
  - In-place text filtering with live case-insensitive substring matching.
  - Quick-clear button (`Icons.close`) that resets input to show all available plots.
  - Empty text field by default showing the full catalog of computed and previewable distributions.
- **Dynamic Dropdown Menu Sizing**:
  - Automatically shrinks down to fit matching options (down to a minimum of 1 item = 40px) when fewer than 6 items match, eliminating empty background space.
  - Automatically caps at 6 visible items (240px) with smooth vertical scrolling when options exceed 6.
- **Persistent High-Contrast Custom Scrollbar**:
  - Replaced faint, disappearing default platform scrollbar with a dedicated 8px scrollbar track (`surface_container_highest`) and 8px high-contrast thumb (`primary`).
  - Stays persistently visible whenever options exceed the viewport limit (no auto-hiding).
  - Supports mouse wheel scrolling over items, mouse wheel on the track, and direct click-and-drag dragging with hover and pressed state styling.
- **Maximized Startup Mode**:
  - Configured root `AppWindow` to launch maximized to the active monitor's full available width and height by default while respecting window manager docks, taskbars, and titlebars.
- **Slint v1.18.0 Toolchain Upgrade**:
  - Upgraded project Slint dependency from v1.17.1 to v1.18.0.
  - Migrated deprecated `viewport-width`, `viewport-height`, `viewport-x`, and `viewport-y` properties to modern `content-*` equivalents across all `.slint` templates.
- **Asynchronous File & Trajectory Operations**:
  - Offloaded native file dialog invocations and heavy trajectory file parsing to background worker threads, keeping the Slint UI fully interactive during multi-gigabyte trajectory loads.
- **Comprehensive Option Resets**:
  - Standardized "Reset Defaults" behavior across all analysis cards (RDF, PAD, S(Q), Rings, Smoothing, Advanced, and Trajectory) with immediate two-way UI state synchronization.

### Ecosystem Interoperability & Python Adapters
- **Pure Python Ecosystem Adapters**: Implemented `python/correlation/adapters.py` providing seamless bidirectional conversions between `correlation.Cell` and major materials science frameworks without introducing compile-time C++ dependencies:
  - **Atomic Simulation Environment (ASE)**: `from_ase()`, `to_ase()`, `from_ase_trajectory()`, and `to_ase_trajectory()`.
  - **Pymatgen**: `from_pymatgen()` and `to_pymatgen()`.
  - **Dynamic Feature Detection**: Non-intrusive runtime detection of external libraries.
  - **Monkey-Patched Methods**: Injected `.to_correlation()` into `ase.Atoms` and `pymatgen.core.Structure`, and `.to_ase()` / `.to_pymatgen()` into `correlation.Cell`.
- **PyTorch Geometric (PyG) Descriptors**: Provided `to_torch_geometric()` for zero-copy/NumPy conversion of atomic periodic graphs to `torch_geometric.data.Data`.
- **ORB-v3 AtomGraphs Support**: Added adapters for ORB-v3 interatomic potential graph representations.
- **MLIP Python Bindings**: Added `PyMLIPInterface` trampoline class and bindings for structural-electronic correlation pipelines (`src/bindings/mlip_bindings.cpp`).

### WebAssembly & Browser Runtime
- **Emscripten Target**: Added `correlation_wasm` build target enabled via `BUILD_WASM=ON` with Embind, single-precision compilation, SIMD128 acceleration, and virtual filesystem support (`readFromBuffer()`).
- **Web Application Interface**: Updated `web/` with drag-and-drop structure parsing, dynamic parameter selection, real-time client-side analysis, and HTML5 canvas distribution plotting.
- **PAD UI & Snake-Case Aliases**: Added Planar Angle Distribution computation UI and exposed snake_case API aliases for WASM bindings.
- **GitHub Actions CI/CD Deployment**: Automated WebAssembly build and GitHub Pages deployment workflow (`.github/workflows/wasm.yml`) using `mymindstorm/setup-emsdk@v14`.

### Simulation Readers & Core Calculators
- **New Quantum & MLIP Readers**: Added `ChgnetReader`, `GapReader`, and `MaceReader` with automatic sniffing and registration in `ReaderFactory`.
- **Spherical Harmonics**: Implemented real spherical harmonics computation integrated into `PeriodicGraphBuilder`.
- **Portable Expected Fallback**: Added `correlation::expected` fallback for older Clang/libstdc++ combinations and WebAssembly builds.

### Interactive Tutorials & Documentation
- **Jupyter Notebook Tutorial Suite**: Created interactive tutorials in `notebooks/`:
  - `01_getting_started.ipynb`: Basic structure loading, RDF and PAD calculations, partials extraction, and Matplotlib visualization.
  - `02_ase_pymatgen_interop.ipynb`: Data roundtripping with ASE and Pymatgen, thermal jitter simulation, and hybrid workflows.
  - `03_trajectory_and_dynamics.ipynb`: Multi-frame trajectory analysis, ensemble-averaged RDF, Mean Squared Displacement (MSD), and VACF diffusion evaluation.
  - `04_structural_electronic_correlation.ipynb`: MLIP-derived density of states correlation.
- **Architecture Decision Records (ADRs)**: Established `docs/adr/` documenting foundational architectural choices (C++23 standards, Slint MVVM, MLIP/GNN descriptors, pure Python adapters, and WebAssembly).
- **Contributing Guidelines**: Modernized `docs/CONTRIBUTING.md` with C++23 standards, cognitive complexity gate ($\le 25$), zero-suppression policy, and testing workflows.

## [3.9.2] - 2026-09-04

### UI / UX & Options
- **Radial Cutoffs Default Recalculation & Placement**: Fixed the "Reset Defaults" button in the Radial/Bond Cutoffs matrix card (`BondCutoffsCard.slint`, `matrix.slint`). The reset action now recalculates default covalent radii bounds ($r_{\text{min}} = 0.6 \times \sum r_{\text{cov}}$, $r_{\text{max}} = 1.3 \times \sum r_{\text{cov}}$) directly from the structure's elements in `AppController::setBondCutoffs()`, updates backend storage, and dispatches a reset trigger notification across the UI hierarchy to instantly refresh and place all updated values in the matrix cells.

### Machine Learning & Calculators
- **Total Density of States (TDOS)**: Implemented `TDOSCalculator` and `TDOSParams` for computing per-atom LDOS-based density of states from ML interatomic potential outputs.

## [3.9.1] - 2026-08-31

### Quantum Chemistry & Simulation Readers
- **New Quantum Chemistry & DFT Readers**: Implemented and registered four new simulation format parsers in `ReaderFactory`:
  - **ORCA** (`OrcaReader`): Parses output geometry from ORCA quantum chemistry calculations.
  - **GPAW** (`GpawReader`): Parses structure output from GPAW grid/LCAO electronic structure simulations.
  - **ABINIT** (`AbinitReader`): Parses output structures from ABINIT plane-wave DFT calculations.
  - **DFTB+** (`DftbReader`): Parses atomic positions and lattice parameters from detailed DFTB+ outputs.
- **Reader Factory Sniffing**: Integrated content-based sniffing in `ReaderFactory` to automatically differentiate quantum calculation outputs (`.out`, `.log`, `.txt`).

### GPU Acceleration & Core Performance
- **GPU-Accelerated X-Ray Diffraction**: Implemented `GPUXRDCalculator.cu` for direct Debye scattering formula evaluation on CUDA, HIP, and SYCL architectures with automatic fallback to SIMD CPU routines.
- **GPU Distance Histogram Accumulation**: Refactored pair processing kernels in `GPUDistanceCalculator.cu` to support inline histogram binning and reduction.
- **Exception-Safe GPU Memory Management**: Introduced RAII wrapper `DeviceBuffer<T>` (`include/core/DeviceBuffer.hpp`) and structured error trapping (`GPUErrorCheck.hpp`) for unified CUDA/HIP memory life-cycle safety.

### Machine Learning & Graph Descriptors
- **PyTorch Geometric (PyG) Integration**: Added `to_torch_geometric` (`to_pyg`) in Python bindings (`python/correlation/__init__.py`) for zero-copy/NumPy conversion of `PeriodicGraphData` to `torch_geometric.data.Data`.
- **Periodic Graph Builder Extensions**: Extended `PeriodicGraphBuilder` with periodic displacement vector calculations, cutoff smoothing envelopes, and Bessel basis radial expansion.
- **MLIP Python Bindings**: Added `src/bindings/mlip_bindings.cpp` exposing graph builder, basis encoders, and MLIP tensor structures directly to Python.

### UI / UX Modernization & Accessibility (Slint)
- **Preview Card Sidebar Splitter**: Added an interactive horizontal resize bar (`SplitterHandle`) to the right Curve Visibility panel in `PreviewCard.slint` with smooth drag resizing (clamped between 120px and 450px) and double-click reset to default 180px.
- **Configurable Data Marker Size**: Added interactive marker radius slider (`export_marker_size`) in `ExportSettingsCard.slint`, `ExportConfig`, and vector plotters (`SvgPlotter`, `SvgComparisonRenderer`).
- **Streamlined Layout & Workspace Maximization**: Removed `AppHeader.slint` to maximize vertical plot area, updated native window title dynamically with the active file path, and relocated analysis status text and progress bar directly into `AppFooter.slint`.
- **Keyboard Shortcuts**: Added centralized keyboard shortcut dispatcher (`Ctrl+O` open file, `Ctrl+R` run analysis, `Ctrl+S` save plot, `Ctrl+E` export results, `Escape` cancel) in `AppWindow.slint`.
- **Contextual Tooltip Engine**: Integrated rich multi-line tooltip overlay system (`AppToolTips.slint`, `TooltipState`, `TooltipTarget`) across cards with zero-latency input field hover binding.
- **Recent Files History**: Extended `SettingsManager` with recent file history persistence across desktop sessions.
- **Plot Rendering & Interaction**: Optimized SVG preview rendering pipeline and synchronized crosshair mouse tracking across comparison preview cards.

### Code Quality, Governance & Documentation
- **Cognitive Complexity Gate**: Enforced cognitive complexity limit ($\le 25$) with clang-tidy `readability-function-cognitive-complexity`. Decomposed `SvgComparisonRenderer::drawPolylines` into modular subroutines (`computeDifferenceCurve`, `drawDatasetPolyline`, `drawDifferencePolyline`).
- **Roadmap & README Overhaul**:
  - Updated `RoadMap.md` to reflect baseline v3.9.x features and established v4.0.0 (Q4 2026) targets (native Graph descriptors and Total Density of States TDoS accumulator from GNN LDoS outputs).
  - Modernized `README.md` with complete categorical calculator matrix, reader table, multi-vendor GPU execution, and updated author attributions.
  - Promoted Flor B. Quiroga (`quiroga.acbg@ciencias.unam.mx`) to primary co-author and contributor in `docs/AUTHORS` and `README.md`.
- **CI/CD Optimization**: Unified workflow dependency caching across Linux/macOS/Windows and refined test timeouts.

## [3.9.0] - 2026-08-28

### Added
- **Consolidated Raw Counts in PAD/DAD Output**: Normalized PAD and DAD output files (`_PAD.csv`, `_DAD.csv`, `_PAD.parquet`, `_DAD.parquet`, and HDF5 groups `PAD`/`DAD`) now include non-normalized raw count partials (suffixed `_raw`) alongside normalized partials and smoothed partials. Column/dataset ordering: `{partial}_raw` → `{partial}` → `{partial}_smoothed`.
- **Standalone Raw Count Files**: Raw count files (`_PAD_raw.csv`, `_DAD_raw.csv`, `_PAD_raw.parquet`, `_DAD_raw.parquet`, and HDF5 groups `PAD_raw`/`DAD_raw`) continue to be emitted with raw counts and their kernel-smoothed variants.
- **Asynchronous GitHub Update Checker**: Integrated `UpdateChecker` running in a detached background thread on startup to query GitHub's latest release API. When a newer version is detected, an interactive pill with a pulsing notification dot appears in the footer (`AppFooter.slint`). Hovering changes the cursor to pointer and clicking opens the release download page in the user's default browser.
- **Header Version Badge**: Added Material 3 version tag badge in `AppHeader.slint` dynamically populated by `CORRELATION_VERSION_STRING`.

### Changed
- **CSVWriter**: `writeHistogramToCSV` accepts an optional raw companion histogram pointer; `writeAllCSVs` resolves the companion for `PAD`/`DAD` histogram names.
- **HDF5Writer**: `writeHistogramToGroup` accepts an optional raw companion; `writeHDF` resolves the companion for `PAD`/`DAD`.
- **ArrowWriter**: `writeHistogramToParquet` accepts an optional raw companion; `writeAllParquet` resolves the companion for `PAD`/`DAD`.

### Testing & Verification
- **Writer Tests**: Added `PADCsvContainsRawAndNormalizedAndSmoothedColumns`, `PADRawCsvContainsRawCountsAndSmoothed`, and `DADCsvAndRawCsvAreCreated` tests. Extended `CalculatesAndWritesSiliconDistributions` to verify `_PAD_raw.csv`, `_DAD.csv`, and `_DAD_raw.csv` file creation.
- **Update Checker Tests**: Added unit tests in `UpdateCheckerTests.cpp` covering semantic version comparison, GitHub release JSON parsing, missing field handling, and browser URL launching.

## [3.8.9] - 2026-08-20

### Added & Refactored
- **Unnormalized & Unweighted Distributions**:
  - Expose raw pair distance histogram `H_r` (counts vs. $r$) and unweighted partial radial distribution function `g_r_unweighted` ($g_{ij}(r) \to 1$, prior to Ashcroft-Langreth weight multiplication) in `RDFCalculator` and `DistributionFunctions`.
  - Expose unnormalized triplet count histogram `PAD_raw` ($N(\theta)$ counts) alongside normalized `PAD` ($P(\theta)$ probability density) in `PADCalculator`.
  - Expose unnormalized dihedral quartet count histogram `DAD_raw` ($N(\phi)$ counts) alongside normalized `DAD` ($P(\phi)$ probability density) in `DADCalculator`.
- **Nomenclature Refactor (BAD → PAD)**:
  - Purged "Bond-Angle Distribution" / "BAD" terminology in favor of "Plane-Angle Distribution" / "PAD" across calculators, GPU kernels, UI components, tests, and documentation.
  - Maintained `BAD` strictly as a backward-compatible query alias in `DistributionFunctions::getHistogram` and `DistributionFunctions::smooth`.
  - Updated UI header to "Plane Angle" and refined tooltip physics descriptions in `BondAngleOptionsCard.slint`.
  - Added new distribution keys to `PlotController` ordering priority map for Slint GUI visualization.

### Testing & Verification
- **Distribution Tests**: Added unit test coverage for `H_r`, `g_r_unweighted`, `PAD_raw`, `DAD_raw`, and the `BAD` fallback alias in `RDFTests`, `PADTests`, `DADTests`, `WriterTests`, and `RingCellTests`.

## [3.8.8] - 2026-08-20

### Added & Refactored
- **Pair-Specific Bond Cutoff Matrix & Dynamic Radii**: Replaced scalar bond cutoffs with element-pair `BondCutoffMatrix` supporting dual min and max range constraints across `Trajectory`, distance calculators, and Python bindings, including dynamic cutoff computation based on covalent radii.
- **Matrix Input UI Redesign**: Redesigned UI matrix input components (`BondCutoffsCard.slint`, `matrix.slint`) with dual min/max cutoff controls and inline error validation.
- **Cell-Grid Spatial Partitioning**: Implemented `SubcellGrid` spatial partitioning for local neighbor distance queries, optimizing `LocalEntropyCalculator` neighbor searches.
- **Distance Calculation & Inline Histogramming**: Added optional inline histogramming to bypass explicit distance tensor allocations, specialized small-cell candidate gathering mode (`CandidateGatherMode`), and streamlined candidate filtering with scratch buffers.
- **Lazy Tensor Evaluation & Ring Validation**: Implemented thread-safe lazy evaluation for angle and dihedral tensors in `StructureAnalyzer` and enforced minimum ring size validation ($\ge 3$) in `AppBackend` and `MotifFinder`.
- **Angular Distribution Resolution**: Reduced default angular bin widths and applied scale-dependent Gaussian smoothing for angular distributions (PAD, DAD, BAD).

### Testing & Verification
- **Distance & Spatial Partitioning Tests**: Added unit tests covering FCC, BCC, periodic boundary conditions in large cells, and triclinic cell subcell partitioning.

## [3.8.7] - 2026-08-19

### Packaging & AUR
- **AUR Package Integration**: Reimplemented and re-enabled Arch User Repository (AUR) publishing workflow and packaging pipeline for automated tagged releases.

### Added & Refactored
- **MLIP Graph Builder & TorchGNN Inference**: Implemented `PeriodicGraphBuilder` and `TorchGNNModel` inference interface with LibTorch integration for machine learning interatomic potentials.
- **Const-Correctness**: Added `const` qualifiers across `FileWriter` interfaces.

## [3.8.6] - 2026-08-04

### Added & Refactored
- **Application Settings Persistence**: Implemented `SettingsManager` for JSON-backed user settings persistence across sessions, integrated into `AppController`, complete with unit test coverage (`SettingsManagerTests`).
- **UI Hero View & Interactive Splitter**: Redesigned preview card empty state with branded hero view (`PreviewCard.slint`), added interactive pane splitter handle (`SplitterHandle.slint`), and updated application window layout (`AppHeader.slint`, `AppWindow.slint`).

### Build & Packaging
- **Packaging Support**: Added Arch Linux `PKGBUILD` template and Conda recipe configurations (`meta.yaml`, `bld.bat`, `build.sh`) alongside GitHub release workflow automation.
- **Workflow & Versioning**: Removed obsolete wheel test workflow (`test-wheels.yml`) and updated version numbers to 3.8.6 across CMake and packaging metadata.

## [3.8.5] - 2026-08-03

### Fixed
- **Reduced PDF Export Filename Suffix**: Updated reduced Pair Distribution Function $G(r)$ file export suffix from `_G` to `_G_reduced` to prevent Windows case-insensitive path collisions with $g(r)$ (`_g`) on NTFS/FAT filesystems (`_g.csv` vs `_G_reduced.csv` / `_g.parquet` vs `_G_reduced.parquet`).

### Added & Refactored
- **UI & Visualization Updates**: Implemented UI-driven curve visibility toggling, PNG plotter support, and consolidated plotter controller logic.
- **GPU Acceleration**: Implemented SYCL-accelerated bond angle and XRD calculators with corresponding GPU wrappers and unit tests.
- **Build & CI Automation**: Updated TBB library binary filtering during wheel repair and refactored wheel build workflows for per-architecture matrix configurations.

## [3.8.0] - 2026-07-29

### Added
- **Reciprocal-Space $S(Q)$-Based XRD Calculation**: Added `XRDCalculator::calculateFromSq` to compute X-Ray Diffraction patterns directly from partial structure factors $S_{ij}(Q)$ using Cromer-Mann 9-parameter atomic scattering form factors $f_i(Q)$, eliminating real-space $r_{\text{max}}$ truncation ripples.
- **Dual-Path XRD Dispatch**: Updated `XRDCalculator::calculateFrame` to prioritize $S(Q)$-based reciprocal-space calculation when $S(Q)$ is available in `DistributionFunctions`, falling back to real-space $g(r)$ integration if $S(Q)$ is absent.

### Changed & Refactored
- **XRD Angular Range & Bin Defaults**: Updated default 2-theta scattering limits to $10^\circ \text{ to } 140^\circ$ (`MinTheta{10.0}`, `MaxTheta{140.0}`) with $0.05^\circ$ angular bin resolution (`BinWidth{0.05}`).
- **UI Operations & Trajectory Layout**: Migrated `TrajectoryOptionsCard` and `MaterialTypeCard` into the primary operations sidebar (Column 1) for a streamlined file-load-to-run workflow.
- **UI Options Reorganization**: Restructured middle column tabs to **1. Common**, **2. Advanced**, and **3. Analyses**.
- **Material Preset Dropdown Height**: Fixed container height calculation in `drop_down_menu.slint` to display all material presets without vertical clipping.

## [3.7.4] - 2026-07-29

### Fixed
- **Slint Property Binding Recursion Panic**: Resolved runtime Rust panic (`internal\core\properties.rs:583:9: Recursion detected`) by removing `changed check_state =>` reactive property binding callback emissions in `CheckBox` and dispatching `checked_state_changed` strictly on interactive toggle operations.
- **Synchronous UI Signal Execution**: Reverted `slint::invoke_from_event_loop` wrapping in `AppController`'s `on_toggle_calculator` handler to guarantee synchronous update of `backend_.options().active_calculators` upon signal dispatch.
- **Slint CheckBoxRow Event Deduplication**: Removed nested `checked_state_changed` callback delegation on child `CheckBox` within `CheckBoxRow` to prevent double-toggle signal invocation when clicking checkbox elements.
- **MSVC Build Header Inclusions**: Restructured standard library header includes in `src/main.cpp` prior to `#ifdef _WIN32` `setupWindowsDebugEnvironment()` block, resolving missing `std::cerr` declaration under MSVC (C2039/C2065).

## [3.7.3] - 2026-07-29

### Fixed
- **Slint Property Recursion Panic**: Resolved runtime `internal\core\properties.rs:583:9` panics caused by reactive evaluation loops during preset changes, window resizes, and parameter validation.
- **Atomic Option Synchronization**: Consolidated multi-stage option setting in `PresetController` to a single atomic `set_analysis_options` invocation.
- **Event-Loop Canvas Resize**: Wrapped plot preview update requests in `slint::invoke_from_event_loop()` to decouple geometry calculations from rendering dispatch.
- **Validation Dirty-State Checking**: Added value delta guards in `InputValidator` and `PreviewCard` to suppress redundant reactive property evaluations.

## [3.7.2] - 2026-07-26

### Fixed
- **Native File Dialog Linkage**: Enforced static library compilation (`BUILD_SHARED_LIBS=OFF`) for `nativefiledialog-extended` (`nfd`) on Linux to resolve runtime `libnfd.so.1` shared library loading errors.

## [3.7.0] - 2026-07-24

### Added
- **Multi-Vendor GPU Acceleration Framework**: Implemented SYCL-based GPU acceleration for distance, $S(Q)$, and Steinhardt parameter calculators (`GPUDistanceCalculator`, `GPUSQCalculator`, `GPUSteinhardtCalculator`) with runtime fallback and device detection.
- **GPU Portability Abstraction Layer**: Added `GPUPortability` layer featuring unified HIP and CUDA compatibility wrappers for high-throughput pairwise distance calculations.
- **Machine Learning Interatomic Potentials (MLIP)**: Integrated `MLIPCalculator` and `MLIPInterface` for machine learning interatomic potential calculations.
- **Modular SIMD Acceleration Framework**: Introduced modular SIMD acceleration with AVX2, AVX512, and scalar fallbacks, including vectorized `dot_block` kernels and templatized SIMD data structures (`Vector3SIMD`).
- **Configurable Floating-Point Precision**: Replaced hardcoded double precision with `real_t` type aliases across all core calculators, readers, plotters, and test suites, enabling runtime/compile-time single or double precision builds via `USE_SINGLE_PRECISION`.
- **Cross-Platform PyPI Wheel Automation**: Added `repair_wheel.py` helper script to automate oneTBB dependency vendoring and rpath patching for Python wheel builds.

### Changed & Refactored
- **Parameter Struct Standardization**: Refactored `DADCalculator`, `VDOSCalculator`, `ScaleBins`, and `RDFCalculator` call interfaces to use dedicated parameter structures (`ScaleBinsParams`, `VDOSParams`, `RDFNormalizationParams`) for type-safe dispatch.
- **Graph Edge Representation**: Introduced unified `Edge` structure and overloaded `addDirectedEdge` in `DistanceCalculator` for cleaner AST and graph edge insertion.
- **Codebase Modernization & Linter Compliance**: Replaced `reinterpret_cast` with C++20 `std::bit_cast`, standardized PRNG seeding in tests, and eliminated all `NOLINT`/`NOLINTNEXTLINE` inline suppressions across source files and documentation.
- **Project-Wide Formatting**: Applied uniform `clang-format` styling across the entire project codebase.
- **Packaging & Build System**: Enforced static builds for `voro++`, standardized installation prefixes, and updated `.desktop` entry paths.

### Performance & Optimization
- **Voronoi Topology Optimization**: Accelerated `VoronoiCalculator` by caching thread-local buffers, filtering parasitic edges in Voronoi signatures, and optimizing particle ordering in periodic boundary containers.
- **Bounds-Checked Operator Efficiency**: Replaced unchecked raw array indexing with bounds-safe `.at()` calls in mathematical structures, while keeping direct array indexing in performance-critical `Matrix3` operator kernels.
- **Bit-Canonical Sampling**: Implemented portable bit-canonical random sampling and modularized linear slope fitting in analysis modules.

### Fixed
- **Voronoi Coordinate Normalization**: Corrected floating-point normalization and hyperuniformity fitting bounds for Voronoi coordinate calculations.
- **Cross-Platform Stat Header**: Corrected header paths for filesystem `stat` structure to ensure cross-platform header compatibility.
- **Precision Test Assertions**: Migrated floating-point test assertions to custom `IsRealEq` matchers for reliable multi-precision test validation.

## [3.6.0] - 2026-07-03

### Added
- **Greek Character Vector Support**: Integrated complete high-fidelity vector glyph path definitions for all uppercase (`0x0391`-`0x03AA`) and lowercase (`0x03B1`-`0x03CA`) Greek characters from the NotoSans font into the custom Roboto vector font.
- **Unified TabItem UI Component**: Created a shared, style-consistent `TabItem` component in the material UI library, replacing duplicate local tab button definitions.
- **Modular OptionsCard UI**: Extracted and unified all setup, parameter setting, trajectory, and export cards into a cohesive `OptionsCard` container component.
- **Automated PyPI Publishing**: Added CI/CD workflows for building and publishing Python source distributions and wheels to PyPI.
- **Functional Testing Suite**: Integrated comprehensive functional tests for core application components and UI state synchronization (`AppController`).
- **Fuzzer Debugging**: Added optional verbose logging to fuzzer exception handlers for debugging failed fuzzer inputs.

### Changed & Refactored
- **PlotController Complexity Reduction**: Refactored the `PlotController::requestPlotUpdate` function to extract UI table data formatting and row populating logic into a private helper function, reducing cognitive complexity from 26 to 12.
- **Analyses Selection Simplification**: Removed the redundant outer expandable header in `AnalysesSelectionCard`, set subgroups to be expanded by default, and renamed the options tab from "Distribution" to "Analyses".
- **vDoS Y-Axis Labeling**: Updated the Y-axis label of the Vibrational Density of States (vDoS) plot to `"f(ω)"` since the Greek omega character is now fully supported.
- **Kahan Summation Precision**: Implemented Kahan summation algorithm across math utilities and analysis calculators to significantly reduce floating-point drift and improve numerical precision.
- **Modernized Test Suite**: Extensively refactored the entire unit and integration test codebase for modern C++ standards, applying strict const-correctness, better namespace scoping, resource cleanup, and encapsulating test suites in anonymous namespaces.
- **Pi Constant Standardization**: Replaced `std::numbers::pi` usage with the internal `correlation::math::pi` constant for platform consistency.
- **Optimized Distance Calculator**: Streamlined internal logic and cleaned up temporary files in `DistanceCalculator` and test suites.

### Fixed
- **Calculator Model Synchronization**: Fixed a critical synchronization bug where checking/unchecking calculators in the Slint UI was not mutating the underlying UI model, causing calculations to not run or display in the plot preview dropdown.
- **Checkbox Click Interception**: Resolved a click interception bug in `AnalysesSelectionCard.slint` by removing a redundant outer `TouchArea` wrapping the `CheckBoxRow` and attaching the hover logic directly to `CheckBoxRow`.
- **Plotting Alternative Frequencies**: Excluded alternative frequency X-axis columns (such as `"Frequency_cm_1"` and `"Frequency_meV"`) from being plotted as curves on the Y axis in the SVG plotter.
- **Distribution Preview Label**: Removed the redundant "Distribution Preview" title from the preview header card to clean up the UI layout.
- **Fuzzer Linter Compliance**: Resolved Clang-Tidy warnings (`reinterpret_cast`, const correctness, varargs, and print usage) in fuzzer targets.
- **Windows SmartScreen Trust**: Generated standard Windows version resource metadata (`VS_VERSION_INFO`) and updated the Inno Setup configuration with publisher properties and relaxed compression to avoid false-positive virus warnings.
- **Documentation Parameters**: Cleaned up dynamic documentation parameters and optimized header includes across calculators and readers.

## [3.5.0] - 2026-06-24

### Added
- **Configurable FFT Backends**: Implemented configurable FFT backend support for FFTW3 and Intel MKL with dynamic plan caching.
- **Native PDF Export**: Added high-performance PDF export support using a custom native vector drawing generator.
- **Dark Mode Support**: Added a dark theme toggle to the UI with optimized colors.
- **Automated Fuzzing**: Integrated libFuzzer test harnesses for all primary trajectory readers with automated corpus and CI/CD validation.
- **Wigner 3-j Caching**: Precomputed and cached Wigner 3-j symbol lookups to accelerate Steinhardt parameter calculations.
- **RDF Ashcroft Weighting**: Applied Ashcroft weighting to RDF partials and updated structural calculations.

### Changed & Refactored
- **Iterative CNA DFS**: Replaced recursive DFS with a fast iterative stack-based approach for Common Neighbor Analysis.
- **TBB Parallelization**: Parallelized CNA and Steinhardt calculator computation loops using Intel TBB.
- **High-Performance SIMD Distance**: Optimized distance calculations with flat cell lists and pre-allocated thread-local buffers.
- **Modular Reader Parsers**: Refactored and modularized parsing algorithms (CIF state machine, CP2K line parsing, Gromacs frame scanning, VASP, PDB, QE, etc.) into dedicated parser helper structures.
- **Type Safety**: Switched raw indices to strong types (`AtomIndex`, etc.) and introduced structural wrappers for parameters.
- **Test Reorganization**: Migrated and split the unit test suite into dedicated subdirectory structures.
- **Roboto Vector Font**: Extracted the Roboto font coordinates and glyph rendering into a standalone utility.
- **Broader Compiler Compatibility**: Replaced C++20 ranges algorithms with C++17-compatible standard library equivalents.

### Fixed
- **Linkage Warning Suppression**: Wrapped `FFTUtilsTests` in an anonymous namespace to prevent external symbol export.
- **Path Normalization**: Corrected character escape sequence issues during path normalization.

## [3.4.1] - 2026-06-10

### Added
- **Trajectory Lazy Indexing**: Implemented lazy frame indexing (`__getitem__`, `__len__`, negative indices) on Python trajectory bindings to prevent RAM exhaustion.

### Changed
- **UI Tab Reorganization**: Reorganized setting tabs into **Common** (Material type, Bond cutoffs, RDF, Angular), **Advanced** (S(Q), Rings, Smoothing), and **Distribution** (Analyses checklist) and removed the preset manager card.
- **Auto-Expanded Option Panels**: Configured all cards in the Common and Advanced settings tabs to be expanded by default.

### Fixed
- **Python Bindings Test Path Resolution**: Resolved relative path locating for `Si.xdatcar` and removed silent loader exception catching.
- **CNA Classification Bug**: Fixed neighbor classification logic for bonds with 0 common neighbors, storing them under CNA index `"1000"` instead of omitting them.

## [3.4.0] - 2026-06-08

### Added
- **Extension-Based Saving**: Enabled automatic determination of the save file format (CSV, HDF5, or Parquet) based on the user's selected file extension in the save dialog.
- **Dynamic Save Filters**: Integrated dynamic save dialog filters that conditionally offer HDF5 and Parquet formats depending on compile-time dependencies.

### Changed
- **Simplified GUI**: Removed the "Export" options tab from the middle settings pane, streamlining options configuration.
- **Enabled HDF5 support**: Configured CMake build with `BUILD_WITH_HDF5=ON` to link and enable HDF5 output by default.

## [3.3.1] - 2026-06-08

### Added
- **2D Hover Snapping**: Implemented a 2D nearest-neighbor hover snapping mechanism on SVG plots in the GUI, mapping the cursor `(sx, sy)` to the nearest data point across all plotted curves.
- **Y-Axis Mouse Hovering**: Updated the plot preview to capture vertical cursor movements and update the UI immediately when the mouse moves along the Y-axis.
- **Hover Nearest Highlight**: Snapped the horizontal guide line to the nearest curve's Y value at the hovered bin index and added a ` (nearest)` suffix in the tooltip list to clearly indicate the hovered curve.

## [3.3.0] - 2026-06-07

### Added
- **High-Fidelity Roboto Font Paths**: Integrated high-resolution glyph coordinates extracted directly from `Roboto-Regular.ttf` using 16-step Bezier-flattening. Normalized paths to a standard EM square $[0, 1]$ and restructured the rendering loop for beautiful and crisp vector rendering.
- **Dynamic Superscript Generation**: Added automatic generation of scientific superscripts (`⁰`-`⁹`, `⁺`, `⁻`, `⁼`, `⁽`, `⁾`, `ⁿ`) via scaling and shifting the native base Roboto glyphs.
- **UI Freeze Prevention**: Added sophisticated event caching and timer-based throttling (100ms) for mouse hover and plot selection events to prevent the GUI from entering infinite layout recalculation loops triggered by floating-point drift or parent widget resize events.
- **Interactive Plot Hover Tracking**: Implemented real-time coordinate tracking and interactive hover guides on SVG plots in the GUI, updating the Slint UI dynamically to display values under the cursor.
- **Customizable SVG Export Options**: Added options to enable/disable markers and fill under the curves in the exported SVG/PDF plots, with dedicated controls in the plot export panel.
- **Apache Arrow / Parquet Packaging**: Enabled Apache Arrow and Parquet packaging dependencies and compile options (`-DBUILD_WITH_ARROW=ON`) by default in the official Arch Linux (AUR) package descriptors.

### Changed
- **License Migration**: Relicensed the codebase from MIT to the GNU Affero General Public License v3 (AGPL-3.0-only) to protect scientific contribution and ensure downstream open-source compliance.

### Fixed
- **Mouse Hover Lag and CPU Spike**: Throttled mouse movement events to 100ms intervals using `slint::Timer` and added caching of active parameters (coordinates, config, plot selection) to prevent redundant replotting, breaking the infinite layout-recalculation loop and ensuring buttery-smooth guide line tracking in the GUI.
- **Bypassed Slint Image Cache Collisions**: Resolved visual rendering glitches caused by Slint's image cache collision by saving generated SVGs to temporary files before loading them.
- **Component-Relative Tooltips**: Redesigned UI tooltip positioning to anchor to hovered components rather than absolute mouse coordinates, improving accessibility and layout.

## [3.2.2] - 2026-06-04

### Changed
- **Static Third-Party Builds**: Configured `nativefiledialog-extended` (`nfd`), `Slint`, `HDF5`, and `Arrow`/`Parquet` to compile statically when built from source (`FetchContent`). This resolves dynamic library loading issues for target deployment platforms (such as AUR and macOS bundles).
- **macOS App Bundling**: Integrated CMake's standard `BundleUtilities` (`fixup_bundle`) during macOS installation to copy and bundle TBB, HDF5, and Slint libraries from Homebrew or local paths, rewriting library load paths to relative `@executable_path` references for completely standalone DMG execution.
- **Dynamic Link RPATH on macOS**: Changed macOS `INSTALL_RPATH` from Linux-style `$ORIGIN` to macOS-native `@loader_path` in CMake targets.

### Added
- **Release Dependency Verification**: Integrated automated post-build checks into the GitHub Actions release workflow (`release.yml`), asserting static linking of `libnfd` on Linux via `ldd` and verifying dynamic library relocation on macOS using `otool -L` to prevent release packages with broken library paths.

## [3.2.1] - 2026-06-03

### Added
- **Dynamic Plot Format Switch**: Removed the hardcoded `.svg` extension from the default filename in the plot save dialog, allowing the dialog's native filter selection to automatically append either `.svg` or `.pdf` to the output file path.

### Changed
- **Modern Dialog Integration**: Migrated the desktop dialog backend from the patched header-only `portable-file-dialogs` to the native, cross-platform library `nativefiledialog-extended`.
- **Synchronous UX**: Converted the file open/save dialog interactions from a polled asynchronous model (using a 100ms UI timer) to a synchronous blocking model.
- **UI Code Cleanup**: Removed the polling `Timer` and the `check_file_dialog_status` callback declaration from the frontend Slint UI.

### Fixed
- **Linux Dependency Binding**: Configured automatic installation of GTK3 development headers (`libgtk-3-dev`) in GitHub Actions workflows to ensure cross-platform GUI builds compile successfully.
- **CMake GUI Build Guards**: Wrapped GUI-specific target installation and desktop setup settings inside `if(BUILD_GUI)` conditions, allowing CLI-only or documentation-only workflows (such as `docs.yml`) to configure and run without GTK/GUI package dependencies.

## [3.2.0] - 2026-06-01

### Added
- **Comprehensive Bounds and Cross-Validation Guards**: Added strict parameter validation to both the CLI and Backend to fail early on invalid inputs:
  - Validates that bin widths are strictly less than their respective maximum bounds (`r_bin_width < r_max` and `q_bin_width < q_max`).
  - Limits angular bin widths (`angle_bin_width <= 180.0°` and `dihedral_bin_width <= 360.0°`).
  - Ensures frame limits are valid (`max_frame >= -1`) and cross-validates frame ranges (`min_frame <= max_frame`).
  - Rejects zero-value smoothing bandwidths (`smoothing_sigma > 0.0`) when post-processing smoothing is enabled.
  - Ensures at least one export format (CSV, HDF5, or Parquet) is enabled when running calculations.
- **Robust Parameter Validation Tests**: Added 18 new unit tests verifying all parameter boundary conditions and validation failure paths.
- **Restructured GUI Layout**: Reorganized the Slint-based Graphical User Interface into a modern, stable 3-column dashboard:
  - Consolidates file loading, metadata summary, and analysis run/save triggers into a single control card on the left.
  - Groups all settings into a central tabbed card (Trajectory options, calculator parameters, file export formats, and preset/analyses setup).
  - Places a stable, always-visible plot preview panel on the right.
  - Implements state-based opacity transitions and overlay blocking to disable the options and preview panels until their prerequisites (loading a file and running an analysis) are completed.

### Fixed
- **Path Separation and Normalization**: Applied `lexically_normal()` to all default output base path generation logic to prevent platform/standard library separator and trailing slash discrepancies (e.g., resolving duplicate slashes like `//` in paths).
- **CLI11 Slash Options parsing on Windows**: Disabled Windows-style option prefixes (`/`) in CLI11 to prevent absolute paths starting with `/` (such as `/data/...`) from being parsed as options, correcting test failures on Windows CI.

## [3.1.0] - 2026-05-31

### Added
- **Real-Time Input Validation**: Active boundary and numeric format verification for all simulation settings (radius, bin widths, scattering ranges, frame limits). Displays inline error feedback and disables calculation runs on invalid state.
- **Publication-Ready Export**: Added configurable SVG/PDF plot export directly from the GUI preview. Includes standard sizing presets (Single Column, Double Column, Presentation), colorblind-friendly/printing-friendly palettes (Okabe-Ito, Viridis, Grayscale), grid/legend toggles, and vector-scale settings.
- **PDF Export Pipeline**: Integrated automated PDF conversion from dynamically generated SVGs using `rsvg-convert` or `inkscape`.
- **Parameter Presets**: Implemented a local JSON parameter serialization system to save, load, and delete workspace configurations, stored under `~/.correlation/presets/`.
- **CLI Command Mirror**: Added a real-time command line syntax generator with a clipboard copy utility to simplify transitions to cluster jobs.

### Changed
- **Compact UI Layout**: Refactored publication export settings to be permanently visible under the plot area in a space-saving 2-row layout.
- **Slint Layout Optimizations**:
  - Standardized options card layout collapsing by binding content heights to collapse to `0px` when folded, removing layout gaps.
  - Set the primary Radial Distribution and Bond Angle options to be expanded by default.
  - Aligned bond cutoff controls with left-justified element pair labels and right-justified numeric inputs.

### Fixed
- **DropDownMenu Default Labels**: Added an `init` callback to `DropDownMenu` to ensure the preselected default options (e.g. Gaussian smoothing kernel) show up correctly on startup.
- **Redundant Scrollbars**: Removed a nested ScrollView in `BondCutoffsCard` to avoid layout conflicts with the primary sidebar scrollbar.

## [3.0.1] - 2026-05-26

### Added
- **Unit Test Suite Enhancements**: Added 34 new unit tests covering edge cases, extreme values, and robust validation across `Cell`, `Trajectory`, `NeighborGraph`, `LinearAlgebra`, `FFTUtils`, `DistanceCalculator`, `AngleCalculator`, `MSDCalculator`, `MotifFinder`, `SDFCalculator`, and `CNCalculator`.
- **Short Name Support**: Added support for calling/activating calculators in the analysis settings and backend using their short names (e.g. "RDF", "SQ", "PAD", "VACF", "vDoS").

### Fixed
- **Zero/Negative Timestep Handling**: Strengthened trajectory velocity calculation tests to ensure pre-existing velocities are preserved when early-return logic is triggered.
- **SDF Test Coverage**: Replaced a single-atom stub test with a proper multi-atom test verifying density distribution and correct per-element histogram structures.
- **Isolated Atom Coordination**: Adjusted isolated atom coordination test to align with `CNCalculator` behavior for systems with no neighbors.
- **MSD Test Deduplication**: Bypassed constructor-based frame deduplication using `addFrame()` directly to prevent stationary frames from being collapsed.

## [3.0.0] - 2026-05-26

### Added
- **Explicit SIMD Vectorization**: AVX2/AVX-512 optimization for core calculation loops.
- **Plugin/Factory Pattern**: Decoupled architecture for readers and calculators.
- **Performance Benchmarking Suite**: Google Benchmark framework integration with comprehensive benchmarks for calculators and analyzers to monitor and guide optimization.
- **Memory-Mapped I/O**: Efficient lazy loading of multi-gigabyte trajectories via `MappedFile` for all major readers (XYZ, LAMMPS, GROMACS, XDATCAR).
- **GPU Acceleration**: CUDA-accelerated S(Q) via `GPUSQCalculator` (`-DBUILD_WITH_CUDA=ON`), with automatic CPU fallback when no compatible device is detected.
- **Mean Squared Displacement (MSD)**: Standard diffusion coefficient ($D$) computation.
- **Common Neighbor Analysis (CNA)**: Classification into localized crystallographic environments.
- **Steinhardt Bond-Orientational Parameters ($Q_4, Q_6, W_6$)**: Gold standard for liquid vs. solid structure.
- **Hydrogen Bond Analysis**: Geometric criteria and autocorrelation functions for H-bond lifetimes.
- **Spatial Distribution Functions (SDF)**: 3D probability density mapping for solvation shells and local structure, with support for exporting 3D density maps (e.g., `.cube` files) for external visualization.
- **Cluster Analysis**: Connectivity-based clustering algorithms to identify atomic clusters, molecular fragments, or crystalline grains.
- **VASP Support**: Full support for VASP `POSCAR`, `CONTCAR`, and `XDATCAR` files, essential for inorganic materials and solid-state physics communities.
- **GROMACS Support**: Support for `.gro`, `.xtc`, and `.trr` formats, opening Correlation to soft-matter and biophysics communities.
- **Protein Data Bank Support**: Native support for `.pdb` files, the universal standard for biological and organic structures.
- **Python Bindings**: Direct C++ core integration for Jupyter and automated pipelines.
- **Quantum ESPRESSO & CP2K Support**: Native readers and high priority support for these popular *ab initio* MD formats.
- **Extended XYZ**: Full support for standard and Extended XYZ (`comment`-line key=value metadata, custom per-atom columns, lattice vectors, and multi-frame trajectories).
- **Automated Release Pipelines**: CI/CD for cross-platform binaries and installers.
- **Static Plot Management**: In-memory SVG generation preventing disk-bound delays, with a native file-saving dialog built into the user interface.
- **WASM Web Interface**: Core engine runs in the browser via Emscripten (`-DBUILD_WASM=ON`). Exposes `Cell`, `Trajectory`, `DistributionFunctions`, RDF, and PAD to JavaScript via embind.
- **Interactive Plotting**: Enhanced GUI with zoom and pan support for distribution functions.

### Changed
- **HPC Core (Spatial Partitioning)**: Implementation of Cell-Lists to achieve $O(N)$ complexity in neighbor searching (replacing the current $O(N^2)$ distance tensor approach for large systems).
- **Task-Based Parallelism**: Migrating to advanced TBB task graphs for better high-core scaling.
- **Refined Python API**: NumPy-native zero-copy integration via `.positions` and `.velocities` buffer-protocol properties on `Cell`, with deprecation warnings guiding users away from the old copy-based API.

## [2.9.0] 2026-05-10

### Added
- **GROMACS Support**: Integrated a new `GromacsReader` providing support for `.xtc` and `.trr` trajectory files. This allows users to analyze large-scale MD simulations from GROMACS directly.
- **PDB Support**: Added a native `PdbReader` for Protein Data Bank files, enabling structural analysis of biological and organic systems.
- **Common Neighbor Analysis (CNA)**: Implemented the CNA calculator for local crystal structure classification (FCC, BCC, HCP, Icosahedral).
- **Hydrogen Bond Analysis**: Added a new `HBondCalculator` to compute hydrogen bond counts and statistics based on geometric (distance and angle) criteria.
- **Periodic Boundary Conditions**: Enhanced the `Cell` class with a dedicated `minimumImage` method, improving the robustness and performance of distance calculations across periodic boundaries.

### Changed
- **Reader Architecture**: Refactored the `FileReader` interface and `AppController` to dynamically handle multiple trajectory formats, improving extensibility for future file types.
- **Calculator Registration**: Updated the `CalculatorFactory` and `AppBackend` to automatically register and manage the new CNA and Hydrogen Bond calculators.

### Fixed
- **Cell Consistency**: Updated several calculators to use the new `minimumImage` logic, resolving edge cases in neighbor detection for small or highly non-orthogonal unit cells.

## [2.8.2] 2026-05-08

### Added
- **UI Components**: Added a new `Horizontal` layout component to the `@material` UI library to provide a standardized wrapper for horizontal arrangements.

### Changed
- **UI Refactor**: Migrated the entire application to use custom `@material` `Vertical` and `Horizontal` layout components, replacing the standard Slint `VerticalLayout` and `HorizontalLayout` for better consistency and design control.
- **Documentation**: Added comprehensive API documentation for the `correlation::core` and `correlation::analysis` namespaces, ensuring all core data structures, calculators, and utility functions are fully documented.
- **Repository Structure**: Migrated the `material-1.0` Slint library from the root directory to `ui/material` for better organization of UI assets. Updated `slint-config.json` and CMake build scripts to reflect the new path.
- **Build System**: Updated FetchContent for HDF5 to use a variable reference for the version number, ensuring that build script logic remains consistent and reducing redundancy.

### Fixed
- **UI Polish**: Resolved a visual bug in `AppWindow.slint` where redundant vertical spacing was being applied due to nested layout containers.
- **UI Alignment**: Standardized the width of distance input fields in the `BondCutoffsCard` to ensure consistent alignment and a cleaner interface.

## [2.8.1] 2026-05-08

### Fixed
- **UI Stability**: Switched collapsible columns (Advanced Options and Preview) to use Slint `if` condition blocks. This resolves a critical issue where forced `0px` widths conflicted with child component constraints, previously leading to layout panics or rendering failures on launch.
- **Tooltip Accessibility**: Implemented a property-bubbling mechanism for tooltips within conditional blocks, ensuring all dynamic components correctly report their descriptions to the root window.
- **Constraint Cleanup**: Removed hardcoded `min-width` and `min-height` constraints from several cards (e.g., `BondCutoffsCard`, `PreviewCard`) to allow for safer layout transitions and better responsiveness.
- **Build System**: Fixed HDF5 download failure on Windows by correcting the invalid git tag `v2.1.1` to `2.1.1`. This ensures that Windows builds, which lack system-installed HDF5, can successfully fetch the dependency via FetchContent.
- **Documentation CI**: Resolved a documentation build error in `PhysicalData.hpp` caused by duplicate Doxygen `@param` sections.
- **GitHub Actions**: Updated all workflow actions to their latest versions and opted into the Node.js 24 runtime to resolve deprecation warnings for Node.js 20.


## [2.8.0] 2026-04-13

### Added
- **VASP Reader**: POSCAR/CONTCAR (structure) + XDATCAR (trajectory), VASP 4/5 auto-detect, basename matching for extensionless files
- **CLI Mode**: `correlation-cli` binary, zero Slint dependency, full arg parser with `--help`, tested end-to-end
- **Python Packaging**: `pyproject.toml` for `pip install .`, module renamed to `_correlation` per PEP convention
- **Test Coverage**: 17 new VASP tests, test suite split (headless/GUI), 151/151 passing
- **Windows CI**: `ctest -C Release` with proper exclusions

## [2.7.0] 2026-04-13

### Added
- **Python Bindings**: Implemented core Python bindings via `pybind11`. Developers and analysts can now script `correlation` interactively through standard Python, loading trajectories and inspecting atoms, cells, and parsed metadata entirely programmatically.


## [2.6.5] 2026-04-11

### Added
- **Automated Documentation Deployment**: Integrated a new GitHub Actions workflow to automatically build and deploy Doxygen API documentation to GitHub Pages upon pushes to the main branch.
- **CI Dependency Strengthening**: Enhanced documentation CI with dedicated system dependency installation (Graphviz, libtbb, libhdf5) and Rust toolchain integration for robust CMake configuration.

## [2.6.4] 2026-04-10

### Changed
- **Documentation Coverage**: Successfully achieved 100% Doxygen documentation coverage for the core project API across four phases, covering analysis, core, math, and plotting components.
- **UI Polish**: Categorized and ordered the plot preview dropdown menu by scientific priority: Radial (g(r), G(r), J(r)), Scattering (S(q), XRD), Angular (BAD, DAD, CN, RD), and Dynamic (MSD, VACF, VDOS).
- **Audit Verification**: Resolved all Doxygen warnings, including strict @param and @return verification, ensuring a clean, professional documentation build for CI/CD.

## [2.6.3] 2026-04-09

### Added
- Implemented in-memory SVG loading in `AppController` using `slint::private_api::load_image_from_embedded_data`, eliminating the need for temporary files and fixing a critical filesystem-related runtime crash.

### Changed
- **Major Architectural Refactor**: Completed the namespace transition by logically grouping all components:
  - `core/`: Core scientific types (`Atom`, `Cell`, `Trajectory`, `NeighborGraph`) moved to `correlation::core`.
  - `analysis/`: High-level analyzers and distribution functions moved to `correlation::analysis`.
  - `app/`: Application-level logic (`AppController`, `AppBackend`) moved to `src/app/` and `correlation::app` namespace.
- **Performance Restoration**: Switched to project-wide SIMD optimization flags (`CORRELATION_SIMD_FLAGS`) in CMake to ensure ABI consistency for `Vector3<double>` and restore 10x calculation speed across all analyzers.
- **Header Organization**: Moved `PortableFileDialogs.hpp` to `include/external/` and updated all include directives to better organize external dependencies.
- **Test Suite Migration**: Updated the full test suite (134+ tests) to work with the new namespaced and restructured codebase.

## [2.6.2] 2026-04-09

### Added
- Integrated full Roboto glyph set including Greek characters (θ, φ, ν) and scientific superscripts (⁰-⁹, ⁻, ¹, ², ³) into the vector font engine for high-fidelity scientific notation.
- Implemented dynamically dashed emphasis lines for y=1 and solid lines for y=0 in SvgPlotter to improve visual clarity of distribution functions.
- Increased x-axis tick resolution from 7 to 11 in SVG plots for better data readability.
- Added black (`#000000`) to the Okabe-Ito color palette for high-contrast plot elements.

### Changed
- **Architectural Refactor**: Moved all plotting and vector font utilities to a dedicated `plotters` directory and `correlation::plotters` namespace for better modularity.
- **Architectural Refactor**: Reorganized file I/O operations by moving `FileReader` and `FileWriter` facades into dedicated `readers/` and `writers/` directories and namespaces (`correlation::readers`, `correlation::writers`).
- **Metadata Standardization**: Refactored all calculators (RDF, S(Q), PAD, MSD, VACF, XRD, etc.) to use standardized Unicode symbols for units (e.g., `Å⁻¹`, `Å² fs⁻¹`, `°`) and removed redundant unit strings from dataset labels.
- Cleaned up `SvgPlotter` output by removing redundant title text that overlapped with the GUI's selection menu.

### Fixed
- Fixed missing superscripts and special characters in unit rendering for SVG previews.
- Fixed regression in `_05_FileWriter_Tests` by updating HDF5 attribute and dataset naming expectations to match the new standardized metadata format.

## [2.6.1] 2026-04-08
- Major refactor to the Calculators to include relevant information for writting and GUI interactions.

## [2.6.0] 2026-04-08

### Added
- Integrated a graphical preview feature for distribution functions (RDF, S(Q), PAD, etc.) directly within the GUI.
- Implemented high-performance, dynamic SVG generation in C++ using a custom zero-dependency `SvgPlotter` utility.
- Added a fourth UI card (`PreviewCard`) that dynamically appears on the right side of the application upon analysis completion.
- Implemented automatic window resizing and smooth layout transitions to accommodate the new preview area.
- Added backend accessors to `AppBackend` for retrieving histogram data and a list of available plots from the latest analysis.

## [2.5.2] 2026-04-07

### Fixed
- Fixed Doxygen CI build failures by adding the `docs` directory to `Doxyfile` input and converting markdown anchor links in `README.md` to HTML links to resolve reference errors.
- Added project include directories to Doxyfile search path to improve API documentation generation.
- 
## [2.5.1] 2026-04-07

### Added
- Added desktop shortcut and executable registration to the NSIS Windows installer.
- Added icosahedral geometry validation tests for Plane Angle Distribution (PAD) and Dihedral Angle Distribution (DAD) calculations.
- Integrated automated Doxygen API documentation generation and deployment into the CI pipeline.

### Changed
- Reverted the NSIS Windows installer compression to default `zlib` to prevent false-positive virus detections.
- Optimized CI/CD pipelines incorporating `sccache` and dependency caching to significantly reduce build times across all platforms.
- Standardized file headers and Doxygen documentation (including Slint triple-slash syntax) across the entire codebase.
- Updated the Code of Conduct to version 2.1 and expanded scientific integrity guidelines.
- Simplified the release process by refactoring/removing the custom `release.sh` version bouncing scripts.
- 
## [2.5.0] 2026-04-07

### Added
- Added desktop shortcut and executable registration to the NSIS Windows installer.
- Added icosahedral geometry validation tests for Plane Angle Distribution (PAD) and Dihedral Angle Distribution (DAD) calculations.
- Integrated automated Doxygen API documentation generation and deployment into the CI pipeline.

### Changed
- Reverted the NSIS Windows installer compression to default `zlib` to prevent false-positive virus detections.
- Optimized CI/CD pipelines incorporating `sccache` and dependency caching to significantly reduce build times across all platforms.
- Standardized file headers and Doxygen documentation (including Slint triple-slash syntax) across the entire codebase.
- Updated the Code of Conduct to version 2.1 and expanded scientific integrity guidelines.
- Simplified the release process by refactoring/removing the custom `release.sh` version bouncing scripts.

## [2.4.9] 2026-04-05

### Added
- Cleaned and updated the NSIS Windows installer banners with a custom abstract "correlation" theme.

### Fixed
- Fixed `release.sh` to correctly bump version strings across `README.md`, `correlation.iss.in`, `PKGBUILD`, `.SRCINFO`, and `correlation.desktop`.

## [2.4.5-2.4.8] 2026-04-05

### Added
- Auto-generate Inno Setup installer script (`correlation.iss`) from a CMake template.
- Improved Windows installer branding with customized icons and bitmaps.

### Changed
- Updated CI and Release GitHub workflows to be triggered manually (`workflow_dispatch`) instead of automatically on tags and commits.

### Fixed
- Fixed `makensis.exe` syntax errors during CPack NSIS installer generation on Windows by ensuring absolute path variables use backslashes.
- Fixed Arch User Repository (AUR) release workflow by bypassing faulty third-party actions and resolving Docker timeouts.
- Fixed Linux and macOS packaging workflows.
- Modernized CPack build process with PowerShell logging to improve error diagnostics on Windows.

## [2.4.4] 2026-04-03

### Fixed
- Fixed missing Add/Remove Programs registry keys for Windows NSIS installer by explicitly setting `CPACK_NSIS_DISPLAY_NAME` and `CPACK_NSIS_INSTALLED_ICON_NAME`.

## [2.4.1] 2026-04-02

### Fixed
- Fixed the release action on windows to ensure `slint_cpp.dll` is correctly relocated.

## [2.4.0] 2026-04-01

### Added
- Added MSD (Mean Squared Displacement) calculator.
- Added Steinhardt calculator.
- Added `SpecialFunctions` with AVX implementation.
- Added Doxygen documentation for `math` and `physics` namespaces.

### Changed
- Refactored `math` and `physics` namespaces, moving `physics` to its own folder and grouping utilities.
- Improved `LinearAlgebra` and math consistency, replacing `M_PI` usage.
- Optimized constants lookup by using an `unordered_map` for physical constants.
- Optimized `calculateVelocities` via loop switching.
- Eagerly precompute bond cutoffs after the first frame is loaded.
- Simplified box wrapping logic.
- Improved trajectory and frame validation for large cells.
- Improved and reordered the test suite.

### Fixed
- Fixed `K/Q = 0` handling in FFT.
- Fixed self-inclusion issues in the `math` namespace.
- Improved element counting accuracy.

### Removed
- Removed old S(Q) calculators.

## [2.3.1] 2026-03-25

### Added
- Added tooltips to the calculators for better usability.
- Added direct structure factor calculator and Debye S(K) calculator.
- Added unit tests for `SIMDUtils`.
- **Fixed-Size Window Layout**: Standardized the UI to a consistent 392px width, improving UX by avoiding jarring window resizes during file loading.
- **Foundational Calculator Automation**: `DistanceCalculator`, `AngleCalculator`, `DihedralCalculator`, and `CNCalculator` are now executed automatically as foundational steps in the analysis pipeline.

### Changed
- Major refactor to calculator naming.
- Refactored writers for better code quality.
- Refactored ToolTip logic and OptionCard for improved UI/UX.
- **UI Optimization**: Hid foundational calculators (Distance, Angle, Dihedral, CN) from the user selection panel to reduce clutter, as they are now mandatory internal dependencies.
- **FileInfoCard Visibility**: The card is now always visible with a placeholder for better layout stability.
- **Analysis Cleanup**: Structural calculators no longer appear in the dynamic UI, focusing the interface on high-level analysis results.

### Fixed
- Fixed UI/UX across multiple components.
- Fixed GitHub Actions workflows.
- **Slint UI Refinements**: Standardized padding and element alignments across all cards for a more premium feel.

## [2.2.0] 2026-03-22

### Added
- Implemented `BaseCalculator` and `CalculatorFactory` to streamline calculator management.
- Refactored all calculators (`PAD`, `CN`, `DAD`, `SQ`, `XRD`, `RD`, `Dihedral`, `VACF`, `VDOS`, `RDF`, `Distance`, `Angle`) to use the new factory pattern.
- Updated UI to dynamically render calculator options based on the factory.

### Changed
- Reorganized the project root directory to reduce clutter, moving packaging, images, and documentation into subfolders.
- Improved TBB integration for calculators.

### Fixed
- Resolved Windows compilation issue related to `resource.rc` path.
- Fixed GitHub Actions warnings by updating the release action to support Node.js 24.

## [2.1.2] 2026-03-18

### Fixed
- Resolved Node 20 deprecation and ninja install warnings in GitHub Actions.


## [2.1.1] 2026-03-15

### Added
- Integrated AUR (Arch User Repository) publishing into the release workflow.

### Fixed
- Resolved context access errors in the GitHub Actions release workflow.

## [2.1.0] 2026-03-14

### Added
- Implemented SIMD vectorization (AVX2/AVX-512) for key calculators (`SQCalculator`, `XRDCalculator`, `DistanceCalculator`, `RDFCalculator`, `AngleCalculator`).
- Added `sinc_integral` SIMD kernel for structure factor calculations.
- Integrated TBB (Threading Building Blocks) for parallelization across all calculators and smoothing functions.
- Added comprehensive Inno Setup script for Windows installers.
- Added AUR (Arch User Repository) configuration files.
- Added 3.0.0 Roadmap and updated project documentation.
- Integrated CPack for multi-platform packaging (DEB, TGZ, NSIS, DragNDrop).

### Fixed
- Resolved SIMD compilation errors on Windows/MSVC.
- Fixed case-sensitivity issues in distribution function filenames.
- Fixed Parquet export issues on macOS.
- Resolved CI/CD runner compatibility issues (Node 20 deprecation, JEMALLOC on macOS, headless X11 for Linux tests).
- Fixed various build and test failures in GitHub Actions.

## [2.0.0] 2026-03-09

### Added
- Added progress bar to File Loading for extremely large input files.
- Added code commentaries to all Slint UI files.
- Updated API Doxygen documentation.

### Changed
- Improved Motif Finder logic to better identify chordless rings.
- Improved Ring Distribution calculation and implemented ring distribution normalization to integrate to one.
- Refactored `TrajectoryAnalyzer` and `StructureAnalyzers`.
- Reworked `computeMean` function.
- Updated progress bar logic and status messages.
- Switched back to shared DLLs to address false positive virus detection.

### Fixed
- Fixed UI clutter in Distribution functions.
- Fixed a bug where the load button state wasn't restored if file selection was canceled.
- Fixed Linux and Windows compilation issues.

## [2.0.0 RC3] 2026-03-04

### Added
- Implemented `ArrowWriter` to export distributions to the Parquet format.
- Added "Export as Parquet" option directly in the GUI analysis card.
- Added comprehensive list of Atomic Form Factors (Cromer-Mann coefficients) in `PhysicalData.hpp`.
- Added new UI components: `expandable_header`, `check_box_row`, and `infoRow`.

### Changed
- Improved CSV export headers to correctly export units and comments for OriginPro compatibility.
- Improved HDF5 export to correctly map histogram names to their corresponding metadata (bin label, units, description).
- Refactored `FileWriter` and re-enabled all Distribution Functions by default.
- Implemented dynamic height control for analysis and file info cards in the UI.
- Improved analysis progress reporting with more detailed and verbatim feedback during executions.
- Refactored `AppToolTips` dynamic positioning to avoid exceeding program boundaries.
- General UI/UX improvements and refactoring in `RunAnalysisCard` and `FileInfoCard` (e.g., hiding trajectory options when not needed).
- Updated project version to 2.0.0 RC3.

### Fixed
- Improved and fixed Google Tests in `_05_Writer_Tests.cpp` and `ArrowWriter` to correctly handle Parquet assertions.

## [2.0.0 RC2] 2026-02-27

### Added
- Implemented DMol3 `.outmol` file reading with `OutmolReader`.
- Added support for reading CASTEP MD and trajectory files.
- Added outmol and cellulose examples.
- Added automated Time Step suggestion.
- Added frame range parameters and parallelization to VACF calculation.
- Implemented Filon's Quadrature in VDOS.
- Added toggleable advanced options and dynamic UI layout for analysis cards.
- Added colored buttons to the GUI.
- Added extensive tests for `FileReader`, `AppBackend`, `AppController`, and `XRD`.

### Changed
- Refactored `FileIO` into specialized `FileReader` objects.
- Refactored `DistributionFunctions` into independent calculators.
- Added `const` and `[[nodiscard]]` attributes to key API functions.
- Improved `RunAnalysisCard` and reorganized AppWindow cards.
- Removed redundant components and cleaned up dual GUI flags.

### Fixed
- Fixed segmentation faults and edge cases reading MD files.
- Minor GUI bug fixes, including Options button, rightbar layout, and Window Title.

## [2.0.0 RC1] 2026-02-14

### Added
- Implemented **Vibrational Density of States (VDOS)** calculation and analysis.
- Added `Cm-1` and `meV` units for VDOS.
- Added ClangFormat configuration and `clangd` setup.
- Added VDOS data writing to HDF5.
- Added scrollbar to `BondCutoffsCard`.

### Changed
- Reordered source code in multiple files to match header structure.
- Updated HDF5 writing to use 2D matrices for columns.
- Flattened the HDF5 file writer structure.
- GUI updated for multi element structures.

### Fixed
- Fixed HDF5 X-axis linkage and dimension scales.
- Fixed HDF5 MSVC compilation issues.
- Fixed HDF5 metadata and column ordering.
- Disable load button when dialog is open.

## [1.9.9] 2026-02-04

### Added
- Implemented Velocity Autocorrelation Function (VACF) calculation.
- Added `velocities_` storage and calculation to `Trajectory`.
- Added `DynamicsAnalyzer` class for computing dynamic properties (VACF, Normalized VACF).
- Automatic detection and removal of repeated frames during trajectory initialization.

### Changed
- Added missing license headers to project files.
- UI: Highlighted removed frames in red for better visibility.
- GUI improvements.
- Force Dark theme.
## [1.9.8] 2026-02-02

### Added
- Added "START" and "END" keywords to Min/Max Frame selection for easier trajectory range handling.
- Reintegrated `LinearProgressIndicator` and `CircularProgressIndicator` to Material 1.0 library.
- Added native Save File Dialog for "Write Files" output selection.

### Fixed
- Corrected PAD (Plane Angle Distribution) calculations to match v1.0.4 results.

### Changed
- Updated progress bar logic and UI to use `LinearProgressIndicator` for consistent Material Design aesthetics.

## [1.9.7] 2026-01-29

### Changed
- Removed `theta_cut` argument from `calculatePAD` (fixed to 180°).
- Refactored `CMakeLists.txt` to modularize dependencies and tests.
## [1.9.6] 2026-01-27

### Added
- Implemented asynchronous analysis to prevent the GUI from freezing during calculations.
- Added a progress bar to visualize analysis status.
- Separated "Analyze" and "Write Files" into distinct actions.

### Fixed
- Fixed implicit capture of `this` warning in `AppController.cpp` (C++20).

## [1.9.5] 2026-01-26

### Added
- Implemented trajectory averaging to calculate mean distributions over selected frames.
- Added controls for frame range selection (Minimum/Maximum Frame).
- Enhanced `FileInfoCard` to show detailed file statistics: frame count, element types/counts, and total atoms.

### Changed
- Refined `AppWindow` layout to a two-column design for better use of screen space.
- Improved component visibility: inactive UI elements are now disabled instead of hidden.
- Refactored `DistributionFunctions` to support histogram accumulation.
- Refactored test suite to utilize the `Trajectory` object for consistent frame handling.

### Fixed
- Re-implemented HDF5 dimension scales using the HDF5 High Level (HL) C API to resolve missing `makeScale` support in the C++ wrapper.
- Fixed a syntax error in `src/main.cpp`.

## [1.9.4] 2026-01-26
 
 ### Added
 - Added `Element-Any` and `Any-Any` columns to the Coordination Number (CN) distribution for aggregated neighbor counting.
 - Added descriptions and unit metadata to HDF5 output groups and datasets.
 - Added trajectory revision to support removing duplicated frames.
 - Added parsing of frame energy from `.arc` files.
 
 ### Changed
 - Improved HDF5 internal structure by sanitizing group names (e.g., removing parentheses) and adding consistent unit attributes (`Angstrom`, `Angstrom^-1`, etc.).
 - Updated project version to 1.9.4 in `CMakeLists.txt`.

## [1.9.3] 2026-01-26

### Changed
- Refactored tests to use Trajectory object for Cell and cutoff management.
- Updated project version to 1.9.3 in CMakeLists.txt.

## [1.9.1] 2026-01-23


### Added
- Added support for reading ARC trajectory files (`.arc`).
- Implemented `Trajectory` class for handling multi-frame simulations.
- Added `readTrajectory` function to `FileIO`.
- Added unit tests for ARC file reading and duplicate frame handling.

### Fixed
- Fixed compilation issues on Windows.

## [1.9.0] 2026-01-22

### Added
- Migrated data output to HDF5 format (via `.h5` files), providing a consolidated and more efficient alternative to multiple CSV files.
- Integrated **HighFive** (v2.10.1) for modern C++ HDF5 support.

### Fixed
- Resolved CMake configuration error ("Compatibility with CMake < 3.5 has been removed") by updating HighFive and setting `CMAKE_POLICY_VERSION_MINIMUM` to 3.5.
- Fixed a UI initialization bug where the "Gaussian" smoothing kernel was not correctly displayed in the dropdown on startup.

### Changed
- Refactored `OptionsCard.slint` to set **Smoothing** to be always enabled by default, simplifying the UI and ensures consistent analysis results.
- Updated project version to 1.9.0 in `CMakeLists.txt`.

## [1.8.2] 2026-01-21

### Fixed
- Fixed tooltip positioning by ensuring the `AppToolTips` container is correctly anchored and sized in `AppWindow.slint`.
- Fixed a property name typo in `AppWindow.slint`.

### Changed
- Refined `AppToolTips` component to inherit from `Rectangle` with a transparent background to ensure coordinate consistency.
- Improved tooltip aesthetics by adjusting maximum text width to 190px and enabling horizontal center alignment in the Material tooltip component.
- Updated project version to 1.8.2 in `CMakeLists.txt`.

## [1.8.1] 2026-01-20

### Changed
- Simplified `AppBackend` and `AppController` by removing legacy variables: `bond_factor`, `max_angle`, and `normalize`.
- Hardcoded the default **Bond Factor** to 1.2 across the application to provide a more stable out-of-the-box experience.
- Refactored `DistributionFunctions` and `Cell` classes to remove unused configuration parameters.
- Cleaned up `AppWindow.slint` UI by removing redundant input fields and adjusting spacing for better clarity.
- Updated all unit tests (`Cell_test`, `Distribution_Functions_tests`, `StructureAnalyzer_test`, etc.) to reflect the simplified API and hardcoded defaults.

## [1.8] 2026-01-18

### Added
- New **Bond Cutoffs** section in the UI for element-specific distance control.
- Dynamic **Atom Counts** display after loading a structure file.
- Support for setting and applying user-defined bond cutoffs per element pair.
- Integrated tooltips directly into UI components for better contextual help.

### Changed
- Reorganized `AppWindow.slint` into a guided 5-step workflow using `OutlinedCard`.
- Updated `AppBackend` and `AppController` to handle element-specific bond cutoff logic.
- Improved UI responsiveness and layout clarity by grouping related parameters.
- Updated project version to 1.8 in `CMakeLists.txt`.
- Increased `AppWindow` preferred height to 750px for better vertical layout accommodation.

### Fixed
- Fixed `ToolTip` rendering order to ensure tooltips appear on top of all other elements.
- Fixed `DropDownMenu` default index issue for "Smoothing Kernel" selection.

## [1.7] 2026-01-14


### Added
- Refactored entire UI to use **Material Design** components.
- Integrated `material-1.0` Slint library for premium aesthetics.
- Added Material Design `FilledButton`, `CheckBox`, `OutlinedCard`, and `DropDownMenu`.
- Added `slint-config.json` for centralized `@material` library mapping.

### Changed
- Replaced standard widgets with Material equivalents in `ui/AppWindow.slint`.
- Updated `ui/AppWindow.slint` to use `@material` imports via `slint-config.json`.
- Improved tooltip text distribution and typography in `ToolTip.slint`.
- Adjusted `ToolTip` positioning in `AppWindow.slint` for improved layout.
- Updated project version to 1.7 in `CMakeLists.txt`.

### Fixed
- Fixed export errors for `MaterialPalette` and `CheckBoxTile` in `material.slint`.
- Fixed functionality of `DropDownMenu` for Smoothing Kernel selection.
- Fixed deprecated `rotation-angle` property in `date_picker.slint` (replaced with `transform-rotation`).
- Cleaned up redundant `ui/Theme.slint` and `ui/InputGroup.slint` (functionality moved to Material Design).

## [1.6] 2026-01-13

### Added
- Icosahedron Angle Test in `tests/AngleTests.cpp`.
- Missing color definitions to `ui/Theme.slint`.

### Changed
- Refactored `ui/AppWindow.slint` to use `VerticalLayout` and `GroupBox` for better UI organization.
- Updated project version to 1.6 in `CMakeLists.txt`.

### Fixed
- Fixed unit conversion error in `ui/AppWindow.slint`.
- Fixed "Unknown property max-height" error in `ui/AppWindow.slint`.

## [1.5] 2026-01-07

### Refactor
- Fused `Angle_Reproduction_tests.cpp` and `PAD_tests.cpp` into a single `tests/AngleTests.cpp` file for better organization.
- Refactored `AtomID` from a struct to a simple `std::uint32_t` alias, removing the unused `offset` field to simplify the codebase.
- Updated `Atom::setID` and all `AtomID` usages (e.g., removing `.value` accesses) to match the new type definition.

### Added
- Comprehensive neighbor detection tests in `StructureAnalyzer_test.cpp`:
    - `FindsNoNeighborsForIsolatedAtom`: Validates isolation of single atoms.
    - `FindsNeighborsBasedOnBondCutoff`: Ensures bond radius + bond factor logic is strictly followed.
    - `EnforcesNeighborSymmetry`: Checks that neighbor lists are symmetric (A sees B => B sees A).
    - `HandlesPeriodicSelfInteractions`: Verifies self-interaction logic across periodic boundaries.
    - `TriangleMoleculeConnectivity`: Validates connectivity in cyclic triangular structures.
- New `SiTetrahedron_5Atoms` test case in `Angle_Reproduction_tests.cpp`:
    - Simulates a full Silicon tetrahedron (1 center + 4 neighbors).
    - Verifies exact count of 6 tetrahedral angles (109.47°).
    - Explicitly checks for 0 "other" (unexpected) angles.
- New `BondCutoffPopulationCorrectness` test in `Cell_test.cpp` to verify `bond_cutoffs_sq_` management.

### Fixed
- **Critical Bug**: `Cell::setBondFactor` now properly clears the cached `bond_cutoffs_sq_`, ensuring that runtime changes to the bond factor (e.g., during tests) are immediately applied.
- **Data Consistency**: Verified Covalent Radii in `PhysicalData.hpp` against Pyykkö (2009) data. Reverted Bismuth (Bi) radius from 1.50 Å to 1.51 Å to maintain consistency with the dataset.
- Fixed `ctest` configuration issues related to missing `DartConfiguration.tcl` by ensuring proper CMake regeneration.

## [1.3] 2025-12-04

### Added
- Angle reproduction tests and example structure file.
- FiraCode fonts support.
- Feedback mechanism from backend to App.
- LabeledEdit component and InputGroup to AppWindow.
- Theme support.
- ToolTips for most parameters in the GUI.
- Application icon for Windows and Linux.
- Logo to window component.
- All parameters are now available in the GUI.
- Move semantics for DistributionFunction and Cell objects.
- Portable file dialogs support.

### Changed
- Refined UI layout and responsiveness.
- Moved App logic to a new AppController object.
- Moved Bond Distance matrix to the Cell object.
- Reimplemented Bump kernel in Smoothing header.
- Moved constants to PhysicalData header.
- Reduced ProgramOptions to a single header file.
- Updated UI and Backend initialization.

### Fixed
- Multiple fixes for Windows compilation and CMake configuration (MSVC 2022).
- Corrections for Path handling in Windows.
- Fixes to Smoothing for PAD, CN, and when bin width/sigma were problematic.
- Fixes to g(r), J(r), G(r), and S(Q) calculations.
- Fixed Total PAD not being calculated.
- Fixed global path to app_window.h.

### Removed
- Removed code for writing histograms.
- Removed min Q for S(Q) calculation and CSV writers.
- Removed redundant code and old constants header references.

## [1.2] 2025-09-15
- Several improvements were made to the code in order to modernize
and incorporate new features.
- Added GUI for easy of use.


## [1.0.4] 2021-12-21
- Added support for self interactions, important for small crystals.
- Switch to std::filesystem to generate paths.
- Added Smoothing option: Kernel Smoothing with Gaussian Kernel.
- Added BumpKernel as second option, more kernels will be added.
- Added Total correlation functions (previously only partials were reported).
- Added initial support for Voronoi and Voronoi index. (Road to 1.1)

## [1.0.3] 2021-10-12
- Major refactor of the code in preparation for MultiThreading.
- The code now comply with google c++ style guidelines.
- Modify the name for the Coordination Number (Z).
- Modify the labels in the coordination number file (Z)to comply
  with the standard atom A surrounded by atoms B: A by B.

## [1.0.2] 2021-09-17
- Minor style corrections to paper.md and README.md.
- Updated DOI for JOSS paper.

## [1.0.1] 2021-09-11
- Minor fix to paper.md to correct a compile error from whedon.

## [1.0.0] 2021-09-06
- First official release.

## [1.0.0 rc9] 2021-09-06
- Added test 8, an structure of amorphous Palladium-Gold-Hydrogen,
  the structure was provided by Alejandro de Leon and Salvador Villareal.
  This new test should take at least 1 hour and require more RAM.
- Added new option '-n'/"--normalize", this parameter change between
  weighted partials (default), or normalized partials.

## [1.0.0 rc8] - 2021-09-02
- Temporal Fix to S(Q) weird behavior for small Q. (0<=Q<1)
  Because of the abnormal results for small Q, and in the process of
  getting better results for small Q, we decided to remove the unreliable
  information for this segment, now we report for Q above 1.0.
- Added -q/--q_bin_width parameter in order to further personalize the
  structure factor options.
- Updated the "aPdH.cell" file, in order to correctly reflect the
  structure of the article.
- Added arguments to tests in the Makefile:
  -a in test 1,
  -b in test 2,
  -q in test 3,
  -i was already in test 4,
  -w in test 5,
  -r in test 6.
- Fixed padding in output files (purely cosmetic).
- Fixed Tests to match new padding and options (see above).
- Update to documentation: README.md, paper.md and command line help
  to reflect current functionality.

## [1.0.0 rc7] - 2021-08-01
- Fixed a bug in reduced Pair Distribution Function (rPDF) (G(r))
  in alloys (pure element structures unaffected).
- Added weighing to the calculated properties, related to the above bug.
- Added units to Comma Separated Values (CSV) files.
- Actualized the test archives to match the new headings with units.


## [1.0.0 rc6] - 2021-07-28
- Added Contributing guidelines.
- Added Code of Conduct.
- Fixed several typos in the README and paper.
- Fixed a bug in Bin Width option (-w, --bin_width).
- Fixed the command "make clean-all" to match the README.

## [1.0.0 rc5] - 2021-07-23
- Several Typos in the project were corrected.
- Added units to the output files.
- Corrected paper.md to comply with reviewers corrections.

## [1.0.0 rc4] - 2021-04-11
- Major revision to README file
- Minor bugs corrections in main.cpp and Makefile.am

## [1.0.0 rc3] - 2021-03-04

### Added
- Tests now check validity of the results.
- Test 7 (make test7), also known as an stress test has been incorporated.
  This test should take several minutes and a large amount of RAM.
- Added a new option to clean the test directory (make clean-test)

### Modify
- clean-local option now leaves a working Makefile and the Binary.
  This modification should help with testing, while keeping a clean
  directory.
- cleanall option now replace clean-local

## [1.0.0 rc2] - 2021-02-28

### Added
- configure and Makefile.in, generated with GNU autotools.
- AUTHORS and Changelog files now included.

### Modify
- Old Makefile is included as Makefile.old
