v2.4.2
Second polish-pass on the dark theme — the post-v2.4.1 verifier swarm flagged a self-contradiction (per-paint GDI allocation in the same release that justified static caches) plus the two reachable-from-Settings dialogs that still rendered light.
Fixed — self-contradiction in v2.4.1
OnRenderItemCheckno longer allocates aPenper paint. v2.4.1 added the submenu check-glyph override withusing var pen = new Pen(Theme.FgColor, 1.6f)— inside the sameBoldSegmentRendererwhose top-of-class comment explicitly justifies static caching because "paint fires on every mouse-move over a menu item." The newCheckPenis now declaredstatic readonlyalongsideBgBrush/HighlightBrush/FgBrush/SeparatorPenand reused across paints.- DWM legacy attribute 19 is now only sent when attribute 20 fails. v2.4.1 fired both attributes unconditionally to cover Win10 1809–19H2 (where only attribute 19 works). That's correct on every shipping Windows build today, but defensive against a hypothetical future DWM revision: now checks the HRESULT from attribute 20 and only calls attribute 19 on non-
S_OK.
Added — dark theme reaches the remaining two dialogs
The post-v2.4.0 verifier flagged it, the post-v2.4.1 verifier flagged it again with REJECT severity, and the user request was "fix all": Help and Update dialogs are now themed.
HelpForm—RichTextBoxbackground isTheme.BgColor, title and body text inTheme.FgColor, section headers (the——— BASIC USAGE ———style lines) inTheme.AccentBluefor hierarchy. Same first-show optimizations as Settings (SetStyledouble-buffer +UserPaint,ShowInTaskbar = false,DwmSetWindowAttribute(DWMWA_USE_IMMERSIVE_DARK_MODE)inOnHandleCreatedwith the attr-19 Win10 1809–19H2 fallback).UpdateDialog— form backgroundTheme.BgColor, status textTheme.FgColor, detail textTheme.DimColor(italic, secondary), progress bar bgTheme.EditBgColor, progress fillTheme.AccentGreen(Catppuccin Green replaces the Material#4CAF50green for palette unity), error-state textTheme.AccentWarn(Catppuccin Peach replaces Material#FF9800orange), buttonsFlatStyle.FlatwithTheme.DividerColorborder. The post-update success toast (the brief "✓ CapsNumTray updated to vX.Y.Z" popup near the system tray after a self-update) is also dark now —Theme.BgColorbackground,Theme.FgColortext.
Added — palette additions in Theme.cs
Three new accent colors (Catppuccin Mocha):
AccentBlue(#89B4FA) — section headers in HelpForm, semantic links elsewhereAccentGreen(#A6E3A1) — success states (UpdateDialog progress fill, future "OK" affordances)AccentWarn(#FAB387, Catppuccin Peach) — warnings and errors visible against the dark background (UpdateDialog error state)
Theme.cs now exposes 10 colors total — the 7 from v2.4.1 plus these three accents. Still a single source of truth.
Compatibility
Same .NET 8 runtime, same self-contained single-file publish, same self-update flow. INI format, icon resources, and settings are unchanged. Self-updating from any 2.4.x or 2.3.x release lands here automatically.
Full Changelog: v2.4.1...v2.4.2