From ece5fb781d72dede8a62b2f66b0c3784f70c8e0e Mon Sep 17 00:00:00 2001 From: semantic-release Date: Thu, 17 Sep 2026 19:23:39 +0000 Subject: [PATCH] 1.1.0 Automatically generated by python-semantic-release --- CHANGELOG.md | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- 2 files changed, 109 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 043895c6..5d91b104 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,114 @@ # CHANGELOG +## v1.1.0 (2026-09-17) + +### Bug Fixes + +- **gui**: App-level event filters tolerate PySide's stray QWidgetItem + ([`90f6533`](https://gitea.psi.ch/mx/AareDAQ/commit/90f653386adbf5a9e5a24fb7fc9ba8e79cf78660)) + +CI (3.12, PR 232) failed test_font_zoom_keeps_frozen_column_aligned_and_reautosizes with a pytest-qt + CALL ERROR: PySide 6.9 handed both app-level filters a QWidgetItem instead of a QEvent during + layout teardown, and event.type() raised. The wheel guard now keys on isinstance(event, + QWheelEvent) and returns False itself instead of super().eventFilter() (which type-checks its + arguments and would raise the same way); the cursor filter ignores anything that is not a QEvent. + Regression test for each. + +Co-Authored-By: Claude Fable 5.1 + +- **gui**: Keep queue head until /status confirms unmount on Mount next + ([`1ea607b`](https://gitea.psi.ch/mx/AareDAQ/commit/1ea607ba56cb6ab65113ba6a40f3146f873f5bd4)) + +Mount next popped the mounted head before posting the exchange, so a failed unmount dropped a sample + that was still on the gonio. Now the head stays queued and is removed only when /status shows a + different (or no) sample mounted; a failed exchange leaves the queue intact for a retry. + +Co-Authored-By: Claude Fable 5.1 + +- **gui**: Keep the file-name preview in the plain theme color + ([`d70cac4`](https://gitea.psi.ch/mx/AareDAQ/commit/d70cac45bf910d644601102170345ba130d47c89)) + +Dawn: the red "file exists" tint on the path label reads as an error across the whole panel. The Run + guard's popup already reports a clash, so the label stays in the standard text color. The popup + now also asks the user to run the data collection again after the run number bump. + +Co-Authored-By: Claude Fable 5.1 + +- **gui**: Make the file-exists guard literal: popup, run +1, no scan + ([`646de67`](https://gitea.psi.ch/mx/AareDAQ/commit/646de672917ce8ed6a05803f157290bbbf9c60a7)) + +update_filename() still skipped to the next free run number on every edit and refresh, so the name + was always free by the time Run was clicked and the guard never fired. The name is now exactly + what the fields say (label turns red on a clash); on Run, an existing target pops "File already + exists", bumps the run number by one and does nothing else. + +Co-Authored-By: Claude Fable 5.1 + +- **gui**: Pop up "File already exists" instead of silently bumping the run + ([`8798a81`](https://gitea.psi.ch/mx/AareDAQ/commit/8798a815555dd41f76a455cf534922bbbb940f69)) + +The Run guard called set_scan_kind(), which runs update_filename() and skips to the next free run + number before the existence check, so the check never fired and the scan started under a new + number without a word. Now the check runs first, then a warning box names the existing master file + and the run number it moved to, and the run is blocked. + +- Simple tab "Run rotation" had no guard at all; same guard added - "Taken" also matches + _*_master.h5: X-ray Centering writes _raster2d_master.h5, which the exact name missed - + Camera context-menu "Evaluate grid" presses the panel button, so it gets the guard and stays inert + while the button is disabled - Dead next_free_run_from() removed + +Co-Authored-By: Claude Fable 5.1 + +- **gui**: Reach the file-exists guard from every tab, test exact names + ([`010513e`](https://gitea.psi.ch/mx/AareDAQ/commit/010513e1412006c6cd8e808386574db101463300)) + +The tabs are handed parent=DataCollectionSettings but QStackedWidget.addWidget() reparents them to + the stack, so the guard's parent() lookup never found file_path_panel and every Run (rotation, + screening, raster, X-ray centering, Simple) skipped the check. Lookup now walks up the widget + tree; regression test drives all five runs through the real DataCollectionSettings. + +The "taken" test is exact again: _master.h5 plus the DAQ's derived + _raster2d/_raster1d_master.h5. The directory test and the _*_master.h5 glob are gone: neither + is a file a run writes, and they painted run numbers red that nothing would ever produce. + +Co-Authored-By: Claude Fable 5.1 + +- **gui**: Zoom-proof the Dewar table and control heights, theme the mounted HUD ink + ([`bf11528`](https://gitea.psi.ch/mx/AareDAQ/commit/bf11528e8680e5df6a0b853b8a2524dd22f4881a)) + +Dewar "#" column sat 1px above the other rows at some zoom steps: the frozen-column overlay sizes + its own header from "#" alone while the main header also sees the symbol columns, whose + fallback-font glyphs have a taller line box. The overlay header is now pinned to the main header + height on resize and (deferred, receiver-bound) on font/style change. + +Zoom also left columns at their startup widths (headers truncated) and clipped descenders in every + button/combo/entry box: the 16px height pin in both sheets was raw px while the body font grew to + 18/21px. Columns re-autosize on FontChange and the pin scales with the font ladder. + +Camera "Currently mounted" HUD: black ink on a white halo in the light themes, white on black in + Sunset, instead of white-on-black everywhere. + +Co-Authored-By: Claude Fable 5.1 + +### Chores + +- Better wording, make user calm + ([`7458ea0`](https://gitea.psi.ch/mx/AareDAQ/commit/7458ea04006e7151e6e647f5397d1bc23a54c7ed)) + +### Features + +- **gui**: Pin status-bar operables right, stop readout width jitter + ([`1b6a32d`](https://gitea.psi.ch/mx/AareDAQ/commit/1b6a32d1372c7ac7350aadd2b8f6e6cb2d61f39b)) + +- Fast Shutter / State / p-group / Session are addPermanentWidget now: QStatusBar itself pins them + to the right corner, so wrapping of the other readouts never moves them - passive readouts keep + wrapping in the FlowHost on narrow windows - grow-only min-width ratchet on every readout: + changing number widths used to re-flow the row each DAQ tick and jitter every neighbour + +Co-Authored-By: Claude Fable 5 + + ## v1.0.3 (2026-09-17) ### Bug Fixes diff --git a/pyproject.toml b/pyproject.toml index 0e6fe6c8..3b0b4f3d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "aaredaq" -version = "1.0.3" +version = "1.1.0" description = "AareDAQ (with GUI)" readme = "README.md" requires-python = ">=3.11"