0.23.0
CI / lint (push) Successful in 39s
Docs build and publish / docker (push) Successful in 19s
Build and Publish / release (push) Successful in 22s
CI / test (3.12) (push) Successful in 1m3s
CI / test (3.13) (push) Successful in 1m0s
CI / test (3.14) (push) Successful in 1m2s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m13s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m21s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m21s
CI / test-with-coverage (push) Successful in 1m45s
CI / coverage-analysis (push) Skipped

Automatically generated by python-semantic-release
This commit is contained in:
semantic-release
2026-09-08 09:58:23 +00:00
parent f1cf55adb9
commit c12fb34057
2 changed files with 110 additions and 1 deletions
+109
View File
@@ -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) <noreply@anthropic.com>
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 <noreply@anthropic.com>
- 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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
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 <noreply@anthropic.com>
### 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 <noreply@anthropic.com>
## v0.22.1 (2026-09-08)
### Bug Fixes
+1 -1
View File
@@ -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"