diff --git a/.github/forge-posts/v1.4.3.md b/.github/forge-posts/v1.4.3.md new file mode 100644 index 0000000..da59d6a --- /dev/null +++ b/.github/forge-posts/v1.4.3.md @@ -0,0 +1,45 @@ +--- +subtitle: Async-Lifecycle + Gitea-Cutover +versionsnatur: Architecture-Refactor +--- + +**Hellion Chat 1.4.3 — Plugin-Load Async-Init + Repo-Cutover** + +Vierter Sub-Patch der v1.4.x Polish-Sweep-Serie. Plugin- +Lifecycle auf Dalamud's `IAsyncDalamudPlugin`-API migriert +und das Custom-Repo zieht von GitHub auf Gitea um. + +- **Async-Plugin-Architektur.** Konstruktor übernimmt nur + noch die Bootstrap-Essentials (Config-Load, Language-Init, + Conflict-Detection). Migrationen, Service-Allokationen, + Window-Konstruktion und Hook-Subscription wandern in + LoadAsync, sodass Dalamud die UI während der schweren + Arbeit responsive halten kann. Per-Line-CaptureFailure in + DisposeAsync mirrort LightlessSync's Pattern, plus + Idempotency-Guard gegen Reload-Races +- **Custom-Repo-URL umgezogen auf Gitea.** Bestehende Tester + müssen einmalig in XIVLauncher die Custom-Repo-URL auf + `https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json` + umstellen, dann XIVLauncher neu starten. Das alte + GitHub-Repo bleibt als eingefrorener v1.4.2-Snapshot + stehen und wird nicht mehr aktualisiert +- **Schema-Gate statt Migrations-Kette.** Die v9 → v16 + Migrationen sind raus, ersetzt durch einen harten + Schema-Check in Phase 1. Configs auf Schema v16+ laden + direkt; ältere Configs (vor v1.2.1) bekommen jetzt eine + klare „install v1.4.2 first"-Fehlermeldung statt eines + impliziten Migrations-Pfads +- **AutoTranslate-Cache läuft im Hintergrund.** Der Cache + füllt sich jetzt fire-and-forget statt blockierend im + Plugin-Load. Trade-off: die erste Auto-Translate-Nutzung + einer Session kann einen kurzen Hitch haben, dafür kein + 300-ms-Block beim Plugin-Start +- **Plugin-Load-Zeit ehrlich.** Median 3,7 s über fünf + Reloads, vergleichbar mit v1.4.2. Der Async-Refactor ist + Foundation für künftige Lazy-Init-Optimierungen (v1.4.4) + und Code-Architektur-Hygiene, kein direkter + User-spürbarer Speed-Win in dieser Release + +Keine User-sichtbaren Funktions-Änderungen außer dem +Repo-URL-Update. Settings, Themes und Tabs bleiben +unangetastet. diff --git a/HellionChat/FontManager.cs b/HellionChat/FontManager.cs index c9e11b4..07e94d5 100644 --- a/HellionChat/FontManager.cs +++ b/HellionChat/FontManager.cs @@ -100,6 +100,19 @@ public class FontManager JpRange = BuildRange(GlyphRangesJapanese.GlyphRanges); } + /// + /// Async wrapper around for the Phase-1 LoadAsync + /// path. The font-atlas build is CPU-bound, so we offload via Task.Run and + /// honour the cancellation token at the scheduling boundary; this lets the + /// font build run in parallel with the theme init without blocking the + /// loader. Settings-driven manual rebuilds keep using the sync entry point. + /// + public async Task BuildFontsAsync(CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + await Task.Run(BuildFonts, cancellationToken).ConfigureAwait(false); + } + public void BuildFonts() { SetUpRanges(); diff --git a/HellionChat/HellionChat.csproj b/HellionChat/HellionChat.csproj index f158bb5..76c8de2 100644 --- a/HellionChat/HellionChat.csproj +++ b/HellionChat/HellionChat.csproj @@ -4,7 +4,7 @@ 0.1.0 is our bootstrap release; the underlying Chat 2 base is called out in the yaml changelog so users can see what it derives from. --> - 1.4.2 + 1.4.3 enable enable