From 09015b31cfb05f123d181e70dc6cb440dbabc1fa Mon Sep 17 00:00:00 2001 From: Patrick Schaper Date: Wed, 10 Jun 2026 15:38:49 +0200 Subject: [PATCH] fix(renderer): avoid pure white rain highlights - cap red and blue highlight channels below xterm white - document the xterm cube quantization constraint - add regression checks for the palette highlight colors --- .../MatrixScreenSaver/NativeMatrixRenderer.swift | 8 ++++++-- .../NativeMatrixRendererTests.swift | 13 +++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Sources/MatrixScreenSaver/NativeMatrixRenderer.swift b/Sources/MatrixScreenSaver/NativeMatrixRenderer.swift index 72176da..ef2927c 100644 --- a/Sources/MatrixScreenSaver/NativeMatrixRenderer.swift +++ b/Sources/MatrixScreenSaver/NativeMatrixRenderer.swift @@ -1293,12 +1293,16 @@ final class NativeMatrixRenderer { } if minimum + 1 < levels { + // The xterm cube quantizes each channel to 6 steps (0, 95, 135, + // 175, 215, 255). A 0.95 cap still rounds back up to 255, so the + // highlight must stay below 0.9 to avoid pure white. + let highlightCap = 0.89 for level in (minimum + 1)..