436 lines
19 KiB
YAML
Executable File
436 lines
19 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.1.0 — Theme engine with five built-in themes (Hellion Arctic,
|
||
Chat 2 Klassik, Event Horizon, Moonlit Bloom, Mint Grove) plus
|
||
JSON-based custom-theme authoring. Settings rebuilt around a card
|
||
grid with section detail views. See docs/THEME-AUTHORING.md.
|
||
|
||
v1.2.2 — Theme catalogue grown to nine built-in themes:
|
||
Hellion Arctic, Hellion Spectrum (CVD-safe Deuteran/Protan),
|
||
Chat 2 Klassik, Event Horizon, Moonlit Bloom, Mint Grove,
|
||
Night Blue, Indigo Violet, Forge Merchantman.
|
||
|
||
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://github.com/JonKazama-Hellion/HellionChat
|
||
accepts_feedback: true
|
||
icon_url: https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/HellionChat/images/icon.png
|
||
image_urls:
|
||
- https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/HellionChat/images/chatWindow.png
|
||
- https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/HellionChat/images/settingsOverview.png
|
||
- https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/HellionChat/images/themesPicker.png
|
||
tags:
|
||
- Social
|
||
- UI
|
||
- Chat
|
||
- Replacement
|
||
- Privacy
|
||
changelog: |-
|
||
**Hellion Chat 1.2.2 — Theme Expansion**
|
||
|
||
Four new built-in themes round out the picker. No engine changes,
|
||
no settings touched — just more colour options.
|
||
|
||
- **Night Blue** — Royal Blue on deep marine. Cool tech-dashboard
|
||
mood, distinct from the brand themes.
|
||
- **Indigo Violet** — Royal Violet on deep indigo with a turquoise-
|
||
mint counter for an aurora glitter feel. Sister to Event Horizon
|
||
but darker and denser; the turquoise accent keeps the two
|
||
distinguishable.
|
||
- **Forge Merchantman** — Patina bronze on workshop slate, warm
|
||
amber counter. Hellion Forge given a theme of its own — sister
|
||
to Hellion Arctic but greener and warmer instead of cold cyan.
|
||
- **Hellion Spectrum** — Deuteran/Protan-safe channel colours
|
||
using Wong/Okabe-Ito palette tones. Channel identity (Tell pink,
|
||
Yell yellow, Shout orange, Party blue, FC green) is preserved;
|
||
tones are chosen so each channel stays distinguishable under
|
||
red-green colour vision deficiency. Covers the ~99% of CVD cases
|
||
that are red-green.
|
||
|
||
No schema bump, no migration. Default theme is unchanged (Hellion
|
||
Arctic). Existing custom themes keep working.
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.2.1 — Settings Cleanup**
|
||
|
||
Re-sorted the settings menu so related options live together. Card names
|
||
now describe their contents in plain words — "Theme & Layout", "Fonts &
|
||
Colours", "Data Management" — and each card has a short subtitle so you
|
||
don't have to guess where a setting lives. No new features, just
|
||
housekeeping.
|
||
|
||
Card changes:
|
||
|
||
- Theme & Layout (new) collects the theme picker, window frame style
|
||
(title bar, sidebar, hide button, pop-out title bar) and the timestamp
|
||
style options.
|
||
- Fonts & Colours (new) is the new home for font choice, font size and
|
||
per-channel chat colours.
|
||
- Data Management (new) is everything you do with stored messages:
|
||
retention windows, cleanup, export, the database viewer and the
|
||
advanced shift-click tools. All previously scattered between Privacy
|
||
and Database.
|
||
- Privacy is now focused on one job: the privacy filter.
|
||
- Chat absorbs the Auto-Tell-Tabs history preload slider that used to
|
||
live under Privacy.
|
||
- General groups the keybind mode under Input where it belongs.
|
||
|
||
Cleanup:
|
||
|
||
- Removed legacy "Style override" option and the unused style-name field
|
||
— both made obsolete by the Themes system in 1.1.0.
|
||
- Removed the legacy WindowAlpha slider; if you had it set, the value is
|
||
automatically migrated to Theme & Layout → Window Style → Window
|
||
Transparency.
|
||
- Removed the unused ShowThemeQuickPicker schema field.
|
||
|
||
Migration v15 → v16:
|
||
|
||
- A backup of your previous config is written to
|
||
pluginConfigs/HellionChat.json.pre-v16-backup before the schema change,
|
||
in case you want to roll back manually.
|
||
- All other settings are preserved unchanged.
|
||
- One-time toast on first start if you previously had Style override
|
||
enabled — it explains the change. Users who never touched that setting
|
||
see no toast.
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.2.0 — Layout Refresh**
|
||
|
||
Second UI cycle: tab layouts modernised in both modes, a new
|
||
bottom status bar, card-rows as default message render, and
|
||
Auto-Tell tabs that you can finally tell apart at a glance.
|
||
|
||
Sidebar (icon-only, fixed 44 px):
|
||
|
||
- Tab name on hover-tooltip, vertical accent pill on the
|
||
active tab, child background no longer paints the top
|
||
padding area.
|
||
- Per-tab custom icons via Settings → Tabs.
|
||
- Auto-Tell tabs: each partner gets a hashed icon (envelope/
|
||
star/heart/bell/bookmark/flag/fire) plus hashed color
|
||
(12-color palette) — 84 distinct combinations.
|
||
- Pulsing red dot in the top-right of any tab with unread
|
||
messages, subtle 2-second sine pulse, respects
|
||
Configuration.ReduceMotion.
|
||
|
||
Top tabs:
|
||
|
||
- Accent underline pill on the active tab instead of the old
|
||
background fill. Icon prefixes were attempted but reverted
|
||
— Dalamud's default font atlas has no FontAwesome glyphs.
|
||
|
||
Bottom status bar (22 px, 1×/sec cached):
|
||
|
||
- Active channel with color dot, Privacy-First badge, tab +
|
||
message counters, auto-tell counter (hidden at zero),
|
||
plugin version (right-aligned, muted).
|
||
|
||
Message rendering:
|
||
|
||
- Card rows by default — sender header in channel color, body
|
||
on its own line, subtle border between cards.
|
||
- Compact-Density toggle in Appearance returns the classic
|
||
single-line `[HH:mm] Sender: Text` layout.
|
||
|
||
Bug fixes from in-game testing:
|
||
|
||
- Settings save no longer wipes chat history. Refilter cycle
|
||
only runs when filter-relevant settings actually changed
|
||
(privacy, channel selection); cosmetic changes leave the
|
||
chat intact. Persistent and Auto-Tell tabs both survive.
|
||
- Hellion Schrift (Exo 2) no longer blocks font-size
|
||
adjustment — 4K users can scale up properly.
|
||
- Sidebar buttons align with the first message row, status
|
||
bar version slot is no longer clipped.
|
||
|
||
Migration v14 → v15: legacy theme fields removed
|
||
(HellionThemeEnabled, HellionThemeWindowOpacity). All other
|
||
settings preserved.
|
||
|
||
Polish (lerps, theme crossfade, header quick-picker) follows
|
||
in v1.3.0.
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.1.0 — Theme Foundation**
|
||
|
||
First major UI cycle after the standalone v1.0.0 cut. Theme engine,
|
||
five built-in themes, customisable JSON themes, modernised settings
|
||
layout.
|
||
|
||
New themes (Settings → Themes):
|
||
|
||
- **Hellion Arctic** — the brand default, Arctic Cyan + Ember Glow
|
||
on industrial slate.
|
||
- **Chat 2 Klassik** — Steel Blue on neutral grey, eckige Kanten.
|
||
The upstream Chat 2 look on the new engine.
|
||
- **Event Horizon** — Cosmic Purple on near-black. Deep-space mood.
|
||
- **Moonlit Bloom** — Bloom Magenta + Soft Sage on deep-violet
|
||
night.
|
||
- **Mint Grove** — Mint Green + Honey Amber on deep forest. First
|
||
member of the Grove family.
|
||
|
||
Theme engine highlights:
|
||
|
||
- Slug-based selection in Settings → Themes with mini-mockup
|
||
previews per theme.
|
||
- Click a theme card and the whole plugin (chat, settings,
|
||
pop-outs, viewer) repaints instantly.
|
||
- Custom themes via JSON in pluginConfigs/HellionChat/themes/.
|
||
Example template seeded on first launch.
|
||
- Optional per-theme chat-channel colours. When a theme proposes
|
||
its own chat colours and yours differ, a dezent banner offers
|
||
Apply / Keep — never auto-overwriting.
|
||
- Migration v13 → v14: existing users land on Hellion Arctic. Pick
|
||
Chat 2 Klassik to keep the upstream look.
|
||
|
||
Settings layout:
|
||
|
||
- New card-grid overview on Settings open. Click a card to drill
|
||
into the section.
|
||
- Breadcrumb back to overview, ESC also returns.
|
||
- Detail view drops the redundant tab list — section content uses
|
||
the full width.
|
||
|
||
Branding:
|
||
|
||
- Plugin icon swapped from the ChatTwo derivative to the Hellion
|
||
Forge hammer.
|
||
- New docs/THEME-AUTHORING.md walks you through writing your own
|
||
themes with the Forge logo on top.
|
||
|
||
Technical:
|
||
|
||
- HellionStyle.PushGlobal is now theme-driven. Configuration.
|
||
HellionThemeEnabled is deprecated and will be removed in v1.2.0.
|
||
- New ThemeRegistry singleton with LastWriteTime-cached custom-
|
||
theme loader.
|
||
- 51 local unit tests cover the data model, registry, JSON round-
|
||
trip and built-in sanity checks.
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.0.3 — Polish patch**
|
||
|
||
- New: optionally hide chat (and every other plugin window) while the
|
||
New Game+ menu is open. Toggle in Settings → Window → Frame, default
|
||
off. Closing the menu restores all windows.
|
||
- New: optionally tint the channel selector button next to the input
|
||
field with the currently active channel's colour. Toggle in
|
||
Settings → Appearance → Colours, default on. Matches the existing
|
||
input-text tint and respects ExtraChat overrides.
|
||
- Fix: status, item and other inline hover icons keep their original
|
||
aspect ratio. Debuff icons with non-square dimensions are no longer
|
||
visually squished into a 32×32 box.
|
||
- Diagnostic: hide-state transitions (battle, cutscene, user-hide,
|
||
cutscene override) are now logged on Verbose level for easier bug
|
||
reports — off by default, enable with `/xllog set HellionChat verbose`.
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.0.1 — Window Position Recovery**
|
||
|
||
- Automatic bounds check on the first draw after plugin load.
|
||
When the persisted window position has no overlap with the
|
||
primary viewport, the window snaps to a safe top-left default.
|
||
Helpful after a monitor disconnect, resolution change or
|
||
multi-monitor layout switch between sessions.
|
||
- New "Reset Window Position" button in Settings → Window → Frame
|
||
as a manual escape hatch for edge cases the automatic check
|
||
doesn't catch.
|
||
|
||
Tested on Linux/Wayland with a hard-cut three-monitor reduction;
|
||
window recovers cleanly without manual JSON editing.
|
||
|
||
Housekeeping carried over since v1.0.0:
|
||
|
||
- Documentation restructured into docs/ folder. New CHANGELOG,
|
||
CONTRIBUTORS, LEARNING-JOURNEY and ROADMAP added
|
||
- Stale ChatTwo/* paths in repo configs updated to HellionChat/*
|
||
- Pidgin parser library bumped from 3.3.0 to 3.5.1 (CIString
|
||
Unicode fix relevant for non-ASCII channel/tab names)
|
||
- GitHub Actions: actions/setup-dotnet bumped 4 → 5,
|
||
github/codeql-action bumped 3 → 4
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 1.0.0 — Standalone Major Release**
|
||
|
||
First fully standalone release. Internal cleanup plus a sweep of
|
||
pre-existing correctness, security, threading and resource-leak
|
||
fixes carried over from the upstream codebase. No user action
|
||
required — auto-update applies cleanly, configuration and database
|
||
paths unchanged.
|
||
|
||
Standalone identity:
|
||
|
||
- Code namespace consolidated from ChatTwo.* to HellionChat.* across
|
||
all source files
|
||
- IPC channels migrated from ChatTwo.* to HellionChat.* (6 channels:
|
||
Register, Available, Unregister, Invoke, GetChatInputState,
|
||
ChatInputStateChanged) — third-party plugins that bound to the old
|
||
channels need to be updated; none known at release time
|
||
- ImGui popup ID renamed to hellionchat-context-popup
|
||
- Repository folder restructured (ChatTwo/ → HellionChat/), all CI
|
||
and build paths updated accordingly
|
||
- Public-facing descriptions reworded from upstream-fork framing to
|
||
standalone framing (Chat 2 attribution preserved per EUPL-1.2)
|
||
- Colour preset 'ChatTwo Default' is now 'Klassik (Chat 2 Default)'
|
||
|
||
Safety:
|
||
|
||
- Plugin now refuses to load when upstream Chat 2 is also active —
|
||
bilingual conflict message in EN/DE, throw before any subsystem
|
||
initialization, prevents the runtime crash that previously occurred
|
||
when both plugins replaced the same chat window in parallel
|
||
- SQLite native binary bumped to 3.50.3 (CVE-2025-6965 memory
|
||
corruption from aggregate-term overflow, CVE-2025-7709)
|
||
- NuGet restore now honors packages.lock.json so transitive
|
||
dependencies don't drift between machines or CI runs
|
||
|
||
Default tab layout sharpened (one-time tab reset on first start):
|
||
|
||
The first-run tab layout is reorganized into five thematic tabs
|
||
based on external tester feedback. General contains only Say,
|
||
Yell and Shout (immediate-surroundings public chat). System
|
||
absorbs the gameplay-event streams (NpcDialogue, Loot, Crafting,
|
||
Gathering, PF recruitment pings) and announcement noise
|
||
(BattleSystem, FreeCompanyAnnouncement, PvpTeamAnnouncement)
|
||
that previously lived in General. FreeCompany, Group and
|
||
Linkshell each own their channel set. The static Tell tab is
|
||
gone — Auto-Tell-Tabs spawns per-conversation tabs on demand.
|
||
The Beginner / Novice-Network preset is no longer added by
|
||
default but is still available via Settings, Tabs.
|
||
|
||
This is a one-time tab-layout reset for users on config version
|
||
12 or older. Privacy, Retention, Theme and every other setting
|
||
is preserved. Your previous tab configuration is written to
|
||
pluginConfigs/HellionChat.json.pre-v13-backup so you can restore
|
||
it manually if you prefer the old layout.
|
||
|
||
Crash-class fixes (formerly latent in upstream):
|
||
|
||
- MathUtil.HasOverlap now uses a correct AABB test; identical or
|
||
edge-touching rectangles are no longer reported as non-overlapping
|
||
- ChatCode.Equals compares fields directly instead of GetHashCode;
|
||
removes the hash-collision anti-pattern
|
||
- IpcManager.Dispose uses UnregisterAction to match the matching
|
||
RegisterAction call; previous mismatch leaked the action
|
||
subscription on every plugin reload
|
||
- ExtraChat.Dispose now unsubscribes all three IPC subscriptions
|
||
(was only the first); leaks closed
|
||
- TellTarget.FromTarget guards against a zero IPlayerCharacter.Address
|
||
before dereferencing the unsafe Character* cast
|
||
- GameFunctions ResolveTextCommandPlaceholderDetour null-checks the
|
||
Hook reference instead of using the null-forgiving operator
|
||
- Popout.cs and SettingsTabs/Tabs.cs bounds-check list indexing so
|
||
a tab drop or empty-worlds list no longer crashes the UI
|
||
- Debugger.cs now declares IDisposable so the existing Dispose runs
|
||
|
||
Correctness fixes:
|
||
|
||
- GlobalParametersCache.GetValue captures Cache into a local before
|
||
the bounds check, so a concurrent Refresh can't slip a different
|
||
array between check and read
|
||
- IconUtil binary search bounds initialized to entries.Length-1 and
|
||
reset on redirect-restart; entries.Length==0 short-circuits
|
||
- Sheets.WorldsOnDatacenter now compares DataCenter.RowId (was
|
||
Region.RowId) so it actually returns same-DC worlds
|
||
- Message.cs back-reference loop iterates the processed Sender/Content
|
||
properties so chunks added by CheckMessageContent get Message set
|
||
- Language.zh-Hans Webinterface_Start_Success corrected to
|
||
"网页界面已启动" (was "网页界面已停止")
|
||
|
||
Threading and async:
|
||
|
||
- AutoTranslate Entries/ValidEntries are now serialized behind a
|
||
single lock; the preload worker thread and main thread no longer
|
||
race on the underlying dictionary/hash set
|
||
- Privacy retention and cleanup workers bound their framework-refresh
|
||
waits to 5 seconds with a logged timeout; a hung framework tick can
|
||
no longer deadlock the background worker
|
||
|
||
Resource handling:
|
||
|
||
- EmoteCache reuses the static HttpClient instead of allocating a new
|
||
one per call (closed socket leak)
|
||
- FontManager wraps HttpClient/HttpResponseMessage in using-blocks
|
||
and adds EnsureSuccessStatusCode; failed downloads no longer
|
||
silently produce a zero-byte font file
|
||
- SearchSelector mixes the row index into the ImGui ID stack so
|
||
selectables don't collapse to a single ambiguous ID
|
||
- SettingsTabs/Chat blocked-emote add-button now opens its selector
|
||
popup on left-click
|
||
|
||
Performance:
|
||
|
||
- DbViewer text export caches filteredHistory.Count once instead of
|
||
re-enumerating the IEnumerable on every batch (O(N) instead of
|
||
O(N²) on large histories)
|
||
|
||
License attribution (NOTICE.md, COPYRIGHT, THIRD_PARTY_NOTICES.md
|
||
and the Credits section in README) is unchanged.
|
||
|
||
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
|
||
|
||
**Hellion Chat 0.6.1 — Pop-Out Discoverability & /tell Auto-Pop-Out**
|
||
|
||
- Pop-out button now visible in the chat header (no more hunting
|
||
through the right-click menu)
|
||
- One-time hint banner explains pop-out tabs and the right-click
|
||
shortcut
|
||
- New setting: open new /tell tabs directly as pop-out windows
|
||
(Settings → Chat → Auto-Tell-Tabs)
|
||
- Pop-out input is now enabled by default — closing a pop-out still
|
||
returns the tab to the sidebar
|
||
- Bugfix: dropping or logging out with an LRU/popped auto-tell tab
|
||
now also closes its pop-out window (no more ghost windows)
|
||
- Bugfix: dead zone below the chat input bar when the v0.6.0 pop-out
|
||
hint banner was visible (also fixed retroactively for the v0.6.0
|
||
banner inside pop-outs)
|
||
|
||
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://github.com/JonKazama-Hellion/HellionChat/releases
|