Changelog - Version 5.7.16 (2026-08-04)
Version Information
- Updated version from 5.7.15 to 5.7.16
- Fix: stop Specter WebSocket reconnect loops that flooded logs with
Already connectedand never recovered registration
Bug Fixes
- Specter internal WebSocket sticky
Already connectedloop- After the 5.7.15 reconnect work, some bots still entered a permanent failure loop:
Connection failed: Already connectedfollowed by long backoff retries. python-socketio can leaveclient.connected=Truewhendisconnect()fails mid-send, so the nextconnect()always raises. Double REGISTER on connect + WELCOME also made server-side drops more likely when the hub treated the same SID as a duplicate name. - Fix: a hard client reset (
_force_specter_ws_reset) clears sticky Socket.IO / Engine.IO state before every connect and on every failure path (includingAlready connected). REGISTER is sent once per transport (WELCOME only fills in if connect missed it). Real disconnect handlers always clear ready state — the old “ignore disconnect while connected=True” race guard is removed because python-socketio still hasconnected=Truewhile those handlers run. Connect uses a longer namespacewait_timeoutfor Caddy handshakes. - Pair with websocket hub fix: same-SID re-REGISTER is idempotent (re-emits SUCCESS instead of self-disconnect).
- After the 5.7.15 reconnect work, some bots still entered a permanent failure loop:
Technical Details
- Reconnect and registration handlers live in
./bot/bot.py(same pattern inbeta.py,beta-v6.py,kick.py,specterdiscord.py). - Hub change:
./websocket/server.pyregister path.
Thank you for your feedback and support!
As always, your feedback is appreciated. Please report any issues, bugs, or suggestions in the #ticket-info channel on our Discord server. You can also submit feedback and bug reports directly on our support website: https://support.botofthespecter.com/