WIP: show busy state in GUI while energy change is in flight #216

Closed
duan_j wants to merge 1 commits from show-busy-when-changing-energy into main
1 Commits
Author SHA1 Message Date
duan_jandClaude Fable 5.1 6c95727532 feat: show busy state in GUI while energy change is in flight
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 1m0s
CI / test (3.12) (pull_request) Successful in 1m8s
CI / test (3.13) (pull_request) Successful in 1m12s
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 1m28s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m34s
CI / test-with-coverage (pull_request) Successful in 1m51s
CI / coverage-analysis (pull_request) Successful in 20s
Server never takes the hw lock for /beamline/change_energy, so
/status.busy stays False for the whole mono move and the GUI had only
a readback heuristic (spin green until within 1 eV, or green forever
if the mono missed). The endpoint blocks until the move ends, so the
reply edge is used as the done signal, same as center_loop:

- daq_worker: energy_changing(bool) emitted on send / reply.finished
- SpinMoveState.set_changing: forces moving + read-only, clears to
  neutral without waiting for arrival (both Set Energy rows follow)
- panels: button reads "Changing..." during the move
- sample cameras: "CHANGING ENERGY" curtain, same tier as AUTO CENTERING

GUI-only: other GUIs stay blind until the server takes the hw lock.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 16:36:42 +02:00