chore: bump version to 1.4.8, sync manifest
- csproj <Version>, Plugin.cs schema-gate self-reference, repo.json (AssemblyVersion, TestingAssemblyVersion, 3x DownloadLink URLs). - README.md shield badge, version header, Project Status body. - docs/CHANGELOG.md gains a v1.4.8 section above v1.4.7. - docs/ROADMAP.md flips Next Cycle to v1.4.9 (Plugin-Load Render Polish), v1.4.8 moves into the released history above v1.4.7. - Config schema stays at v17, Migration v17 stays additive. repo.json Changelog field and HellionChat.yaml changelog block plus the new forge-posts/v1.4.8.md follow in a separate commit (slim-drop of v1.4.4 happens there).
This commit is contained in:
@@ -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.4.7</Version>
|
||||
<Version>1.4.8</Version>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<!-- Use lock file to pin exact versions -->
|
||||
|
||||
@@ -189,8 +189,8 @@ public sealed class Plugin : IAsyncDalamudPlugin
|
||||
if (Config.Version < 16)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"HellionChat v1.4.7 requires config schema v16, got v{Config.Version}. "
|
||||
+ "Please install v1.4.2 first to migrate the configuration, then upgrade to v1.4.7."
|
||||
$"HellionChat v1.4.8 requires config schema v16, got v{Config.Version}. "
|
||||
+ "Please install v1.4.2 first to migrate the configuration, then upgrade to v1.4.8."
|
||||
);
|
||||
}
|
||||
Config.Version = 17;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
[](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/actions/workflows/build.yml)
|
||||
[](LICENSE)
|
||||
[](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/latest)
|
||||
[](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/latest)
|
||||
[](https://github.com/goatcorp/Dalamud)
|
||||
[](https://dotnet.microsoft.com/)
|
||||
[](https://www.finalfantasyxiv.com/)
|
||||
@@ -11,7 +11,7 @@
|
||||
<img src="docs/images/hellion-forge.png" alt="Hellion Forge" width="180" />
|
||||
</p>
|
||||
|
||||
**Version 1.4.7** — Privacy-first chat plugin for FINAL FANTASY XIV / Dalamud, built on
|
||||
**Version 1.4.8** — Privacy-first chat plugin for FINAL FANTASY XIV / Dalamud, built on
|
||||
[Chat 2](https://github.com/Infiziert90/ChatTwo) (EUPL-1.2).
|
||||
|
||||
Hellion Chat is a privacy-first plugin built on the Chat 2 foundation. The majority of the engine comes from Chat 2
|
||||
@@ -286,23 +286,19 @@ An optional submission to the Dalamud main plugin repo (in addition to the custo
|
||||
|
||||
## Project Status
|
||||
|
||||
**Version 1.4.7** — Backlog cleanup and the first user-visible feature bundle since v1.4.5. TempTell tabs can now be
|
||||
pinned via right-click; pinned tabs survive relog, keep their conversation history (loaded on demand from the message
|
||||
store), and stay bound to the same `/tell` partner. A hard cap of 5 pinned tabs lives in a pool separate from the 15-tab
|
||||
auto-tell pool, so the total ceiling is 20 tabs. The sidebar groups pinned tabs into their own section with its own
|
||||
divider header. Honorific glow outlines now render when the title carries a Glow colour — opt-in via **Settings →
|
||||
Integrations → Render glow outlines (Honorific)**, default off, so v1.4.6 visuals stay untouched for users who don't
|
||||
care and the per-frame DrawList overhead is skipped on low-end hardware. Honorific gradient (Color3 / GradientColourSet
|
||||
/ Wave / Pulse) is parsed and stashed for a later cycle, but currently renders as the primary colour. Sidebar width is
|
||||
configurable in **Theme & Layout** between 44 and 160 px; default stays icon-only so existing users see no layout
|
||||
change. `Configuration.UpdateFrom` now preserves the runtime `CurrentChannel` across the persistent-tab merge, and
|
||||
`TabSwitched` deep-clones the seeded channel — together they fix a Settings-Save regression where the chat input could
|
||||
pop back to `/tell <pinned-partner>` after touching settings while on a Party or Linkshell tab. Internal items:
|
||||
`IPluginLogProxy` indirection over Dalamud's `IPluginLog` routes all ~91 `Plugin.Log` call sites through a testable
|
||||
proxy, closing the test-isolation gap F12.1 left in v1.4.6 (`MessageStore.Migrate0` now runs in xUnit without loading
|
||||
`Dalamud.dll`). `Util/ImGuiUtil.cs`'s `DrawArrows` IconButton id gets explicit parentheses on the increment. Migration
|
||||
v16 → v17 is additive (new `Tab.IsPinned` flag, default false). Eighth sub-patch of the v1.4.x polish sweep series (as
|
||||
of 2026-05-13).
|
||||
**Version 1.4.8** — Hook-Layer and Polish Quick-Wins. The Database Viewer now has an optional FTS5 full-text search
|
||||
across the entire chat history. Toggle "Full-text search" next to the search bar; the index is built asynchronously on
|
||||
first run after the update with a progress toast, and the toggle stays disabled until the build completes. Multi-word
|
||||
terms match as exact phrases by default; power users can opt into raw FTS5 `MATCH` syntax by wrapping their own
|
||||
double-quotes. Custom theme files auto-reload when edited while the theme is active — save the JSON in your editor and
|
||||
the live render picks up the change within a second, no picker click. Retention sweep no longer blocks the framework
|
||||
thread (`Framework.Run(...).Wait()` replaced by `Framework.RunOnTick(...)`), removing the ~194 ms hitch per sweep. Status
|
||||
bar height is now derived from `GetTextLineHeightWithSpacing()` plus a DPI-aware spacer so the bar renders correctly at
|
||||
Windows display scaling above 100 %. Receive-suppressed-tells routing is postponed to v1.5.x; the investigation in this
|
||||
cycle showed that the FFXIV `ContentIdResolverHook` does not fire when other plugins suppress tells via
|
||||
`CheckMessageHandled`, which means tell-partner identification breaks for AutoTellTab routing — the fix lives next to
|
||||
the planned ad-block hook layer where the same `RaptureLogModule` patch surface comes up anyway. Migration v17 stays
|
||||
(no schema bump). Ninth sub-patch of the v1.4.x polish sweep series (as of 2026-05-14).
|
||||
|
||||
Hellion Chat is a standalone plugin, no longer a fork in the repository sense. Fully completed:
|
||||
|
||||
|
||||
@@ -10,6 +10,35 @@ to the release pages for details.
|
||||
|
||||
---
|
||||
|
||||
## Hellion Chat 1.4.8 — Hook-Layer and Polish Quick-Wins (2026-05-14)
|
||||
|
||||
Ninth sub-patch of the v1.4.x polish-sweep series. Hook-layer cluster (FTS5 full-text search, ad-block foundation
|
||||
investigation) plus three polish quick-wins.
|
||||
|
||||
- DbViewer full-text search: optional FTS5 index across the full chat history. Built asynchronously on first run after
|
||||
the update with a progress toast (UI stays responsive, the toggle is disabled until the build completes). The local
|
||||
page-filter remains the default mode. Multi-word queries match as exact phrases; power users can opt into raw FTS5
|
||||
`MATCH` syntax by wrapping their own double-quotes around the term.
|
||||
- Custom theme files now auto-reload when edited while the theme is active. Save the JSON in your editor and the live
|
||||
render picks up the change within a second — no need to re-click the theme in the picker. Disk-stat is throttled to
|
||||
1 Hz so per-frame cost stays free.
|
||||
- Retention sweep no longer blocks the framework thread. `Framework.Run(...).Wait()` is replaced by
|
||||
`Framework.RunOnTick(...)`, which removes the ~194 ms hitch the sweep used to add per run.
|
||||
- Status bar height is derived from `GetTextLineHeightWithSpacing()` plus a DPI-aware spacer so the bar renders
|
||||
correctly at Windows display scaling above 100 %. Linux/Wayland default of 100 % is unaffected.
|
||||
- Receive-suppressed-tells routing was investigated this cycle and **postponed to v1.5.x**. When other plugins suppress
|
||||
tells via `CheckMessageHandled`, FFXIV's chat pipeline skips the `RaptureLogModule.AddMsgSourceEntry` path, which means
|
||||
HellionChat's `ContentIdResolverHook` does not fire and tell-partner identification breaks for AutoTellTab routing.
|
||||
The proper fix sits next to the planned ad-block hook layer (`RaptureLogModule.ShowMiniTalkPlayer` and friends) where
|
||||
the same patch surface comes up anyway.
|
||||
- Internal: storage form of `messages.Id` clarified (declared BLOB but Microsoft.Data.Sqlite stores Guid parameters as
|
||||
TEXT). FTS bulk insert and `LoadByGuids` join now match the TEXT storage form on both sides. Migration v17 stays
|
||||
(no schema bump).
|
||||
|
||||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||||
|
||||
---
|
||||
|
||||
## Hellion Chat 1.4.7 — Backlog Cleanup and Mid-Features (2026-05-13)
|
||||
|
||||
Eighth sub-patch of the v1.4.x polish-sweep series. First user-visible feature bundle since v1.4.5 — pinned tell tabs
|
||||
|
||||
+21
-4
@@ -10,11 +10,28 @@ the plugin's privacy-first scope during brainstorming.
|
||||
|
||||
---
|
||||
|
||||
## Next Cycle (v1.4.8)
|
||||
## Next Cycle (v1.4.9)
|
||||
|
||||
**Hook-Layer Cycle.** Receive-suppressed-tells toggle (cross-reference XIVIM #73 bubble-layer sub-task), Database Viewer
|
||||
full-text search via SQLite FTS5, plus preparation for the later Ad-Block cycle. Hook-layer investigation is shared
|
||||
across these items so they cluster naturally in one sub-patch.
|
||||
**Plugin-Load Render Polish.** Erststart-Frame-Hitch (~110 ms UiBuilder) and the related Font-Atlas + Auto-Translate
|
||||
warmup costs surface every load and are reproducible in `/xlstats`. The cycle also unblocks the lazy-window refactor
|
||||
sketched in `feedback_lazy_window_dalamud` and the slash-command centralisation that comes with it.
|
||||
|
||||
---
|
||||
|
||||
## v1.4.8 — Hook-Layer and Polish Quick-Wins (released 2026-05-14)
|
||||
|
||||
Ninth sub-patch of the v1.4.x Polish Sweep series. Database Viewer gains an optional FTS5 full-text search across the
|
||||
full chat history, built asynchronously on first run after the update with a progress toast; the local page-filter
|
||||
remains the default mode. Custom theme files auto-reload when edited while the theme is active (1 Hz disk-stat throttle,
|
||||
so per-frame cost is free). Retention sweep no longer blocks the framework thread — `Framework.Run(...).Wait()` is
|
||||
replaced by `Framework.RunOnTick(...)`, removing the ~194 ms hitch per sweep. Status-bar height is now derived from
|
||||
`GetTextLineHeightWithSpacing()` plus a DPI-aware spacer so the bar renders correctly at Windows display scaling above
|
||||
100 %. Receive-suppressed-tells routing was investigated and **postponed to v1.5.x**: when other plugins suppress tells
|
||||
via `CheckMessageHandled`, FFXIV's chat-pipeline skips the `RaptureLogModule.AddMsgSourceEntry` path, which means the
|
||||
`ContentIdResolverHook` does not fire and tell-partner identification breaks. The fix belongs next to the planned ad-block
|
||||
hook layer where the same patch surface comes up anyway. Migration v17 stays (no schema bump). H3 leaves a foundation
|
||||
note in the Vault (`Projekte/FFXIV/Hellion Chat/v1.5.x Ad-Block Foundation.md`) covering the NoSoliciting filter +
|
||||
bubble-layer hook pattern as a ready-made template for the v1.5.x cycle.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user