You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Prevent crashes and silent automation interruptions
Fixes a class of defects where a long-running service dies silently or a whole
automation run aborts on an escaping exception:
- Coordinate coercion: a float x/y (computed/random var or JSON literal) no
longer reaches an un-prototyped SetCursorPos / Xlib fake_input and raises
ctypes.ArgumentError / struct.error that aborts the whole script; coerce to
int in mouse_preprocess / set_mouse_position (+ Win32 cursor argtypes and a
0-size-screen guard in _convert_position).
- Service-loop containment: the hotkey daemon (all platforms), Observer and
PopupWatchdog poll loops, and the ChatOps command boundary widened to catch
the failure types a normal script / user callback raises (AutoControlException,
LookupError, StopIteration, ArithmeticError) instead of the thread dying and
silently stopping every binding/rule.
- cv2.error from AC_match_template* is now contained as AutoControlScreenException
rather than aborting the run.
- Server robustness: REST / Webhook / socket-command handlers get read timeouts
(+ daemon_threads) so stalled clients can't pin worker threads; USB/IP prunes
finished workers; the webhook fire lock is bounded and answers 503 busy rather
than piling up handler threads; host_service and WebRTC input dispatch survive
transient errors.
Test _FakeRequest gains a settimeout no-op to match a real socket.
exceptExceptionaserror: # noqa: BLE001 # reason: a daemon must survive ANY transient error (signaling/aiortc/av/ValueError) and retry, not exit the loop
exceptExceptionaserror:# noqa: BLE001 # reason: isolation boundary — a malformed/failing remote input must not kill the channel bridge (dispatch can raise AutoControl*/OSError, not just InputDispatchError)
0 commit comments