Files
HellionChat/ChatTwo/HellionChat.yaml
T
JonKazama-Hellion 90b83a0690 chore(release): bump version to 0.5.2
Patch release. History-order fix for Auto-Tell-Tabs, three default-
config alignments and two CodeQL security findings closed.
2026-05-02 23:28:35 +02:00

360 lines
16 KiB
YAML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Hellion Chat
author: JonKazama-Hellion
punchline: Chat 2 with privacy controls aligned to EU, US and JP rules
description: |-
Hellion Chat is built on top of Chat 2 with one removal and a stack
of privacy controls on top. Tabs, channel filters, RGB colours,
emotes, screenshot mode, IPC integration and the chat replacement
window itself work the same. The optional webinterface that Chat 2
ships is intentionally not part of this fork because it serves a
different use case from the smaller default footprint Hellion Chat
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 additions on top of Chat 2:
- 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 the upstream plugin
Based on Chat 2 by Infi and Anna, licensed under EUPL-1.2.
repo_url: https://github.com/JonKazama-Hellion/HellionChat
accepts_feedback: true
tags:
- Social
- UI
- Chat
- Replacement
- Privacy
changelog: |-
**Hellion Chat 0.5.2 — Bugfix patch**
Three corrections to the v0.5.1 surface plus two security findings
closed by the new manual-build CodeQL workflow. No new features, no
migration, configuration version stays at 10.
Bug fixes:
- Auto-Tell-Tabs: the "earlier conversations" separator no longer
lands below the live tell. The triggering message was already
persisted in the store by the time the spawn handler fired, so
it appeared as the youngest historic message. The preload now
excludes the live tell explicitly and pulls one extra row so the
user does not lose a slot to the exclusion.
- General/Aussehen: HellionThemeWindowOpacity ships at 0.5 so a
fresh install lands at the more glass-like default. Existing
users keep their saved value.
- General/Allgemein: Use24HourClock ships at true so a German /
European install starts on 24h time without a manual flip.
- Tabs/Gruppe: the default Gruppe preset no longer auto-routes
/party into the tab. The tab still collects /party, /alliance,
/pvpteam together as a read surface but does not steal the
input focus when you wanted /alliance.
Security:
- Closed CodeQL Critical alert "unvalidated local pointer
arithmetic" in ImGuiUtil.WrapText: empty splits between
consecutive newlines produced a zero-length byte array whose
fixed pointer collapsed onto its end pointer. Bail before the
fixed block when the slice is empty.
- Closed CodeQL Medium alert "workflow does not contain
permissions" by pinning the build workflow to contents: read.
Documentation: README now carries Build, CodeQL, License, Latest
Release, Dalamud API, .NET and FFXIV badges. License detection
picks up EUPL-1.2 correctly via a separated COPYRIGHT file. Added
NOTICE.md and UPSTREAM_SYNC.md after leaving the GitHub fork
network.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
**Hellion Chat 0.5.1 — Backlog Sweep**
Pure hardening and polish. No new features. Eight backlog items
from the v0.5.0 codebase review collected into one patch:
- Cleanup preview now flags itself as out-of-date when the user
edits the whitelist after the last refresh, and the refresh
button is visually emphasised in that state
- Greeted Auto-Tell-Tabs now also dim their selection and hover
backgrounds in the sidebar, not just the text
- Performance section in the General tab moves to the standard
HelpMarker tooltip pattern instead of a wall-of-text description
- Tabs and Database settings tabs pull their display name from
HellionStrings instead of the upstream Language bundle, so all
eight tabs share one i18n source
- FontChooser results are now marshalled onto the framework thread
via Plugin.Framework.Run instead of being written to settings
state directly from the threadpool
- EmoteCache.LoadData drops async void and the four CS8618 build
warnings the build has been carrying since v0.4.0
- All MessageStore SQL paths that fed dynamic value lists into
interpolated SQL now use named parameter bindings via a new
BindIntList helper. Same behaviour, defence against future
user-input regressions
Configuration version is unchanged at 10. No migration. Existing
installs upgrade silently.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
**Hellion Chat 0.5.0 — Settings UX polish**
The settings window has been pulled apart and rebuilt around eight
themed tabs instead of the twelve organic ones it grew into.
Settings now sit where they belong and the wall-of-text descriptions
have been replaced with hover help markers across every section.
What changed in this release:
- Twelve tabs collapsed into eight: General, Appearance, Window,
Chat, Tabs, Privacy, Database and Information
- Theme and font controls moved out of the Privacy tab into
Appearance where they belong
- Auto-Tell-Tabs settings, message preview and emote controls now
live under one Chat tab with collapsible sections
- About and Changelog merged into a single Information tab
- Disabled settings keep their tooltip help marker visible so you
can still read why an option is greyed out
- Section headings start collapsed by default, the same pattern
used for the Auto-Tell-Tabs preload section in 0.4.0
Configuration version bumps from 9 to 10 as a wipe migration. The
old config file is copied to HellionChat.json.pre-v10-backup before
the new defaults are written, so you can restore your previous
setup by hand if anything looks off. A one-shot notification on
first start explains the reset.
No changes to message storage, retention sweep, the privacy filter
or the export pipeline. Tabs and chat history are untouched by the
migration.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
**Hellion Chat 0.4.0 — Auto-Tell-Tabs**
Auto-Tell-Tabs lets you turn each /tell into a session-only tab
dedicated to that conversation partner. The original use case is
the FFXIV club greeter who has to track 515 parallel "hi, welcome"
exchanges; everyone else can disable the feature in one click and
go back to a single Tell Exclusive tab.
What lands in this release:
- Auto-spawn temp tab "Name@World" on /tell (incoming and outgoing)
- Tab limit (default 15, range 150) with LRU drop that prefers
greeted tabs first, then sorts by last activity
- History preload from the local message store (default 20 tells,
range 0100) with a "— Earlier conversations —" separator above
the live tell that triggered the spawn
- Optional "mark as greeted" toggle button (off by default,
greeter-specific) that dims the tab name and lets you flip the
status
- Section header "Active Tells (n)" or compact-mode separator in
the sidebar between persistent tabs and the temp tabs
- Settings UI under Chat (toggle / limit / compact / greeted-toggle)
and Privacy (history preload count), with hover-tooltip help
markers replacing the previous wall-of-text descriptions for the
new sections
- Save and load filters strip temp tabs from the on-disk config so
a crash or a sidebar-mode toggle never persists or wipes them
Compatibility note: if XIV Messanger or another plugin is
suppressing direct messages, disable its "Suppress DMs" option so
Hellion Chat can receive tells and open the auto tabs.
Configuration version bumps from 8 to 9. Existing users get a one-
shot notification on the first start, defaults are seeded by
property initializers, persistent tabs are untouched.
The vertical sidebar tab view becomes the default for fresh
installs; existing users keep their saved preference.
Inspired by the per-sender tab pattern in XIV InstantMessenger
(Limiana, AGPL-3.0). No code was ported across the licence
boundary; only the architectural concept influenced this design.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
**Hellion Chat 0.3.1 — Upstream emote regression fix**
Cherry-picks Infi's upstream commit ff899ff "Fix a regression
from API 15 updates" which changes the BetterTTV emote DTOs
(Emote and Top100) from public fields to public properties.
System.Text.Json under the API 15 toolchain only honours the
[JsonPropertyName] attribute on properties, so the previous
field-based version deserialised every fetched emote into empty
default values. Result: BetterTTV emotes were silently broken
on fresh installs. The fix is six lines and applies cleanly on
top of our defensive null-check from earlier; the EmoteCache
path-traversal hardening from 0.3.0 stays as it is.
Authorship of the fix is preserved with git cherry-pick -x, so
Infi shows up as the author on the commit. Thanks to him for
catching it in the upstream codebase.
**Hellion Chat 0.3.0 — Audit hardening, brand sweep and rebrand of slash commands**
This release closes the remaining audit follow-ups from the
0.2.0 cleanup and finishes turning Hellion Chat into a properly
branded fork rather than a Chat 2 with a different name.
Slash commands have been renamed across the board so they no
longer collide with the upstream plugin and tell you which
plugin owns them at a glance:
- /chat2 becomes /hellion
- /chat2Viewer becomes /hellionView
- /clearlog2 becomes /clearhellion
- /chat2Debugger becomes /hellionDebugger (internal)
- /chat2SeString becomes /hellionSeString (internal)
This is a breaking change for anyone with macros bound to the
old command names. The upstream Chat 2 commands keep working
if you also have that plugin installed.
Privacy and storage hardening based on the post-0.2.0 audit:
- Privacy filter master switch now states explicitly that the
filter only governs storage, not the live chat log
- Emote cache refuses to write outside its own directory if a
third-party API ever returns a path that escapes
- Retention sweep is serialised so the 24h auto-sweep and the
manual button cannot launch in parallel and race for the
SQLite connection
- DbViewer paging uses an int constant and the matching SQL
parameter name (the upstream code passed a float and a name
without the parameter prefix; both worked in practice but
were inconsistent)
Visual identity now matches the Hellion Online Media website:
- Theme palette switched to Arctic Cyan plus Ember Orange,
matching the website's BRANDING.md tokens
- Active tabs and window title bars use a brand-color-dark teal
variation as identity colour, replacing the previous slate
violet that did not appear in the brand
- Resize grips and scrollbar grabs picked up Ember Orange
instead of industrial amber on hover and active states
About tab rewritten and properly localised:
- New "Why this fork exists" block sets out the mission in
neutral terms, framing Chat 2's full-history default as the
right one for most users while explaining the narrower
default footprint this fork chose
- All Hellion-specific About copy now lives in HellionStrings
in EN and DE, so German users see the Hellion sections in
German rather than the upstream English fallback
- Webinterface absence is described as a focus mismatch
(different use case, substantial rebuild) rather than as
a security issue with the upstream code
- Translator list at the bottom of the About tab is reachable
again on smaller settings windows
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
**Hellion Chat 0.2.0 — Webinterface removed**
The upstream webinterface has been removed in its entirety. It
serves a different use case from the smaller default footprint
this fork is built around, namely remote access to chat from a
second device. Aligning it with the data minimisation defaults
Hellion Chat ships with would have meant a substantial rebuild.
Removing it was the cleaner path for this particular fork.
What changed in this release:
- Settings tab "Webinterface" is gone, the corresponding
Configuration fields (WebinterfaceEnabled / AutoStart / Password /
Port / AuthStore / MaxLinesToSend) are dropped and stale entries
fall out of the JSON on the next save automatically
- The whole ChatTwo/Http tree, the bundled Svelte frontend in
websiteBuild.zip and the WebinterfaceUtil helper are deleted
- Watson.Lite (the HTTP server) and Newtonsoft.Json (only used by
the webinterface JSON wire format) are removed from the
package references
- DbViewer's "Chat2 JSON Export" button is dropped because it
serialised the database into the webinterface message protocol;
the Privacy tab's MessageExporter (Markdown, JSON, CSV with
channel and date filters) covers the same ground without the
proprietary shape
- About tab notes the absence so users coming from Chat 2 do not
look for it
- Configuration version bumps from 7 to 8 with a one-shot
notification (EN + DE)
No changes to the privacy filter, retention sweep, first-run wizard
or export pipeline. Existing chat history is preserved.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
**Hellion Chat 0.1.2 — About tab rebrand, DBViewer polish**
- About tab now shows Hellion-specific maintainer, license, EU/US/JP
disclaimer and SQUARE ENIX disclaimer instead of the inherited
Chat 2 contact info; original ChatTwo translator credits stay
visible under a clearly labelled upstream tree node
- Localization clarified: Hellion-specific German strings are
maintained by the fork maintainer, the Crowdin contributor list
only covers the inherited upstream strings
- Cherry-picked DBViewer UI improvements from upstream Chat 2
(auto-scroll-reset on page change, tooltips on date reset,
folder export, page arrows, localized export-running messages)
- README rewritten in the Hellion project style with a tech-stack
table, architecture tree, database column list, install guide,
upstream-sync workflow notes and project-status checklist
**Hellion Chat 0.1.1 — Packaging and migration fixes**
- Plugin icon now ships inside the bundle, so the Hellion logo
renders locally in the Dalamud plugin list once installed (the
previous release relied only on the remote IconUrl)
- Plugin icon downsampled from 1024×1024 to 256×256 to match the
rendered size; loads faster and caches better
- Migration from upstream Chat 2 is more robust: each file move is
wrapped individually, a locked SQLite database no longer aborts
the rest of the migration, and a warning notification fires when
any file is held open (with a hint to disable Chat 2 and restart
the game)
- README ships a step-by-step migration guide (fresh install versus
coming from Chat 2) and a troubleshooting section with manual
recovery commands for Linux and Windows
**Hellion Chat 0.1.0 — Initial fork release**
Privacy
- Channel whitelist filter in MessageStore.UpsertMessage with a
Privacy-First default (own conversations only)
- Per-channel retention with a 24-hour idempotent background sweep
- Retroactive cleanup with a Ctrl+Shift confirm and VACUUM
- Export to Markdown / JSON / CSV via Dalamud's file dialog
Onboarding
- First-run wizard with three profiles: Privacy-First / Casual /
Full History
- Configuration migration that seeds defaults on update
- One-shot migration from upstream Chat 2's pluginConfigs layout
- Migrate3 idempotency recovery for half-migrated databases
Look & feel
- Localized UI (English and German) with live language switching
- Industrial HUD theme with cyan-teal action accents, slate-violet
tabs, amber active highlights and a window-opacity slider
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).