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.
2.6 KiB
2.6 KiB
subtitle, versionsnatur
| subtitle | versionsnatur |
|---|---|
| Threading- und IPC-Sicherheits-Politur | 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.
ActiveTempTabCounthat 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 inSaveConfig. 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.
TryUnsubscribehat 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=trueunterwegs, 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.
PrivacyPersistUnknownChannelsstartet bei neuen Configs jetzt auftrue, 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.