- Add show/hide/positionable target crosshair (RPC), separate from bec_widgets' mouse crosshair
- Add zoom in/out/fit buttons; fix manual zoom/pan being wiped on every live-view re-enable
- Add reset_zoom() RPC method, called at start of x_ray_eye_align.py
- Style ROI outline blue/thinner (was near-white via compact_color default)
- Append the current BEC scan number to the Projection info-item,
e.g. "120 / 400 (S06650→S06770)", for direct comparison against
ptycho reconstruction filenames (which use the same S##### scan
number convention). Read from
primary.info[0].active_request_block.scan_number — already
available on the queue object, no new global var needed.
- Add tomo_start_scan_number to the progress payload, mirroring the
existing tomo_start_time pattern: a new tomo_progress key to be
written once by the scan loop when a tomogram begins. Producer side
(flomni.py) not yet implemented — falls back to showing only the
current scan number until then.
- New "Beamline states" draggable card (positioned just above
Contacts): lists every beamline state currently registered with
BEC, its live status (valid/invalid/warning/unknown), and whether
the scan interlock is watching it. Cross-references
bec.builtin_actors.scan_interlock.states_watched/.enabled against
each state's live status to flag which watched states are
currently mismatched (i.e. actually contributing to a queue lock),
vs. states that are invalid but not watched and therefore not
blocking anything (e.g. a simulated/test shutter).
This is a display-only diagnostic; the "blocked" experiment_status
itself is unchanged and still derived from the queue's own locks
(_read_queue_locks), not from beamline states directly.
- Add fmtScan() JS helper (S##### zero-padded formatting, matching
the existing ptycho filename convention) and renderBeamlineStates().
- Help panel updated to explain both additions.