History

See the full changelog in CHANGELOG.md.

Recent Changes

Unreleased

Version 0.1.8 (2026-05-07)

  • Threading reliability: fix race condition in AsyncDataPreloader slot connection order

  • Threading: thread-safety Lock around ViewerKernel dataset cache (WeakValueDictionary)

  • Threading: LRU eviction in WorkerManager result/error storage (cap 100 entries)

  • Threading: optimised pool shutdown — cancel pending futures before shutdown(wait=False)

  • Schema: G2Data.to_dict() returns defensive copies to preserve dataclass immutability

  • Performance benchmarks marked @pytest.mark.flaky to tolerate CI timing variance

  • Plothandler: lazy_proxy.LazyMplCanvasBarV defers Matplotlib import until tab shown

Version 0.1.7 (2026-05-01)

  • Constrain JAX versions and optimize performance benchmarks

  • Add codecov configuration to ignore non-code paths

  • Add project logo (docs/_static/xpcsviewer_logo.jpg)

  • Add graphify knowledge graph (graphify-out/)

Version 0.1.6 (2026-03-12)

  • CI: bump astral-sh/setup-uv from v4 to v7 across all GitHub Actions workflows

Version 0.1.3 (2026-02-23)

  • “Plot All Q” button in G2 Fit tab for all-Q Bayesian overlay visualization

  • Export button: CSV parameters, PDF/PNG figures, netCDF ArviZ diagnostics

  • Sampler config spinboxes (warmup, samples, chains) for batch Bayesian fitting

  • fitting.viz module: plot_bayesian_all_q, export_bayesian_csv, export_bayesian_diagnostics

  • Batch all-Q Bayesian fitting with GUI integration (bayesian_assembly.py)

  • NLSQ 0.6.0 adoption: R², adjusted R², RMSE, MAE, AIC, BIC metrics

  • Confidence intervals and prediction intervals for fitted parameters

  • SVG icon system with theme-aware currentColor replacement and caching

  • Category tab bar with separator lines between tab groups

  • 12-tab layout: G2 View, G2 Fit, G2 Map as separate tabs

  • Q-bin spinbox with per-Q navigation in G2 Fit tab

  • Compact layouts for G2 Fit, Diffusion, and G2 Map tabs

  • Bayesian fit results stored on bayesian_fit_summary (no longer overwritten by NLSQ)

  • G2 Fit tab auto-refreshes after “Fit All Q” batch completes

  • Diffusion tab prefers Bayesian fit results when available

  • JAX TracerArrayConversionError fix in NLSQ model functions

  • Exception-based validation (XPCSValidationError)

  • Tutorial notebooks rewritten as self-contained with synthetic data

  • Installation docs updated to xpcsviewer-gui package name

  • Dark-theme gallery screenshots

  • Performance: hot path optimization for G2, SAXS 1D, twotime modules

Version 0.1.2 (2026-01-06)

  • SimpleMask module for interactive mask editing and Q-map generation

  • Drawing tools: Rectangle, Circle, Polygon, Line, Ellipse, Eraser

  • Q-map computation from detector geometry

  • Partition (Q-binning) utilities

Version 0.1.1 (2026-01-06)

  • G2 Map tab with dynamic UI for Q-space visualization

  • XPCS Viewer logo and branding

  • Python 3.13 support

  • Furo documentation theme

Version 0.1.0 (2026-01-05)

Initial release under the xpcsviewer package name.

Features:

  • G2 correlation analysis with single/double exponential fitting

  • SAXS 1D/2D visualization and analysis

  • Two-time correlation analysis with batch processing

  • HDF5/NeXus data support (APS-8IDI beamline format)

  • Sample stability monitoring

  • File averaging with parallel processing

GUI Modernization:

  • Light/dark theme support with automatic system detection

  • Session persistence

  • Command palette (Ctrl+Shift+P)

  • Toast notifications

  • Keyboard shortcut manager

  • Drag-and-drop file handling

  • Theme-aware PyQtGraph and Matplotlib backends