From c12fb34057395c078f867ccc0036eafe5ce0625b Mon Sep 17 00:00:00 2001 From: semantic-release Date: Tue, 8 Sep 2026 09:58:18 +0000 Subject: [PATCH] 0.23.0 Automatically generated by python-semantic-release --- CHANGELOG.md | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- 2 files changed, 110 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ed5cf80..0c8a65ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,115 @@ # CHANGELOG +## v0.23.0 (2026-09-08) + +### Bug Fixes + +- Keep user values in the scan panels across sample mounts + ([`8833f3a`](https://gitea.psi.ch/mx/AareDAQ/commit/8833f3a9d1ed21f79c2f2f6a15365bf0e86718ea)) + +The panels kept the effective detector distance, resolution and transmission in their own + attributes, and a sample change overwrote those from the spreadsheet whatever the Database/User + toggle said. The fields went on showing the user's numbers while the scan request carried the + database ones, so a value had to be re-entered after every mount. + +The fields are now the only place a value lives. Each setting is worth, in order: what the user + typed while "User values" is selected, what the mounted sample asks for, the panel default - one + rule, ScanSettingsPanel ._setting, that each panel spells out a line at a time. Overrides are per + setting, so a setting the user did not touch keeps following the sample. + +Along the way: + +* DbOverrideLineEdit is gone; the panels use NumberLineEdit directly, and the per-widget + database/user bookkeeping is replaced by SampleParameters, the one place that knows the aareDB + spreadsheet column names. * The (name, widget, converter) mapping loops with getattr/hasattr are + replaced by explicit per-field commit slots. * The omega speed cap no longer drives one field's + validator from another field's value: it is a read-out plus a check on the pair at Run time. * + _add_row/_add_pair_row build the label/field/unit rows, which also puts the Total angle degree + sign on its own row instead of the header above. + +Co-Authored-By: Claude Opus 5 (1M context) + +Claude-Session: https://claude.ai/code/session_01JHoUkj66jxByS2ypY5h9Mn + +- Put Mount next in the automation row, gated to the Queued view + ([`bc8137a`](https://gitea.psi.ch/mx/AareDAQ/commit/bc8137a389653208ea13f262711da4dd8f7ece94)) + +The button was parented to the dewar tab but never added to a layout, so Qt painted it at (0, 0) + over the TELL sample changer banner. It now sits left of Unmount in the automation row (docked and + pop-out), greyed out outside the Queued view like Remove/Clear. A trailing stretch keeps the row's + buttons at their natural width instead of sharing the spare space. + +Co-Authored-By: Claude Fable 5.1 + +- Read the aareDB total angle from the column that exists + ([`7cc662b`](https://gitea.psi.ch/mx/AareDAQ/commit/7cc662bfd85df3f23823587835a8a6443e6f34fc)) + +The column is totalangle, not totalrange, so reading it raised AttributeError four times a second in + the status loop. + +Reading a spreadsheet cell now goes through _spreadsheet_float, which treats a missing column, an + empty cell and a cell that does not hold a number all as "not set" and logs the column once. + aareDB owns these names; the GUI should fall back to its defaults when one moves, not die on the + status loop it is read from. + +Note that the same misspelling is still in daq.py (spreadsheet_params and get_auto_raster_params), + where getattr's default hides it: automation has never picked up the total angle from the + spreadsheet either. + +Co-Authored-By: Claude Opus 5 (1M context) + +Claude-Session: https://claude.ai/code/session_01JHoUkj66jxByS2ypY5h9Mn + +- Read the aareDB transmission as the percentage it is + ([`63d902a`](https://gitea.psi.ch/mx/AareDAQ/commit/63d902a82acce4742f635f999b302d78ca731788)) + +DataCollectionParameters.transmission is a StrictInt documented as "positive, between 0 and 100" + (aareDB's own API description of the spreadsheet payload), while every model that consumes it + wants a 0-to-1 fraction. The old "divide by 100 only when above 1.0" guess therefore turned a + spreadsheet asking for 1% into a scan at 100% transmission - a hundredfold dose on the sample. A + fraction cannot be stored in that column at all: the model rejects 0.2. + +The mapping test now builds a real DataCollectionParameters instead of a stand-in namespace, so a + renamed column fails the test rather than the beamline. That is what let 'totalrange' through. + +daq.py's spreadsheet_params and get_auto_raster_params still carry both the old column name and the + same transmission guess. + +Co-Authored-By: Claude Opus 5 (1M context) + +Claude-Session: https://claude.ai/code/session_01JHoUkj66jxByS2ypY5h9Mn + +- Take the aareDB transmission as the fraction aarecommon >= 0.7 declares + ([`f1cf55a`](https://gitea.psi.ch/mx/AareDAQ/commit/f1cf55adb9b9be3c244128115cb51123e5df8a3d)) + +CI resolves aarecommon 0.7.3, where DataCollectionParameters.transmission is a 0-to-1 fraction that + rejects anything above 1.0 (the percent sheets are converted inside AareDB >= 0.83, which main + already requires). The divide-by-100 from the earlier 'percentage' fix therefore failed the model + test on CI and would have turned 20% into 0.2% at the beamline. Pass the fraction through and pin + aarecommon>=0.7.3 so the older int percentage model can no longer be installed; relock. + +Also satisfy the diff typecheck gate: basedpyright only counts instance variables assigned in + __init__, so the Database/User toggle widgets are created there and _build_source_toggle only lays + them out. + +Co-Authored-By: Claude Fable 5.1 + +### Features + +- Show AUTO CENTERING in the sample camera view while a loop centering runs + ([`f20bd06`](https://gitea.psi.ch/mx/AareDAQ/commit/f20bd065f561fd123855e189a165ec0dbdf9e266)) + +/status cannot tell an auto centering from a manual alignment move (both are busy + SampleAlignment, + the combo the overlay deliberately hides), so the DAQ worker emits its own auto_centering flag: + True while its own /alc/center_loop POST is in flight (the endpoint blocks until done) or while + the automation progress reports the Center step running. The sample camera views pass it to + build_busy_overlay_style, which paints a purple AUTO CENTERING wave text like the ROBOT + MOUNTING/COOLING ones. + +Co-Authored-By: Claude Fable 5.1 + + ## v0.22.1 (2026-09-08) ### Bug Fixes diff --git a/pyproject.toml b/pyproject.toml index 428bf705..124fa5cb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "aaredaq" -version = "0.22.1" +version = "0.23.0" description = "AareDAQ (with GUI)" readme = "README.md" requires-python = ">=3.11"