0fc88e480a
Threading and IPC safety release. Items: F2.1 (Interlocked counter), F4.1/F4.2/F4.3 (HonorificService threading banners + warning log), F9.2 (AutoTranslate IsBackground), F3.1 (PrivacyPersistUnknownChannels default), F3.2 (unknown-ChatType warning). verify-changelog-sync: yaml/repo.json/forge-post in sync, embed-total ~2699/5500, 3/4 yaml subblocks. verify-version-consistency and verify-manifest-shape both green.
36 lines
2.6 KiB
Markdown
36 lines
2.6 KiB
Markdown
---
|
|
subtitle: Threading- und IPC-Sicherheits-Politur
|
|
versionsnatur: Wartung und Robustheit
|
|
---
|
|
|
|
**Hellion Chat 1.4.4 — Threading- und IPC-Sicherheits-Politur**
|
|
|
|
Fünfter Sub-Patch der v1.4.x Polish-Sweep-Serie. Threading-Annahmen werden explizit pro Methode dokumentiert, ein
|
|
Hot-Path-Lock im Auto-Tell-Tab-Counter fällt weg, IPC-Cleanup wird sichtbar wenn er fehlschlägt und der Privacy-Filter
|
|
spricht jetzt bei unbekannten ChatTypes.
|
|
|
|
- **AutoTellTabsService Hot-Path-Lock entfernt.** `ActiveTempTabCount` hat bisher pro Render-Frame ein LINQ-Count unter
|
|
einem Lock gemacht. Jetzt läuft das über einen Interlocked-Counter der parallel zur Tabs-Liste mitgeführt wird,
|
|
inklusive Resync-Hook für den Snapshot-Restore-Pfad in `SaveConfig`. Plus Pure-Helper-Test-Mirror in der Build-Suite
|
|
damit die Atomicity-Semantik nicht versehentlich wegrefactored wird
|
|
- **HonorificService selbst-dokumentierende Threading-Banner.** Statt eines Block-Comments am Klassen-Ende hat jede
|
|
IPC-Callback-Methode jetzt einen 1-Zeilen-Banner darüber, der den Thread-Kontext direkt am Call-Site benennt
|
|
(framework only, framework scheduled, any). Mehr Hilfe für künftige Reviews als ein abstraktes Threading-Kapitel
|
|
- **Unsubscribe-Failure ist jetzt sichtbar.** `TryUnsubscribe` hat ein Honorific-Unsubscribe-Failure bisher als Debug
|
|
geloggt, was bei Standard-Loglevel verschluckt wurde. Eine geleakte Subscription kann den Service über
|
|
Plugin-Reloads hinweg leben lassen, also läuft der Log jetzt auf Warning
|
|
- **AutoTranslate-Warmup blockiert den Plugin-Unload nicht mehr.** Der Cache-Warmup-Thread war ohne `IsBackground=true`
|
|
unterwegs, was den Unload um 100-300 ms verzögern konnte. Pattern-Match zu MessageManager und RetentionSweep
|
|
(beide seit v1.4.0)
|
|
- **Privacy-Filter loggt unbekannte ChatTypes.** Wenn FFXIV durch einen Patch einen neuen ChatType einführt der weder
|
|
in der Whitelist noch in den Defaults steht, wird er bisher silent durch den Failsafe geleitet. Jetzt loggt der
|
|
Filter einmalig pro Runtime eine Warning mit dem Type und dem Failsafe-Wert. Dedup über ein NonSerialized-HashSet,
|
|
also kein Log-Spam
|
|
- **Default-Flip für neue Installationen.** `PrivacyPersistUnknownChannels` startet bei neuen Configs jetzt auf `true`,
|
|
damit ein Patch-bedingt neuer ChatType nicht stillschweigend gedroppt wird bevor der User entscheiden kann.
|
|
Bestehende Configs behalten ihre Wahl, weil der Deserializer den Initializer überschreibt. Keine Migration, kein
|
|
Schema-Bump
|
|
|
|
Keine User-sichtbaren Funktions-Änderungen außer dem Default-Flip für neue Installationen. Settings, Themes, Tabs und
|
|
das Privacy-Verhalten für Bestand bleiben unangetastet.
|