Fixed
-
Reconnect to the Obico server after a connection dies silently. If the network path to the server drops without a FIN or RST reaching the printer — a firewall reboot or a NAT state flush — the agent sent no websocket pings and had no TCP keepalive, so its socket kept reporting itself connected, the close handler never ran, and the reconnect loop kept reusing a dead connection. The printer showed as offline until
moonraker-obicowas restarted by hand. The agent now pings the server every 30s with a 15s timeout, so a dead connection is closed and re-established on its own. Measured detection took 48-90s. Contributed by robisonjoel (#141, fixes #140). -
Run the bundled ffmpeg wrapper under POSIX
sh. Creality OS has no bash, so the wrapper failed there. Contributed by dalgibbard (#138).
Internal
- Declare the test-only
websocketsdependency in a newrequirements-test.txt. It is deliberately kept out ofrequirements.txtso it is not installed on printers.
Connections to Moonraker, Janus and the local tunnel are unchanged: they are local, so they cannot go half-open this way, and pings stay off for them.
The release includes 22 passing unit tests on Python 3.9 with the pinned websocket-client==1.2.1, plus an end-to-end check that a silently dropped connection is detected and reconnected.
Versioned container image: ghcr.io/thespaghettidetective/moonraker-obico:v2.2.5 (built by CI from this tag). Release commit: a36431c.