## 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.