Docs build and publish / docker (push) Successful in 3s
CI / test (3.13) (push) Failing after 31s
CI / lint (push) Failing after 32s
CI / test-with-coverage (push) Failing after 28s
CI / coverage-analysis (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Failing after 31s
CI / test (3.14) (push) Failing after 35s
CI / test-with-beamline-plugins (pxii_bec) (push) Failing after 31s
CI / test-with-beamline-plugins (pxiii_bec) (push) Failing after 32s
CI / test (3.12) (push) Successful in 1m18s
Automatically generated by python-semantic-release
3137 lines
131 KiB
Markdown
3137 lines
131 KiB
Markdown
# CHANGELOG
|
|
|
|
|
|
## v1.4.0 (2026-10-06)
|
|
|
|
### Features
|
|
|
|
- Put current zoom level in redis
|
|
([`4ac6f4a`](https://gitea.psi.ch/mx/AareDAQ/commit/4ac6f4a947276f71fd4295e622659b10753dcb49))
|
|
|
|
|
|
## v1.3.8 (2026-10-02)
|
|
|
|
### Bug Fixes
|
|
|
|
- Fix test related to last change
|
|
([`2cccc8a`](https://gitea.psi.ch/mx/AareDAQ/commit/2cccc8a345453ef0b342c0c3b6595bb1c3491ca1))
|
|
|
|
- Standard DTY offset is 0 mm now
|
|
([`4430585`](https://gitea.psi.ch/mx/AareDAQ/commit/4430585e3cba6d89da687c656519b0fb152b588d))
|
|
|
|
|
|
## v1.3.7 (2026-10-02)
|
|
|
|
### Bug Fixes
|
|
|
|
- User macro reload from BEC client, not dispatch
|
|
([`6ba560f`](https://gitea.psi.ch/mx/AareDAQ/commit/6ba560fc6991a7fe587ae77ce24e52501245e667))
|
|
|
|
|
|
## v1.3.6 (2026-10-01)
|
|
|
|
### Bug Fixes
|
|
|
|
- Sleep 2 seconds between grid and rotation - proper fix
|
|
([`84a8711`](https://gitea.psi.ch/mx/AareDAQ/commit/84a871122a1101e2618cd9b4922ff6fb59493f8a))
|
|
|
|
|
|
## v1.3.5 (2026-10-01)
|
|
|
|
### Bug Fixes
|
|
|
|
- Sleep 2 seconds between grid and rotation
|
|
([`9606d26`](https://gitea.psi.ch/mx/AareDAQ/commit/9606d266abd9bd6673de9fc8935cdc2167cbbe8e))
|
|
|
|
|
|
## v1.3.4 (2026-09-30)
|
|
|
|
### Bug Fixes
|
|
|
|
- Update color of the mounted row in AareGUI
|
|
([`70f9a14`](https://gitea.psi.ch/mx/AareDAQ/commit/70f9a143253aa99cc5a3052087843e3b6eb0e0b3))
|
|
|
|
- **gui**: Fire mount auto-centering on the first idle status tick
|
|
([`3409d01`](https://gitea.psi.ch/mx/AareDAQ/commit/3409d01efdd75e778675d7fb1d9cfa4e70b604ea))
|
|
|
|
The "apply after mounting" checkbox clicked Auto Centering as soon as the status poll showed a new
|
|
sample id. /sample/mount still holds the hw lock at that point, /alc/center_loop takes the same
|
|
lock non-blocking, and the resulting BeamlineBusyException is a quiet error the GUI swallows. So
|
|
the automatic click never did anything; only a later manual click worked.
|
|
|
|
Arm on the sample-id change and click on the first status tick with busy=False, which is exactly
|
|
what the user did by hand. Skip arming while queue automation runs: it mounts and centers on its
|
|
own and frees the lock between /scan/auto calls, so a GUI centering in that gap would steal the
|
|
lock from the next scan. Pause during a scan's mount phase can still arm that one sample, but
|
|
Pause ends in an unmount, so the window is a ms-wide lock gap sampled at 2 Hz; accepted, noted in
|
|
the code.
|
|
|
|
Supersedes the three-commit approach on fix/auto-center-after-mount-wait-idle (PR 243).
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
- **gui**: Remove not longer needed return to main window at close and cleanup
|
|
([`2c388ff`](https://gitea.psi.ch/mx/AareDAQ/commit/2c388ff7ad6dca80ef092305541a6be8749cde7c))
|
|
|
|
### Testing
|
|
|
|
- Patch the test
|
|
([`5cb32ba`](https://gitea.psi.ch/mx/AareDAQ/commit/5cb32ba5fca61fd7d2d81f0a6189516d2dc9937e))
|
|
|
|
|
|
## v1.3.3 (2026-09-29)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add detector y offset for 10s
|
|
([`ee7c4cb`](https://gitea.psi.ch/mx/AareDAQ/commit/ee7c4cb946978a40cb3b6c79c277a6027fe4d754))
|
|
|
|
|
|
## v1.3.2 (2026-09-24)
|
|
|
|
### Bug Fixes
|
|
|
|
- 10% transmission for X10SA automation raster
|
|
([`4ac8313`](https://gitea.psi.ch/mx/AareDAQ/commit/4ac83137339b62ab6247f0fb0ae819a013e4fe31))
|
|
|
|
Reverting back to 10% transmission for rasters at 10S
|
|
|
|
|
|
## v1.3.1 (2026-09-23)
|
|
|
|
### Bug Fixes
|
|
|
|
- 100% transmission for X10SA automation raster
|
|
([`f5dd8cf`](https://gitea.psi.ch/mx/AareDAQ/commit/f5dd8cf0b8d257868454fa6f64cb0855c360e751))
|
|
|
|
Release trigger for 0348929a, whose non-conventional commit message ("Update ...") was not picked up
|
|
by semantic-release, so v1.3.0 still ships transmission 0.1 for the X10SA auto-raster defaults.
|
|
|
|
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
|
|
|
|
|
## v1.3.0 (2026-09-22)
|
|
|
|
### Features
|
|
|
|
- Switch off tell air blower before moving chi away from zero
|
|
([`11f22b5`](https://gitea.psi.ch/mx/AareDAQ/commit/11f22b57cd271798299e8f7d8509a903f03a1c10))
|
|
|
|
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
|
|
|
|
## v1.2.0 (2026-09-21)
|
|
|
|
### Features
|
|
|
|
- Fixed per-beamline raster parameters in automation
|
|
([`8a24025`](https://gitea.psi.ch/mx/AareDAQ/commit/8a24025c2726e9dfd1bd092e93150dae84e8a984))
|
|
|
|
Release trigger for e1175c9d, whose capitalized "Feat:" prefix was not recognized by
|
|
semantic-release.
|
|
|
|
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
|
|
|
|
## v1.1.1 (2026-09-18)
|
|
|
|
### Bug Fixes
|
|
|
|
- **gui**: Add "Show beam crosshair" toggle to the camera right-click menu
|
|
([`b5e6159`](https://gitea.psi.ch/mx/AareDAQ/commit/b5e6159118d9d4067b779fc3e43eb4e4c1f9dc84))
|
|
|
|
Right-clicking the sample camera now offers a checkable "Show beam crosshair" entry. When on, two
|
|
full-frame lines through the beam center are drawn with the same pen as the beam box, so the
|
|
crosshair follows the beam state color. Off by default so the view stays as before.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
### Code Style
|
|
|
|
- Have the cross hair not too long, just a small cross
|
|
([`3f404af`](https://gitea.psi.ch/mx/AareDAQ/commit/3f404af06942053a2b45600cb2f36ac9bdfc883e))
|
|
|
|
Anuschka and Katherine really need it
|
|
|
|
- **gui**: Soften the mounted-sample HUD ink on light themes
|
|
([`79bb351`](https://gitea.psi.ch/mx/AareDAQ/commit/79bb351437b6db06369ca2388a8663e36ded850b))
|
|
|
|
Pure black (SHADOW) over the camera image read too harsh; use the theme text ink (TEXT) with the
|
|
same white halo instead. Sunset keeps white on black.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
|
|
## 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 <noreply@anthropic.com>
|
|
|
|
- **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 <noreply@anthropic.com>
|
|
|
|
- **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 <noreply@anthropic.com>
|
|
|
|
- **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 <noreply@anthropic.com>
|
|
|
|
- **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
|
|
<run>_*_master.h5: X-ray Centering writes <run>_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 <noreply@anthropic.com>
|
|
|
|
- **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: <run>_master.h5 plus the DAQ's derived
|
|
<run>_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 <noreply@anthropic.com>
|
|
|
|
- **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 <noreply@anthropic.com>
|
|
|
|
### 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 <noreply@anthropic.com>
|
|
|
|
|
|
## v1.0.3 (2026-09-17)
|
|
|
|
### Bug Fixes
|
|
|
|
- Report better errors on critical failures
|
|
([`735650a`](https://gitea.psi.ch/mx/AareDAQ/commit/735650aea7cccef6ca9dedb234329520fdf94557))
|
|
|
|
|
|
## v1.0.2 (2026-09-17)
|
|
|
|
### Bug Fixes
|
|
|
|
- Don't wait for jfjoch cancellation
|
|
([`4fc93b9`](https://gitea.psi.ch/mx/AareDAQ/commit/4fc93b92aa649df982b80efa007e5d786bf5c065))
|
|
|
|
- Make _safe_sample safer
|
|
([`5d770bd`](https://gitea.psi.ch/mx/AareDAQ/commit/5d770bddc0a7b2d97c9284645b590aa86095829c))
|
|
|
|
### Documentation
|
|
|
|
- Add comment to timeout adjustment
|
|
([`b385559`](https://gitea.psi.ch/mx/AareDAQ/commit/b385559842ece937491a474d3aca183274c56079))
|
|
|
|
|
|
## v1.0.1 (2026-09-17)
|
|
|
|
### Bug Fixes
|
|
|
|
- Guillaume's fix for pin exclusion
|
|
([`c545910`](https://gitea.psi.ch/mx/AareDAQ/commit/c545910f350e47fef5a313105fc00327c49eda2c))
|
|
|
|
|
|
## v1.0.0 (2026-09-16)
|
|
|
|
### Bug Fixes
|
|
|
|
- Cast the mocked daq.unmount for basedpyright on CI
|
|
([`e31b0e9`](https://gitea.psi.ch/mx/AareDAQ/commit/e31b0e9a6f7bd8adb0ce60e1cfe4b8eefecbe2d2))
|
|
|
|
CI's basedpyright (latest from the index, newer than the local venv) types win.daq as the real
|
|
DAQWorker, so assert_not_called on the patched-in MagicMock flagged the two new gate-test lines.
|
|
|
|
Note: the pytest job segfaults are NOT from this branch — plain origin/main crashes 2/4 runs under
|
|
PySide6 6.11.2 (what CI installs; uv.lock pins 6.9.0 which is stable). Needs a separate dependency
|
|
fix.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Full-length hint line on resize-bar hover/drag, short grip idle
|
|
([`750559f`](https://gitea.psi.ch/mx/AareDAQ/commit/750559fadedbdbefa09b7e8d58fbbf1475c706df))
|
|
|
|
User feedback: idle bars stay short centered grips, but hovering or grabbing a resize bar brings
|
|
back the full-length 2px line + shadow gradient so the active bar reads over its whole run. The
|
|
now-unused hint grip PNGs are removed.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Give deferred singleShot callbacks a receiver context
|
|
([`26fbe2c`](https://gitea.psi.ch/mx/AareDAQ/commit/26fbe2ca421eafd550b2696173fb40c6d8114abc))
|
|
|
|
Root cause of the long-standing cross-test SystemError flake ("QPushButton returned NULL", CI
|
|
failing test_title_label after an unrelated file): TitleLabel schedules QTimer.singleShot(0,
|
|
self._apply_collapsed) at construction; when the banner is deleted before the event loop spins
|
|
(what every panel test does), the pending timer fires into the dead C++ object and poisons
|
|
whatever test runs next. Deterministic repro added as a regression test. The receiver-context
|
|
overload singleShot(0, self, ...) auto-cancels the callback when the widget dies. Same fix for the
|
|
two deferred main-window callbacks (dock split, floating-dock enlarge).
|
|
|
|
Note for the record: the LOCAL segfault storm this afternoon was the dev machine's disk hitting 100%
|
|
full (uv cache at 15G) — Bus errors from mmap on a full disk, unrelated to any code.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Pin PySide6 below 6.10 so CI stops segfaulting
|
|
([`32f98d7`](https://gitea.psi.ch/mx/AareDAQ/commit/32f98d7285e4dc78cac80085602a2d3d8385e99f))
|
|
|
|
CI installs latest index deps (it does not read uv.lock) and resolved PySide6 6.11.2, which
|
|
segfaults the unit suite in teardown on about half the runs - reproduced on PLAIN origin/main, so
|
|
it is not this branch's code. 6.9.0 (the uv.lock pin) is stable. Cap the dependency so CI resolves
|
|
a 6.9.x build; drop the cap once the teardown crash is hunted down. uv.lock re-locked (it was
|
|
stale at aaredaq 0.22.1).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Re-pin PySide6 after the beamline-plugin install in CI
|
|
([`c203a65`](https://gitea.psi.ch/mx/AareDAQ/commit/c203a657c5694cd3f67ceb079ed3a32096c7c5e9))
|
|
|
|
The bec plugin editable installs upgrade PySide6 to 6.11.x past the pyproject cap, which brings the
|
|
teardown segfault back in exactly the test-with-beamline-plugins jobs. Reinstall the capped
|
|
version after the plugin install.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Suppress takeAt override complaint from newer basedpyright stubs
|
|
([`145b94b`](https://gitea.psi.ch/mx/AareDAQ/commit/145b94b7eff87c9585681ba4c6c5acbcb5ccd613))
|
|
|
|
Qt's takeAt contract is nullptr-if-out-of-range; the newer PySide stubs on CI declare a non-Optional
|
|
return. Suppress rather than lie.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Chores
|
|
|
|
- Retrigger CI (pxi_bec job hit the known eventFilter teardown flake)
|
|
([`7fb9f8b`](https://gitea.psi.ch/mx/AareDAQ/commit/7fb9f8bf9cf2623591417fe7d3774f71caa10f64))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Retrigger CI (pxi_bec job hit the known eventFilter teardown flake)
|
|
([`b29b5f1`](https://gitea.psi.ch/mx/AareDAQ/commit/b29b5f121e1cb011b22c73fe85b78b190457ddb7))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Features
|
|
|
|
- Remove Playlist Mode and Automation View, unpin window minimum
|
|
([`809959d`](https://gitea.psi.ch/mx/AareDAQ/commit/809959df33fbf4f023b42347d86f73a7a03bcdae))
|
|
|
|
Why the width shrink only worked after a Playlist Mode round-trip: Qt auto-pins a top-level window's
|
|
minimum size to its layout minimum, and returning from Playlist Mode hid the Information dock (and
|
|
every side dock), which happened to drop that layout minimum. The main view now gets an explicit
|
|
small minimum (320x240) which disables the auto-pin outright, so the window shrinks directly and
|
|
the dock contents clip or scroll instead.
|
|
|
|
The Playlist Mode (Ctrl+6) and Automation View (Ctrl+5) prototypes are deleted per user decision:
|
|
panels, pages, the content stack (the standard page is the only page left), menu actions, camera
|
|
fan-out to their view copies, portrait alert interceptors (now plain runtime notification
|
|
routers), and their styles (portraitRoot, compact* cards, COMPACT_* and FONT_HERO knobs).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Status-bar readouts wrap on narrow windows instead of clipping
|
|
([`5cb57f4`](https://gitea.psi.ch/mx/AareDAQ/commit/5cb57f4737812f9a781334be88eef46bf2586868))
|
|
|
|
All readouts (sharpness ... Cryo | Fast Shutter | State | p-group | Session) now live in one
|
|
FlowLayout host: when the window gets narrow the bar grows extra rows and every value stays
|
|
readable, where QStatusBar used to clip the permanent group and hide the rest. FlowLayout is the
|
|
canonical Qt example trimmed down (Qt ships no built-in); the host pins its minimum height to the
|
|
wrapped height because QStatusBar ignores heightForWidth. The old left/right addWidget vs
|
|
addPermanentWidget split is gone with the wrap.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Refactoring
|
|
|
|
- Drop the camera-region splitter, side columns fixed again
|
|
([`33239bf`](https://gitea.psi.ch/mx/AareDAQ/commit/33239bf51f9cb5aa070ef7b9664e82e7a5198885))
|
|
|
|
User decision: the drag-resize bars beside the Sample camera view are not wanted - the side panels
|
|
don't need resizing. Back to the plain HBox with zoom-scaled fixed column widths; the View-menu
|
|
collapse toggles and the camera minimum-width clamp stay.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.32.1 (2026-09-16)
|
|
|
|
### Bug Fixes
|
|
|
|
- Give a better error on attempting to run raster with no sample
|
|
([`6b6c364`](https://gitea.psi.ch/mx/AareDAQ/commit/6b6c364843043a46bbfd4089b101126e469b4cd3))
|
|
|
|
- Reduce log verbosity in raster results
|
|
([`fab6e8e`](https://gitea.psi.ch/mx/AareDAQ/commit/fab6e8ed3004a98541c718dc685b4f367f14e5c3))
|
|
|
|
### Code Style
|
|
|
|
- Format
|
|
([`21a462d`](https://gitea.psi.ch/mx/AareDAQ/commit/21a462d4df9c4bee989e534b6d9ce6851a5401f3))
|
|
|
|
|
|
## v0.32.0 (2026-09-14)
|
|
|
|
### Code Style
|
|
|
|
- Format
|
|
([`8142908`](https://gitea.psi.ch/mx/AareDAQ/commit/814290829dd403238d6f239f329a421978d0888e))
|
|
|
|
### Features
|
|
|
|
- Full-name tooltips on the glyph count column headers
|
|
([`f1f932b`](https://gitea.psi.ch/mx/AareDAQ/commit/f1f932bc7cd1d72805916c1f09d740054934f3c1))
|
|
|
|
The sample list's Mount/Gridscan/Screening/Rotation count columns show only a glyph in the header to
|
|
save width; hovering now shows the full name via ToolTipRole. Text headers stay tooltip-free.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Show the mounted sample name on the camera view
|
|
([`6d09ae4`](https://gitea.psi.ch/mx/AareDAQ/commit/6d09ae4fe304058b991c29bcde72c63b0d53559a))
|
|
|
|
A "Currently mounted: <sample_name>" HUD line in the top-left corner of the sample camera, driven by
|
|
the DAQ status (clears when nothing is mounted). Painted like the other camera HUDs and sized
|
|
through the text zoom, which QSS cannot reach here.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Text zoom shortcuts and high-contrast resize lines
|
|
([`1fc7264`](https://gitea.psi.ch/mx/AareDAQ/commit/1fc72649b0d1ef24884d189e0a924da28bf53eb6))
|
|
|
|
- Ctrl+plus / Ctrl+minus / Ctrl+0 (and View menu entries) scale the QSS FONT_* ladder and the
|
|
application default font together; the scale is clamped to 0.8-1.6 and persisted in QSettings
|
|
appearance/font_scale. - Resize gutters keep a 5px hover/drag region but paint only a 2px line
|
|
with a 1px shadow (hard-stop gradients per orientation). - WCAG contrast fixes: separators were
|
|
1.0-1.2:1 against every theme background, now >=3.25:1 (dark theme gold @70%); scrollbar handle
|
|
1.17:1 -> 3.38:1; unselected tab text on the sky gradient 2.07:1 -> 4.71:1 via TAB_IDLE_TEXT.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Refactoring
|
|
|
|
- Transmission is a per-mode setting, placed in its section
|
|
([`1fe3c7f`](https://gitea.psi.ch/mx/AareDAQ/commit/1fe3c7f4e5e4c18c323b97bec49da32846b280e9))
|
|
|
|
The shared "Rotation transmission" row sat in the top rows of BOTH the Gridscan and Rotation tabs,
|
|
where it read as one setting for everything (and as nonsense in the Gridscan tab). Now each tab
|
|
places its own row: Gridscan keeps "Transmission" with the shared resolution/distance rows, and
|
|
the Rotation tab moves "Rotation transmission" below the Screening block and its Run button, as
|
|
the first row of the Rotation section - next to the fields it actually applies to. Screening keeps
|
|
its separate "Screening transmission". No behavior change: same field, same spreadsheet/user-value
|
|
handling, only the label and the placement.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.31.3 (2026-09-14)
|
|
|
|
### Bug Fixes
|
|
|
|
- Clarify wording in screening panel
|
|
([`d37c571`](https://gitea.psi.ch/mx/AareDAQ/commit/d37c5712d5e806e1a68495e9d5b267e5fc7475d1))
|
|
|
|
- Update time param in aarescan calls for screening and raster
|
|
([`9b58d77`](https://gitea.psi.ch/mx/AareDAQ/commit/9b58d77e5b221fbe4a0d757ecec3bb1e1a071b8d))
|
|
|
|
|
|
## v0.31.2 (2026-09-14)
|
|
|
|
### Bug Fixes
|
|
|
|
- Combine park and dry to one action for after-queue cleanup
|
|
([`1b5a3bd`](https://gitea.psi.ch/mx/AareDAQ/commit/1b5a3bd0c451833f2201c97f7774a6a780483568))
|
|
|
|
|
|
## v0.31.1 (2026-09-11)
|
|
|
|
### Bug Fixes
|
|
|
|
- Use res of selected gridscan image
|
|
([`bab5177`](https://gitea.psi.ch/mx/AareDAQ/commit/bab5177528613977ed2783821274f36a5592e83c))
|
|
|
|
### Code Style
|
|
|
|
- Unused import
|
|
([`69e944f`](https://gitea.psi.ch/mx/AareDAQ/commit/69e944fd499fc5d0a65bf4ab84ca584a3e285a7f))
|
|
|
|
|
|
## v0.31.0 (2026-09-11)
|
|
|
|
### Features
|
|
|
|
- Add per-beamline default datacollection params
|
|
([`32086ff`](https://gitea.psi.ch/mx/AareDAQ/commit/32086ffc6135eb4f444b9ede22b626b8c96ca788))
|
|
|
|
|
|
## v0.30.1 (2026-09-10)
|
|
|
|
### Bug Fixes
|
|
|
|
- Only set transmission when it actually differs
|
|
([`702eb7d`](https://gitea.psi.ch/mx/AareDAQ/commit/702eb7d9f9a8ae02142ee3c40f4bab460d597c2a))
|
|
|
|
The guard introduced with the transmission IOC workaround was inverted: `abs(request - readback) <
|
|
0.001` fires only when the beamline is already at the requested value, so any real transmission
|
|
change was skipped and collections ran at whatever transmission happened to be set.
|
|
|
|
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
|
|
Claude-Session: https://claude.ai/code/session_01Ni1Uhb1WqzpXPwcYsvqnH1
|
|
|
|
|
|
## v0.30.0 (2026-09-10)
|
|
|
|
### Bug Fixes
|
|
|
|
- According to 6124 planner feedback, use 10 to 20 keV at PXII
|
|
([`b27556e`](https://gitea.psi.ch/mx/AareDAQ/commit/b27556e4cf971222d9732f8dd54e029abb60b090))
|
|
|
|
### Features
|
|
|
|
- Compact sample list headers, move Comment column
|
|
([`d5a7074`](https://gitea.psi.ch/mx/AareDAQ/commit/d5a7074ec1d528514acfb082b5806fc14720cdea))
|
|
|
|
Count columns use glyphs instead of long headers to save width, Comment moves ahead of the
|
|
data-collection params, transmission shown as the stored value instead of percent.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
- X10sa energy range 6-30 keV
|
|
([`39631c5`](https://gitea.psi.ch/mx/AareDAQ/commit/39631c5206071811be1dd51b207d9bba6d134851))
|
|
|
|
Pick the mono limits by BEAMLINE env via mx_beamline(): X10SA gets 6-30 keV, other beamlines keep
|
|
the 4-20 placeholder until confirmed.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.29.1 (2026-09-10)
|
|
|
|
### Bug Fixes
|
|
|
|
- Acquire hardware lock on energy change
|
|
([`0a4e296`](https://gitea.psi.ch/mx/AareDAQ/commit/0a4e2961ce0d4a54328dcb53357300067f3a621b))
|
|
|
|
|
|
## v0.29.0 (2026-09-10)
|
|
|
|
### Features
|
|
|
|
- Add pxiii flux from lookup table
|
|
([`f7ebae2`](https://gitea.psi.ch/mx/AareDAQ/commit/f7ebae2444837b90a9184dabd9f3ec96caef1c48))
|
|
|
|
|
|
## v0.28.1 (2026-09-10)
|
|
|
|
### Bug Fixes
|
|
|
|
- Clear statistics when mounted sample changes
|
|
([`5cddae2`](https://gitea.psi.ch/mx/AareDAQ/commit/5cddae225dda0465ded97872af498c225a3b80df))
|
|
|
|
|
|
## v0.28.0 (2026-09-10)
|
|
|
|
### Features
|
|
|
|
- Hide XRF tab in data collection settings
|
|
([`871baa2`](https://gitea.psi.ch/mx/AareDAQ/commit/871baa22160dc75dfd5d432b6b5054ee614fa9f3))
|
|
|
|
Hide only, not remove: setTabVisible keeps index 3 valid so tab-change logic and panel loops stay
|
|
untouched. Unhide when XRF is ready for users.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.27.0 (2026-09-10)
|
|
|
|
### Bug Fixes
|
|
|
|
- General fixes
|
|
([`82065c0`](https://gitea.psi.ch/mx/AareDAQ/commit/82065c0f7d7741bffd8e104543498b30fa3ade7e))
|
|
|
|
- Multiply flux by transmission instead of dividing
|
|
([`891ba7b`](https://gitea.psi.ch/mx/AareDAQ/commit/891ba7bc0a36294b46c0d78347e98f6a82804807))
|
|
|
|
- Remove zoom to fit test for unused functionality
|
|
([`8d53505`](https://gitea.psi.ch/mx/AareDAQ/commit/8d535052814085face6d7ba94a227ee5656111f9))
|
|
|
|
- Use old calculation for smargon coord from new center
|
|
([`d74adc0`](https://gitea.psi.ch/mx/AareDAQ/commit/d74adc06aae329a350e5e5c952c17118795972a4))
|
|
|
|
- Workaround transmission PV issue
|
|
([`926e940`](https://gitea.psi.ch/mx/AareDAQ/commit/926e940d90ba5936aab31461be7940d1595477a7))
|
|
|
|
### Features
|
|
|
|
- Forward v2 scan results decision to DB and move calculation to analysis stage
|
|
([`f3ba37e`](https://gitea.psi.ch/mx/AareDAQ/commit/f3ba37e6a35389e9bd2306d2d848be443c88e81c))
|
|
|
|
- Introduce switching gridscan analysis modes
|
|
([`20b5b12`](https://gitea.psi.ch/mx/AareDAQ/commit/20b5b1205dbc8bcc8f08d637b802c1dba1ca9627))
|
|
|
|
with raster service refactor
|
|
|
|
- Propagate gridscan analysis choice to GUI
|
|
([`947863d`](https://gitea.psi.ch/mx/AareDAQ/commit/947863d0c80d060ab981e6feb3a1f2a84bcda8ab))
|
|
|
|
|
|
## v0.26.0 (2026-09-09)
|
|
|
|
### Bug Fixes
|
|
|
|
- Display flux more nicely
|
|
([`6e4e28c`](https://gitea.psi.ch/mx/AareDAQ/commit/6e4e28ca8c3dfb00d40b338092d5a1385ff4ef6d))
|
|
|
|
- Don't require lock to cancel
|
|
([`8b62da1`](https://gitea.psi.ch/mx/AareDAQ/commit/8b62da13182f7a20dcd092af24a2c325e53f0190))
|
|
|
|
- Don't show beamline is busy error message
|
|
([`ac0242d`](https://gitea.psi.ch/mx/AareDAQ/commit/ac0242d36e8bb90649e6e99f34922145b6eeb3a8))
|
|
|
|
- Implement simulated flux
|
|
([`06c66c1`](https://gitea.psi.ch/mx/AareDAQ/commit/06c66c1944a353aa727ef649ae767ba629083136))
|
|
|
|
### Code Style
|
|
|
|
- Format
|
|
([`477d72a`](https://gitea.psi.ch/mx/AareDAQ/commit/477d72a46cbd396ec7f4fd3428b548061d99cbd5))
|
|
|
|
### Features
|
|
|
|
- Add flux to macros
|
|
([`e5d0bd2`](https://gitea.psi.ch/mx/AareDAQ/commit/e5d0bd22212e84a7d856aa28641d7387c851d272))
|
|
|
|
|
|
## v0.25.0 (2026-09-09)
|
|
|
|
### Features
|
|
|
|
- Highlight whole mounted row in sample list
|
|
([`22228c0`](https://gitea.psi.ch/mx/AareDAQ/commit/22228c0868d7276a0e8aa1da8cba2a93024b76de))
|
|
|
|
The mounted sample used to tint only the frozen "#" cell. Paint the full row in the same blue so it
|
|
is findable at a glance, and keep the theme's own text color on it (the mid-tone blue reads fine
|
|
without the dark ink that the pastel status tints need). Repaint the whole row span on
|
|
mount/unmount, not just column 0.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
- Show spreadsheet params in sample list
|
|
([`a2c5ed3`](https://gitea.psi.ch/mx/AareDAQ/commit/a2c5ed3d5cb9fb622e5ac3abf6aae705de727dde))
|
|
|
|
Add Oscillation, Exposure, Total range and Transmission columns to the dewar sample table, read from
|
|
SampleShortInfo.aaredb_params (already filled by spreadsheetupdater from AareDB, so no server
|
|
change). Transmission is shown as percent like the user spreadsheet.
|
|
|
|
The new columns are nullable, so the header sort key now puts None last instead of raising on None <
|
|
float.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.24.6 (2026-09-09)
|
|
|
|
### Bug Fixes
|
|
|
|
- Make xraycenter line scan on box center and twice box height
|
|
([`76062d5`](https://gitea.psi.ch/mx/AareDAQ/commit/76062d5d7de7427c5c6592cb890e08bc4bcd5d42))
|
|
|
|
|
|
## v0.24.5 (2026-09-09)
|
|
|
|
### Bug Fixes
|
|
|
|
- Validate screening instead of running it
|
|
([`29f5357`](https://gitea.psi.ch/mx/AareDAQ/commit/29f5357d10a700d37910c63a601cdcff78366e22))
|
|
|
|
|
|
## v0.24.4 (2026-09-09)
|
|
|
|
### Bug Fixes
|
|
|
|
- Unmount sample at end of automation
|
|
([`9e6f50a`](https://gitea.psi.ch/mx/AareDAQ/commit/9e6f50ae782783aa75c4101014e5863cfb720574))
|
|
|
|
|
|
## v0.24.3 (2026-09-09)
|
|
|
|
### Bug Fixes
|
|
|
|
- Validate rotation scan instead of running it
|
|
([`3439233`](https://gitea.psi.ch/mx/AareDAQ/commit/343923391d3cc21675df6fd41d11bc0f0f47f956))
|
|
|
|
|
|
## v0.24.2 (2026-09-09)
|
|
|
|
### Bug Fixes
|
|
|
|
- Spreadsheetupdate config refrence
|
|
([`df54ed5`](https://gitea.psi.ch/mx/AareDAQ/commit/df54ed5b050414334966ad2d9b8d983580fb7cd6))
|
|
|
|
- Tellupdater config refrence
|
|
([`d52cf30`](https://gitea.psi.ch/mx/AareDAQ/commit/d52cf30ab0e0adc4b0a370074054bd4919a43385))
|
|
|
|
- Update spreadsheetupdater tests
|
|
([`9f12167`](https://gitea.psi.ch/mx/AareDAQ/commit/9f12167599c90dc9e71ea71d6fb0e03fd10ca7bb))
|
|
|
|
- Update tellupdater tests
|
|
([`aa90dea`](https://gitea.psi.ch/mx/AareDAQ/commit/aa90dea2eb3fd449de48176119fa229765ee0138))
|
|
|
|
|
|
## v0.24.1 (2026-09-09)
|
|
|
|
### Bug Fixes
|
|
|
|
- Call jfjoch cancel in failed operation exception handler
|
|
([`ace1615`](https://gitea.psi.ch/mx/AareDAQ/commit/ace161590c5a3fd1a9ab98e857acdd584aeed5ff))
|
|
|
|
- Reduce TELL client log verbosity
|
|
([`7c6350e`](https://gitea.psi.ch/mx/AareDAQ/commit/7c6350ee94aab9a3a74d86c5edfccd5489d3c6a7))
|
|
|
|
- Validate gridscan params
|
|
([`7cc8fca`](https://gitea.psi.ch/mx/AareDAQ/commit/7cc8fcaaaf5cda554050de03c9e8dd50af265567))
|
|
|
|
- Validate params with aarescan
|
|
([`7c893ce`](https://gitea.psi.ch/mx/AareDAQ/commit/7c893ce6984bdedf27eeb82fcd9077d8695e7891))
|
|
|
|
### Chores
|
|
|
|
- Update aaresccan-client dependency
|
|
([`2eb5e3a`](https://gitea.psi.ch/mx/AareDAQ/commit/2eb5e3a5102c03ee19af11efab4b7ba56f76cf42))
|
|
|
|
### Code Style
|
|
|
|
- Fix type hints and naming
|
|
([`69fbf4b`](https://gitea.psi.ch/mx/AareDAQ/commit/69fbf4b95bf9f3f1a0f9ce33180ef9b6d1afcded))
|
|
|
|
|
|
## v0.24.0 (2026-09-09)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add tests and cleanup after exceptions
|
|
([`1cd8102`](https://gitea.psi.ch/mx/AareDAQ/commit/1cd8102b691e71a48c6c6644fd8398d919738f5c))
|
|
|
|
### Code Style
|
|
|
|
- Ignore pyright issues in redis return values
|
|
([`6483d50`](https://gitea.psi.ch/mx/AareDAQ/commit/6483d50d1d0ae0dc788cd3c541ff97935c31d8b5))
|
|
|
|
### Features
|
|
|
|
- Add hardware lock to server
|
|
([`18bcbdb`](https://gitea.psi.ch/mx/AareDAQ/commit/18bcbdba10225ba5955e506594083c629226d0ea))
|
|
|
|
- Remove all busy-state handling
|
|
([`fbfe773`](https://gitea.psi.ch/mx/AareDAQ/commit/fbfe7739547e43d567fc4aaa47f8af435c5f2c0c))
|
|
|
|
|
|
## v0.23.1 (2026-09-08)
|
|
|
|
### Bug Fixes
|
|
|
|
- Bound the sample camera SUB receive queue
|
|
([`4c3b0ce`](https://gitea.psi.ch/mx/AareDAQ/commit/4c3b0ce64d59fa401913158a15d6a2c33232d56d))
|
|
|
|
The socket used library defaults, so a GUI that stalls builds its own private FIFO of up to 1000
|
|
messages — 20 s of video at 50 Hz — plus whatever the autotuned kernel receive buffer holds on
|
|
top. PUB/SUB pipes are per-subscriber, which is why only aareGUI lagged while the other receivers
|
|
stayed current.
|
|
|
|
RCVHWM=4 makes the producer drop frames for this subscriber once it is muted, instead of queueing
|
|
them, and a fixed RCVBUF stops the kernel hiding a further few dozen frames behind the HWM.
|
|
Measured against a flooding publisher, the buffered backlog drops from 1000 frames to 4.
|
|
|
|
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
|
|
Claude-Session: https://claude.ai/code/session_01DVqbXPoeHyqrQq5Vc8EcYP
|
|
|
|
- Build the sample camera QPixmap on the GUI thread
|
|
([`c842856`](https://gitea.psi.ch/mx/AareDAQ/commit/c842856fe0482e93374c561f3fb83de7d39e59fe))
|
|
|
|
QPixmap is a GUI-thread-only class in Qt; the worker was constructing one per frame via
|
|
QPixmap.fromImage. It happens to work with the raster backend, which is why this has not bitten
|
|
us, but it is not supported and the guarantee is not ours to rely on.
|
|
|
|
The subscriber now emits QImage — which is explicitly safe to build and move between threads — and
|
|
_on_sample_camera_frame converts once on the GUI thread before handing the pixmap to the visible
|
|
view. No extra copy: the .copy() that detaches the QImage from the numpy buffer was already there.
|
|
|
|
Verified end to end against a real PUB socket: the payload delivered is QImage, the slot runs only
|
|
on the main thread, and frames still decode.
|
|
|
|
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
|
|
Claude-Session: https://claude.ai/code/session_01DVqbXPoeHyqrQq5Vc8EcYP
|
|
|
|
- Drain the sample camera SUB socket to the newest frame
|
|
([`d63b4ad`](https://gitea.psi.ch/mx/AareDAQ/commit/d63b4ad1799c5c97eb6992eebeb56b77b23f7253))
|
|
|
|
The SUB socket is strictly FIFO, so once the GUI falls behind at 50 Hz it stays behind: every recv
|
|
returns the oldest queued frame and the lag never recovers on its own. zmq.CONFLATE cannot fix
|
|
this because it keeps only the last *part* of a message, which shreds the multipart header+payload
|
|
frames the producer sends.
|
|
|
|
recv_multipart is atomic, though — a non-blocking recv either yields a whole message or raises Again
|
|
— so draining in a loop is a multipart-safe conflate. The drain runs after the previous frame's
|
|
decode, so it discards exactly the backlog that built up while we were busy, and the socket is
|
|
consumed at line rate regardless of how long a frame takes to decode.
|
|
|
|
Verified against a real PUB/SUB pair: 100 queued multipart messages collapse to the newest one with
|
|
both parts intact, and RCVTIMEO is still honoured when the queue is empty.
|
|
|
|
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
|
|
Claude-Session: https://claude.ai/code/session_01DVqbXPoeHyqrQq5Vc8EcYP
|
|
|
|
- Pace sample camera frames to what the GUI can paint
|
|
([`a4a8b80`](https://gitea.psi.ch/mx/AareDAQ/commit/a4a8b8029abdb14d1aafd380486562216af369e4))
|
|
|
|
image is a queued cross-thread signal and Qt's event queue has no high-water mark, so this queue
|
|
grew without bound independently of ZMQ: with a 50 Hz feed and a GUI painting slower, the
|
|
displayed frame fell further behind for as long as the stream ran. Measured on a stand-in at 15 ms
|
|
decode / 25 ms paint, the displayed frame aged from 40 ms to 2010 ms over three seconds and kept
|
|
going.
|
|
|
|
Two changes:
|
|
|
|
- Emit once and fan out on the GUI thread to whichever view is actually on screen, rather than
|
|
connecting all three SampleCameraImageLabels. Two of the three are always hidden (tab / compact
|
|
page / portrait page), so this is one repaint per frame instead of three.
|
|
|
|
- Cap the frames in flight and drop rather than queue past it. The cap is 2, not 1, so a frame can
|
|
be queued while the GUI paints the other: at 1 the GUI idles waiting for the next decode (33.3 fps
|
|
displayed), at 2 it does not (40.0 fps) for one extra frame of latency. Both stay bounded — 40 ms
|
|
and 62 ms respectively, flat over the run.
|
|
|
|
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
|
|
Claude-Session: https://claude.ai/code/session_01DVqbXPoeHyqrQq5Vc8EcYP
|
|
|
|
- Satisfy basedpyright on the Optional subscriber and socket
|
|
([`c0b0994`](https://gitea.psi.ch/mx/AareDAQ/commit/c0b0994feddc8a51d49fef66f601a183d16b7f4d))
|
|
|
|
CI lint failed on reportOptionalMemberAccess: prediction_thread is None when the GUI runs without a
|
|
sample feed, and _sock is nulled by run()'s cleanup, so both attributes are Optional to the
|
|
checker even though the flagged call sites cannot see None at runtime. Guard the slot and bind the
|
|
socket to a local asserted non-None in _recv_latest.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
### Code Style
|
|
|
|
- One PSI red for every busy camera badge, blue only for robot cooling
|
|
([`7c1efe4`](https://gitea.psi.ch/mx/AareDAQ/commit/7c1efe43847d5e0216b8889b84f82eb39a77551a))
|
|
|
|
AUTO CENTERING, ROBOT MOUNTING/UNMOUNTING/DRYING and BEAMLINE BUSY each had their own accent
|
|
(purple, red, orange, yellow, maroon), so the sample camera read as a per-activity rainbow instead
|
|
of one "hands off" signal. All busy states now share BUSY_PSI_RED; ROBOT COOLING keeps blue
|
|
because it is the long, harmless phase the operator should read as "wait".
|
|
|
|
The five near-identical BusyOverlayStyle blocks collapse into one _animated() helper plus a text
|
|
lookup, and the now-unused purple/orange/ red-badge constants are dropped from styles.py.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
- Paint the unknown-session badge with the viewing-mode style
|
|
([`dbd5b90`](https://gitea.psi.ch/mx/AareDAQ/commit/dbd5b9078f6223ff81bc5af1448fa952a09ea141))
|
|
|
|
The sample camera drew its own gold/orange/red "Session Vacant / Baton Requested / Guest Mode" box
|
|
whenever the busy overlay had nothing to show. Since the busy-style builder already receives the
|
|
session state, that box only ever appeared while the session was still unknown (no status yet, or
|
|
one without a session), so it flashed a different color and shape than the yellow "Viewing mode,
|
|
click here to grab the baton" badge every known not-owned state gets.
|
|
|
|
Hoist that badge into VIEWING_MODE_STYLE and paint it from both paths; the hover fill is shared
|
|
through _badge_fill. The three MARK_TOOLTIP constants had no other users and are dropped.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
### Testing
|
|
|
|
- Cover the sample camera pacing, the newest-frame drain and the frame slot
|
|
([`c3e7b9a`](https://gitea.psi.ch/mx/AareDAQ/commit/c3e7b9a2cc2670e6a4cf83e5e00f6aabc0a5918b))
|
|
|
|
CI's diff-coverage gate sat at 29% because the ZMQ fixes live in code no test reached: the
|
|
subscriber's socket setup, _emit_image/notify_frame_ displayed, _recv_latest and the run() frame
|
|
path, plus the main window's frame slot. The subscriber now runs against a real inproc socket (the
|
|
drain and the in-flight cap are the fix, so a mock would prove nothing); run() is driven with a
|
|
stubbed _recv_latest that hands over one JPEG and then stops. The busy overlay gets a check that
|
|
cooling is the only blue busy state.
|
|
|
|
The subscriber fixture takes qapp so no QImage is built before the QApplication exists.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
- Format the mocked token and cast the tell-state stand-in for basedpyright
|
|
([`ccb71bf`](https://gitea.psi.ch/mx/AareDAQ/commit/ccb71bf43fb511eed4bde5d594a032075cc48734))
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
- Route the tell-state stand-in through object for basedpyright
|
|
([`a56457d`](https://gitea.psi.ch/mx/AareDAQ/commit/a56457d03bb6fe7f4f1e3bef0fec64703f46a226))
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
|
|
## 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
|
|
|
|
- Update aaredb dependency
|
|
([`3ff0f41`](https://gitea.psi.ch/mx/AareDAQ/commit/3ff0f4132267aeea6549c6507a1a3465df31d6b8))
|
|
|
|
|
|
## v0.22.0 (2026-09-07)
|
|
|
|
### Bug Fixes
|
|
|
|
- Increase baton hand over button size and make divider more visible
|
|
([`cb368f8`](https://gitea.psi.ch/mx/AareDAQ/commit/cb368f87cd06172a05f39d2a1ce527b192c89091))
|
|
|
|
- Lint error
|
|
([`9c489ff`](https://gitea.psi.ch/mx/AareDAQ/commit/9c489ffbb5a5577cb90794bf0547bb4b0bc8acbd))
|
|
|
|
- Max Chi should be 30 instead of 40
|
|
([`046720a`](https://gitea.psi.ch/mx/AareDAQ/commit/046720ae43e093cbd22f2d13a1543814fab15aaf))
|
|
|
|
### Code Style
|
|
|
|
- Increase visibility of separator
|
|
([`c32f708`](https://gitea.psi.ch/mx/AareDAQ/commit/c32f708716c1fe090e9c3d446b4240b5a7a90ff8))
|
|
|
|
### Features
|
|
|
|
- 900 Hz at 6d and 120 Hz at 10s for data collection. Paint input correspondingly.
|
|
([`4163022`](https://gitea.psi.ch/mx/AareDAQ/commit/416302224ce5c67746a84180462c7c16ae50054e))
|
|
|
|
- Just mount the next sample in the queue list
|
|
([`8581527`](https://gitea.psi.ch/mx/AareDAQ/commit/85815278bb64986bd780becd5447f84f8126352d))
|
|
|
|
- **gui**: Hide ML detections by default
|
|
([`50c0885`](https://gitea.psi.ch/mx/AareDAQ/commit/50c08853d80d268520963352b0fe0684e9c0b31c))
|
|
|
|
Fresh profiles start with the sample-camera ML box overlay off; the QSettings key
|
|
samcam/show_detections still persists a user opt-in.
|
|
|
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.21.3 (2026-09-04)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add more debug logging to aarescan commands
|
|
([`da73c15`](https://gitea.psi.ch/mx/AareDAQ/commit/da73c15f9a07462f8372dc87862f4fc90e93036c))
|
|
|
|
|
|
## v0.21.2 (2026-09-04)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add more debug info logging to automation runs
|
|
([`339f666`](https://gitea.psi.ch/mx/AareDAQ/commit/339f6666da887f37336d86cae28e480c0e338057))
|
|
|
|
|
|
## v0.21.1 (2026-09-02)
|
|
|
|
### Bug Fixes
|
|
|
|
- Truncate chi metadata at 0
|
|
([`386e301`](https://gitea.psi.ch/mx/AareDAQ/commit/386e301dde192b91be4103f72b278a3ff594d426))
|
|
|
|
|
|
## v0.21.0 (2026-09-02)
|
|
|
|
### Code Style
|
|
|
|
- Rearrange order and give more space to omega symbol
|
|
([`3e5f5fb`](https://gitea.psi.ch/mx/AareDAQ/commit/3e5f5fb7a4029b944061a1a0e14e3fd9eb54cbf5))
|
|
|
|
- Update wording to put action first, for clarity
|
|
([`47c4e3a`](https://gitea.psi.ch/mx/AareDAQ/commit/47c4e3ab04c555d87ac5133daae97a99c91a8cc5))
|
|
|
|
### Features
|
|
|
|
- Make the raster grid stronger and more visible
|
|
([`675dd2c`](https://gitea.psi.ch/mx/AareDAQ/commit/675dd2c1c33b116c18125e7c7f5413bd12fcbe77))
|
|
|
|
### Testing
|
|
|
|
- No need to compare wording
|
|
([`0696b58`](https://gitea.psi.ch/mx/AareDAQ/commit/0696b583b03fb0d8de8c3647196348ab21a149c6))
|
|
|
|
|
|
## v0.20.0 (2026-09-01)
|
|
|
|
### Features
|
|
|
|
- Pass smargon phi and chi positions to jfjoch
|
|
([`13a42c9`](https://gitea.psi.ch/mx/AareDAQ/commit/13a42c98a38086b9aa77ce1b00b21643c419226b))
|
|
|
|
|
|
## v0.19.5 (2026-09-01)
|
|
|
|
### Bug Fixes
|
|
|
|
- Set zoom to 300 for auto xray center grid prediction
|
|
([`52c40da`](https://gitea.psi.ch/mx/AareDAQ/commit/52c40da1147d3b148e4b05ec1c8a1aecc2273197))
|
|
|
|
|
|
## v0.19.4 (2026-09-01)
|
|
|
|
### Bug Fixes
|
|
|
|
- Default detector tilt in gui to 0
|
|
([`d3ff38f`](https://gitea.psi.ch/mx/AareDAQ/commit/d3ff38f484a3f0f27237960f4b422cdce26154be))
|
|
|
|
- Separate detector tilt geometry per beamline
|
|
([`9939df6`](https://gitea.psi.ch/mx/AareDAQ/commit/9939df6767f995c8cc92eafbebe9613ad4df222f))
|
|
|
|
### Chores
|
|
|
|
- Update jfjoch client dependency
|
|
([`08866f8`](https://gitea.psi.ch/mx/AareDAQ/commit/08866f8cc5991d6d624fa3fc25eaf74b373fe644))
|
|
|
|
|
|
## v0.19.3 (2026-09-01)
|
|
|
|
### Bug Fixes
|
|
|
|
- Adjust gap when changing energy
|
|
([`e8bd2f5`](https://gitea.psi.ch/mx/AareDAQ/commit/e8bd2f59c6a8377443f700f67629f827c49a5e19))
|
|
|
|
- Cached read from BEC client devices
|
|
([`db6b09f`](https://gitea.psi.ch/mx/AareDAQ/commit/db6b09fa2441b136d5732b96ae880fbda4dfcefa))
|
|
|
|
|
|
## v0.19.2 (2026-08-31)
|
|
|
|
### Bug Fixes
|
|
|
|
- Return beam center in correct format
|
|
([`e027ccb`](https://gitea.psi.ch/mx/AareDAQ/commit/e027ccbfb181b455bc622be7a1b1a5227cf2dda5))
|
|
|
|
|
|
## v0.19.1 (2026-08-31)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add .json to package data
|
|
([`40ea80b`](https://gitea.psi.ch/mx/AareDAQ/commit/40ea80bb81f9413acbadd7ee85e7de987792ab72))
|
|
|
|
- Report user friendly error on attempted file overwrite
|
|
([`6e1085b`](https://gitea.psi.ch/mx/AareDAQ/commit/6e1085bfdf6d66956f0caf8319149267358070a5))
|
|
|
|
|
|
## v0.19.0 (2026-08-31)
|
|
|
|
### Features
|
|
|
|
- Add 1D beam center config for 10S
|
|
([`8797d55`](https://gitea.psi.ch/mx/AareDAQ/commit/8797d555a72b472bd909d725a42150e14cafd008))
|
|
|
|
|
|
## v0.18.0 (2026-08-31)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add the transmission_updated signal back
|
|
([`49d7089`](https://gitea.psi.ch/mx/AareDAQ/commit/49d7089d69a5227a1c9b97e77d8374833b9ee6de))
|
|
|
|
- Move beam transmission back and just add a new name for screening transmission
|
|
([`07e0cad`](https://gitea.psi.ch/mx/AareDAQ/commit/07e0cad909b30f0069be0d05bc09e3492a54c649))
|
|
|
|
### Code Style
|
|
|
|
- Check QPushButton height
|
|
([`84ab3ce`](https://gitea.psi.ch/mx/AareDAQ/commit/84ab3ce57a882d37e5916d6c0261e11cf3585edf))
|
|
|
|
- Reduce separator hint deplay to 66
|
|
([`3d60293`](https://gitea.psi.ch/mx/AareDAQ/commit/3d602931e9b5612c51acc90d549833502531f925))
|
|
|
|
### Features
|
|
|
|
- Add 4x60 and 5x45 for screening
|
|
([`0ba8c5c`](https://gitea.psi.ch/mx/AareDAQ/commit/0ba8c5cef67eed574ece4d948bb89b6c63dfcc4f))
|
|
|
|
- Allow screening to take a different transmission input
|
|
([`5515673`](https://gitea.psi.ch/mx/AareDAQ/commit/5515673d81fb3b2d336a508abcb6b0d79b0cd6c3))
|
|
|
|
- Demote warning from reference tools so it does not be too obvious in user GUI
|
|
([`7b1ee68`](https://gitea.psi.ch/mx/AareDAQ/commit/7b1ee682d1e44b722c351dfa76305374f7f007c1))
|
|
|
|
|
|
## v0.17.5 (2026-08-27)
|
|
|
|
### Bug Fixes
|
|
|
|
- From debugging
|
|
([`c5b3bd9`](https://gitea.psi.ch/mx/AareDAQ/commit/c5b3bd9e9efddd3d8df77bfd61c1c736654ee507))
|
|
|
|
|
|
## v0.17.4 (2026-08-27)
|
|
|
|
### Bug Fixes
|
|
|
|
- Current state reading
|
|
([`588419c`](https://gitea.psi.ch/mx/AareDAQ/commit/588419c05743c9fa577ed375f9ec8c92094b6911))
|
|
|
|
- Improve log messages
|
|
([`3b7fe21`](https://gitea.psi.ch/mx/AareDAQ/commit/3b7fe21fcd37fc3a440326e2ecc0617a8af373ac))
|
|
|
|
### Code Style
|
|
|
|
- Reformat
|
|
([`8029a93`](https://gitea.psi.ch/mx/AareDAQ/commit/8029a937e5a4b9da8235a9691879db28bb3f0daf))
|
|
|
|
|
|
## v0.17.3 (2026-08-26)
|
|
|
|
### Bug Fixes
|
|
|
|
- Update different macro sigs for 10s vs 6d
|
|
([`3a24f20`](https://gitea.psi.ch/mx/AareDAQ/commit/3a24f2010f89bfe174f4f2748fdf3f8a45de5990))
|
|
|
|
|
|
## v0.17.2 (2026-08-25)
|
|
|
|
### Bug Fixes
|
|
|
|
- New import locations and types for bec macros
|
|
([`caa4e22`](https://gitea.psi.ch/mx/AareDAQ/commit/caa4e22cc4edf7a16d671ca3a010d8fb36781f46))
|
|
|
|
### Continuous Integration
|
|
|
|
- Skip 3.11
|
|
([`228f3b9`](https://gitea.psi.ch/mx/AareDAQ/commit/228f3b9cc20b848ef604b7942f3195a69ca07ca3))
|
|
|
|
|
|
## v0.17.1 (2026-08-25)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add harder timeouts to uvicorn.run
|
|
([`2b85428`](https://gitea.psi.ch/mx/AareDAQ/commit/2b85428ebe072799c8ee21e4b393666bcaf32ada))
|
|
|
|
- Tidy bec client init and shutdown
|
|
([`1ac4908`](https://gitea.psi.ch/mx/AareDAQ/commit/1ac4908053637abb72c3b1c452c8332998113efc))
|
|
|
|
|
|
## v0.17.0 (2026-08-25)
|
|
|
|
### Code Style
|
|
|
|
- Reorder the position of measured tab
|
|
([`838ae18`](https://gitea.psi.ch/mx/AareDAQ/commit/838ae1828b6321bb59727013ddb58523052539c9))
|
|
|
|
### Features
|
|
|
|
- Disable Reload DB params and related usage
|
|
([`96d7e82`](https://gitea.psi.ch/mx/AareDAQ/commit/96d7e82f48cab8669f5bcff68a8844a7758aa13d))
|
|
|
|
|
|
## v0.16.0 (2026-08-25)
|
|
|
|
### Bug Fixes
|
|
|
|
- Simulated bec macros
|
|
([`1902749`](https://gitea.psi.ch/mx/AareDAQ/commit/1902749fa563906ee0fd4bc31c663e4e60d5ebf9))
|
|
|
|
### Features
|
|
|
|
- Guard beam steering and auto exposure
|
|
([`e87a207`](https://gitea.psi.ch/mx/AareDAQ/commit/e87a20745257e9eb9de93c958c2615a2289a1d3c))
|
|
|
|
|
|
## v0.15.0 (2026-08-25)
|
|
|
|
### Bug Fixes
|
|
|
|
- Beam centre model instantiation
|
|
([`24c3741`](https://gitea.psi.ch/mx/AareDAQ/commit/24c3741465b8ebeb64d914da04e4e7b23fd2eb8f))
|
|
|
|
- Reference to beamline in bec worker
|
|
([`8ad3042`](https://gitea.psi.ch/mx/AareDAQ/commit/8ad3042e0dd32b579622b341d37820afe6655b05))
|
|
|
|
- Typing in dispatch
|
|
([`15a7ca4`](https://gitea.psi.ch/mx/AareDAQ/commit/15a7ca464e3f4e8c450a3f47ae1ca8661a21fecf))
|
|
|
|
### Chores
|
|
|
|
- Bump aarecommon minimum
|
|
([`98c2376`](https://gitea.psi.ch/mx/AareDAQ/commit/98c2376b666ad7d5664b4ad0f261b51842e6be97))
|
|
|
|
### Features
|
|
|
|
- Extend beamline dispatch with geo class
|
|
([`7e1a816`](https://gitea.psi.ch/mx/AareDAQ/commit/7e1a8162b2c5d9b1818808b33d1b677bd140b5ff))
|
|
|
|
- Load beam centre model from config
|
|
([`59300da`](https://gitea.psi.ch/mx/AareDAQ/commit/59300da4acdecff8e324f06a4ca2d02bffccc84c))
|
|
|
|
- Use beam centre model for diffractiongeometry
|
|
([`7e203ce`](https://gitea.psi.ch/mx/AareDAQ/commit/7e203ce4a9823fe00132fc8c33f0b5b892935c53))
|
|
|
|
- Use live beam center throughout daq
|
|
([`df376ca`](https://gitea.psi.ch/mx/AareDAQ/commit/df376caf659fd96a73e4ff5d73c4353c4b8d3abe))
|
|
|
|
|
|
## v0.14.0 (2026-08-24)
|
|
|
|
### Bug Fixes
|
|
|
|
- Energy spin movestate colors never rendered
|
|
([`b984a36`](https://gitea.psi.ch/mx/AareDAQ/commit/b984a36f7cc3c5fd03e16f21d4d2772b748b5894))
|
|
|
|
The movestate property sat on the spinbox's inner QLineEdit, which both themes deliberately paint
|
|
transparent (QAbstractSpinBox QLineEdit rule) - the state machine worked but no color ever showed,
|
|
and the tests only asserted the property, not the paint. The property now lives on the spinbox
|
|
itself with QAbstractSpinBox[movestate=...] added to both themes' rules, verified by a
|
|
pixel-sampling regression test that grabs the rendered widget through the real stylesheet.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Energy tolerance to 0.001 instead of 0.01
|
|
([`789b2ae`](https://gitea.psi.ch/mx/AareDAQ/commit/789b2ae6e207abadc94a45efb89f6111520ea429))
|
|
|
|
- Wheel include png and svg
|
|
([`855632d`](https://gitea.psi.ch/mx/AareDAQ/commit/855632d5b54425d0a848fa3267448dfd9942723c))
|
|
|
|
### Chores
|
|
|
|
- Cleanup repeating code
|
|
([`09f81c8`](https://gitea.psi.ch/mx/AareDAQ/commit/09f81c8392426cc3e940e885b06bd6785d720889))
|
|
|
|
- Sync uv.lock with 0.13.4 version bump
|
|
([`d65ff27`](https://gitea.psi.ch/mx/AareDAQ/commit/d65ff27b3a96921ad29be13faa059ac96a189567))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Code Style
|
|
|
|
- Make the banner text colored
|
|
([`3192fd2`](https://gitea.psi.ch/mx/AareDAQ/commit/3192fd2388f96dbeaf0fd3091f368f337f627bac))
|
|
|
|
so it shows on white/black background
|
|
|
|
### Features
|
|
|
|
- Allow dismissing notification. Trial. If not good, revert this.
|
|
([`bdafc03`](https://gitea.psi.ch/mx/AareDAQ/commit/bdafc03963346490d27f343a5896609e434241c8))
|
|
|
|
- Bound Set Energy to a 4-20 keV placeholder range
|
|
([`225d706`](https://gitea.psi.ch/mx/AareDAQ/commit/225d7064c40d12651bdcf59a3e71e35a2c058b2b))
|
|
|
|
Both Set Energy rows allowed 1-30 keV, an arbitrary spinbox default; nothing downstream validates
|
|
the request (daq.change_energy forwards straight to bec). Shared ENERGY_MIN/MAX_KEV constants now
|
|
bound both spins to 4-20 keV with a tooltip flagging the range as pending Beamline Scientist
|
|
confirmation.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Motormovegroup semantics for both Set Energy rows
|
|
([`e1d11aa`](https://gitea.psi.ch/mx/AareDAQ/commit/e1d11aa94904b2411cc0142d155d720d25c3cbe8))
|
|
|
|
The energy setpoint applies via the Change Energy button, not Enter, so it gets the full motor state
|
|
machine instead of the typing-pending color: neutral tracks the readback, a user edit stages
|
|
pending (and is the only thing that enables the button), the click turns moving, and readback
|
|
arrival within tol returns to neutral. New SpinMoveState in motor_move_group.py adapts the pattern
|
|
to a QDoubleSpinBox+button pair (colors ride the movestate QSS via the spin's internal QLineEdit);
|
|
replaces the hand-rolled pending-until-click in the exp-config row and covers the Beamline setup
|
|
row that had no color at all. The server's 0.0 detector-unavailable energy is kept out of the
|
|
readback feed so it cannot clamp the spin to the range minimum.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Pending color while typing in Experiment configuration values
|
|
([`3e7c334`](https://gitea.psi.ch/mx/AareDAQ/commit/3e7c334abb9a518f97c990affcb59468180882a5))
|
|
|
|
Values inside the Experiment configuration banner now show the same pending color as the motor move
|
|
boxes while the typed text differs from the applied value; Enter (or focus-out) commits as before
|
|
and clears it. Opt-in via NumberLineEdit(track_pending=True) because MotorMoveGroup owns the
|
|
movestate property on its registered boxes; reuses the existing movestate QSS, so no new styling.
|
|
The Set Energy spinbox marks pending until Change Energy is clicked, since its apply gate is the
|
|
button.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Testing
|
|
|
|
- Log panel
|
|
([`c71676a`](https://gitea.psi.ch/mx/AareDAQ/commit/c71676a29c73ce3a0fb07ce193f6569d17ccfdf2))
|
|
|
|
- No need to test energy 0 and update tolerance
|
|
([`a19cbf1`](https://gitea.psi.ch/mx/AareDAQ/commit/a19cbf10815c8faa5595c6118d4d58319ae0d62c))
|
|
|
|
test: update test...
|
|
|
|
- Sample padding pixel so movestate colors survive Linux fonts
|
|
([`a7bd46c`](https://gitea.psi.ch/mx/AareDAQ/commit/a7bd46c14be06735fd195c38687b032db9a79096))
|
|
|
|
x=20 sits on a digit glyph with CI's Linux fonts, so the assert compared an antialiased glyph blend
|
|
against the pure background. The padding area (border 1px + padding 6px) can never contain text on
|
|
any font.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
Claude-Session: https://claude.ai/code/session_0147jE48bQUTm9AqNQApT6b2
|
|
|
|
|
|
## v0.13.5 (2026-08-24)
|
|
|
|
### Bug Fixes
|
|
|
|
- Dont unmoount sample on park and dry recovery
|
|
([`4379b8a`](https://gitea.psi.ch/mx/AareDAQ/commit/4379b8a1a54c4cff8e7405edbb3527d9441dbb6f))
|
|
|
|
- remove now-redundant "dry" endpoint
|
|
|
|
- Update gui to remove dangerous robot commands
|
|
([`772ba2c`](https://gitea.psi.ch/mx/AareDAQ/commit/772ba2c026baff1d05703e35259dedca31b52c29))
|
|
|
|
|
|
## v0.13.4 (2026-08-24)
|
|
|
|
### Bug Fixes
|
|
|
|
- No moving to combined view in moving state
|
|
([`1a17e26`](https://gitea.psi.ch/mx/AareDAQ/commit/1a17e260562bf2fac1a45ea706f497d4f9c98706))
|
|
|
|
### Code Style
|
|
|
|
- Linting fix
|
|
([`fc5daae`](https://gitea.psi.ch/mx/AareDAQ/commit/fc5daaefa4b196ec4b071e3ca0123b81dfd04038))
|
|
|
|
### Testing
|
|
|
|
- Moving state no longer flips to combined view
|
|
([`1a9f4d8`](https://gitea.psi.ch/mx/AareDAQ/commit/1a9f4d8709d479ea35ffb31c8a3b9220d967b8b2))
|
|
|
|
The fix removed Moving from the motion-watch trigger but the unit test and code comment still
|
|
described the old behavior, so pre-push failed.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.13.3 (2026-08-21)
|
|
|
|
### Bug Fixes
|
|
|
|
- Always trunacte dtz
|
|
([`4a4b58a`](https://gitea.psi.ch/mx/AareDAQ/commit/4a4b58ae10c1b442249d1051a9cb76114394920f))
|
|
|
|
|
|
## v0.13.2 (2026-08-21)
|
|
|
|
### Bug Fixes
|
|
|
|
- Truncate detector distance parameter calculation at soft limit
|
|
([`a6ad306`](https://gitea.psi.ch/mx/AareDAQ/commit/a6ad306849e136c8f23827724aa1b835d0ca0e74))
|
|
|
|
|
|
## v0.13.1 (2026-08-21)
|
|
|
|
### Bug Fixes
|
|
|
|
- Actually bump the version and also remove the CLAUDE.md that is used for local testing only
|
|
([`d66aa49`](https://gitea.psi.ch/mx/AareDAQ/commit/d66aa49ed383d1b050c8bfcbd19cbe60a1fc5013))
|
|
|
|
|
|
## v0.13.0 (2026-08-20)
|
|
|
|
### Bug Fixes
|
|
|
|
- Combined view only when state is moving or when in robotsampleexchange
|
|
([`d5c66af`](https://gitea.psi.ch/mx/AareDAQ/commit/d5c66afba9a84a2614676480381d745184c14ddb))
|
|
|
|
- Dialog not going away after getting baton, and the accept/cancel too small
|
|
([`1af38fc`](https://gitea.psi.ch/mx/AareDAQ/commit/1af38fcbd3c93627eb47bb76ed6fcd3af8a26cb4))
|
|
|
|
- Satisfy lint and diff-coverage gates for admin gating
|
|
([`8b6ae51`](https://gitea.psi.ch/mx/AareDAQ/commit/8b6ae51ce6106d37b3d393fafb26136276e0f860))
|
|
|
|
basedpyright requires _admin_tip_anchor to exist after __init__, so the anchor is created eagerly
|
|
instead of lazily. Cover the red-tip branch and the status-bar menu gate; the menu test swaps in a
|
|
QMenu subclass with a no-op exec because PySide method lookup ignores class-attr monkeypatches.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Update staff linux group
|
|
([`a37d622`](https://gitea.psi.ch/mx/AareDAQ/commit/a37d622e0aee734174c1dbb445746ca70c4128ec))
|
|
|
|
### Chores
|
|
|
|
- Do not use the special red tooltip, stay consistent
|
|
([`ef4bc01`](https://gitea.psi.ch/mx/AareDAQ/commit/ef4bc011ab89d309f99a90dc95fdf0d4a756a0a7))
|
|
|
|
- Enhance contract between input box and button
|
|
([`47f2939`](https://gitea.psi.ch/mx/AareDAQ/commit/47f2939d476f67342a18220f21a7cbbdd2ccaab9))
|
|
|
|
- Fix wording
|
|
([`d52a31b`](https://gitea.psi.ch/mx/AareDAQ/commit/d52a31be5413d06c61a06f5eb32e4d21cea06df3))
|
|
|
|
- Rename button to make it more sensible
|
|
([`4917b62`](https://gitea.psi.ch/mx/AareDAQ/commit/4917b62e53cee59de147cbabad73333807357c2e))
|
|
|
|
- Sync uv.lock with 0.12.0 version bump
|
|
([`3b2fa59`](https://gitea.psi.ch/mx/AareDAQ/commit/3b2fa597a67eb527c084a8e85cbea6455cced1b3))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Sync uv.lock with 0.12.4 version bump
|
|
([`0cff706`](https://gitea.psi.ch/mx/AareDAQ/commit/0cff706a11fd5133f68819d45ce8957791dc98d5))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Sync uv.lock with 0.12.5 version bump
|
|
([`3df3683`](https://gitea.psi.ch/mx/AareDAQ/commit/3df3683b75cb0aab5ea96fa81203447c588c7815))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Features
|
|
|
|
- Admin-gate beam diagnostics states, warn via passive red tip
|
|
([`569b024`](https://gitea.psi.ch/mx/AareDAQ/commit/569b0244565b547d57faace86faffdb73191c24c))
|
|
|
|
Beam location, Beamstop alignment and Flux measurement grey out for non-staff in the state strip and
|
|
the status-bar transitions menu. All "not admin" denials now show as an auto-dismissing QToolTip
|
|
on a Catppuccin red wash instead of a click-to-close QMessageBox.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Allow non-staff to change energy
|
|
([`4fbda86`](https://gitea.psi.ch/mx/AareDAQ/commit/4fbda86631b78c14061b0f58137f9cb598abbb00))
|
|
|
|
- Auto-centering row with apply-after-mount, grid button raster-only
|
|
([`36675e0`](https://gitea.psi.ch/mx/AareDAQ/commit/36675e02048de2c1c5712140825193226909e5bc))
|
|
|
|
Auto Centering moves out of the experiment tabs to its own row between Manual sample and Exp.
|
|
Config., with an apply-after-mount checkbox that re-runs it on every detected sample mount
|
|
(guarded against firing on GUI startup). Draw a Grid now only shows on the Raster scan tab.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Fold expanded help cheatsheet when mouse leaves the box
|
|
([`64058ae`](https://gitea.psi.ch/mx/AareDAQ/commit/64058ae6c8a1a84f0e05d345584842230cf1e3da))
|
|
|
|
Click is no longer the only way back to the "?" badge: moving the pointer off the expanded box, or
|
|
out of the widget entirely, folds it. Checked before the interaction gate so it works in viewing
|
|
mode too.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Hover HUD with pixel coords and grey scale bar on sample camera
|
|
([`5f068a6`](https://gitea.psi.ch/mx/AareDAQ/commit/5f068a630563cab6c8f82f208bd8f1be9ca6c8fe))
|
|
|
|
Bottom-right corner shows the hovered pixel coordinates with a grey 1-2-5 scale bar above them,
|
|
derived from geom.pixel_in_mm and the current zoom. Works in viewing mode (before the interaction
|
|
gate), clears on leave, and skips drawing outside the image.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.12.5 (2026-08-20)
|
|
|
|
### Bug Fixes
|
|
|
|
- Aerotech position update
|
|
([`d29ace1`](https://gitea.psi.ch/mx/AareDAQ/commit/d29ace156e73593513296c5f1e831875d766d0a5))
|
|
|
|
- Magnet position sensor timeout
|
|
([`a39e974`](https://gitea.psi.ch/mx/AareDAQ/commit/a39e97469fca485880ff36ee35bb55781b7936a0))
|
|
|
|
|
|
## v0.12.4 (2026-08-20)
|
|
|
|
### Bug Fixes
|
|
|
|
- Pitch scan message for correct beamline
|
|
([`4f5cb08`](https://gitea.psi.ch/mx/AareDAQ/commit/4f5cb08319dc61b6b28b99c1950b516192da4389))
|
|
|
|
|
|
## v0.12.3 (2026-08-20)
|
|
|
|
### Bug Fixes
|
|
|
|
- Do not multiply screening request by steps
|
|
([`1756cab`](https://gitea.psi.ch/mx/AareDAQ/commit/1756caba690f637db7bb8787318346fa66aecc30))
|
|
|
|
- Read beamline state from BEC on server startup
|
|
([`dd04a2f`](https://gitea.psi.ch/mx/AareDAQ/commit/dd04a2fc89c81e71c84669312bc48afe76126574))
|
|
|
|
|
|
## v0.12.2 (2026-08-20)
|
|
|
|
### Bug Fixes
|
|
|
|
- Save collimator positions
|
|
([`002dba7`](https://gitea.psi.ch/mx/AareDAQ/commit/002dba774245ea35b0ec90a8ede3fc91b30bbc4c))
|
|
|
|
|
|
## v0.12.1 (2026-08-20)
|
|
|
|
### Bug Fixes
|
|
|
|
- Update bs x and y instead of z
|
|
([`a36a051`](https://gitea.psi.ch/mx/AareDAQ/commit/a36a051a2b968a8e5c345319cd909223ab591d7e))
|
|
|
|
|
|
## v0.12.0 (2026-08-19)
|
|
|
|
### Features
|
|
|
|
- Connect beam steering routine to GUI
|
|
([`de0445e`](https://gitea.psi.ch/mx/AareDAQ/commit/de0445efdd671940d926989892260cb104bb6f71))
|
|
|
|
|
|
## v0.11.0 (2026-08-18)
|
|
|
|
### Bug Fixes
|
|
|
|
- No BEAMLINE BUSY overlay during Sample alignment
|
|
([`16b61b8`](https://gitea.psi.ch/mx/AareDAQ/commit/16b61b886b2c97664c148f0e52cdbca70856ec80))
|
|
|
|
Same exception as the motion watch: busy in Sample alignment is the alignment itself, and the sample
|
|
motion is watched in these very views - the curtain hid exactly what the user needed to see. Gated
|
|
at both style call sites (sample camera and the Axis views); the session-driven 'In viewing mode'
|
|
badge is unaffected.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Chores
|
|
|
|
- Update png so they have gaps
|
|
([`0f12b68`](https://gitea.psi.ch/mx/AareDAQ/commit/0f12b688fe79c776b9492d86052f22b611bc43eb))
|
|
|
|
### Code Style
|
|
|
|
- Collapse multiline _status calls for ruff format
|
|
([`167d78d`](https://gitea.psi.ch/mx/AareDAQ/commit/167d78db68a528af8c275e1923e2ef8cecd0b65d))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Features
|
|
|
|
- Status bar splits passive left / operable right
|
|
([`7a01a86`](https://gitea.psi.ch/mx/AareDAQ/commit/7a01a866ef5f942b3b5543bcc9c66c9210196dad))
|
|
|
|
Operable controls (Fast Shutter, State, p-group, Session) group right via addPermanentWidget and
|
|
share one hover affordance - hand cursor + underline - now owned by ClickableLabel; ValueLabel
|
|
opts out for the passive readouts, and the unwired busy label becomes a plain QLabel. Cryo sits
|
|
first in the operable group but stays passive: a cryo operation is planned (TODO in
|
|
status_bar.py), the placement just reserves its spot.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
## 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
|
|
|
|
- Busy flag in Axis views as plain status text, not a badge
|
|
([`69d552c`](https://gitea.psi.ch/mx/AareDAQ/commit/69d552c0683a1c7b7768c9491b78130cf52a1330))
|
|
|
|
Gonio camera, Beamline view and the combined view showed BEAMLINE BUSY in the rounded badge pill,
|
|
which reads as a clickable button. These views are passive, so draw the same shadowed colored text
|
|
the sample camera uses for its warnings; the pill stays only on the sample-camera session badges,
|
|
which really are click targets.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Clear basedpyright diff violations
|
|
([`5871c95`](https://gitea.psi.ch/mx/AareDAQ/commit/5871c959e22f9399430195ba2a1d41b9dc16c662))
|
|
|
|
Rename NumberLineEdit.validator to range_validator: the instance attr shadowed QLineEdit.validator()
|
|
and broke type checking at call sites. Annotate the smargon _move_axes dict and cast the stand-in
|
|
self in the prediction subscriber test.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Explain gated Beamline tab clicks; drop login state POST
|
|
([`6c720d2`](https://gitea.psi.ch/mx/AareDAQ/commit/6c720d29d328563ca186be6af71e17c458ce824e))
|
|
|
|
Two changes folded together because they touch the same status path:
|
|
|
|
- Revert the login-default state POST: a state transition can move motors, and merely opening the
|
|
GUI must never move hardware. The GUI now adopts whatever state the server reports. - A click on
|
|
the pgroup-gated (disabled) Beamline tab used to be eaten silently by the tab bar. An event filter
|
|
now pops the explanation: visitor-pgroup wording for staff, the staff-only message for users (same
|
|
pattern as the Auxiliary-puck tab).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Exposure wheel only increased when Alt held
|
|
([`ac5936f`](https://gitea.psi.ch/mx/AareDAQ/commit/ac5936f7be272e956a937ecf164b3ce28bb53680))
|
|
|
|
Qt xcb/windows swap wheel axes while Alt is held, so angleDelta().y() is 0 and copysign(_, 0) is
|
|
always positive. Fall back to angleDelta().x() and ignore genuine zero deltas.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Grey out whole state strip while beamline is busy
|
|
([`d659f05`](https://gitea.psi.ch/mx/AareDAQ/commit/d659f0500934e462ea195d09d7234fe1213a659a))
|
|
|
|
Busy now empties the available-target set exactly like Moving, so no entry looks clickable and no
|
|
transition can be posted mid-operation (same guard the status-bar menu already had). The
|
|
current/pending entry keeps its highlight as orientation.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Install gate event filters after eventFilter's targets exist
|
|
([`190e728`](https://gitea.psi.ch/mx/AareDAQ/commit/190e728734559a22fe1155cf3932c9c7ed0cb528))
|
|
|
|
The locked-banner and Beamline-tab-bar filters were installed mid __init__, but
|
|
MainWindow.eventFilter reads sample_lists_tabs, which is created later - every event delivered in
|
|
between raised AttributeError inside the filter ('Error calling Python override of eventFilter()'
|
|
spam) and broke widget teardown, cascading errors across CI tests and wedging the pxiii_bec job.
|
|
Filters now install late, next to installEventFilter(self), and the filter guards its attribute
|
|
reads so construction/teardown-time events can never raise.
|
|
|
|
Also fold the staff-gate assertions into test_main_window_init: every extra MainWindow construction
|
|
raises the odds of the pre-existing PySide SystemError flake, so don't build a window just for
|
|
them.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Prevent libzmq abort and per-frame decode errors in prediction subscriber
|
|
([`6917894`](https://gitea.psi.ch/mx/AareDAQ/commit/69178945e5b64e73413169056673714a3db2d8cf))
|
|
|
|
Sniff for '{' before JSON-parsing zmq parts: JPEG frames start with 0xff and raised
|
|
UnicodeDecodeError on every frame. Stop closing the socket from the GUI thread in stop(): zmq
|
|
sockets are not thread-safe and the concurrent close/recv tripped the signaler.cpp POLLIN
|
|
assertion (core dump); run() closes it in its own thread via the 500ms RCVTIMEO.
|
|
|
|
uv.lock: sync version to 0.8.3.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Reserve sign width for GM labels; annotate red-highlight mismatch
|
|
([`c837e6c`](https://gitea.psi.ch/mx/AareDAQ/commit/c837e6c44d26f96477a72753b7123805878803c7))
|
|
|
|
Value column was content-sized, so rows shifted whenever a value flipped negative. Labels now
|
|
reserve '-88.888' width; right alignment keeps digits anchored. Also TODO: red colors on live
|
|
aerotech while labels display aerotech_meas - intent unconfirmed, do not change condition until
|
|
decided.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Send light slider changes from every input path, guard readback
|
|
([`869a66f`](https://gitea.psi.ch/mx/AareDAQ/commit/869a66ff4b7c51133609ff7f4d5eb8d70fdbf85a))
|
|
|
|
Sliders only emitted on sliderReleased, so right-click+wheel, arrow keys and groove clicks changed
|
|
the value locally without a PUT and the 500 ms status poll snapped it back. setTracking(False) +
|
|
valueChanged now sends one PUT per deliberate change; readback setValue is wrapped in blockSignals
|
|
to avoid echoing PUTs, and a 1.5 s grace window stops in-flight stale status responses from
|
|
bouncing the slider.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Unsqueeze Chi/Phi row and widen Step box in smargon panel
|
|
([`70107e6`](https://gitea.psi.ch/mx/AareDAQ/commit/70107e6219aa25ce6736fb7af04894ecc355fe10))
|
|
|
|
Move button gets its own full-width row instead of sharing row 1 with the Chi/Phi entries; Step box
|
|
spans columns 1-4 instead of the narrow Chi column.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Chores
|
|
|
|
- Name the bluebird theme in menu the default theme
|
|
([`63f4ad7`](https://gitea.psi.ch/mx/AareDAQ/commit/63f4ad7612e87554aa3bdb92edbedeeeee81a7d2))
|
|
|
|
- Rename Beamline Setup to Beamline setup, comment tweaks
|
|
([`75d7bed`](https://gitea.psi.ch/mx/AareDAQ/commit/75d7bed380b8ababd876b86335079648ca05b51e))
|
|
|
|
Panel title case now matches the other banner names. Also clarify the splash banner comment in
|
|
gui.py.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Satisfy ruff format and SIM201 lint
|
|
([`b489610`](https://gitea.psi.ch/mx/AareDAQ/commit/b4896105ab529e62374f6f11b0424a8cc54c7d30))
|
|
|
|
ruff format collapsed lines the Beamline setup rename and other edits left splittable; SIM201 wanted
|
|
!= over 'not ... ==' in the prediction subscriber's JSON sniff.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Specify the omega panel 0 degree is a go-to not a move-by
|
|
([`b8177bd`](https://gitea.psi.ch/mx/AareDAQ/commit/b8177bd764b584a09ab925dedeff811b69ec4d66))
|
|
|
|
- Use rock and goto for better understanding
|
|
([`252e083`](https://gitea.psi.ch/mx/AareDAQ/commit/252e08384dd69955f0e53151445e24a62e19a4ce))
|
|
|
|
- Using aare_banner.png since svg could be rendered wrong at rhel9 consoles
|
|
([`d94fb88`](https://gitea.psi.ch/mx/AareDAQ/commit/d94fb88148ad317f8cf7e44ca35ccc0c9eb6d184))
|
|
|
|
### Continuous Integration
|
|
|
|
- Run pytest with -s -vv in the test jobs
|
|
([`727f19d`](https://gitea.psi.ch/mx/AareDAQ/commit/727f19d52a3810a9ad7cf15cd07305b224359dae))
|
|
|
|
Per-test lines and live (uncaptured) output: the pxiii_bec job sat silent at 81 percent for hours,
|
|
and file-level dots could not say which test wedged. With -s -vv a hang names its test and streams
|
|
the last log lines before it.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Features
|
|
|
|
- Add Change Energy row to experiment configuration
|
|
([`c618354`](https://gitea.psi.ch/mx/AareDAQ/commit/c618354c0146e6a071873507aad4d085c71e344f))
|
|
|
|
Copy of the Beamline Setup energy row (keV display, eV emit), placed below the ML Loop Centring /
|
|
Make Raster Grid row and always visible. Wired to the same daq.change_energy; not staff-gated,
|
|
server enforces write permission.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Add More link in sample camera help overlay opening F1 dialog
|
|
([`ebe0860`](https://gitea.psi.ch/mx/AareDAQ/commit/ebe0860ed4446d76005b00493ebf2c05aec5d93e))
|
|
|
|
Underlined 'More… (F1)' line at the bottom of the painted help box emits open_full_help, wired to
|
|
the existing Mouse / Keyboard Controls dialog.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Default beamline state on login by role
|
|
([`656b441`](https://gitea.psi.ch/mx/AareDAQ/commit/656b44159322c857ef6f6a2a0623a5e0cbf8792b))
|
|
|
|
Staff land in BeamLocation, users in SampleAlignment. One-shot on the first status tick where the
|
|
GUI owns the session and the beamline is idle, so a running operation or a watch-only GUI is never
|
|
disturbed.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Disable Beamline tab when active pgroup is outside token pgroups
|
|
([`c5a6a17`](https://gitea.psi.ch/mx/AareDAQ/commit/c5a6a175bddda9acb517acea74ecf93776cae3cb))
|
|
|
|
Switching to a visitor pgroup means running a user experiment: grey out the Beamline tab (tooltip:
|
|
beamline scientists only), bring the Experiment tab forward with Dataset path and Exp. Config.
|
|
opened. Gate applies on transitions only so manual tab choices survive the 1 Hz status ticks.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Rename Monochromator panel to Beamline Setup, add WIP beam-to-box row
|
|
([`bb447b1`](https://gitea.psi.ch/mx/AareDAQ/commit/bb447b15670addb7fb339db41690abbe21b7533a))
|
|
|
|
Display title only; class and file keep their names. New full-width 'Move Beam to Box (center)
|
|
(WIP)' button under the Energy row, disabled with a coming-soon tooltip until a DAQ endpoint
|
|
exists.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Show locked beamline banners to non-staff
|
|
([`1bce76e`](https://gitea.psi.ch/mx/AareDAQ/commit/1bce76e6fcd0c430cee449e82679cc36c946b414))
|
|
|
|
Beamline setup, ABR meas. pos. and Beam configuration banners stay visible for non-staff instead of
|
|
vanishing, but are locked stand-ins: clicking one pops the staff-only notice (same pattern as the
|
|
Auxiliary-puck tab) telling the user to log in as staff or contact their local contact.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Stage motor entry values, apply moves in one click
|
|
([`e18c7fe`](https://gitea.psi.ch/mx/AareDAQ/commit/e18c7feded837db8d26d20ee021b58057137cc5d))
|
|
|
|
Chi/Phi boxes in the Smargon tab no longer move on Enter: edits stage the target (orange), the Move
|
|
button sends all staged axes at once (green), and boxes return to neutral when the motor reports
|
|
arrival. Out-of-range entries stay red and are never sent; limit tips pop as tooltips.
|
|
MotorMoveGroup is opt-in per box so other panels can adopt the same logic later.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Switch to Beamline combined view while busy
|
|
([`58bde93`](https://gitea.psi.ch/mx/AareDAQ/commit/58bde9379bd09b6c22bf0409b829894b753e59c9))
|
|
|
|
Generalize the robot-mount auto-switch: any busy period now brings up the combined view so the
|
|
motion can be watched, and the sample camera returns when busy clears. Edge-triggered, so manual
|
|
tab choices survive between transitions; _mounting renamed to _watching_motion.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Testing
|
|
|
|
- Cover every changed line in the branch diff
|
|
([`aa6c226`](https://gitea.psi.ch/mx/AareDAQ/commit/aa6c226103401234b371f26727c5b544aa686329))
|
|
|
|
Diff coverage vs main now 100 percent from the gui suite alone: non-staff locked banners and both
|
|
gated-tab popups, remote-close bookkeeping in update_daq_status, smargon staged moves, camera More
|
|
link and Alt-wheel axis fallback, number box relimits, energy row emit, and the gui.main()
|
|
banner/graceful-exit path.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Lift diff coverage over the 80 percent gate
|
|
([`16e112f`](https://gitea.psi.ch/mx/AareDAQ/commit/16e112f44a4eac6024e94d359c17a9704e78a2a8))
|
|
|
|
Promote the illumination panel's __main__ self-check to a real pytest file so CI counts it, add
|
|
busy-overlay render checks (status text paints, video view routes through it), and cover the motor
|
|
group's incomplete-entry and below-min Enter paths. Local diff coverage from the gui suite alone:
|
|
82 percent.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.8.3 (2026-08-12)
|
|
|
|
### Bug Fixes
|
|
|
|
- Rename free beamline to clear busy
|
|
([`362880e`](https://gitea.psi.ch/mx/AareDAQ/commit/362880ec820953e95c14bfd3a1c3fa3351030643))
|
|
|
|
- Rename recover beamline to force maintenance
|
|
([`63ea060`](https://gitea.psi.ch/mx/AareDAQ/commit/63ea060fb9dc4df994cc266b7084e4ba7c4c48db))
|
|
|
|
- Show viewing mode for all states
|
|
([`8e68972`](https://gitea.psi.ch/mx/AareDAQ/commit/8e6897262537e221d42d7b44e418322d2cb15d54))
|
|
|
|
### Refactoring
|
|
|
|
- Remove dead code
|
|
([`1b3b144`](https://gitea.psi.ch/mx/AareDAQ/commit/1b3b144265b825ffbe27fca63f1593b198f73861))
|
|
|
|
|
|
## v0.8.2 (2026-08-12)
|
|
|
|
### Bug Fixes
|
|
|
|
- Allow str has no get when in recovery
|
|
([`34c8182`](https://gitea.psi.ch/mx/AareDAQ/commit/34c8182cfa54da98baeed0376d9c5d32b13efc6c))
|
|
|
|
- Include graphics to wheel
|
|
([`ca05748`](https://gitea.psi.ch/mx/AareDAQ/commit/ca05748d1fdf092d962f074f570e583b3490ac54))
|
|
|
|
### Chores
|
|
|
|
- Add test to improve coverage
|
|
([`9906937`](https://gitea.psi.ch/mx/AareDAQ/commit/9906937525f73a91b658fdcb50ea7093cc76a759))
|
|
|
|
- Fix linting
|
|
([`bb35209`](https://gitea.psi.ch/mx/AareDAQ/commit/bb35209be8737f2db107f092a6cac6bfe2b0e026))
|
|
|
|
- Formatting, tab space misused
|
|
([`17bb654`](https://gitea.psi.ch/mx/AareDAQ/commit/17bb65420f85319e793873481e0f6536f26a4d66))
|
|
|
|
- Hide debug log in the log_panel
|
|
([`328a46b`](https://gitea.psi.ch/mx/AareDAQ/commit/328a46b09c4b08f3704cd9c577c687ed043b166d))
|
|
|
|
- Make default theme bluebird (solid)
|
|
([`8a9f35e`](https://gitea.psi.ch/mx/AareDAQ/commit/8a9f35ef7409465a139a33b603ab332ad151061e))
|
|
|
|
- Removing trailing space
|
|
([`23ad114`](https://gitea.psi.ch/mx/AareDAQ/commit/23ad11430bf639bc2263b25fe8bd6f8a107b4cac))
|
|
|
|
- Stop logger info display lots of pgroups
|
|
([`0ca9682`](https://gitea.psi.ch/mx/AareDAQ/commit/0ca968277c68a456f3944cd72831ee4b5a58396a))
|
|
|
|
|
|
## v0.8.1 (2026-08-11)
|
|
|
|
### Bug Fixes
|
|
|
|
- Allow workflow dispatch of release wf
|
|
([`110bfb3`](https://gitea.psi.ch/mx/AareDAQ/commit/110bfb3f5f2f53fb5093663c93f9363904160821))
|
|
|
|
|
|
## v0.8.0 (2026-08-11)
|
|
|
|
### Bug Fixes
|
|
|
|
- Adapt main window to monitor size instead of overflowing
|
|
([`f4f3c5e`](https://gitea.psi.ch/mx/AareDAQ/commit/f4f3c5ec3d7d734dc34cf6c2c72d053deea4a200))
|
|
|
|
The window's minimum was 1400x1207 - taller than a 1920x1200 console - so the status bar was pushed
|
|
off-screen on every monitor. Three causes:
|
|
|
|
- the standard page's combined panel minimums: now wrapped in a QScrollArea so scrollbars appear
|
|
instead of clamping the window - hidden portrait/compact stack pages inflating the QStackedWidget
|
|
minimum (portrait alone demands 720px height): only the visible page contributes now - launching
|
|
at the natural size hint (1577x1612): launch maximized so the window takes whatever the monitor
|
|
offers
|
|
|
|
Minimum drops to 1400x555; verified on a 1920x1200 X display that the status bar is visible and
|
|
panels scroll when space runs out.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Dark-mode legibility for the status bar, sample tables, and surfaces
|
|
([`7b30c95`](https://gitea.psi.ch/mx/AareDAQ/commit/7b30c959a20e62c58f190f5b06dddbdcafa5d956))
|
|
|
|
Status-bar flags get status_colors(theme) (Mocha variants on Sunset) via a new set_theme; sample
|
|
tables stop hard-filling rows WHITE and pin dark ink on tinted rows via ForegroundRole; dewar tab
|
|
and log panel get solid dark surfaces (transparent renders black on the non-composited X11
|
|
container); developer help cards go square for the same reason.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Declutter the Local Contact view
|
|
([`c14d93f`](https://gitea.psi.ch/mx/AareDAQ/commit/c14d93ffcf0a9f8c3f3b98318ec772cd153789a8))
|
|
|
|
- drop the redundant Local Contact banner (the window title carries it) - remove the three
|
|
parent=self config spinboxes that painted themselves over the top-left corner; parentless
|
|
placeholders are replaced in _build_config_tab - remove all rounded corners (status card, value
|
|
badges, group boxes, transfer-error frame, recovery panels) - tighten status rows to 2px spacing
|
|
with a per-row minimum height so word-wrapped value labels can never compress rows until text
|
|
clips (previously visible on the Hardware tab)
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Heal poisoned all-docks-hidden layout and restore layout before watch-only close
|
|
([`3a7f1f5`](https://gitea.psi.ch/mx/AareDAQ/commit/3a7f1f584ad49d72b1fae6617ffa5d7aa9147d7c))
|
|
|
|
A window state saved during the watch-only fold restores as every dock hidden (the
|
|
vanished-Sample-List-on-restart bug). Fall back to the default layout when a restore comes back
|
|
all-hidden, and put the pre-watch layout back before saving state in closeEvent.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Opaque faces for floating windows and theme-aware pop-out icons
|
|
([`7f838f4`](https://gitea.psi.ch/mx/AareDAQ/commit/7f838f4b985c24a5003aa5d559e65acc4b27ce4a))
|
|
|
|
A transparent top-level renders black on the container's non-composited X11, so floating docks get a
|
|
dynamic floating property feeding the QSS [floating="true"] opaque face, and PopoutWindow sets
|
|
WA_StyledBackground. Pop-out titlebar glyphs are now painted in the palette's WindowText color and
|
|
re-tint on PaletteChange, so they stay visible after a theme flip.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Reset connection state if cancel fails
|
|
([`7a60b7d`](https://gitea.psi.ch/mx/AareDAQ/commit/7a60b7d9329ac8e0a9705bad6e542be9570b179d))
|
|
|
|
- Scroll Local Contact tabs so rows keep text height
|
|
([`7a57d85`](https://gitea.psi.ch/mx/AareDAQ/commit/7a57d85282888bf967e6c6e6b756a610dfa4ebf0))
|
|
|
|
The dialog's explicit minimum size is smaller than some tabs' content; without a scroll area Qt
|
|
squeezes rows below text height (clipped labels on the Hardware tab). Wrap every tab in a
|
|
QScrollArea.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Window and dock sizing behavior
|
|
([`266f833`](https://gitea.psi.ch/mx/AareDAQ/commit/266f8337a9a1fcc163d2abf8a70a2b1038c454d2))
|
|
|
|
Three main-window chrome fixes: the un-maximized geometry is pre-set to half-screen centered so
|
|
leaving maximized mode no longer restores an oversized size hint (the beamline state bar also
|
|
stops imposing its ~2000px minimum width); closing a popped-out dock re-docks it instead of
|
|
silently hiding the panel, and pop-outs open enlarged and clamped to the screen; state-bar buttons
|
|
only update font/stylesheet/cursor when values change, since repolishing every DAQ tick dropped
|
|
the hover cursor under a resting mouse.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Code Style
|
|
|
|
- Add typography, tooltip, scrollbar, and card tokens to the palette
|
|
([`e63ddb0`](https://gitea.psi.ch/mx/AareDAQ/commit/e63ddb090f68524b5193fe472176f46534dd1c7f))
|
|
|
|
The QSS gains a role-named font-size ladder (FONT_HERO..FONT_FINE), borderless QToolTip styling for
|
|
both themes, soft rounded scrollbars without end arrows, and a card_style() helper with one shared
|
|
CARD_RADIUS so card-shaped frames keep uniform geometry. Banner text flips to near-white with a
|
|
shadow constant for the painted emboss. Recovery-card and console-log colors are marked TODO for a
|
|
later retheme.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Apply the typography ladder and card_style across the GUI
|
|
([`913089b`](https://gitea.psi.ch/mx/AareDAQ/commit/913089b9b62793f74e003c7afa2fd35c12f25864))
|
|
|
|
Inline font-size literals become FONT_* tokens and hand-written card QSS collapses into card_style()
|
|
(recovery cards and console-log notifications keep FLAT_CARD_RADIUS). TitleLabel paints its text
|
|
by hand — QSS has no text-shadow — for an embossed banner title, elided when narrow, and gains a
|
|
section_title() helper for small in-panel headings.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Centralize the GUI color palette in styles.py
|
|
([`271ca54`](https://gitea.psi.ch/mx/AareDAQ/commit/271ca54d9ad3a2001dddaa5c4f960c8929f13d3c))
|
|
|
|
Every color literal in the GUI moves into one palette module: ~200 grouped constants, a qcolor()
|
|
helper (hue from the theme, alpha at the call site), and both QSS stylesheets become
|
|
string.Templates fed by _palette() so a renamed constant fails loudly. Also retints: light
|
|
background #d8e4fd -> #e2e7ee, banner indigo -> #a2b7e4, and the portrait dark theme adopts
|
|
Catppuccin Macchiato.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Clear the basedpyright gate for the new-code lines
|
|
([`4ef2ad6`](https://gitea.psi.ch/mx/AareDAQ/commit/4ef2ad64d706c2fbc0631668f00bdd8266f5ace3))
|
|
|
|
Narrow QApplication.instance() before use, wrap the theme QSettings read in str(), hand
|
|
QPropertyAnimation a real QByteArray, and declare the lazily-set watch-mode attributes on the
|
|
class.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Clear the basedpyright gate for the ported round
|
|
([`84ccf27`](https://gitea.psi.ch/mx/AareDAQ/commit/84ccf275f9e2e954ee415ee905b7e3d90a43d518))
|
|
|
|
Declare MainWindow's lazily-set attributes, guard Optional layouts and the sample tab bar, wrap
|
|
QSettings reads (typed object even with type=...), include _press_geom in the pop-out resize
|
|
guard, and ignore the PySide6 stub gap on setGraphicsEffect(None).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Clear the two portrait-mode diff-gate violations
|
|
([`ed42738`](https://gitea.psi.ch/mx/AareDAQ/commit/ed42738693e6033ebeb5877c15bb842ed52e915e))
|
|
|
|
The sample-name labels are created in __init__ now (the build helper only styles and mounts them) so
|
|
reportUninitializedInstanceVariable stops firing on the ported styling lines, and the queue
|
|
placeholder uses the scoped Qt.AlignmentFlag.AlignCenter.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Compact the control panels
|
|
([`5f44be2`](https://gitea.psi.ch/mx/AareDAQ/commit/5f44be2a62a8d978d51ee29398aaa4845456147e))
|
|
|
|
Vertical-space pass: samcam merges exposure+gain onto one row, ABR and monochromator tighten their
|
|
grids (energy now displayed in keV, DAQ API stays eV), beam-mark's clear button shares the
|
|
readings row, the data collection pages move Run/Abort under the last configurable row and the tab
|
|
area becomes QTabBar+QStackedWidget, the raster grid table gets a fixed height, and the automation
|
|
panel drops its own title since the dock title bar already says it. Control panels start expanded
|
|
via default_collapsed=False.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Cool the sunset gradient base
|
|
([`0b696a5`](https://gitea.psi.ch/mx/AareDAQ/commit/0b696a56f0f051dc1da01f9da86c5b0e6444a361))
|
|
|
|
The warm glow at the bottom of the dusk sky didn't fit — stay in the blue range.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Declare HoverableButton state attribute for the pyright gate
|
|
([`e818682`](https://gitea.psi.ch/mx/AareDAQ/commit/e818682abdcdc5e4c1db04c48180af7f4218ee3e))
|
|
|
|
The dynamic _beamline_state assignment was a pre-existing pattern, but the panel rewrite turned its
|
|
line into a changed line, so the basedpyright diff gate now counts it. Declare the attribute
|
|
instead.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Extend the palette with selection, frame, slider, and sample-status tokens
|
|
([`0bfa9db`](https://gitea.psi.ch/mx/AareDAQ/commit/0bfa9dbbeb5f8798fac8506c420d5ccdb33ed514))
|
|
|
|
SELECTION_BG/TEXT pin the app-wide selection blue to the banner color (was Qt's undeclared palette
|
|
default); FRAME_L1/L2/L3 knobs put window, panel, and data-view borders on three tunable levels
|
|
(panel etching off by default); QTabBar tabs and filter chips go borderless with a hover
|
|
underline; QSlider matches the scrollbar look; scrollbar tracks turn square with a track-colored
|
|
corner; SAMPLE_STATUS_* and SAMPLE_ROW_ALT_BG drive the sample-table status tints.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Fix lint for the banner/adaptive changes
|
|
([`ce0ed20`](https://gitea.psi.ch/mx/AareDAQ/commit/ce0ed20d5a1d4d2f33e662eb8be7bd58fbe2d368))
|
|
|
|
- ruff format and import ordering (main_window, data_collection_settings, beam_center_panel,
|
|
beamline_state_panel) - rename unused unpacked variable in test_title_label - replace the
|
|
mousePressEvent monkeypatch on the beamline state title with a proper eventFilter so basedpyright
|
|
accepts the diff
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Move panel and model colors to the shared palette
|
|
([`b7d6610`](https://gitea.psi.ch/mx/AareDAQ/commit/b7d6610261840ad45ad91b9663c37c52f5915d89))
|
|
|
|
Mechanical swap of hardcoded color literals for styles.py constants and qcolor() across panels,
|
|
models, and scan_logic. portrait_mode.py drops its private palette block; beamline_controls and
|
|
data_collection_settings gain object names so the new $border QSS rules can target them. The
|
|
status-panel test asserts the palette hex instead of 'red'.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Move widget colors to the shared palette
|
|
([`590e500`](https://gitea.psi.ch/mx/AareDAQ/commit/590e500da5f7ed22b4d1ac515356dff13b06992b))
|
|
|
|
Same mechanical swap for the widgets and the tutorial manager: painter QColors go through qcolor(),
|
|
inline QSS literals become palette constants (baton dialog, busy overlay, status bar, camera
|
|
overlays, splash screen, numeric inputs).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Narrow Optionals for basedpyright diff gate
|
|
([`ee7a835`](https://gitea.psi.ch/mx/AareDAQ/commit/ee7a8356a6d46de5e97a010886eb6e7cb1a4f051))
|
|
|
|
QLayout.itemAt/QWidget.layout return Optionals; pyright cannot narrow across repeated method calls,
|
|
so hold them in locals before use in tighten_column, _apply_collapsed and _set_visible.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Narrow the log pop-out view for the pyright gate
|
|
([`2adf8ff`](https://gitea.psi.ch/mx/AareDAQ/commit/2adf8ff6d5a57d98527f45b7450dd3b9565d65e4))
|
|
|
|
The Optional _popout_view is assert-narrowed once after opening; the unguarded accesses were the
|
|
last three diff-gate violations.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Narrow the manual-resize press state for the pyright gate
|
|
([`763a258`](https://gitea.psi.ch/mx/AareDAQ/commit/763a25837c4c880bc9c50d707084237c756c0463))
|
|
|
|
The diff-vs-main basedpyright gate flags QRect(self._press_geom) because only _press_global was
|
|
narrowed; both are set together in mousePressEvent, so the extra check is a no-op at runtime.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Relabel theme entries, tuck prototype views into the View menu
|
|
([`c179ea9`](https://gitea.psi.ch/mx/AareDAQ/commit/c179ea992c8d57d45423317b64b7283296ae485d))
|
|
|
|
Legacy/Portrait themes become Sunrise (default)/Sunset. Automation View and Portrait (now Playlist)
|
|
Mode leave the menubar for the View menu with in-progress labels; Return to Main View stays
|
|
top-level since it only shows inside the automation view.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Ruff-format the ported round, scope splash Qt enums
|
|
([`2638308`](https://gitea.psi.ch/mx/AareDAQ/commit/263830841208776fc9b65648313ca2c32775bd87))
|
|
|
|
The sandbox port was ruff-check clean but not ruff-format clean (CI formats before linting);
|
|
splash_screen's alignment flags move to the scoped enum since the port put that line into the diff
|
|
gate's scope.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Small panel polish
|
|
([`f7194ca`](https://gitea.psi.ch/mx/AareDAQ/commit/f7194ca3a4fa98a0ab3fa76a40a5955955e113fa))
|
|
|
|
Energy unit moves from spinbox suffix to the label (the suffix ate field width next to the new spin
|
|
arrows); samcam exposure/gain get a 3:2 stretch so 3-decimal exposure isn't cut; the Exp. Config.
|
|
tab bar gets a BANNER_TAB_GAP spacer under its banner.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Swap the splash banner text to the white variant
|
|
([`cd4b623`](https://gitea.psi.ch/mx/AareDAQ/commit/cd4b62323c509717641d858fc1d5cb8d9d364603))
|
|
|
|
Copied from aare_banner_w.svg; the black glyphs vanished on the dark splash panel, the white fills
|
|
read on it.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Visual and interaction polish
|
|
([`833a6d1`](https://gitea.psi.ch/mx/AareDAQ/commit/833a6d136f1b862cd38932c0b24083fbe0ebd95a))
|
|
|
|
Windowed startup at 50%x70% instead of maximized; overlay legend now defaults off (it covers the
|
|
camera image); square slider handles with grip-line PNG assets (the round handle clipped flat);
|
|
warmer sunrise gradient bottom; abr/beam-mark layout tweaks; hover cues on the beamline-state
|
|
entries; DPI/font-aware pop-out titlebar icons; the out-of-date Tutorial menu entries are hidden
|
|
until content is redone.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Documentation
|
|
|
|
- Note the spreadsheet log-spam TODO in daq_worker
|
|
([`27c9b93`](https://gitea.psi.ch/mx/AareDAQ/commit/27c9b93d5ca87093db33fe3a3fb540421024e75a))
|
|
|
|
load_spreadsheet/load_reference_tools log a GET they never send every ~12.5s poll while base_url is
|
|
None; fix later by demoting to debug or logging once on the None->set edge.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Features
|
|
|
|
- Add spin-arrow and check-mark glyph assets
|
|
([`900315d`](https://gitea.psi.ch/mx/AareDAQ/commit/900315d412db59d85a54cd3d5d3409b12b91909b))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Camera help overlay, camera-error message, and session badge hover feedback
|
|
([`3db8b11`](https://gitea.psi.ch/mx/AareDAQ/commit/3db8b11dd1039439a844bbe74ab784634fac1bcc))
|
|
|
|
The controls cheatsheet gets its own help badge/overlay instead of riding the detection legend; the
|
|
camera-unavailable state now draws the actual error reason bottom-center (pushed from MainWindow
|
|
to all three camera views); the session badge shows hover feedback and the vacant overlay reads
|
|
'In viewing mode' with a grab-baton hint.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Camera session badge and collapsible legend
|
|
([`2054f07`](https://gitea.psi.ch/mx/AareDAQ/commit/2054f078b0d9ad3e982cbace0ccf34dc6c02b562))
|
|
|
|
The camera overlay gains a clickable session badge (opens the session menu at the click position)
|
|
and a baton gate: watching stays free, operating clicks are blocked when the baton is elsewhere.
|
|
The legend collapses to a ? badge until clicked - the full box covered too much image.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Collapsible half-height panel banners with a universal gap
|
|
([`a9137b3`](https://gitea.psi.ch/mx/AareDAQ/commit/a9137b3221fff7364d0a3c98d9d6a4199eeb95b9))
|
|
|
|
TitleLabel gains an optional collapsible mode: whole-banner click target, bare +/- glyph (no pill
|
|
background), per-title collapsed state persisted in QSettings, and an expand() helper. Banners are
|
|
halved to 25px with plain text + QSS font (H3 margins would clip vertically).
|
|
|
|
- convert Zoom, Light, Omega, Smargon, Sample camera, Monochromator, ABR meas. pos., Beam mark, Beam
|
|
center, Beam size, Dataset path and Loop centering to collapsible banners - new collapsible Exp.
|
|
Config. section wrapping the scan tabs - move Manual sample from a bottom dock into the left
|
|
column between Dataset path and Exp. Config.; Ctrl+M now expands it instead of raising the dock -
|
|
Beamline state banner restyled to match (25px, plain font, bare glyph, whole banner clickable) -
|
|
universal 11px banner gap via tighten_column() shared by both panel columns and the left column
|
|
stack; ABR banner spans all grid columns and file path / manual sample drop side margins so widths
|
|
align - abort button sits under the tabs instead of pinned to the bottom - unit tests for the
|
|
collapse behavior
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Cross-fade and palette flip on theme switch
|
|
([`ed8b2bd`](https://gitea.psi.ch/mx/AareDAQ/commit/ed8b2bd16539d22ad2c0b4b5b37c5dc1ac20044d))
|
|
|
|
Freeze the old look in a click-through screenshot overlay and fade it out over the restyled window —
|
|
QSS has no transitions and animating the palette would re-polish every widget per frame. Sunset
|
|
also flips the app-palette text roles so native primitives QSS can't recolor (spin and combo arrow
|
|
glyphs) follow the theme.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Dusk-gradient theme overhaul with transparent-widget scheme
|
|
([`1946430`](https://gitea.psi.ch/mx/AareDAQ/commit/1946430f0d69c46a41191e9c54e189dd0fa49dd1))
|
|
|
|
Both stylesheets move to transparent children over a gradient painted only by top-level windows;
|
|
inputs, buttons, headers, and menus get opaque faces back. Sunset drops Catppuccin Macchiato for
|
|
the Daemmerung dusk palette. Spin/combo arrows and check indicators become theme-tinted PNGs.
|
|
Widgets stop carrying inline input/text stylesheets so the theme QSS can win (empty stylesheet =
|
|
theme reset).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Float alert banners over content as anchored toasts
|
|
([`1f2a538`](https://gitea.psi.ch/mx/AareDAQ/commit/1f2a538959b7f654dfde6d1d8ac9b2a177a8cab0))
|
|
|
|
Banners in the root layout shifted the whole UI on every message; now they float over the content
|
|
root (repositioned on resize) and the baton toast anchors as a compact pill under the camera view,
|
|
auto-clearing in 4s instead of 10s.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Group beam mark/center/size under one Beam Config banner
|
|
([`00e5d11`](https://gitea.psi.ch/mx/AareDAQ/commit/00e5d116a61c16e91bbf456c05e90ca8341f18d9))
|
|
|
|
The three small beam panels shared a column with three collapsible banners; BeamConfigPanel puts
|
|
them under a single collapsible 'Beam Config.' TitleLabel with section_title() sub-headings.
|
|
beam_mark/beam_center/beam_size stay as aliases on BeamlineControls so main_window signal wiring
|
|
is untouched.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Hide operation panels in watch-only mode
|
|
([`d127863`](https://gitea.psi.ch/mx/AareDAQ/commit/d127863b1f8fc6907828aef9b8aca26a64bfe03d))
|
|
|
|
Without the baton the GUI now shows only the camera stream and status bar; every operating surface
|
|
(panels, docks, pop-out mirrors) is hidden outright. Regaining the baton restores dock layout via
|
|
saveState/ restoreState — per-dock visibility snapshots lose docks tabbed behind others — so
|
|
LogDock gains the objectName restoreState requires.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Horizontal beamline state bar above the status bar
|
|
([`9ef4032`](https://gitea.psi.ch/mx/AareDAQ/commit/9ef4032d06274fb1448907f21b53b53b2ac34400))
|
|
|
|
Replaces the vertical station map that consumed left-column space with a slim always-visible strip
|
|
in the bottom toolbar area, directly above the status bar:
|
|
|
|
- states in physical beamline order, 18px text, one line when the bar is wide enough and wrapped at
|
|
the last space otherwise - availability coloring from the route graph plus the status-bar shortcut
|
|
transitions: bold blue = active (red for Maintenance), orange = reachable in one step, grey = not
|
|
reachable; no backgrounds or rounded corners - transitions only via right-click 'Go to <state>';
|
|
left click shows a reminder tip for available states and the reachability explanation for grey
|
|
ones; hovering a grey state for 3 s shows the same explanation - whole entry is the hover/click
|
|
region; tips anchor to the entry and disappear when the mouse leaves - always visible: no
|
|
View-menu toggle, not hidden by portrait or compact modes
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Lazily init jfj client
|
|
([`8a51eef`](https://gitea.psi.ch/mx/AareDAQ/commit/8a51eef4f08f9756e7ea8307554f1fed58a045a8))
|
|
|
|
- Let panels opt out of starting collapsed
|
|
([`460f703`](https://gitea.psi.ch/mx/AareDAQ/commit/460f7034c37033f5bca7729471a4eb5aa8106aee))
|
|
|
|
TitleLabel gains default_collapsed; the small motor/light panels start open (their per-title
|
|
persisted choice still wins).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Merge Automation progress and Console log into one Information dock
|
|
([`e457236`](https://gitea.psi.ch/mx/AareDAQ/commit/e457236777b80514bc5f24085abd1ee6a0a23df8))
|
|
|
|
The two tabified bottom docks left their switcher tabs stranded at the window bottom; one
|
|
Information dock with proper tabs mirrors the Sample List dock's layout. LogDock becomes the
|
|
LogPanel widget with mirror views for the pop-out and a reveal_requested signal so the owner
|
|
controls visibility (Ctrl+Shift+L, notifications).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Merge Sample List, Reference Tools, and the queue into one dock
|
|
([`1f90098`](https://gitea.psi.ch/mx/AareDAQ/commit/1f9009807d555c96b1be214c9a4d0791deef32e8))
|
|
|
|
Reference Tools was a separate staff-only dock tabified behind Sample List and kept vanishing (saved
|
|
dock state, raise order); the automation job list was a third dock for what is conceptually the
|
|
same table. One tabbed dock now holds Dewar samples + Auxiliary puck (concept from aaregui2's
|
|
QueuePanel): the dewar table doubles as the queue view with the queue buttons and an Unmount
|
|
button in a row beneath it, SampleQueuePanel lives on hidden as the queue engine, and queue/flag
|
|
membership is edited via right-click or row drags onto the Queued and Flagged chips. Column 0 is a
|
|
frozen #+status cell (mounted > queued > flagged > measured, tints context-dependent per chip
|
|
filter); non-staff see Auxiliary greyed out with a Staff-only popup instead of hidden.
|
|
Ctrl+L/Ctrl+R raise the Dewar/Auxiliary tab. The Sample List and log pop-outs are fully
|
|
operational second views on shared models. Riders: MainWindow installs WheelValueGuard, wires the
|
|
camera session badge, and moves samcam/monochromator/ABR/beam-config into the left column's
|
|
Beamline group (BeamlineControls keeps only zoom/light/omega/smargon).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Pointing-hand cursor on all interactive widgets
|
|
([`257edc2`](https://gitea.psi.ch/mx/AareDAQ/commit/257edc25f87a88d22a34b2410af47bfdb491eeea))
|
|
|
|
QSS cannot set cursors and per-widget setCursor calls get forgotten as widgets are added, so an
|
|
app-level filter catches every Polish event on buttons, combos, and sliders — dialogs and pop-outs
|
|
included.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Pop-out windows instead of floating docks
|
|
([`6e1305c`](https://gitea.psi.ch/mx/AareDAQ/commit/6e1305cb927a11cc04ea86b88366961ec6aa27fd))
|
|
|
|
Floating a dock rips it from the row and reshuffles the rest, so PopoutWindow opens an ADDITIONAL
|
|
frameless top-level window instead: 12px outer resize halo (border painted OUTER_GRIP inside the
|
|
real edge so an outside-looking grab still works), hand-painted borderless titlebar glyphs, close
|
|
hides and keeps geometry. DockTitleBar puts the popout button next to the close box. The console
|
|
log adopts it: dock floating disabled, the pop-out view is a second QPlainTextEdit fed by the same
|
|
emitter (a shared QTextDocument would make two views fight over one layout), clear() clears both.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Reference-tools position column and state-driven default sample tab
|
|
([`b088170`](https://gitea.psi.ch/mx/AareDAQ/commit/b08817024dd6c03d8b7f67abfb7a9cd982d0a76e))
|
|
|
|
The reference table gets a display-only '#' column (like the Dewar list) with sort indices shifted
|
|
around it; the sample dock switches to the Auxiliary puck tab on entering alignment/maintenance
|
|
states and back to Dewar elsewhere, only on state transitions so a manual choice sticks.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Rename themes to sunrise/sunset, add bluebird theme with Catppuccin-Latte light palette
|
|
([`c13ea11`](https://gitea.psi.ch/mx/AareDAQ/commit/c13ea11430cf595395fc8de83988d73de088b930))
|
|
|
|
Sunrise/sunset replace the original/portrait tokens (QSettings values migrate on restore); bluebird
|
|
is sunrise with a flat sky. The light palette is repainted with Catppuccin Latte across alerts,
|
|
chips, cards, log, splash, inputs, and status flags, plus button/input height caps and hover rules
|
|
in the QSS.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Rest-to-reveal hint for dock separators
|
|
([`f9a6c7b`](https://gitea.psi.ch/mx/AareDAQ/commit/f9a6c7bc319bad40c015ac692c6ba7857274c712))
|
|
|
|
Separators stay invisible until the mouse rests on one for ~1s (or a drag starts); the QSS
|
|
::separator:hover rule does the hit-testing and a dynamic separatorHint property gates it, so
|
|
event() never needs to know where separators are.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Start all collapsible panels collapsed by default
|
|
([`f84bee6`](https://gitea.psi.ch/mx/AareDAQ/commit/f84bee66ee726598dd38b75f5a8978a29bcc7806))
|
|
|
|
A fresh GUI shows only the banners; the Beamline state panel keeps its own expanded default. A
|
|
user's saved per-title states still override.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Swap the splash banner to an SVG
|
|
([`efcdc0c`](https://gitea.psi.ch/mx/AareDAQ/commit/efcdc0c1912c0024719105411f1bb0a7c09225dd))
|
|
|
|
The PNG banner is replaced by an SVG so the splash artwork scales; the old aare_banner.png is
|
|
removed and gui.py loads the .svg path (the stale path yielded a null splash pixmap).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Theme-aware beamline state panel
|
|
([`7801025`](https://gitea.psi.ch/mx/AareDAQ/commit/7801025802d66291d1bc46177dd1a820ffb6dbd2))
|
|
|
|
The panel paints availability/message colors in code per DAQ tick, so QSS can't retint it —
|
|
state_colors(theme) hands it a per-theme dict (Catppuccin Mocha inks for Sunset) and _apply_theme
|
|
pushes theme flips.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Wheel only adjusts values while the right button is held
|
|
([`f87b895`](https://gitea.psi.ch/mx/AareDAQ/commit/f87b8952c8cf9c01f863e5f9a20c96b53e99ad9c))
|
|
|
|
WheelValueGuard (app-level event filter, installed by MainWindow) makes a bare wheel over spin
|
|
boxes, sliders, dials, and combos scroll the enclosing scroll area instead of nudging the value -
|
|
motor protection. NoWheelScrollArea stops swallowing wheel events since values are now guarded at
|
|
the widget.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Refactoring
|
|
|
|
- Shared busy-badge renderer for camera and axis video views
|
|
([`e77dfb4`](https://gitea.psi.ch/mx/AareDAQ/commit/e77dfb4716f7adcb6673593c1d5075824ae9aeb1))
|
|
|
|
draw_busy_badge in busy_overlay renders the title+subtext pill once; the sample camera and axis
|
|
video overlays both delegate to it instead of keeping diverging copies. The axis panel's dot+label
|
|
status pill and its per-theme QSS go away with it.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
### Testing
|
|
|
|
- Cover the beamline state bar
|
|
([`3175e43`](https://gitea.psi.ch/mx/AareDAQ/commit/3175e437a4ebf4c749d4f6c841d67f35a506fdeb))
|
|
|
|
Availability sets (routes + menu shortcuts, Moving/unknown), signal gating, palette and cursors per
|
|
availability, red/blue active states, adaptive label wrapping, left-click hint paths, hover-hint
|
|
timer lifecycle, and pending-target clearing. Lifts the PR diff coverage back over the 80 percent
|
|
gate (measured 88 percent locally).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Cover the camera overlays, theme migration, layout heal, and splash
|
|
([`7b4764e`](https://gitea.psi.ch/mx/AareDAQ/commit/7b4764e7caa336e2b26165cc3cbd43f6afed86f7))
|
|
|
|
Diff coverage vs main was 77%, under the 80% CI gate; the new camera help/error/badge code and the
|
|
theme+layout main_window paths were the uncovered bulk. Locally: 82%.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Cover the sample-status logic, wheel guard, pop-outs, and log mirror
|
|
([`69b6813`](https://gitea.psi.ch/mx/AareDAQ/commit/69b68130259827ba2166360474959d45d0ec5310))
|
|
|
|
New tests for what the port added: status tint priority and context-dependent chip filters on the
|
|
dewar/queue model, the right-button wheel guard (motor protection), PopoutWindow edge maths,
|
|
manual-resize fallback, close-hides behavior and DockTitleBar, the chip drag-drop relabeling, and
|
|
the console-log pop-out mirror. The widgets' __main__ self-checks are superseded by these and
|
|
removed. Brings PR diff coverage from 70% to 81% (gate: 80%).
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Inline smoke check for the wheel guard
|
|
([`546fb5d`](https://gitea.psi.ch/mx/AareDAQ/commit/546fb5d3f041f71410093604e8c712013a0deea5))
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
- Track the sample-table column shift, sort imports
|
|
([`0b80c75`](https://gitea.psi.ch/mx/AareDAQ/commit/0b80c75c63d58d03666c354744c4074e8d1952c6))
|
|
|
|
The frozen #+status column shifted data columns +1, so the User-column model tests move from index 5
|
|
to 6; ruff import-sort fixes for main_window and log_panel ride along.
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
## v0.7.3 (2026-08-11)
|
|
|
|
### Bug Fixes
|
|
|
|
- Kwarg name for mlbox klass
|
|
([`40a9e84`](https://gitea.psi.ch/mx/AareDAQ/commit/40a9e8464c67c2032ba5718a6bc1763690a28be4))
|
|
|
|
- Remove noisy disabled ring current log
|
|
([`1bdf056`](https://gitea.psi.ch/mx/AareDAQ/commit/1bdf056af52af86d25f2573b789bff1c4364a0b4))
|
|
|
|
|
|
## v0.7.2 (2026-08-05)
|
|
|
|
### Bug Fixes
|
|
|
|
- Don't create pixmap before qapp
|
|
([`214c204`](https://gitea.psi.ch/mx/AareDAQ/commit/214c204d062559fcdfaee4649502423d0158bc21))
|
|
|
|
### Documentation
|
|
|
|
- Make new zensical docs
|
|
([`deb1ea4`](https://gitea.psi.ch/mx/AareDAQ/commit/deb1ea4f505bad12b2705dc6e8a63b13f9093f50))
|
|
|
|
- Move the readme cheatsheet content to a docs page
|
|
|
|
- Udpate cheatsheet formatting
|
|
([`6244d77`](https://gitea.psi.ch/mx/AareDAQ/commit/6244d77a12f2e69afaa7d0e480ef750d84eecdb2))
|
|
|
|
|
|
## v0.7.1 (2026-08-04)
|
|
|
|
### Bug Fixes
|
|
|
|
- No longer load user macros through client
|
|
([`bf503e4`](https://gitea.psi.ch/mx/AareDAQ/commit/bf503e416ff2dfdf9c36661da7fcbd9564a59bbf))
|
|
|
|
- they have been moved to the dynamic beamline dispatch module, where they are concretely loaded
|
|
from each beamline repo instead
|
|
|
|
|
|
## v0.7.0 (2026-08-04)
|
|
|
|
### Continuous Integration
|
|
|
|
- Fail diff cover below threshold
|
|
([`71d9d07`](https://gitea.psi.ch/mx/AareDAQ/commit/71d9d07f3900d259716a9e1fe23bb6596b76e689))
|
|
|
|
- Fail new pyright errors
|
|
([`db520e8`](https://gitea.psi.ch/mx/AareDAQ/commit/db520e8579542f1dea4fdd83fe5b6f5a4a1d1dbd))
|
|
|
|
### Features
|
|
|
|
- Add beamline dispatch for x06da
|
|
([`e0db953`](https://gitea.psi.ch/mx/AareDAQ/commit/e0db953b86cf09ebdcd44c0e08857525594db848))
|
|
|
|
|
|
## v0.6.1 (2026-08-03)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add coverage comment
|
|
([`8def022`](https://gitea.psi.ch/mx/AareDAQ/commit/8def022d4c68ac928a22b4ab214b9e7df9eb279f))
|
|
|
|
- As many ruff errors as possible, some type
|
|
([`0135129`](https://gitea.psi.ch/mx/AareDAQ/commit/0135129c89c377084cc87ee9704e21b67a94265a))
|
|
|
|
### Chores
|
|
|
|
- Update common dep
|
|
([`28dec7a`](https://gitea.psi.ch/mx/AareDAQ/commit/28dec7a3fefe82ee1246cf227e90149b14737c77))
|
|
|
|
### Code Style
|
|
|
|
- Ruff check --fix --unsafe-fixes
|
|
([`f63107a`](https://gitea.psi.ch/mx/AareDAQ/commit/f63107a1e0090ce51e8a2958d5ba1d2c4bc3574b))
|
|
|
|
### Continuous Integration
|
|
|
|
- Add better linting
|
|
([`70c81ab`](https://gitea.psi.ch/mx/AareDAQ/commit/70c81abdd86b67d6a792d13595b88e8bc5d00f95))
|
|
|
|
- Make sure main is available for diff
|
|
([`7c28b5f`](https://gitea.psi.ch/mx/AareDAQ/commit/7c28b5f023dba7e5fa952130b485398cffd90c4a))
|
|
|
|
|
|
## v0.6.0 (2026-07-31)
|
|
|
|
### Bug Fixes
|
|
|
|
- Pxi and pxiii tests shouldn't work yet
|
|
([`ba68b6b`](https://gitea.psi.ch/mx/AareDAQ/commit/ba68b6b2335535079c92a0153024a4bff533d2be))
|
|
|
|
- Remove many duplicated methods
|
|
([`03e289c`](https://gitea.psi.ch/mx/AareDAQ/commit/03e289c6d7ebe1f9f83e48171264fdfb650fd3c3))
|
|
|
|
- Use macros from dispatch
|
|
([`b492fac`](https://gitea.psi.ch/mx/AareDAQ/commit/b492face878a9ad27d9e03c64c135582d0aa85d6))
|
|
|
|
### Code Style
|
|
|
|
- Remove pointless name-mangled attrs
|
|
([`7b79dd8`](https://gitea.psi.ch/mx/AareDAQ/commit/7b79dd8ec5efb741eafa565ba1436fbff396aff5))
|
|
|
|
the fact that removing them didn't break anything shows that they were completely unneccessary -
|
|
there is no inheritance tree using the same names
|
|
|
|
- Replace dunder attributes with normal 'private' attrs
|
|
([`fb0c8ef`](https://gitea.psi.ch/mx/AareDAQ/commit/fb0c8efebec4a9270d6091902768bc2e74b8c798))
|
|
|
|
### Continuous Integration
|
|
|
|
- Add concurrency to test suite
|
|
([`1ef5b20`](https://gitea.psi.ch/mx/AareDAQ/commit/1ef5b20172b6ea5173f2a3b71776a420ea5871f9))
|
|
|
|
- Run on push only for main, otherwise PR
|
|
([`0c55bc8`](https://gitea.psi.ch/mx/AareDAQ/commit/0c55bc800821488a73541df46256bf129e91b85b))
|
|
|
|
### Features
|
|
|
|
- Beamline dispatch framework
|
|
([`991e4be`](https://gitea.psi.ch/mx/AareDAQ/commit/991e4bea474c667b50067c96b4aa6234a1782f37))
|
|
|
|
- Get auth from dispatch
|
|
([`660a0ac`](https://gitea.psi.ch/mx/AareDAQ/commit/660a0acf7c0028e16072f396787e32971e14faac))
|
|
|
|
- Make bec macros dispatched and test against beamline plugins
|
|
([`0f1aa30`](https://gitea.psi.ch/mx/AareDAQ/commit/0f1aa3090b8deb33502e710e87f92d6e3299f576))
|
|
|
|
### Testing
|
|
|
|
- Add test for dispatch against each plugin
|
|
([`e90fd52`](https://gitea.psi.ch/mx/AareDAQ/commit/e90fd52e479550d87dcb6047770324d665862041))
|
|
|
|
|
|
## v0.5.2 (2026-07-27)
|
|
|
|
### Bug Fixes
|
|
|
|
- Return 0 if ring current device is not accessible
|
|
([`69421be`](https://gitea.psi.ch/mx/AareDAQ/commit/69421be3e9e1e94a831b655801201aa0b53d11db))
|
|
|
|
|
|
## v0.5.1 (2026-07-27)
|
|
|
|
### Bug Fixes
|
|
|
|
- Unpin uvicorn
|
|
([`105e85c`](https://gitea.psi.ch/mx/AareDAQ/commit/105e85c06b0cba614c7781ba92f98e0a7772f5c9))
|
|
|
|
- Update aaredb tag
|
|
([`d3a84c9`](https://gitea.psi.ch/mx/AareDAQ/commit/d3a84c9fb832ae592477dcaf7f39b2415badf9a8))
|
|
|
|
|
|
## v0.5.0 (2026-07-27)
|
|
|
|
### Bug Fixes
|
|
|
|
- Add py 3.13 to test matrix
|
|
([`d7fa11b`](https://gitea.psi.ch/mx/AareDAQ/commit/d7fa11bc1946589fbc1bc8bfdc4cf040f644ac15))
|
|
|
|
- Added end_operation to the exception mess at the end of def measure() in daq.py
|
|
([`0a4054d`](https://gitea.psi.ch/mx/AareDAQ/commit/0a4054d69e8cc26d27b990511da341833195ca1b))
|
|
|
|
- Detector url
|
|
([`9fb2004`](https://gitea.psi.ch/mx/AareDAQ/commit/9fb2004e05d75905a595b3fe3c92d3bec6eed9c8))
|
|
|
|
- Handle mountingfailed specifically and split on critical
|
|
([`2c80ef7`](https://gitea.psi.ch/mx/AareDAQ/commit/2c80ef7381686062184551406018cd3f162f0fb4))
|
|
|
|
- One internal worker
|
|
([`2663570`](https://gitea.psi.ch/mx/AareDAQ/commit/2663570f6827ef43a563254943142e9313a2bd33))
|
|
|
|
- Persist workflow git fetch auth
|
|
([`3185811`](https://gitea.psi.ch/mx/AareDAQ/commit/3185811e6129c77d0b90c8daba169e2c27589b69))
|
|
|
|
- Remove excess warning logs
|
|
([`f821c2d`](https://gitea.psi.ch/mx/AareDAQ/commit/f821c2dd99d9cf79f581f984d2ccfa10d85ed327))
|
|
|
|
- Reset git fetch auth to token
|
|
([`bc9094d`](https://gitea.psi.ch/mx/AareDAQ/commit/bc9094dc6e09d0732b0ae328b7e221062d8af29d))
|
|
|
|
- Spurious import
|
|
([`c259e10`](https://gitea.psi.ch/mx/AareDAQ/commit/c259e102284c7265e365c6aa08c373784190d6d0))
|
|
|
|
- Supply operation to end
|
|
([`3a64439`](https://gitea.psi.ch/mx/AareDAQ/commit/3a64439c6b835d499dc971a18141a37443814a44))
|
|
|
|
- Suppress only baton error
|
|
([`fbb0143`](https://gitea.psi.ch/mx/AareDAQ/commit/fbb01439505ac9c1b3faad860fecb5781b8d3b9c))
|
|
|
|
- Typo in exception name
|
|
([`951ee05`](https://gitea.psi.ch/mx/AareDAQ/commit/951ee0591e421c70c998d8b38bd2bcf32d22ac7f))
|
|
|
|
- User values now should persist between samples, only reset to default on start up.
|
|
([`89564a5`](https://gitea.psi.ch/mx/AareDAQ/commit/89564a55e1f4972bb7232fe7b3aa78fbe44e8c9b))
|
|
|
|
### Chores
|
|
|
|
- Add gunicorn dep
|
|
([`5a9d4a2`](https://gitea.psi.ch/mx/AareDAQ/commit/5a9d4a2662641d985a69f447af1f1d6645b52ae5))
|
|
|
|
- Bump aarecommon dependency
|
|
([`aae4ea7`](https://gitea.psi.ch/mx/AareDAQ/commit/aae4ea7a32e99e7b7c29b792bd9bfd06ad112d9b))
|
|
|
|
- Removed redundant /camera/source and /beamline/imafge from server.py and test_server.py
|
|
([`60faea7`](https://gitea.psi.ch/mx/AareDAQ/commit/60faea716faf28204eca0d77cd91d3444d031624))
|
|
|
|
### Code Style
|
|
|
|
- Fix a few style issues by hand
|
|
([`2c237b6`](https://gitea.psi.ch/mx/AareDAQ/commit/2c237b66235255acfd9b44a95a04ba5488224330))
|
|
|
|
- Formatter again
|
|
([`72d96ec`](https://gitea.psi.ch/mx/AareDAQ/commit/72d96ecd6ac44cdf942cd052ae3d1ca84823aea3))
|
|
|
|
- Ruff check --fix
|
|
([`910076a`](https://gitea.psi.ch/mx/AareDAQ/commit/910076a2389bf1d93016226e6b1ae55892a6adb5))
|
|
|
|
- Ruff check --fix --unsafe-fixes
|
|
([`6affbf9`](https://gitea.psi.ch/mx/AareDAQ/commit/6affbf91480b19d11f5354eb1581c971c7563272))
|
|
|
|
- Ruff format
|
|
([`0451b8c`](https://gitea.psi.ch/mx/AareDAQ/commit/0451b8cebb87adabe8d7b2d1d91a2525bb2286b9))
|
|
|
|
### Continuous Integration
|
|
|
|
- Introduce release workflow
|
|
([`5f1a09a`](https://gitea.psi.ch/mx/AareDAQ/commit/5f1a09a1e96565c20fdc3259a7a86462fad17717))
|
|
|
|
### Features
|
|
|
|
- Added flux macro to devices for x10sa
|
|
([`014ae0f`](https://gitea.psi.ch/mx/AareDAQ/commit/014ae0f47a5175266b12a0322713360e3640c8e3))
|
|
|
|
- Server about info
|
|
([`52a9765`](https://gitea.psi.ch/mx/AareDAQ/commit/52a9765182e3372629c884295ace6a8546fb22bb))
|
|
|
|
- Updated the idle close timeout to 8 hours
|
|
([`99ec01c`](https://gitea.psi.ch/mx/AareDAQ/commit/99ec01c34ccc0eaa21ef58091f6f08742094d95a))
|
|
|
|
- Updated the idle close timeout to 8 hours
|
|
([`e6b759e`](https://gitea.psi.ch/mx/AareDAQ/commit/e6b759e6e234f116e6b4e8e853356d520ac05515))
|
|
|
|
|
|
## v0.4.0 (2026-07-08)
|
|
|
|
### Bug Fixes
|
|
|
|
- Crash on bec init failure; beamline must be set explicitly
|
|
([`12bca38`](https://gitea.psi.ch/mx/AareDAQ/commit/12bca38a124c0ceb38a9e5d0852320e8a2adfcf1))
|
|
|
|
### Chores
|
|
|
|
- Add a bunch of stuff to gitignore
|
|
([`9025c42`](https://gitea.psi.ch/mx/AareDAQ/commit/9025c425f8b5ab0f20cd02d2cf6ec748b91b7105))
|
|
|
|
- Add aarecommon dependency
|
|
([`ccc2185`](https://gitea.psi.ch/mx/AareDAQ/commit/ccc21855612f506b61101df85ebfd80d4218447b))
|
|
|
|
- Add uv to dependencies
|
|
([`3d46663`](https://gitea.psi.ch/mx/AareDAQ/commit/3d46663e23b61f37985cf817c784bdde78478c8b))
|
|
|
|
- Bump version
|
|
([`6012607`](https://gitea.psi.ch/mx/AareDAQ/commit/60126073eb8284f183134872748e02c7b9a25867))
|
|
|
|
- Remove common tests from daq
|
|
([`264e667`](https://gitea.psi.ch/mx/AareDAQ/commit/264e6671c76832dfcc7f8c01c1c80c0dcd59da70))
|
|
|
|
- Update aarecommon dependency
|
|
([`b57b26d`](https://gitea.psi.ch/mx/AareDAQ/commit/b57b26d1e23d027cf4ca5462e173bace9c900515))
|
|
|
|
- Update aarecommon dependency to 0.1.3
|
|
([`228e0ed`](https://gitea.psi.ch/mx/AareDAQ/commit/228e0edd16b830d9d0ee77ab85cb9b011bb59da4))
|
|
|
|
### Code Style
|
|
|
|
- Format with ruff
|
|
([`b0863e5`](https://gitea.psi.ch/mx/AareDAQ/commit/b0863e5ddba5d7310148a6d17752b77cc02c32cd))
|
|
|
|
- Ruff check fix
|
|
([`9932661`](https://gitea.psi.ch/mx/AareDAQ/commit/99326614aec6d94a6a50ed896c3234a303995b45))
|
|
|
|
### Features
|
|
|
|
- Add hostname+user to gui logs
|
|
([`3ec2bc0`](https://gitea.psi.ch/mx/AareDAQ/commit/3ec2bc011bbcc6cdcecd68d8c6c242349f8c119a))
|
|
|
|
- Display version, gui and env location in about
|
|
([`cebd4e8`](https://gitea.psi.ch/mx/AareDAQ/commit/cebd4e82bcd6c9a931fa91bfe360fa1925879401))
|
|
|
|
- Display version, gui and env location in about
|
|
([`cf879ee`](https://gitea.psi.ch/mx/AareDAQ/commit/cf879ee2a5606415a6610a80c8f89dc4be48a89f))
|
|
|
|
- Live changes 26-07-06
|
|
([`b0b655a`](https://gitea.psi.ch/mx/AareDAQ/commit/b0b655aea0355eb2441eaf1093534561f028e7a3))
|
|
|
|
### Refactoring
|
|
|
|
- Move qt logging to gui module
|
|
([`8f0a853`](https://gitea.psi.ch/mx/AareDAQ/commit/8f0a85316d7e6e313d09bf5f95c99a1fe0a0a5af))
|
|
|
|
- Use aarecommon and remove common
|
|
([`13bddd4`](https://gitea.psi.ch/mx/AareDAQ/commit/13bddd43c7c36624f6e93e2718d82439d39809ff))
|
|
|
|
### Testing
|
|
|
|
- Corrected test for aaredb to use db_id
|
|
([`f05ab28`](https://gitea.psi.ch/mx/AareDAQ/commit/f05ab282405780844de76156122c2c3daea642bf))
|
|
|
|
- Fixed bug in workflow test
|
|
([`95384d1`](https://gitea.psi.ch/mx/AareDAQ/commit/95384d175a0277277ca33ad5c114e6b04797692f))
|