Fix the GUI pop-up path and add personnel-safety-system (PSS) gating so
door-open / beam-down / shutter-closed conditions are surfaced and acted on.
- exception pop-ups: connect the previously-orphaned http_error signal;
failed user operations now raise a modal dialog, background/polling errors
a non-modal banner.
- PSS device (devices/pss_state.py) reading EH1-PSYS PROHIBITED-STATE /
ALARM-STATE; new critical DoorSafetyError + DOOR_SAFETY_ERROR code.
- mounting service blocks mount/unmount when the hutch is not prohibited or
an alarm is active; /status now publishes pss_prohibited / pss_alarm.
- GUI blocks manual mount/unmount and the automation Run button immediately
(pop-up) on door-open, and shows a warning banner while an alarm is active.
- centralise per-action precondition checks (ring current, safety shutter,
hutch door) into one combined "continue?" dialog with a session-global
"don't ask again for 1 hour" snooze, applied to all data-collection buttons.
- live automation pauses and auto-resumes on bad conditions (beam, shutter,
door, robot) with continue-now / stop overrides, gated by a default-on
"Pause on bad conditions" checkbox replacing the dead CHECK_ENABLED constant.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>