Changelog¶
Changes to XRayLabTool are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Version Categories¶
Added: New features
Changed: Changes in existing functionality
Deprecated: Soon-to-be removed features
Removed: Now removed features
Fixed: Bug fixes
Security: Vulnerability fixes
v0.4.4 (2026-06-25)¶
Added
Python 3.14 support:
pyproject.tomlclassifier and CI matrix coverage (ubuntu/macOS/windows)
Fixed
parse_formulanow rejects trailing/invalid characters (e.g.SiO2junk,Si-O2) instead of silently ignoring themComplex energy inputs are rejected with a clear
EnergyErrorrather than being coerced to their real partEmpty energy arrays now raise
EnergyErrorinstead of producing empty resultsBatch processing disambiguates colliding result keys so no result is silently dropped
calculate_scattering_length_densityreconciled with the pipeline kernel (SLD = 2π·δ/λ²; real part positive for δ > 0)validate_energy_rangedefaults corrected to the supported 0.03–30 keV rangeGUI: density spinbox range aligned with
validate_density(0.001–30 g/cm³); non-numeric density cells are skipped instead of crashingGUI “Save PNG” now exports the plot via pyqtgraph’s
ImageExporter(the PyQtGraph widgets have no matplotlib figure, so the previoussavefigpath always errored)xraylabtool batchno longer crashes on the default non-progress path, where the progress tracker yieldedNone
Changed
Removed unused
EnhancedValidator/ErrorRecoveryManagermachinery from the batch CLI pathMigrated class-scoped pytest fixtures to
@classmethodfor pytest 9 compatibility
v0.4.3 (2026-05-08)¶
Changed
Upgraded pip to >=26.1 in CI to resolve CVE-2026-6357
Expanded
.gitignorewith comprehensive uv/venv, CI, and tooling patternsUpdated Sphinx API docs to cover all public modules (calculators, gui, interfaces, utils)
Fixed Sphinx build output path in README development commands
Security
CI: pin
pip>=26.1in dependency-audit job to prevent CVE-2026-6357 false positives
v0.4.2 (2026-04-30)¶
Changed
UI/UX Pro Max upgrade applied to PySide6 interface
Upgraded form validation to use non-blocking toast notifications instead of blocking message boxes
Enhanced touch target sizes for all inputs and buttons
Standardized UI spacing and interactive states (loading buttons, disabled opacities)
v0.4.1 (2026-04-07)¶
Fixed
Version bump for patch release
v0.4.0 (2026-04-07)¶
Added
Backend abstraction layer (
xraylabtool.backend) supporting NumPy and JAX backendsset_backend("jax")/set_backend("numpy")for runtime backend switchingInterpolationFactoryfor backend-agnostic PCHIP interpolation (scipy ↔ interpax)PyQtGraph-based interactive plotting widgets (replaces matplotlib in GUI)
JAX float64 auto-configuration at package import time
202 characterization tests with golden-value assertions for migration safety
Optional
[jax]dependency group:pip install xraylabtool[jax]Optional
[plots]dependency group for matplotlib (publication plots)Architecture Decision Records in
docs/architecture/Security scanning workflow and license compliance auditing
Changed
All core computation modules now use backend ops instead of direct NumPy
GUI plotting migrated from matplotlib to PyQtGraph for interactive performance
ColorPalette.mpl_cyclerenamed toColorPalette.plot_cycleapply_matplotlib_theme()replaced withapply_pyqtgraph_theme()scipy.constantseliminated from utils.py (uses constants.py directly)matplotlib moved from required to optional dependency
ReadTheDocs migrated to uv-based builds on Ubuntu 24.04 / Python 3.13
CI updated to Python 3.13, latest GitHub Actions with SHA-pinned versions
Deprecated
optimization/vectorized_core.pymanual SIMD heuristics (use JAX backend instead)optimization/optimized_core.pymonkey-patching (useset_backend('jax'))
Removed
ScalarFriendlyArraynumpy subclass (replaced with plain numpy arrays)Direct matplotlib dependency (now optional via
[plots]extra)Direct scipy.constants usage in computation path
v0.3.0 (2025-12-15)¶
Added
GUI modernization: dark mode toggle with persistent preferences
New theme engine supporting light and dark themes
Security
Replaced python-jose with PyJWT to address Minerva attack vulnerability
Fixed
Plot clipping issues with scrollbars
Single-point plot visibility in energy sweeps
Log path toggle contrast
GUI smoke test made non-blocking for CI reliability
Maintenance
Removed obsolete workflows (security.yml, performance-monitoring.yml, dependabot.yml)
Simplified lint job to use ruff only (removed isort/black)
Updated tool versions in CI
Added explicit permissions to all GitHub Actions workflows
v0.2.x (2025)¶
See the full history in CHANGELOG.md for detailed v0.2.0 through v0.2.7 release notes covering:
Enhanced CLI with shell completion support
Batch processing from CSV files
Performance benchmarking suite (150,000+ calculations/sec)
Cross-platform shell completion (bash, zsh, fish, PowerShell)
Mamba support and environment isolation
v0.1.0 (2024)¶
Added
Core X-ray optical properties calculations
Support for single materials and compounds
Complex refractive index calculations (delta, beta)
Critical angle and attenuation length calculations
Chemical formula parsing
Energy-wavelength conversions
Basic command-line interface
Atomic scattering factor data for 92 elements
Compatibility Matrix¶
Version |
Python 3.12 |
Python 3.13 |
Windows |
macOS/Linux |
|---|---|---|---|---|
v0.4.1 |
✅ |
✅ |
✅ |
✅ |
v0.4.0 |
✅ |
✅ |
✅ |
✅ |
v0.3.0 |
✅ |
✅ |
✅ |
✅ |
v0.2.x |
✅ |
✅ |
✅ |
✅ |
v0.1.0 |
✅ |
❌ |
✅ |
✅ |
Migration Guides¶
For upgrading between versions, see:
Migration Guide: v0.3.0 → v0.4.0 — Upgrading from v0.3.0 to v0.4.0