From c64fcfd4d167a8b3a552087c966b99cb3f8ae7ed Mon Sep 17 00:00:00 2001 From: JonKazama-Hellion Date: Thu, 7 May 2026 22:47:09 +0200 Subject: [PATCH] docs: add v1.4.2 forge-post --- .github/forge-posts/v1.4.2.md | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/forge-posts/v1.4.2.md diff --git a/.github/forge-posts/v1.4.2.md b/.github/forge-posts/v1.4.2.md new file mode 100644 index 0000000..f037278 --- /dev/null +++ b/.github/forge-posts/v1.4.2.md @@ -0,0 +1,43 @@ +--- +subtitle: ChatLog Frame-Hot-Path +versionsnatur: Performance-Patch +--- + +**Hellion Chat 1.4.2 — ChatLog Frame-Hot-Path** + +Dritter Sub-Patch der v1.4.x Polish-Sweep-Serie. Drei +Per-Frame-Allokations-Quellen aus dem ChatLogWindow-Render- +Pfad und der Settings-StatusBar eliminiert. + +- **Card-Mode-Border-Loop entlastet.** DrawMessages hebt + Theme, DrawList, Window-Left, Window-Right und die ABGR- + Border-Color einmalig vor den Per-Message-Loop. Bei 100 + sichtbaren Messages sind das gut 500 redundante P/Invokes + und Property-Reads, die der Hoist eliminiert. Pop-Out- + Heavy-Setups (mehrere parallele Chat-Windows) profitieren + proportional, weil der Hoist pro DrawMessages-Call greift, + also pro Window +- **Auto-Tell Tab-Tint und Icon gecached.** Die Hash-Color- + Berechnung für Auto-Tell-Tabs lief pro Tab pro Frame, mit + zwei String-Allokationen pro Tab (eine für Tint-Hash, eine + für Icon-Hash). Der neue TabTintCache liest pre-computed + Werte aus dem Tab und rechnet nur neu wenn das Tell-Target + drifted. Beide Caches haben separate Validation-Keys, also + keine Cross-Invalidation zwischen Tint- und Icon-Pfad. + AutoTellTabTint selbst bleibt pure Hash-Helper, weiterhin + ohne Tab-Awareness +- **StatusBar-Aggregation hinter Cache-Gate.** Die Status- + Leiste am unteren Window-Rand summiert die Tab-Message- + Counts und zählt die Auto-Tell-Tabs pro Frame. Der Cache- + Gate (1 Sekunde) lag bisher hinter den LINQ-Pfaden, also + liefen Sum und Count trotzdem pro Frame. Jetzt vor dem + Gate, plus die LINQ-Pfade durch eine Single-Pass-Foreach + ersetzt. Die Aggregation läuft auf etwa 1 % der Frames + +Realistische Frame-Time-Recovery: 2-5 % in typischen Szenen, +Pop-Out-Heavy-Setups potenziell mehr durch die Card-Border- +Multiplikation pro Window. + +Keine Schema-Bumps, keine User-sichtbaren Funktions- +Änderungen außer dass die Frames im Chat-Log und in der +Settings-Statusleiste merklich glatter laufen.