Fixed
- Windows client no longer disconnects every ~60 seconds. The
client was not sending WebSocket pings, relying entirely on the
server's pings and the auto-pong response. On Windows, power-managed
network adapters can delay or drop a pong just long enough to trip
the server's read timeout. Fixed by adding client-side pings every
30 s (matching the server) and raising the server's read timeout
from 45 s to 90 s so a single missed pong doesn't kill the
connection.