222 lines
10 KiB
YAML
Executable File
222 lines
10 KiB
YAML
Executable File
name: Hellion Chat
|
||
author: JonKazama-Hellion
|
||
punchline: Chat replacement with privacy controls aligned to EU, US and JP rules — based on Chat 2 (EUPL-1.2)
|
||
description: |-
|
||
Hellion Chat is a privacy-focused chat replacement for FINAL FANTASY XIV
|
||
based on the Chat 2 codebase (EUPL-1.2). One feature is intentionally
|
||
removed (the optional webinterface) and a stack of privacy controls is
|
||
added on top. Tabs, channel filters, RGB colours, emotes, screenshot
|
||
mode, IPC integration and the chat replacement window itself work the
|
||
same. The webinterface is intentionally not part of Hellion Chat because
|
||
it serves a different use case from the smaller default footprint this
|
||
plugin is built around.
|
||
|
||
On top of that, Hellion Chat adds privacy and data-handling controls
|
||
designed to align with the modern data protection rules that apply
|
||
across the EU, the United States and Japan. By default only your own
|
||
conversations are stored; messages from strangers, NPCs and system
|
||
spam stay out of the database. Retention windows are configurable per
|
||
channel, history can be wiped retroactively, and stored data can be
|
||
exported on demand.
|
||
|
||
Key privacy and data-handling features:
|
||
|
||
- Channel whitelist with a Privacy-First default
|
||
- Per-channel retention with a daily background sweep
|
||
- Retroactive cleanup with a Ctrl+Shift confirm
|
||
- Export to Markdown, JSON or CSV
|
||
- First-run wizard with three preset profiles (Privacy-First, Casual,
|
||
Full History)
|
||
- Bilingual UI (English and German) with live language switching
|
||
- Independent plugin state — own config file and database directory,
|
||
so Hellion Chat does not share state with upstream Chat 2
|
||
|
||
v1.3.0 First plugin integration cycle. Honorific custom titles
|
||
are shown in the chat header above the message log, with auto-detect
|
||
and silent fallback when Honorific is not installed.
|
||
|
||
v1.4.0 — Critical Lifecycle Fixes. Plugin reload and shutdown
|
||
are cleaner: SQLite no longer leans on GC pressure to release
|
||
its file, worker threads are explicitly background, deferred
|
||
config saves no longer get lost mid-disable, and pre-v13 config
|
||
backups carry the user's custom theme opacity into the v14 schema
|
||
instead of falling back to the default.
|
||
|
||
v1.4.1 — Theme Engine Performance plus a tenth built-in.
|
||
HellionStyle.PushGlobal reads pre-computed ABGR values from a
|
||
per-theme cache instead of converting RGBA per slot per frame
|
||
(~13 % render-time recovery in typical scenes). Custom-theme
|
||
hot-reload survives transient file locks (editor mid-save
|
||
keeps the last-known-good snapshot). Synthwave Sunset joins
|
||
as the tenth built-in theme — Hot Magenta + Cyan on midnight
|
||
violet, 80s neon-grid vibes.
|
||
|
||
v1.4.2 — ChatLog Frame-Hot-Path. Three per-frame allocation
|
||
patterns gone from the chat-log render path: card-mode borders
|
||
hoist invariants out of the per-message loop, auto-tell tab
|
||
tint and icon get a per-tab cache, and the status bar gates
|
||
its tab aggregation behind the same one-second cache it uses
|
||
for the format strings.
|
||
|
||
v1.4.3 — Plugin-Load Async-Init plus Repo-Cutover. Plugin
|
||
migrated to Dalamud's IAsyncDalamudPlugin so the heavy work
|
||
(migrations, service allocations, window construction, hook
|
||
subscription) runs in LoadAsync without blocking Dalamud's
|
||
UI. Schema-gate replaces the v9 → v16 migration chain;
|
||
configs on schema v16+ load directly. Custom-repo URL moves
|
||
to gitea.hellion-forge.cloud, the GitHub repo stays as a
|
||
frozen v1.4.2 snapshot.
|
||
|
||
Based on Chat 2 by Infi and Anna, licensed under EUPL-1.2.
|
||
|
||
Modding & support: join the Hellion Forge Discord at
|
||
https://discord.gg/X9V7Kcv5gR — community for Hellion Chat and
|
||
other Hellion Online Media plugins/tools.
|
||
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: |-
|
||
**Hellion Chat 1.4.3 — Plugin-Load Async-Init + Repo-Cutover (2026-05-08)**
|
||
|
||
Plugin lifecycle migrated to Dalamud's `IAsyncDalamudPlugin`
|
||
API. The constructor now does only the bootstrap-essentials
|
||
(config load, language init, conflict detection); migrations,
|
||
service allocations, window construction and hook subscription
|
||
move to LoadAsync. Dalamud can keep its UI responsive while the
|
||
heavy work runs.
|
||
|
||
- IAsyncDalamudPlugin two-phase load with per-line CaptureFailure
|
||
in DisposeAsync (mirrors LightlessSync's pattern); idempotency
|
||
guard protects against reload races
|
||
- Schema-gate replaces the v9 → v16 migration chain. Configs
|
||
on schema v16+ load directly; older configs trigger an
|
||
"install v1.4.2 first" error so the historic migration
|
||
path stays intact
|
||
- AutoTranslate.PreloadCache moved off the load path. First
|
||
use may have a sub-second hitch instead of every-load; the
|
||
upstream chose differently, we accept first-use latency
|
||
- FontManager.BuildFonts is called sync at the start of
|
||
LoadAsync; Dalamud rebuilds the font atlas on its own
|
||
pipeline so the custom Hellion-Exo2 font appears with a
|
||
brief font-pop after load (matches ChatTwo's behaviour)
|
||
- Custom-repo URL moved to gitea.hellion-forge.cloud/
|
||
JonKazama-Hellion/HellionChat. GitHub repo stays as a
|
||
frozen v1.4.2 snapshot; new releases ship from Gitea.
|
||
Existing testers need to update the custom-repo URL once
|
||
- Plugin-load time in this release sits at ~3.7 s median
|
||
(5 reloads), comparable to v1.4.2. Async migration is
|
||
foundational for v1.4.4 Lazy-Init optimisations rather
|
||
than an immediate user-perceived win
|
||
|
||
Modding & support: join Hellion Forge — https://discord.gg/X9V7Kcv5gR
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.4.2 — ChatLog Frame-Hot-Path**
|
||
|
||
Third sub-patch of the v1.4.x Polish Sweep series. Per-frame
|
||
allocations from the chat-log render path eliminated.
|
||
|
||
- DrawMessages card-mode hoists theme/drawList/winLeft/winRight/
|
||
borderColorAbgr out of the per-message loop. About 500
|
||
redundant calls per frame at 100 visible messages, multiplied
|
||
by every pop-out window
|
||
- Auto-tell tab tint and icon use a per-tab cache. Hash
|
||
computation and string allocation only happen when the tell
|
||
target name or world drifts. AutoTellTabTint stays a pure
|
||
hash helper; cache lives in a thin TabTintCache wrapper
|
||
- Status bar gates its tab aggregation behind the same
|
||
one-second cache it already used for the format strings.
|
||
LINQ Sum and Count replaced with a single foreach pass
|
||
that runs on roughly 1% of frames
|
||
|
||
Realistic frame-time recovery: 2-5% in typical scenes, more
|
||
on pop-out-heavy setups because the card-border hoist scales
|
||
per window.
|
||
|
||
Modding & support: join Hellion Forge — https://discord.gg/X9V7Kcv5gR
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.4.1 — Theme Engine Performance**
|
||
|
||
Second sub-patch of the v1.4.x Polish Sweep series. Heap
|
||
pressure from the theme engine's per-frame render path
|
||
removed, plus a tenth built-in theme and hardening for
|
||
the custom-theme hot-reload.
|
||
|
||
- Theme records carry a pre-computed ABGR-packed cache
|
||
for every color slot; cache is filled when the theme
|
||
is registered and refreshed defensively on every
|
||
Switch()
|
||
- HellionStyle.PushGlobal reads ABGR values from the
|
||
cache instead of calling ColourUtil.RgbaToAbgr per
|
||
slot per frame; ~13 % render-time recovery measured
|
||
in typical scenes (plan estimate was 2–6 %, real
|
||
~10–15 %)
|
||
- ThemeRegistry custom-theme reload distinguishes a
|
||
recoverable file lock (editor mid-save) from a
|
||
permanent IO failure; locked themes keep their
|
||
last-known-good snapshot and retry on the next
|
||
lookup instead of dropping out of the picker
|
||
- New built-in: Synthwave Sunset — Hot Magenta + Cyan
|
||
on midnight violet, 80s neon-grid vibes; tenth theme
|
||
in the picker
|
||
- Author credits refreshed: brand themes are credited
|
||
as "Hellion Forge"; Mint Grove and Forge Merchantman
|
||
now credited to Carla Beleandis as a community thanks
|
||
|
||
No schema bump, no user-visible behaviour change other
|
||
than smoother frames on GC-sensitive setups and one
|
||
additional colour option.
|
||
|
||
Modding & support: join Hellion Forge — https://discord.gg/X9V7Kcv5gR
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.4.0 — Critical Lifecycle Fixes**
|
||
|
||
First sub-patch of the v1.4.x Polish Sweep series. Seven
|
||
known lifecycle and race bugs eliminated before any
|
||
performance refactor sits on top.
|
||
|
||
- MessageStore disposal no longer triggers GC.Collect
|
||
globally; Pooling=false on the SQLite connection means
|
||
there's nothing left to clean up by hand
|
||
- PendingMessage and RetentionSweep worker threads are
|
||
explicitly marked IsBackground=true so the plugin domain
|
||
can unload during XIVLauncher reload without waiting
|
||
for them
|
||
- EmoteCache image and gif loaders moved from async-void
|
||
to async Task with a shared task tracker, draining
|
||
on Dispose so an in-flight load can no longer write
|
||
to a disposed EmoteImages entry
|
||
- DisposeAsync 10s timeout now warns loudly instead of
|
||
silently leaving the worker behind
|
||
- Plugin.Dispose flushes any pending DeferredSaveFrames
|
||
before tearing services down, so settings changes
|
||
made in the last few frames before disable are no
|
||
longer lost
|
||
- The v13→v14 config migration now reads the pre-v13
|
||
backup and carries HellionThemeWindowOpacity into the
|
||
new WindowOpacity field instead of falling back to
|
||
the default 0.85
|
||
|
||
Modding & support: join Hellion Forge — https://discord.gg/X9V7Kcv5gR
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
---
|
||
|
||
Earlier history: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases
|