From 891f8ac0ecc40ee9a5f3a9a500d45c9b5ca32cdc Mon Sep 17 00:00:00 2001 From: Jon Kazama Date: Tue, 18 Aug 2026 00:05:53 +0200 Subject: [PATCH] fix(style): make the active surface actually visible SurfaceActive was Lerp(Surface, Primary, 0.1f), picked when no production code drew the token. Against the real sidebar it is barely distinguishable from SurfaceBase, so the active row was identifiable only by its 2px accent bar -- which is not what "the active tab is unmistakable" was supposed to mean. 0.25 keeps it clearly a surface rather than a coloured block, and stays distinct from SurfaceHover, which is its own theme slot rather than a derivation. Worth a look across all themes during the smoke test: the lerp target is Primary, so themes with a very light primary will move further than the dark ones. --- HellionChat/Ui/StyleEngine/TokenResolver.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/HellionChat/Ui/StyleEngine/TokenResolver.cs b/HellionChat/Ui/StyleEngine/TokenResolver.cs index 0491e56..acfd7cb 100644 --- a/HellionChat/Ui/StyleEngine/TokenResolver.cs +++ b/HellionChat/Ui/StyleEngine/TokenResolver.cs @@ -109,7 +109,10 @@ internal sealed class TokenResolver [Token.SurfaceBase] = c => c.Surface, [Token.SurfaceRaised] = c => Lerp(c.Surface, White, 0.06f), [Token.SurfaceHover] = c => c.SurfaceHover, - [Token.SurfaceActive] = c => Lerp(c.Surface, c.Primary, 0.1f), + // 0.1 was chosen when nothing drew this token; against the real sidebar + // it is barely distinguishable from SurfaceBase, which left the active + // row identifiable only by its accent bar. + [Token.SurfaceActive] = c => Lerp(c.Surface, c.Primary, 0.25f), [Token.TextMuted] = c => c.TextMuted, [Token.TextFaint] = c => c.TextDim, };