0.10.0
Docs build and publish / docker (push) Successful in 4s
Build and Publish / release (push) Successful in 7s
CI / lint (push) Successful in 1m6s
CI / test (3.13) (push) Successful in 1m3s
CI / test (3.11) (push) Successful in 1m24s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m38s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m53s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 2m8s
CI / test (3.12) (push) Successful in 1m52s
CI / test-with-coverage (push) Successful in 2m5s
CI / coverage-analysis (push) Skipped
Docs build and publish / docker (push) Successful in 4s
Build and Publish / release (push) Successful in 7s
CI / lint (push) Successful in 1m6s
CI / test (3.13) (push) Successful in 1m3s
CI / test (3.11) (push) Successful in 1m24s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m38s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m53s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 2m8s
CI / test (3.12) (push) Successful in 1m52s
CI / test-with-coverage (push) Successful in 2m5s
CI / coverage-analysis (push) Skipped
Automatically generated by python-semantic-release
This commit is contained in:
+222
@@ -1,6 +1,228 @@
|
||||
# CHANGELOG
|
||||
|
||||
|
||||
## v0.10.0 (2026-08-17)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Measured threshold is rotation count >= 1
|
||||
([`2909182`](https://gitea.psi.ch/mx/AareDAQ/commit/2909182bb104d96a5b2d44ae8bb33a5056a69d67))
|
||||
|
||||
Confirmed by Dawn: any rotation data counts as measured; unmeasured is exactly rotation count 0. The
|
||||
old > 1 rule left single-rotation samples looking like still-to-do work in the Unmeasured view.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- No auto-switch to beamline view during Sample alignment
|
||||
([`cb5837d`](https://gitea.psi.ch/mx/AareDAQ/commit/cb5837d90f03c02c56fd017f9eb714a2164e1753))
|
||||
|
||||
Busy in Sample alignment IS the alignment (centring moves) - yanking the view away to the combined
|
||||
beamline tab hid exactly what the user was doing. The motion-watch switch now skips that state;
|
||||
robot exchange and other busy transitions still switch as before.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Order sample count columns by workflow, unwire crossed columns
|
||||
([`f303f29`](https://gitea.psi.ch/mx/AareDAQ/commit/f303f29214c780b9c97e360b598d6a849e2f7a14))
|
||||
|
||||
Both bottom-dock tables now list mount -> raster -> screening -> rotation, the order the work
|
||||
actually happens in. In the Auxiliary table the swap also fixes a real bug: data() feeds get_entry
|
||||
header-index-minus-1, but rotation/raster were crossed against the header, so 'Raster count'
|
||||
displayed rotation counts and vice versa.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Pyright-style ignore for setGraphicsEffect(None)
|
||||
([`03ae77f`](https://gitea.psi.ch/mx/AareDAQ/commit/03ae77fa749a216412dc23045f2660e840ae1b98))
|
||||
|
||||
basedpyright disables mypy-style 'type: ignore' comments by default, so the diff-quality gate still
|
||||
counted the violation; match the existing 'pyright: ignore[reportArgumentType]' convention from
|
||||
main_window.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
### Chores
|
||||
|
||||
- Clarify move to mounting position in smargon movement
|
||||
([`adcc63d`](https://gitea.psi.ch/mx/AareDAQ/commit/adcc63d45cfaf95357b86fd311d8b5c8a5d06b22))
|
||||
|
||||
### Code Style
|
||||
|
||||
- Expanded help overlay opens top center, under the badge
|
||||
([`3053aaa`](https://gitea.psi.ch/mx/AareDAQ/commit/3053aaae9386bc108b429b036dab0b359a9446f1))
|
||||
|
||||
The '?' badge moved to the top middle but the cheat sheet still opened bottom-left, sending the
|
||||
mouse across the view to close it. The overlay now drops in where the badge was.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Help badge at center top, More link right-aligned
|
||||
([`a0baa2b`](https://gitea.psi.ch/mx/AareDAQ/commit/a0baa2b54dde762af27be62c7c15658728e797b6))
|
||||
|
||||
The '?' badge sat in a corner, which drifts oddly when the view is scaled to fit; the top middle
|
||||
stays put and out of the sample's way. Transparency unchanged - visible enough to find, not
|
||||
disturbing. 'More... (F1)' moves to the overlay's right edge, reading like a dialog's action
|
||||
button.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Move Unmeasured next to All, 1px gap between filter chips
|
||||
([`378c257`](https://gitea.psi.ch/mx/AareDAQ/commit/378c25799f9da4e393619439776d2e5af69d389e))
|
||||
|
||||
Unmeasured and All are both 'what is left' views; the hand-applied labels (Queued/Flagged/Measured)
|
||||
follow. The 1px spacing keeps the chips readable as separate buttons instead of one solid bar.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Wrap shutter flag f-strings for ruff format
|
||||
([`32a835b`](https://gitea.psi.ch/mx/AareDAQ/commit/32a835b6616425fca6b2a9444705212cc98a5b1c))
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
### Features
|
||||
|
||||
- Add Unflag to the sample table context menu
|
||||
([`900bc2f`](https://gitea.psi.ch/mx/AareDAQ/commit/900bc2f6f7f9c58a8c45d123f5c9bfb70319cb5e))
|
||||
|
||||
Below Mount/Unmount, acting on the selection like the queue actions. Flagging happens by dropping
|
||||
rows on the Flagged chip; until now there was no way back. Disabled when nothing in the selection
|
||||
is flagged.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Add Unmeasured filter chip to the sample table
|
||||
([`4175cb8`](https://gitea.psi.ch/mx/AareDAQ/commit/4175cb8edfa6b732260d9a4f2c3f339216e9ba04))
|
||||
|
||||
Complement of Measured (rotation count <= 1): one click shows everything still to be done, so it can
|
||||
be selected wholesale and queued. Plain chip like All - unmeasured rows carry no tint, so there is
|
||||
no legend color to wear; cross-status marks (queued/ flagged) show like in the Measured view.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Breathe the pending transition target in the state strip
|
||||
([`fbd40ee`](https://gitea.psi.ch/mx/AareDAQ/commit/fbd40eee90b96e517252a757c3e00e9af4902977))
|
||||
|
||||
While Moving, the target state sat solid blue and read as already reached. An opacity pulse
|
||||
(QGraphicsOpacityEffect + QPropertyAnimation) marks it as in progress; a stylesheet animation
|
||||
would repolish the button every frame, which the guarded updates in _apply_highlight exist to
|
||||
avoid.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Clicking the '#' header selects all rows
|
||||
([`4a728ba`](https://gitea.psi.ch/mx/AareDAQ/commit/4a728baf79a9fa677e83ccb895a1689901b6ce23))
|
||||
|
||||
The status column holds no sortable data, so its header click slot was free: it now does Ctrl+A,
|
||||
pairing with the Unmeasured chip to grab everything still to be done in one motion. The sort
|
||||
indicator is put back afterwards - the click drags it onto '#' even though the model ignores
|
||||
sorting there.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Current energy readout in Exp. Config energy row
|
||||
([`1fef282`](https://gitea.psi.ch/mx/AareDAQ/commit/1fef28231b707118f645e02f04ad3cf81e953349))
|
||||
|
||||
Mirrors the Beamline setup live readout above Set Energy, fed by the same DAQ tick with the
|
||||
zero-energy guard and repaint skip.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Fast shutter open/close row in Beamline setup
|
||||
([`8f91f1e`](https://gitea.psi.ch/mx/AareDAQ/commit/8f91f1ed2ed1cbca04dcd00f761292b0108b19a7))
|
||||
|
||||
Status flag on the left (same rich-text scheme as the status bar, theme-aware via set_theme),
|
||||
Open/Close buttons on the right, wired to the same daq.open_shutter/close_shutter slots
|
||||
staff-gated in main_window.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Live energy/wavelength readout in Beamline setup
|
||||
([`2a82c59`](https://gitea.psi.ch/mx/AareDAQ/commit/2a82c598c0010a8d766cb781f31f0a4d85f09b2e))
|
||||
|
||||
New 'Current energy / lambda' row above the setpoint, fed per DAQ tick from diffraction.energy_keV;
|
||||
the setpoint row is renamed 'Set Energy (keV)' so 'what is' and 'what to set' are distinct. Guards
|
||||
energy 0.0 (server's detector-unavailable fallback) because the wavelength property divides by it.
|
||||
The copied energy row in the experiment configuration is renamed to match.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Put the ExpHutch shutter left of the fast shutter
|
||||
([`977483e`](https://gitea.psi.ch/mx/AareDAQ/commit/977483ef2843d56abe921fb8c6d999a130423c2e))
|
||||
|
||||
Beam-path order in the status bar: the hutch shutter sits upstream of the fast shutter, so it reads
|
||||
left to right along the beam.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Queue controls live only in the Queued view
|
||||
([`6ace1fc`](https://gitea.psi.ch/mx/AareDAQ/commit/6ace1fcbcfd8815f75c3d4498427050b35edc659))
|
||||
|
||||
Run/Remove selected/Clear list act on the queue, whose order only the Queued chip view shows - in
|
||||
other views they are greyed out with a tooltip pointing at the chip. Run stays enabled while
|
||||
automation runs so pausing is always possible. Applies to the docked trio and the pop-out clones
|
||||
alike.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Queued chip view shows the actual run order
|
||||
([`344888d`](https://gitea.psi.ch/mx/AareDAQ/commit/344888dac072090fcf33a751dfb330bd2094bee1))
|
||||
|
||||
The queue engine keeps insertion order and Run pops its head, but the Queued view sorted by the
|
||||
dewar table's header sort - the top row was not what runs next. set_queued_ids now keeps the order
|
||||
it is fed (the queue model's order) and the Queued view displays exactly that; header clicks no
|
||||
longer reorder it.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Sample camera starts in scale-to-fit
|
||||
([`b58c23d`](https://gitea.psi.ch/mx/AareDAQ/commit/b58c23d0f65207a6ed15489fbcdeaa04acc2265a))
|
||||
|
||||
_autoscale now defaults on, so the view fits from the first layout (the constructor's placeholder
|
||||
already carries the camera size and resizeEvent refits on every resize). update_pixmap
|
||||
additionally refits when the frame size changes - the real stream resolution can differ from the
|
||||
placeholder, and only a view resize refit before. Right-click 'Scale to fit' still toggles back to
|
||||
1:1.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
- Wave-animate the busy overlay titles
|
||||
([`80063a5`](https://gitea.psi.ch/mx/AareDAQ/commit/80063a5df1c7c8b3c0c04aed6dfb5f160e477d47))
|
||||
|
||||
BEAMLINE BUSY and the robot warnings now hop per letter (clipped sine) so they read as an
|
||||
in-progress signal, not a frozen label. Gated by a new BusyOverlayStyle.animate flag: 'In viewing
|
||||
mode' stays static because it is a passive notice. No timer - the phase rides the wall clock and
|
||||
repaints ride the ~20 fps camera frames, so the wave freezes with a stalled feed (which has its
|
||||
own error surface).
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
### Refactoring
|
||||
|
||||
- Replace Qt overrides with native mechanisms, install app filters once
|
||||
([`c24da77`](https://gitea.psi.ch/mx/AareDAQ/commit/c24da7739b2f845094b875ad2943f0d736b66b3f))
|
||||
|
||||
Per-window installs of the two QApplication-level filters (cursor, wheel guard) stacked one stale
|
||||
copy per MainWindow; now installed once per process, parented to the app. closeEvent overrides in
|
||||
the baton dialogs replaced by finished.connect(timer.stop); keyPressEvent in VideoGraphicsView
|
||||
replaced by WidgetShortcut QShortcuts; hover enter/leave overrides in PlayPauseButton replaced by
|
||||
underMouse(); ValueLabel inherits ClickableLabel instead of duplicating its mousePressEvent. Dead
|
||||
raster-timer branch and a PyQt5-era event-position fallback deleted; redundant try/except and
|
||||
getattr guards dropped now that class-level defaults cover pre-init reads.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
### Testing
|
||||
|
||||
- Pin the Sample-alignment motion-watch exception
|
||||
([`e9428ca`](https://gitea.psi.ch/mx/AareDAQ/commit/e9428ca64dece6f9a9c2be6fc5867c635b08449c))
|
||||
|
||||
Robot motion switches to the combined view; alignment beginning switches straight back while busy is
|
||||
still set, and staying busy in alignment never re-triggers. Piggybacks on the init test's window -
|
||||
extra MainWindow constructions feed the PySide teardown flake.
|
||||
|
||||
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||||
|
||||
|
||||
## v0.9.0 (2026-08-17)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "aaredaq"
|
||||
version = "0.9.0"
|
||||
version = "0.10.0"
|
||||
description = "AareDAQ (with GUI)"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.11"
|
||||
|
||||
Reference in New Issue
Block a user