chore: reflow drift from v1.4.4 closure
Whitespace and line-reflow artefacts from auto-formatter passes plus a packages.lock.json indent normalisation. No content changes.
This commit is contained in:
@@ -17,19 +17,18 @@ spricht jetzt bei unbekannten ChatTypes.
|
||||
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
|
||||
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
|
||||
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
|
||||
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.
|
||||
|
||||
@@ -287,15 +287,15 @@ An optional submission to the Dalamud main plugin repo (in addition to the custo
|
||||
## Project Status
|
||||
|
||||
**Version 1.4.4** — Threading and IPC safety polish on top of the v1.4.3 async-load foundation. The
|
||||
`AutoTellTabsService` hot-path getter now reads from an `Interlocked` counter instead of taking a lock on every
|
||||
render frame, with a resync hook for the snapshot-restore path in `SaveConfig` and a pure-helper test mirror in the
|
||||
Build-Suite repo. The Honorific integration carries per-method threading banners so the framework-thread invariant is
|
||||
visible at the call site, and an unsubscribe failure now logs at Warning instead of Debug — a leaked subscription
|
||||
across plugin reloads is exactly the kind of thing that should not be silent. The AutoTranslate warmup thread is
|
||||
finally marked `IsBackground = true`, matching the pattern used in `MessageManager` and `Plugin.RetentionSweep` since
|
||||
v1.4.0. The privacy filter logs once per unknown ChatType so a future patch's added channel does not drop off the
|
||||
radar, and new installs default `PrivacyPersistUnknownChannels` to `true` as a failsafe; existing configs keep their
|
||||
explicit choice. No schema bump, no migration. Fifth sub-patch of the v1.4.x polish sweep series (as of 2026-05-12).
|
||||
`AutoTellTabsService` hot-path getter now reads from an `Interlocked` counter instead of taking a lock on every render
|
||||
frame, with a resync hook for the snapshot-restore path in `SaveConfig` and a pure-helper test mirror in the Build-Suite
|
||||
repo. The Honorific integration carries per-method threading banners so the framework-thread invariant is visible at the
|
||||
call site, and an unsubscribe failure now logs at Warning instead of Debug — a leaked subscription across plugin reloads
|
||||
is exactly the kind of thing that should not be silent. The AutoTranslate warmup thread is finally marked
|
||||
`IsBackground = true`, matching the pattern used in `MessageManager` and `Plugin.RetentionSweep` since v1.4.0. The
|
||||
privacy filter logs once per unknown ChatType so a future patch's added channel does not drop off the radar, and new
|
||||
installs default `PrivacyPersistUnknownChannels` to `true` as a failsafe; existing configs keep their explicit choice.
|
||||
No schema bump, no migration. Fifth sub-patch of the v1.4.x polish sweep series (as of 2026-05-12).
|
||||
|
||||
Hellion Chat is a standalone plugin, no longer a fork in the repository sense. Fully completed:
|
||||
|
||||
|
||||
+11
-11
@@ -20,21 +20,21 @@ unknown ChatType shows up.
|
||||
in sync with `Config.Tabs` from inside the existing mutation paths. `Initialize()` seeds the counter from the
|
||||
persisted Tabs list, and `SaveConfig`'s snapshot-restore path calls a new `ResyncTempTabCounter()` so the mid-step
|
||||
`RemoveAll` doesn't leave the counter drifting. Pure-helper test mirror lives in the Build-Suite repo
|
||||
- `HonorificService` per-method threading banners replace the block comment at the bottom of the file. Each IPC
|
||||
callback (`TryInitialPull`, `OnTitleChanged`, `OnReady`, `OnDisposing`, `TryUnsubscribe`) and the `CurrentTitle`
|
||||
field carry a one-line `// Thread:` annotation so the framework-thread invariant is visible at the call site
|
||||
- `HonorificService` per-method threading banners replace the block comment at the bottom of the file. Each IPC callback
|
||||
(`TryInitialPull`, `OnTitleChanged`, `OnReady`, `OnDisposing`, `TryUnsubscribe`) and the `CurrentTitle` field carry a
|
||||
one-line `// Thread:` annotation so the framework-thread invariant is visible at the call site
|
||||
- `TryUnsubscribe` log-level upgraded from `Debug` to `Warning`. A silent unsubscribe failure leaks a live subscription
|
||||
across plugin reloads, which is exactly the kind of issue that should not be at Debug
|
||||
- `AutoTranslate.PreloadCache` thread now has `IsBackground = true` and a thread name. Without `IsBackground` the
|
||||
warmup blocks plugin unload (typically 100-300 ms). Pattern-match to `MessageManager` (F6.1) and `Plugin.RetentionSweep`
|
||||
- `AutoTranslate.PreloadCache` thread now has `IsBackground = true` and a thread name. Without `IsBackground` the warmup
|
||||
blocks plugin unload (typically 100-300 ms). Pattern-match to `MessageManager` (F6.1) and `Plugin.RetentionSweep`
|
||||
(F9.3), both since v1.4.0
|
||||
- `Configuration.IsAllowedForStorage` adds a one-line `Plugin.Log.Warning` for the first occurrence of any ChatType
|
||||
that isn't in `PrivacyPersistChannels`. Dedup via a `NonSerialized` `HashSet<ChatType>`, so the warning fires once
|
||||
per runtime — not once per frame, not once per install. Failsafe routing through `PrivacyPersistUnknownChannels`
|
||||
is unchanged
|
||||
- `Configuration.IsAllowedForStorage` adds a one-line `Plugin.Log.Warning` for the first occurrence of any ChatType that
|
||||
isn't in `PrivacyPersistChannels`. Dedup via a `NonSerialized` `HashSet<ChatType>`, so the warning fires once per
|
||||
runtime — not once per frame, not once per install. Failsafe routing through `PrivacyPersistUnknownChannels` is
|
||||
unchanged
|
||||
- `PrivacyPersistUnknownChannels` field default flipped from `false` to `true` for new installs via a constant in
|
||||
`PrivacyDefaults`. Existing configs keep their explicit choice — the deserializer overrides the initializer. No
|
||||
schema bump, no migration, no first-run banner
|
||||
`PrivacyDefaults`. Existing configs keep their explicit choice — the deserializer overrides the initializer. No schema
|
||||
bump, no migration, no first-run banner
|
||||
|
||||
Modding & support: join Hellion Forge — <https://discord.gg/X9V7Kcv5gR>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user