Fixed
- Progress bars stuck for minutes, then jumping in big increments. WebSocket
broadcast()was awaitingsend_jsonserially for each connected client. Any slow / half-dead client (background browser tab, mobile on weak signal, Tailscale tunnel with packet loss, stale connection from a tab that didn't close cleanly) blocked every other client for as long as that one connection took to time out at the TCP layer. While blocked, every job's progress callback queued behind it; when the slow connection finally drained, the queued events flushed at once, manifesting as a progress bar jumping from e.g. 2% to 26% after several minutes of standstill. Fix: send to all connections in parallel viaasyncio.gather, with a 2-second per-connection timeout. A sluggish client gets dropped after 2 seconds and the rest of the broadcasts complete uninterrupted. Smoke-tested with one 10-second-stalled connection alongside two healthy ones — the broadcast now returns in 2.0s (was 10s) and the healthy clients receive every message.
Docker images
Pinned to this release:
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.35 # portable (amd64 + arm64, CPU)
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.35-nvenc # x86_64 + NVIDIA GPU (NVENC)
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.35-edge # as above but ffmpeg master
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.35-edge-nvencFloating tags (:latest, :edge, :nvenc, :edge-nvenc) track the most recent release of each lineage.