chore: bump version to 1.4.5

Manifest sync across csproj, yaml, repo.json, README, CHANGELOG,
ROADMAP and the Plugin.cs schema-gate error message. ROADMAP also gets
the v1.4.4 release block that was missed in that cycle's closure.

Forge-post v1.4.5.md follows the established frontmatter + DE-body
convention; the EN block is sourced from the yaml changelog by the
forge-announce workflow.
This commit is contained in:
2026-05-12 14:33:13 +02:00
parent b8d289a847
commit cafb6faa39
8 changed files with 131 additions and 25 deletions
+29
View File
@@ -10,6 +10,35 @@ to the release pages for details.
---
## Hellion Chat 1.4.5 — UX and Robustness (2026-05-12)
Sixth sub-patch of the v1.4.x polish-sweep series. User-visible robustness fixes plus two doc/test polish items from the
audit backlog. No schema bump, no migration.
- `ChatLogWindow.Draw` now surfaces a one-shot warning notification when the draw path throws. The stack trace still
goes to `/xllog` via `Plugin.Log.Error`; the notification is suppressed for the rest of the plugin session so a
recurring failure can't spam the notification stack frame-by-frame. Pattern-match to the existing
`Plugin.cs:505-516` migration-blocker notification
- `FirstRunWizard` splits accept from close. `OnClose` no longer silently sets `FirstRunCompleted`, so closing the X
leaves the wizard pending and it reopens on the next plugin load. A new footer "Later — keep defaults" button is the
explicit path to dismiss without picking a profile. Bilingual strings (EN + DE) plus a tooltip
- `InputHistoryService.Reset` is wired into `Plugin.DisposeAsync` alongside the existing pure-memory cleanups. Static
state used to survive a plugin reload — the next load now starts with an empty history
- `FontManager.GetHellionFontBytes` becomes `TryGetHellionFontBytes` with a nullable return. On miss (broken csproj,
hand-rolled dev build) the caller falls back to the system-font path that `UseHellionFont=false` already uses, plus a
`Plugin.Log.Warning`. The whole UiBuilder no longer throws if the embedded font resource is absent
- `Plugin.cs:167-168` gets a 4-line reasoning comment around the session-only `RemoveAll(IsTempTab)`: tells are usually
privacy-filtered, resurrecting an empty crashed-session tab would trigger DB reconstruction on the next load.
`TempTabCounter.InitFromList` mirrors the post-strip semantic in the Build-Suite with a pinning test
- `StatusBar.cs` drops the version slot when the chat window's content width minus the version text is below 200 px.
The right-aligned version used to clip into the four left-side slots in narrow windows
Modding & support: join Hellion Forge — <https://discord.gg/X9V7Kcv5gR>
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
## Hellion Chat 1.4.4 — Threading and IPC Safety Polish (2026-05-12)
Fifth sub-patch of the v1.4.x polish-sweep series. Threading assumptions are documented per-method, a hot-path lock
+27 -4
View File
@@ -10,14 +10,37 @@ the plugin's privacy-first scope during brainstorming.
---
## Next Cycle (v1.4.4)
## Next Cycle (v1.4.6)
**Window-Lazy-Open + Render-Init-Cost Optimisation** — take the `IAsyncDalamudPlugin` foundation laid in v1.4.3 and turn
it into wins users can actually feel. Window construction deferred until first open, render-path init cost reduced in
the first frames. Concrete candidates and size estimates will be consolidated in the v1.4.4 brainstorm.
**Code-Hygiene + Refactor.** Build-side pre-commit hook with csharpier-check as a hard gate so format drift can't reach
a commit (~30 min). Plus the cycle absorbs whatever surfaces from v1.4.5 smoke that doesn't justify a hotfix. Concrete
scope is consolidated in the v1.4.6 brainstorm.
---
## v1.4.5 — UX and Robustness (released 2026-05-12)
Sixth sub-patch of the v1.4.x Polish Sweep series. User-visible robustness polish plus two doc/test polish items from
the audit backlog. Chat-log draw failures now surface as a one-shot notification instead of failing silently. The
first-run wizard splits accept from close: `OnClose` no longer silently sets `FirstRunCompleted`, and a new footer
"Later — keep defaults" button is the explicit path to dismiss without picking a profile. `InputHistoryService` clears
on plugin dispose so the previous session's typed commands don't bleed into the next load. `FontManager` falls back to
the system font path if the embedded Hellion font resource is missing (broken-csproj / dev-build only). The status bar
hides the version slot when the chat window is too narrow to fit all five slots without overlap. Plus
`Plugin.cs:167-168` gains an explicit session-only Auto-Tell-Tab invariant comment with a `TempTabCounter.InitFromList`
pin in the Build-Suite. No schema bump, no migration.
## v1.4.4 — Threading and IPC Safety Polish (released 2026-05-12)
Fifth sub-patch of the v1.4.x Polish Sweep series. `AutoTellTabsService.ActiveTempTabCount` switches from a
lock-protected LINQ `Count` to an `Interlocked` counter kept in sync from inside the existing mutation paths;
`Initialize()` seeds from the persisted Tabs list and `SaveConfig`'s snapshot-restore path calls a new
`ResyncTempTabCounter()` after the mid-step `RemoveAll`. `HonorificService` carries per-method threading banners and
`TryUnsubscribe`'s log level moves from Debug to Warning. `AutoTranslate.PreloadCache` is marked `IsBackground = true`
so plugin unload no longer waits for it. `Configuration.IsAllowedForStorage` logs once per unknown ChatType via a
`NonSerialized` `HashSet`, and `PrivacyPersistUnknownChannels` default flips to `true` for new installs. No schema
bump, no migration.
## v1.4.3 — Plugin-Load Async-Init + Repo-Cutover (released 2026-05-08)
Fourth and largest sub-patch of the v1.4.x Polish Sweep series. Plugin migrated to Dalamud's `IAsyncDalamudPlugin` API: