57b6ead003
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.
236 lines
11 KiB
YAML
Executable File
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
|