Commit Graph
1950 Commits
Author SHA1 Message Date
semantic-release ece5fb781d 1.1.0
Docs build and publish / docker (push) Successful in 13s
Build and Publish / release (push) Successful in 12s
CI / lint (push) Successful in 34s
CI / test (3.12) (push) Successful in 1m5s
CI / test (3.13) (push) Successful in 1m5s
CI / test (3.14) (push) Successful in 1m20s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m17s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m20s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m28s
CI / test-with-coverage (push) Successful in 1m32s
CI / coverage-analysis (push) Skipped
Automatically generated by python-semantic-release
v1.1.0
2026-09-17 19:23:43 +00:00
duan_jandClaude Fable 5.1 90f653386a fix(gui): app-level event filters tolerate PySide's stray QWidgetItem
CI / lint (pull_request) Successful in 1m9s
CI / test (3.12) (pull_request) Successful in 1m3s
CI / test (3.14) (pull_request) Successful in 1m11s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m14s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m16s
CI / test-with-coverage (pull_request) Successful in 1m40s
CI / coverage-analysis (pull_request) Successful in 3s
CI / test (3.13) (pull_request) Successful in 58s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m14s
Docs build and publish / docker (push) Successful in 14s
CI / lint (push) Successful in 35s
CI / test (3.12) (push) Canceled after 42s
CI / test (3.13) (push) Canceled after 37s
CI / test (3.14) (push) Canceled after 37s
CI / test-with-beamline-plugins (pxi_bec) (push) Canceled after 32s
CI / test-with-beamline-plugins (pxii_bec) (push) Canceled after 32s
CI / test-with-beamline-plugins (pxiii_bec) (push) Canceled after 27s
CI / test-with-coverage (push) Canceled after 27s
CI / coverage-analysis (push) Canceled after 0s
Build and Publish / release (push) Successful in 26s
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>
2026-09-17 21:12:55 +02:00
duan_jandClaude Fable 5.1 d70cac45bf fix(gui): keep the file-name preview in the plain theme color
CI / lint (push) Skipped
CI / lint (pull_request) Successful in 1m18s
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / test (3.12) (pull_request) Failing after 1m4s
CI / test (3.14) (pull_request) Successful in 1m7s
CI / test (3.13) (pull_request) Successful in 1m15s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m17s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m17s
CI / test-with-coverage (pull_request) Successful in 1m35s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m40s
CI / coverage-analysis (pull_request) Successful in 4s
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>
2026-09-17 18:44:56 +02:00
duan_jandClaude Fable 5.1 010513e141 fix(gui): reach the file-exists guard from every tab, test exact names
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>
2026-09-17 18:44:56 +02:00
duan_jandClaude Fable 5.1 646de67291 fix(gui): make the file-exists guard literal: popup, run +1, no scan
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>
2026-09-17 18:44:56 +02:00
duan_jandClaude Fable 5.1 8798a81555 fix(gui): pop up "File already exists" instead of silently bumping the run
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>
2026-09-17 18:44:56 +02:00
duan_jandClaude Fable 5.1 bf11528e86 fix(gui): zoom-proof the Dewar table and control heights, theme the mounted HUD ink
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>
2026-09-17 18:44:56 +02:00
duan_jandClaude Fable 5.1 1ea607ba56 fix(gui): keep queue head until /status confirms unmount on Mount next
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>
2026-09-17 18:44:56 +02:00
duan_j 7458ea0400 chore: better wording, make user calm 2026-09-17 18:44:56 +02:00
duan_jandClaude Fable 5 1b6a32d137 feat(gui): pin status-bar operables right, stop readout width jitter
- 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>
2026-09-17 18:44:56 +02:00
semantic-release 6f96d85aa0 1.0.3
Docs build and publish / docker (push) Successful in 19s
Build and Publish / release (push) Successful in 22s
CI / lint (push) Successful in 56s
CI / test (3.13) (push) Successful in 1m8s
CI / test (3.12) (push) Successful in 1m13s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m8s
CI / test (3.14) (push) Successful in 1m17s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m19s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m30s
CI / test-with-coverage (push) Successful in 1m44s
CI / coverage-analysis (push) Skipped
Automatically generated by python-semantic-release
v1.0.3
2026-09-17 13:54:12 +00:00
David Perl 735650aea7 fix: report better errors on critical failures
CI / lint (pull_request) Successful in 45s
CI / test (3.12) (pull_request) Successful in 1m7s
CI / test (3.13) (pull_request) Successful in 1m10s
CI / test (3.14) (pull_request) Successful in 1m8s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m10s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m14s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m31s
CI / test-with-coverage (pull_request) Successful in 1m38s
CI / coverage-analysis (pull_request) Successful in 4s
CI / lint (push) Successful in 30s
Docs build and publish / docker (push) Successful in 15s
CI / test (3.12) (push) Canceled after 41s
CI / test (3.13) (push) Canceled after 39s
CI / test (3.14) (push) Canceled after 36s
CI / test-with-beamline-plugins (pxi_bec) (push) Canceled after 34s
CI / test-with-beamline-plugins (pxii_bec) (push) Canceled after 31s
CI / test-with-beamline-plugins (pxiii_bec) (push) Canceled after 29s
CI / test-with-coverage (push) Canceled after 26s
CI / coverage-analysis (push) Canceled after 0s
Build and Publish / release (push) Successful in 29s
2026-09-17 15:50:13 +02:00
semantic-release 106b8b9093 1.0.2
Docs build and publish / docker (push) Successful in 6s
CI / lint (push) Successful in 38s
Build and Publish / release (push) Successful in 15s
CI / test (3.12) (push) Successful in 1m4s
CI / test (3.13) (push) Successful in 1m5s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m10s
CI / test (3.14) (push) Successful in 1m17s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m22s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m22s
CI / test-with-coverage (push) Successful in 1m33s
CI / coverage-analysis (push) Skipped
Automatically generated by python-semantic-release
v1.0.2
2026-09-17 12:31:59 +00:00
David Perl b385559842 docs: add comment to timeout adjustment
Docs build and publish / docker (push) Successful in 20s
CI / lint (push) Successful in 42s
CI / test (3.12) (push) Canceled after 46s
CI / test (3.13) (push) Canceled after 44s
CI / test (3.14) (push) Canceled after 41s
CI / test-with-beamline-plugins (pxi_bec) (push) Canceled after 39s
CI / test-with-beamline-plugins (pxii_bec) (push) Canceled after 36s
CI / test-with-beamline-plugins (pxiii_bec) (push) Canceled after 34s
CI / test-with-coverage (push) Canceled after 31s
CI / coverage-analysis (push) Canceled after 0s
Build and Publish / release (push) Successful in 32s
2026-09-17 14:31:08 +02:00
David Perl 5d770bddc0 fix: make _safe_sample safer 2026-09-17 14:31:08 +02:00
David Perl 4fc93b92aa fix: don't wait for jfjoch cancellation 2026-09-17 14:31:08 +02:00
semantic-release fda50286d2 1.0.1
Docs build and publish / docker (push) Successful in 20s
CI / lint (push) Successful in 50s
Build and Publish / release (push) Successful in 30s
CI / test (3.12) (push) Successful in 1m9s
CI / test (3.13) (push) Successful in 1m9s
CI / test (3.14) (push) Successful in 1m8s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m13s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m13s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m31s
CI / test-with-coverage (push) Successful in 1m43s
CI / coverage-analysis (push) Skipped
Automatically generated by python-semantic-release
v1.0.1
2026-09-17 12:25:19 +00:00
perl_d c545910f35 fix: Guillaume's fix for pin exclusion
CI / lint (push) Successful in 37s
Docs build and publish / docker (push) Successful in 17s
CI / test (3.12) (push) Canceled after 50s
CI / test (3.13) (push) Canceled after 46s
CI / test (3.14) (push) Canceled after 45s
CI / test-with-beamline-plugins (pxi_bec) (push) Canceled after 41s
CI / test-with-beamline-plugins (pxii_bec) (push) Canceled after 40s
CI / test-with-beamline-plugins (pxiii_bec) (push) Canceled after 36s
CI / test-with-coverage (push) Canceled after 35s
CI / coverage-analysis (push) Canceled after 0s
Build and Publish / release (push) Successful in 22s
2026-09-17 14:24:25 +02:00
semantic-release 1289851bb9 1.0.0
Docs build and publish / docker (push) Successful in 12s
Build and Publish / release (push) Successful in 23s
CI / lint (push) Successful in 33s
CI / test (3.13) (push) Successful in 1m15s
CI / test (3.14) (push) Successful in 1m6s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m24s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m23s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m28s
CI / test-with-coverage (push) Successful in 1m33s
CI / coverage-analysis (push) Skipped
CI / test (3.12) (push) Successful in 1m6s
Automatically generated by python-semantic-release
v1.0.0
2026-09-16 14:17:39 +00:00
duan_jandClaude Fable 5 145b94b7ef fix: suppress takeAt override complaint from newer basedpyright stubs
CI / lint (pull_request) Successful in 55s
CI / test (3.12) (pull_request) Successful in 1m3s
CI / test (3.13) (pull_request) Successful in 1m5s
CI / test (3.14) (pull_request) Successful in 1m5s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m14s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m22s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m25s
CI / test-with-coverage (pull_request) Successful in 1m34s
CI / coverage-analysis (pull_request) Successful in 3s
Docs build and publish / docker (push) Successful in 6s
CI / lint (push) Canceled after 49s
CI / test (3.12) (push) Canceled after 46s
CI / test (3.13) (push) Canceled after 44s
CI / test (3.14) (push) Canceled after 41s
CI / test-with-beamline-plugins (pxi_bec) (push) Canceled after 39s
CI / test-with-beamline-plugins (pxii_bec) (push) Canceled after 36s
CI / test-with-beamline-plugins (pxiii_bec) (push) Canceled after 34s
CI / test-with-coverage (push) Canceled after 31s
CI / coverage-analysis (push) Canceled after 0s
Build and Publish / release (push) Successful in 29s
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>
2026-09-16 14:40:49 +02:00
duan_jandClaude Fable 5 5cb57f4737 feat: status-bar readouts wrap on narrow windows instead of clipping
CI / lint (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / lint (pull_request) Failing after 59s
CI / test (3.12) (pull_request) Successful in 1m4s
CI / test (3.14) (pull_request) Successful in 1m5s
CI / test (3.13) (pull_request) Successful in 1m10s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m12s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m14s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m25s
CI / test-with-coverage (pull_request) Successful in 1m38s
CI / coverage-analysis (pull_request) Successful in 3s
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>
2026-09-16 14:37:19 +02:00
duan_jandClaude Fable 5 33239bf51f refactor: drop the camera-region splitter, side columns fixed again
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>
2026-09-16 14:37:19 +02:00
duan_jandClaude Fable 5 26fbe2ca42 fix: give deferred singleShot callbacks a receiver context
CI / lint (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / lint (pull_request) Successful in 1m2s
CI / test (3.12) (pull_request) Successful in 1m8s
CI / test (3.14) (pull_request) Successful in 1m7s
CI / test (3.13) (pull_request) Successful in 1m16s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m14s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m21s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m32s
CI / test-with-coverage (pull_request) Successful in 1m37s
CI / coverage-analysis (pull_request) Successful in 3s
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>
2026-09-16 13:29:07 +02:00
duan_jandClaude Fable 5 7fb9f8bf9c chore: retrigger CI (pxi_bec job hit the known eventFilter teardown flake)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-16 13:29:07 +02:00
duan_jandClaude Fable 5 b29b5f121e chore: retrigger CI (pxi_bec job hit the known eventFilter teardown flake)
CI / lint (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / lint (pull_request) Canceled after 49s
CI / test (3.12) (pull_request) Canceled after 45s
CI / test (3.13) (pull_request) Canceled after 44s
CI / test (3.14) (pull_request) Canceled after 40s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Canceled after 39s
CI / test-with-coverage (pull_request) Canceled after 30s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Canceled after 35s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Canceled after 34s
CI / coverage-analysis (pull_request) Canceled after 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-16 13:28:16 +02:00
duan_jandClaude Fable 5 c203a657c5 fix: re-pin PySide6 after the beamline-plugin install in CI
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>
2026-09-16 13:28:16 +02:00
duan_jandClaude Fable 5 32f98d7285 fix: pin PySide6 below 6.10 so CI stops segfaulting
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>
2026-09-16 13:28:16 +02:00
duan_jandClaude Fable 5 e31b0e9a6f fix: cast the mocked daq.unmount for basedpyright on CI
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>
2026-09-16 13:28:16 +02:00
duan_jandClaude Fable 5 809959df33 feat!: remove Playlist Mode and Automation View, unpin window minimum
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>
2026-09-16 13:28:16 +02:00
duan_jandClaude Fable 5 750559fade fix: full-length hint line on resize-bar hover/drag, short grip idle
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>
2026-09-16 13:28:16 +02:00
duan_jandClaude Fable 5 fd0edffdc9 WIP: resizable camera region, menu panel collapse, zoom ladder
- center splitter: left controls | camera tabs | beamline column;
  drag resizes the camera width, View menu check actions collapse
  the fixed-width side panels (no on-screen buttons)
- font zoom restricted to a 100/125/150 percent ladder; the
  fixed-width side boxes scale with it so zoomed text does not clip
- camera tab widget min width clamped to 1/3 of its natural minimum
- resize bars: short centered grip PNGs shared by QMainWindow
  separators and QSplitter handles, single style source in styles.py
- window min width 1244 -> ~376: automation row and sample-list
  chip row stop propagating their natural minimums (Ignored-width
  hosts), portrait page fixed width removed (portrait mode pins the
  window width itself)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-16 13:28:16 +02:00
semantic-release 30151b4441 0.32.1
Docs build and publish / docker (push) Successful in 8s
CI / lint (push) Successful in 43s
Build and Publish / release (push) Successful in 19s
CI / test (3.13) (push) Successful in 1m15s
CI / test (3.12) (push) Successful in 1m17s
CI / test (3.14) (push) Successful in 1m17s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m19s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m37s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m38s
CI / test-with-coverage (push) Successful in 1m47s
CI / coverage-analysis (push) Skipped
Automatically generated by python-semantic-release
v0.32.1
2026-09-16 09:37:40 +00:00
perl_d 21a462d4df style: format
CI / lint (pull_request) Successful in 40s
CI / test (3.12) (pull_request) Successful in 1m12s
CI / test (3.13) (pull_request) Successful in 1m13s
CI / test (3.14) (pull_request) Successful in 1m12s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m22s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m25s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m32s
CI / test-with-coverage (pull_request) Successful in 1m46s
CI / coverage-analysis (pull_request) Failing after 3s
Docs build and publish / docker (push) Successful in 20s
CI / lint (push) Successful in 43s
CI / test (3.12) (push) Canceled after 52s
CI / test (3.13) (push) Canceled after 48s
CI / test (3.14) (push) Canceled after 47s
CI / test-with-beamline-plugins (pxiii_bec) (push) Canceled after 38s
CI / test-with-beamline-plugins (pxi_bec) (push) Canceled after 43s
CI / test-with-beamline-plugins (pxii_bec) (push) Canceled after 42s
CI / test-with-coverage (push) Canceled after 37s
CI / coverage-analysis (push) Canceled after 0s
Build and Publish / release (push) Successful in 39s
2026-09-16 10:36:34 +02:00
David Perl fab6e8ed30 fix: reduce log verbosity in raster results
CI / lint (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / lint (pull_request) Failing after 30s
CI / test (3.12) (pull_request) Successful in 1m12s
CI / test (3.13) (pull_request) Successful in 1m15s
CI / test (3.14) (pull_request) Successful in 1m16s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m24s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m29s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m33s
CI / test-with-coverage (pull_request) Successful in 1m44s
CI / coverage-analysis (pull_request) Failing after 4s
2026-09-16 10:14:49 +02:00
David Perl 6b6c364843 fix: give a better error on attempting to run raster with no sample
CI / lint (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
2026-09-16 10:01:38 +02:00
leonarski_f 5c600785f4 Feat: Setup dose/Ang
Docs build and publish / docker (push) Successful in 18s
CI / lint (push) Successful in 39s
Build and Publish / release (push) Successful in 21s
CI / test (3.12) (push) Successful in 1m14s
CI / test (3.14) (push) Successful in 1m15s
CI / test (3.13) (push) Successful in 1m18s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m29s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m33s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m37s
CI / test-with-coverage (push) Successful in 1m52s
CI / coverage-analysis (push) Skipped
2026-09-16 09:36:19 +02:00
leonarski_f 0e7299fa2e Fix: Calculated dose rate units 2026-09-16 09:36:19 +02:00
leonarski_f 0a0879f4f4 Feat: Improve smart data collection panel 2026-09-16 09:36:19 +02:00
leonarski_f c6a558db9f Fix: high resolution is updated when energy changes, dtz stays constant
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m17s
CI / lint (pull_request) Successful in 42s
CI / test (3.12) (pull_request) Successful in 1m11s
CI / test (3.13) (pull_request) Successful in 1m17s
CI / test (3.14) (pull_request) Successful in 1m24s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m24s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m35s
CI / test-with-coverage (pull_request) Successful in 1m50s
CI / coverage-analysis (pull_request) Failing after 4s
CI / lint (push) Successful in 37s
Docs build and publish / docker (push) Successful in 19s
Build and Publish / release (push) Successful in 25s
CI / test (3.12) (push) Successful in 1m18s
CI / test (3.13) (push) Successful in 1m18s
CI / test (3.14) (push) Successful in 1m20s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m30s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m36s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m52s
CI / test-with-coverage (push) Successful in 1m50s
CI / coverage-analysis (push) Skipped
2026-09-14 15:26:38 +02:00
leonarski_f c692cd048c Fix: Provide correct flux to Jungfraujoch
CI / lint (pull_request) Successful in 46s
CI / test (3.12) (pull_request) Successful in 1m13s
CI / test (3.14) (pull_request) Successful in 1m21s
CI / test (3.13) (pull_request) Successful in 1m23s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m23s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m23s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m39s
CI / test-with-coverage (pull_request) Successful in 1m49s
CI / coverage-analysis (pull_request) Successful in 3s
Docs build and publish / docker (push) Successful in 11s
CI / lint (push) Successful in 33s
Build and Publish / release (push) Successful in 15s
CI / test (3.12) (push) Successful in 1m15s
CI / test (3.13) (push) Successful in 1m12s
CI / test (3.14) (push) Successful in 1m22s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m29s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m30s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m31s
CI / test-with-coverage (push) Successful in 1m44s
CI / coverage-analysis (push) Skipped
2026-09-14 13:27:46 +02:00
semantic-release f75b31738d 0.32.0
Docs build and publish / docker (push) Successful in 8s
CI / lint (push) Successful in 29s
Build and Publish / release (push) Successful in 18s
CI / test (3.12) (push) Successful in 1m13s
CI / test (3.13) (push) Successful in 1m19s
CI / test (3.14) (push) Successful in 1m23s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m24s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m25s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m31s
CI / test-with-coverage (push) Successful in 1m56s
CI / coverage-analysis (push) Skipped
Automatically generated by python-semantic-release
v0.32.0
2026-09-14 11:24:10 +00:00
duan_jandClaude Fable 5 f1f932bc7c feat: full-name tooltips on the glyph count column headers
CI / lint (push) Successful in 32s
Docs build and publish / docker (push) Successful in 15s
CI / test (3.12) (push) Canceled after 36s
CI / test (3.13) (push) Canceled after 32s
CI / test-with-beamline-plugins (pxiii_bec) (push) Canceled after 22s
CI / test (3.14) (push) Canceled after 31s
CI / test-with-beamline-plugins (pxi_bec) (push) Canceled after 27s
CI / test-with-beamline-plugins (pxii_bec) (push) Canceled after 26s
CI / test-with-coverage (push) Canceled after 21s
CI / coverage-analysis (push) Canceled after 0s
Build and Publish / release (push) Successful in 22s
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>
2026-09-14 13:23:32 +02:00
duan_jandClaude Fable 5 1fe3c7f4e5 refactor: transmission is a per-mode setting, placed in its section
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>
2026-09-14 13:23:32 +02:00
duan_jandClaude Fable 5 6d09ae4fe3 feat: show the mounted sample name on the camera view
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>
2026-09-14 13:23:32 +02:00
duan_jandClaude Fable 5 1fc72649b0 feat: text zoom shortcuts and high-contrast resize lines
- 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>
2026-09-14 13:23:32 +02:00
perl_d 814290829d style: format
CI / lint (pull_request) Successful in 44s
CI / test (3.13) (pull_request) Successful in 1m8s
CI / test (3.12) (pull_request) Successful in 1m11s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m9s
CI / test (3.14) (pull_request) Successful in 1m13s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m13s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m27s
CI / test-with-coverage (pull_request) Successful in 1m39s
CI / lint (push) Successful in 27s
Docs build and publish / docker (push) Successful in 14s
Build and Publish / release (push) Successful in 17s
CI / coverage-analysis (pull_request) Failing after 14s
CI / test (3.12) (push) Successful in 1m2s
CI / test (3.13) (push) Successful in 1m3s
CI / test (3.14) (push) Successful in 1m2s
CI / test-with-beamline-plugins (pxi_bec) (push) Successful in 1m9s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m19s
CI / test-with-beamline-plugins (pxiii_bec) (push) Successful in 1m19s
CI / test-with-coverage (push) Successful in 1m31s
CI / coverage-analysis (push) Skipped
2026-09-14 12:46:58 +02:00
leonarski_f b0f7bd151c Add polarization factor to Jungfraujoch 2026-09-14 12:46:58 +02:00
leonarski_f 33a98abd7a Add beam size to Jungfraujoch 2026-09-14 12:46:58 +02:00
leonarski_f ec0167f0a5 Add goniometer omega to raster scan 2026-09-14 12:46:58 +02:00
leonarski_f 615abac420 Raster suffixes _raster2d and _raster1d 2026-09-14 12:46:58 +02:00