release(v1.5.4): manifest bump and forge post

Bumps csproj, yaml, repo.json, CHANGELOG, ROADMAP and README in
lock-step to 1.5.4. Forge-post DE-body added with the Polish & Motion
versionsnatur. Slim-rule applied to the yaml and repo.json changelog
blocks (keeps v1.5.4 + v1.5.3 + v1.5.2 + v1.5.1, drops v1.5.0).

A csharpier reflow of two v1.5.4 source files (ChatLogWindow,
HellionStyle) is folded in. preflight.sh blocks A-F all green.
This commit is contained in:
2026-05-20 16:32:42 +02:00
parent a42cc2a97e
commit 57b6ead003
9 changed files with 99 additions and 68 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
<Project Sdk="Dalamud.NET.Sdk/15.0.0">
<PropertyGroup>
<!-- Independent versioning; see yaml changelog for upstream Chat 2 base -->
<Version>1.5.3</Version>
<Version>1.5.4</Version>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- Use lock file to pin exact versions -->
+38 -48
View File
@@ -35,6 +35,44 @@ tags:
- Replacement
- Privacy
changelog: |-
**v1.5.4 — Polish and Motion (2026-05-20)**
A polish cycle: smoother theme switching, faster theme and tab
access, and subtle hover motion. Three P3 items plus an
accessibility toggle.
User-visible:
- Theme switches now crossfade smoothly over ~300 ms across every
Hellion-rendered surface — sidebar, title, buttons, tabs,
scrollbar, separators. The window background snaps deliberately
so the per-window opacity override from Dalamud's pinning menu
stays untouched.
- New header quick-picker: a palette button left of the cog opens
a compact popup with two sections — every built-in and custom
theme, and every tab. The active entry carries a check glyph;
clicking another switches without closing the popup.
- Sidebar icons ease their opacity on hover, and card-mode message
borders highlight per tab while the cursor is over their rows.
Framerate-independent, so a stalled Wine frame cannot overshoot
the animation.
- New "Reduce motion" toggle in Theme & Layout disables the
crossfade, the hover animations and the unread-tab pulse for
users who prefer a static UI.
Under the hood:
- Two pure-helper lerp paths (ThemeAbgrCacheLerp, FrameLerp) with
xUnit coverage in the Build Suite, plus a ColourUtil.ApplyAlpha
alpha modulator. Two new /xlperf self-test steps pin the
crossfade and quick-picker contracts.
No schema bump, no migration. Migration v17 stays.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
**v1.5.3 — Localisation Wave + Bundled-Font Overhaul (2026-05-19)**
Multi-language pass plus a long-standing first-frame HITCH lands
@@ -194,52 +232,4 @@ changelog: |-
---
**v1.5.0 — DI Foundation and Service Refactor (2026-05-17)**
Major architecture cycle. The plugin bootstrap moves to a
generic-host DI container (Microsoft.Extensions.Hosting +
IServiceCollection) modelled on Lightless Sync. Service logging
moves from a static Plugin.LogProxy locator to typed
Microsoft.Extensions.Logging.ILogger<T> via constructor injection,
bridged over Dalamud's IPluginLog by a custom DalamudLogger trio.
What changes under the hood:
- 18 instance-class services migrate to ILogger<T> via constructor
injection across four slices: data layer (MessageStore,
MessageManager, AutoTellTabsService), IPC and integrations
(HonorificService, IpcManager, TypingIpc, ExtraChat, the three
GameFunctions classes), UI window layer (ChatLogWindow,
DbViewer, Popout, three settings tabs), and root (Commands,
ThemeRegistry, PayloadHandler).
- Plugin.LogProxy stays in place for the eight buckets ctor
injection cannot reach: static helpers (EmoteCache,
AutoTranslate, MemoryUtil, WrapperUtil), Dalamud-reflected
types (Configuration), the Message data class, and instance
classes that only log from static methods (FontManager, one
GameFunctions site).
- Plugin.cs finishes at 1012 lines — virtually identical to the
pre-cycle 1013. The new Phase-1 host build and Plugin.X bridge
wiring trade out exactly the service and window allocations
that previously lived in LoadAsync.
- Cross-plugin baseline confirms no performance penalty against
Chat 2: HellionChat first-frame HITCH 77 ms median, Chat 2
74 ms median. Lightless and XIVInstantMessenger sit around
7 ms by deferring their font-atlas build past Finished
loading — that pattern is the v1.5.1 follow-up.
User-visible:
- Slash-command insert fix: pasting a slash command into the
chat input (Friend List "/tell" action, plugin-driven inserts
from Artisan, AllaganTools etc.) now replaces the existing
input instead of concatenating. Cherry-picked from ChatTwo
upstream ee7768ac with namespace adaptation.
Migration v17 stays (no schema bump).
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
Full history: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases
+2 -4
View File
@@ -515,8 +515,7 @@ public sealed class ChatLogWindow : Window
$"{theme.Name}##quick-theme-{theme.Slug}",
isActive,
ImGuiSelectableFlags.DontClosePopups
)
&& !isActive
) && !isActive
)
Plugin.ThemeRegistry.Switch(theme.Slug);
}
@@ -547,8 +546,7 @@ public sealed class ChatLogWindow : Window
$"{tabs[i].Name}##quick-tab-{i}",
isActive,
ImGuiSelectableFlags.DontClosePopups
)
&& !isActive
) && !isActive
)
ChangeTab(i);
}
+1 -4
View File
@@ -49,10 +49,7 @@ internal static class HellionStyle
// per-window opacity override and must not fade. See
// feedback_dalamud_pinning_override.
ThemeAbgrCache a;
if (
!Plugin.Config.ReduceMotion
&& registry.TryGetActiveCrossfade(out var lerped)
)
if (!Plugin.Config.ReduceMotion && registry.TryGetActiveCrossfade(out var lerped))
{
a = lerped;
}