Change Log
==========

0.2.4 (05.10.2026)
-------------------
- Add reusable TOML experiment plans, a queue editor and an example plan.
- Improve automatic stage and laser alignment with broad/semi-coarse searches,
  relative detection-rate checks, detector hit-map centering, bounded fine Z,
  voltage retries and complete transfer/alignment diagnostics.
- Unify control state reporting across device owners, with separate requests,
  observations, correlated command outcomes, faults and readback freshness.
  Save a final control-state snapshot in each dataset's metadata directory.
- Improve laser CLI connection/reply handling, lower-state cancellation,
  frequency controls and unavailable optical readback diagnostics.
- Compact the control GUIs, preserve access on smaller monitors, update the
  GUI screenshots and expand control documentation.
- Improve acquisition shutdown, chunk validation, fault handling and provenance.
- Extend calibration tools for concentration profiles, ROI analysis, SDM
  calibration, species display, peak modeling and reconstruction export.
- Strengthen scientific/data contracts and add CI checks for critical coverage,
  typing, clean distribution installation, security and performance regressions.

0.2.2 (04.05.2026)
-------------------
- Add GitHub Actions CI: tests (matrix on Linux/Windows × Py 3.10/3.11/3.12),
  ruff lint, Sphinx docs build, GHCR Docker image, tag-driven PyPI release.
- Document the tag-driven release runbook in CONTRIBUTING.md, including PyPI
  Trusted Publishing setup and recovery from failed releases.
- Fix `store_df_to_hdf` calling `DataFrame.to_hdf` with a positional `key`
  on modern pandas (TypeError: takes 2 positional arguments but 3 given).
- Make `_build_peak_template` skip-not-fail when a peak window has fewer
  than 25 ions, aligning the threshold with `_split_reference_peaks` so
  adaptive residual calibration degrades gracefully on sparse peaks.
- Mock optional control-extra deps (PyQt6, pyqtgraph, pyserial, opencv,
  pyvisa) in docs/conf.py so the docs build runs in the calibration-only
  CI environment.
- README badges: distinguish the docs CI badge (now "docs build") from the
  Read the Docs link badge.
- Loosen the synthetic-fixture spread tolerance in
  test_adaptive_residual_calibration_reduces_windowed_peak_drift to 2x to
  match the metric's noise floor on small datasets.

0.0.1 (23.03.2022)
-------------------
- First Release


