## CS Patch Translator — v0.8.99 ### Improvements **Connection resilience** - TCP keepalive enabled on both the ColourSpace outbound connection and the Resolve inbound connection (10-second period) - ColourSpace timeout events promoted from verbose-only to always-logged, with a clear message identifying the source address and deadline duration - Consecutive timeout counter: three consecutive timeouts without a successful read logs an additional warning suggesting reconnection - Improved disconnect messages distinguish EOF, transport error, and mid-message timeout - Resolve write errors promoted from verbose to always-logged - Resolve write failure no longer tears down the listener — only the dead connection is closed, allowing Resolve to reconnect automatically without user intervention **Error presentation** - Licence activation errors show friendly messages rather than raw JSON from the Polar API - Version check errors in the About dialog are user-readable with a tap-to-copy detail option **Port validation** Port entries validated as integers in the range 1–65535, with a clear error message on invalid input. **Verbose logging race fix** The verbose logging checkbox is now read via an atomic bool, eliminating a data race that could cause a crash when background goroutines checked the checkbox state directly. **Licence sync** Background licence validation now uses local signature verification rather than re-activating against the Polar server, preventing "activation limit reached" errors on already-activated devices. Opening the About dialog also triggers a sync.