Files
HellionChat/HellionChat/HellionChat.yaml
T
JonKazama-Hellion 57b6ead003 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.
2026-05-20 16:32:42 +02:00

236 lines
11 KiB
YAML
Executable File

name: Hellion Chat
author: Jon Kazama (Hellion Forge)
punchline: A Hellion Forge plugin — privacy-focused chat replacement for FFXIV, built for EU, US and JP data rules.
description: |-
Chat replacement for FINAL FANTASY XIV with privacy controls built around
EU, US and JP data-protection rules.
By default only your own conversations are stored. Public chat, NPC
dialogue and system messages stay out of the database unless you opt in.
Retention windows are configurable per channel, history can be wiped
retroactively, and everything can be exported on demand.
Features:
- Channel whitelist with a Privacy-First default
- Per-channel retention with a daily background sweep
- Retroactive cleanup (Ctrl+Shift confirm)
- Export to Markdown, JSON or CSV
- First-run wizard with four preset profiles
- Multi-language UI (24 locales) with live language switching
- Own config and database — no shared state with other plugins
Based on Chat 2 by Infi and Anna (EUPL-1.2).
Support: https://discord.gg/X9V7Kcv5gR
repo_url: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat
accepts_feedback: true
icon_url: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/icon.png
image_urls:
- https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/chatWindow.png
- https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/settingsOverview.png
- https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/themesPicker.png
tags:
- Social
- UI
- Chat
- 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
as a side effect of a font-stack rewrite.
User-visible:
- 24 selectable UI languages (was 2). Catalan, Czech, Danish,
Dutch, English, Finnish, French, German, Greek, Hungarian,
Italian, Japanese, Korean, Norsk bokmål, Polish, Portuguese
(BR + PT), Romanian, Russian, Spanish, Swedish, Turkish,
Ukrainian, Simplified + Traditional Chinese. Sorted by endonym,
"None" pinned first. Non-native locales are AI-assisted and
flagged for native-speaker review via the Forge Discord.
- Bundled Inter Light replaces Exo 2 (SIL OFL 1.1, 343 KB). The
Inter font ships Latin Extended-A/B, Greek polytonic and
Cyrillic Supplement coverage; NotoSansCjkRegular joins as a
third merge layer for Hangul and Simplified-Han glyphs the
FFXIV Japanese game font does not ship.
- First-frame HITCH dropped from ~74 ms (v1.5.2 baseline that
held since v1.4.x) to a median of ~20 ms (5-reload sample
17.9-23.6 ms, Linux/Wine). The bundled-font path silently
fell back to the FFXIV Axis font for the entire v1.5.x series
because of an early-return in the draw loop. The fix that
routes RegularFont through draw also lands the defer-pattern
win the v1.5.1 cycle was reaching for.
- ExtraGlyphRanges auto-activates on language change. Korean,
ChineseFull and the two new flags (LatinExtended, Greek) toggle
on without a manual visit to Fonts and Colours.
- New WarningText under the language dropdown notes FFXIV's
chat input only fully supports EN/DE/FR/JA character sets.
Other languages render in HellionChat but may garble when
typed into in-game chat.
Under the hood:
- Three-layer font stack: Inter Light primary, FFXIV
JapaneseFont merge 1 for kana/kanji style, NotoSansCjkRegular
merge 2 for everything else CJK.
- LanguageOverride enum gains ten locales plus three previously
commented out (Italian, Korean, Norwegian as `nb`). New
values append to the enum so existing config integers stay
stable across update.
- Crowdin gap closed: four post-sync ChatTwo keys backfilled
into 13 legacy locales with per-key AI markers.
- Plugin.LoadAsync runs a one-shot migration that ORs in the
matching ExtraGlyphRanges flag for users already on a
non-default language. Settings.Apply auto-activates on
change going forward.
- Em-dash sweep across the EN source and 18 translations to the
house style. Russian and Ukrainian keep the typographic norm.
Migration v17 stays. UseHellionFont users transition from Exo 2
to Inter Light transparently on first reload.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
**v1.5.2 — First-Run Wizard Rework (2026-05-18)**
UX patch. The first-run wizard becomes a four-step flow with a
new Roleplay privacy profile and a power-settings step that
surfaces previously-hidden defaults. Existing v1.5.1 users see
the new wizard once on first v1.5.2 boot.
What changes user-visible:
- Wizard navigation: Welcome → Privacy profile → Power settings
→ Done. Forge-Bronze pagination dots, dedicated stage for the
power settings so they are no longer buried in Settings.
- Fourth privacy profile "Roleplay": Privacy-First plus Say and
both emote types, with a 30-day window for Say and a 90-day
window for emotes. Shout, Yell and Novice Network stay out.
- Privacy picker becomes a 2x2 grid. Casual stays the
recommended option with a ★ marker.
- Power-settings step covers Load Previous Session, Filter
Include Previous Sessions, Auto-Tell-Tabs History Preload,
Compact Density, Prettier Timestamps and a built-in theme
picker. All six map to existing Configuration fields — no new
settings introduced.
- Staged commit: the wizard only writes to Config on the Finish
step. Decide-later or X-close at any point leaves the existing
config untouched.
- Inline test hint on the done step: "type /tell <Player Name>
into chat" surfaces the auto-tell-tab spawn mechanism.
- Window starts at 720x480 (was 900x560) and can shrink to
600x400; Step 1 keeps the fox banner in a folded TreeNode so
the onboarding copy stays primary.
- Existing users get the new wizard surfaced once on first boot
after the update via the new WizardLastShownVersion config
field. Future cycles bump the constant only when the wizard
itself changes shape.
Under the hood:
- WizardStateSmokeStep added to /xlperf alongside the FontManager
and ThemeSwitch self-tests.
- Twelve new pure-helper xUnit Facts in the Build Suite cover
all four privacy profile sets and their retention overrides.
Migration v17 stays (no schema bump). The Configuration grows
one optional string field (WizardLastShownVersion) which
defaults to empty for legacy users.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
**v1.5.1 — FontAtlas Refactor and Hellion Forge Signature (2026-05-17)**
Hybrid FontManager refactor plus an embedded provenance mark.
What changes under the hood:
- FontManager handle creation moves into the ctor inside a single
atlas.SuppressAutoRebuild() block. The font atlas now builds once
per plugin load instead of four to five times — less CPU and GPU
pressure in the first seconds after a reload, less atlas texture
memory churn.
- Hybrid property model: Axis, AxisItalic and FontAwesome become
init-only handles. RegularFont and ItalicFont stay mutable because
the eight font settings still need to replace them at runtime —
that path is funnelled through RebuildDelegateFonts() now and
runs without a plugin reload.
- FontAwesome reuses Dalamud's UiBuilder.IconFontFixedWidthHandle
instead of building its own atlas slot. One delegate-build step
less in the ctor.
- BuildFontsAsync and BuildFonts are removed; the live mutation
path is RebuildDelegateFonts() now.
- Two FontManager self-test steps registered with /xlperf: ctor
smoke (every handle non-null after Phase-1 resolve, no atlas
load-exception) and push smoke (Push() returns without throwing).
Honorific full-gradient port (originally the v1.5.1 main item) was
dropped: Honorific 3.2 exposes no IPC for the rendered gradient
frame, and an in-plugin port of the colour palette was declined.
The integration stays at the v1.4.7 glow-only shape.
User-visible:
- Hellion Forge signature: a small fox-head ASCII silhouette is
emitted to /xllog on every plugin load, and a full fox banner
with "Hellion Forge" set inside the body is available as a
folded TreeNode in the First-Run Wizard and Settings ->
Information tab. Drawn by Julia Moon, embedded in the plugin DLL.
- No settings changes, no migration. v17 stays.
Note on performance: the cross-plugin baseline target from v1.5.0
(matching Lightless and XIVInstantMessenger at ~7 ms HITCH) did
not land this cycle. HITCH stays around 80 ms because the cost is
in the UiBuilder first-frame render path, not in the atlas build
(which this cycle did reduce from 4-5 builds per load to 1). A
first-frame render investigation is reserved for a later cycle.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
Full history: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases