## CS Remote — v0.8.99 ### New Features **General patch set (107 patches)** A new general-purpose calibration patch set replaces the earlier Universal set. It covers the full 3D LUT space efficiently with a grey ramp, primary and secondary ramps (R, G, B, C, M, Y), ColorChecker Classic 2014 patches, skin tone references, and supplementary scene patches, closing with an 18% neutral grey. - Grey ramp uses LUT-offset spacing (1023/21 steps) to avoid measuring only 17 or 33-node LUT points - CV 767 included in all primary and secondary ramps — approximately 981 nits in PQ, the conventional 1000 nit reference level - ColorChecker Classic 2014 values derived from X-Rite reference LAB (D50) via Bradford D50→D65 chromatic adaptation — correct colorimetric values independent of any specific display measurement - Four skin tone reference patches defined as LAB values and adapted to each gamut **Gamut selector for General patch set** Selects the colour encoding for ColorChecker and skin tone patches: BT.709, P3-D65, or BT.2020. Ramp and scene patches are gamut-agnostic and unaffected by this selection. **Probe Match patch set (14 patches)** RGBW at 75%, 95%, and 100%, opening with black and closing with 50% mid grey. Designed for probe-to-probe matching workflows. **Anisometric delivery for all patch sets** Patch Order (Sequential / Anisometric) is now available for Gamut Rings, Ramp, and Mastering in addition to Cube and General. Anisometric ordering varies luminance and chromaticity between consecutive patches to reduce ABL-induced measurement instability on consumer panels. **Per-patch timing in log** Each patch entry in the log now shows elapsed time since the previous patch, reflecting the probe measurement round-trip. Useful for identifying slow measurements and diagnosing probe behaviour. **ColourSpace CSV export format** Exported CSV files now use the ColourSpace import format: `Patch,R,G,B,Percentage` header with integer code values and a percentage column based on the dominant channel relative to the range maximum. ### Improvements **Connection resilience** - TCP keepalive enabled on the ColourSpace connection (10-second period) - Read deadline (60 seconds) and write deadline (10 seconds) applied to all patch delivery - Distinct log messages for timeout, clean disconnect, and transport error - `ErrServerDisconnect` sentinel distinguishes ColourSpace-initiated disconnects from network drops **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 - Format string bug fixed in error binding listener **Port validation** Port entries in both fields are validated as integers in the range 1–65535, with a clear error message on invalid input. **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. The licence timestamp is refreshed on each successful validation. Opening the About dialog also triggers a sync. ### Fixes - Ramp "Steps" field left edge now aligns correctly with form fields above it ---