JonKazama-Hellion 81d3c9ca6b Pack the plugin icon into the release ZIP
DalamudPackager's default targets do not enable the HandleImages /
ImagesPath flags, so the images/ directory was silently excluded
from the build output even after the .csproj started copying
icon.png next to the DLL. The local Dalamud plugin loader then
fell back to the placeholder question-mark icon because there was
nothing to load at <plugindir>/images/icon.png.

Override the default by dropping a DalamudPackager.targets next to
the csproj — its presence disables the SDK's default target, which
is guarded on `!Exists($(PackagerTargetFile))`. The override
mirrors the SDK property list verbatim and adds HandleImages=true
plus ImagesPath=$(ProjectDir)images so the packager actually walks
the images directory and copies its contents into both the dev
plugin output and the release ZIP.

Verified: latest.zip now contains images/icon.png at the expected
path; both dev plugins and Custom-Repo installs will render the
Hellion logo locally without depending on the remote IconUrl.
2026-05-01 23:35:19 +02:00
2026-04-30 02:59:58 +02:00
2024-11-13 04:13:18 +01:00
2024-04-30 19:23:08 +02:00
2024-04-20 21:18:51 +10:00
2021-12-29 14:31:45 -05:00
2026-05-01 22:50:19 +02:00

Hellion Chat

A GDPR-compliant, Linux-aware fork of Chat 2 for FINAL FANTASY XIV / Dalamud.

Same chat replacement you know from upstream, with extra controls for what actually gets stored:

  • Channel whitelist for database persistence (GDPR Art. 25 — privacy by default). Out-of-the-box only your own conversations are kept: Tells, Party, Free Company, Linkshells, Cross-World Linkshells, Alliance, ExtraChat. Public chat from strangers (Say/Shout/Yell), Novice Network, NPC dialogue, system spam and battle messages stay outside the database unless you opt them in.
  • Per-channel retention with a 24-hour idempotent background sweep. Tells default to 365 days, own-conversation channels to 90, the global default to 30. Off until you switch it on — the plugin never deletes history without your explicit consent.
  • Retroactive cleanup with a Ctrl+Shift confirm. Apply the current whitelist to an existing 800-MB+ database, watch it shrink to MBs, all on a background thread.
  • Export to Markdown, JSON or CSV (GDPR Art. 15 right of access). Filter by channel, date range or sender substring; written via Dalamud's file dialog without blocking the UI.
  • First-run wizard with three profiles (Privacy-First / Casual / Full History) that maps to concrete configuration sets. Reopenable from the Privacy tab any time.
  • Independent plugin state. Config and database live under pluginConfigs/HellionChat/, completely separate from upstream Chat 2 — you can run both side by side, or migrate from Chat 2 once and keep going.
  • Migration recovery. Heals databases left in a half-applied Migrate3 state (columns added, user_version never bumped) without needing the backup file upstream creates.
  • Localized UI (EN + DE). All Hellion-specific surfaces follow Dalamud's language override and switch live. Translations live in Resources/HellionStrings.<lang>.resx.

Status

Bootstrap (v0.1.x). Used in production on a single user's setup. Not (yet) submitted to the official Dalamud plugin repository — distributed as a custom-repo / dev-plugin while the architecture stabilises.

Install (testers)

Hellion Chat is shipped via a Dalamud custom repository during the bootstrap phase.

If you have never used Chat 2

  1. Open Dalamud settings (/xlsettings) → Experimental.
  2. Add a new entry under Custom Plugin Repositories:
    https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/repo.json
    
  3. Click Save, then back in /xlplugins hit All Plugins and refresh.
  4. Hellion Chat now appears in the list — install it.

If you are migrating from Chat 2 (and want to keep your history)

The two plugins share pluginConfigs/ChatTwo/ (database) and pluginConfigs/ChatTwo.json (settings). Hellion Chat moves both into pluginConfigs/HellionChat/ on first start, but only if the upstream plugin isn't holding the database file open. Order matters:

  1. Disable Chat 2 in /xlplugins (don't uninstall, just disable).
  2. Close FFXIV completely so SQLite releases its file lock — a plain plugin reload is not enough.
  3. Re-launch the game.
  4. Add the custom repo URL as in the previous section.
  5. Install Hellion Chat. On its first start it migrates the Chat 2 config file and the entire database directory into the HellionChat layout without losing data.
  6. Verify in Settings → Privacy → Apply filter to existing database → Refresh preview that the message count is what you expect (millions of rows if you used Chat 2 for a while).

If the message count comes back as zero, the migration was blocked (usually because Chat 2 was still active or the previous game session hadn't fully closed). See the troubleshooting section below.

Troubleshooting

Hellion Chat shows zero messages but I had Chat 2 history: The migration either didn't run or hit a locked file. Close the game, then move the data manually:

Linux / XIVLauncher Core:

mv ~/.xlcore/pluginConfigs/ChatTwo/chat-sqlite.db \
   ~/.xlcore/pluginConfigs/HellionChat/chat-sqlite.db
[ -d ~/.xlcore/pluginConfigs/ChatTwo/EmoteCacheV1 ] && \
  mv ~/.xlcore/pluginConfigs/ChatTwo/EmoteCacheV1 \
     ~/.xlcore/pluginConfigs/HellionChat/

Windows / standard XIVLauncher:

Move-Item "$env:AppData\XIVLauncher\pluginConfigs\ChatTwo\chat-sqlite.db" `
          "$env:AppData\XIVLauncher\pluginConfigs\HellionChat\chat-sqlite.db" -Force

Then start the game and Hellion Chat — your full history is back.

Updates

Updates land in the same plugin list once the maintainer pushes a new v0.1.x tag and re-publishes the GitHub release. No re-installation needed.

Why a fork

The upstream maintainer has left filtering-related issues open since 2024 (#84, #173, #174). The original design treats the database as an unlimited searchable archive of everything the chat window sees, which is fine in the US-/JP-shaped privacy mindset but hard to reconcile with EU GDPR data minimization rules when the archive contains messages from third parties.

Forking under EUPL-1.2 is explicitly permitted, the upstream stays authoritative for the chat-replacement engine, and we cherry-pick relevant upstream bugfixes from Infiziert90/ChatTwo periodically.

Build

# Linux with XIVLauncher Core
cp .env.example .env
# adjust DALAMUD_HOME if your hooks live somewhere else
set -a; source .env; set +a
dotnet build ChatTwo/ChatTwo.csproj

The output assembly is ChatTwo/bin/Debug/HellionChat.dll. Add the parent directory as a Dev Plugin Location in Dalamud's experimental settings.

Branding assets

ChatTwo/images/icon.png is the upstream Chat 2 icon and stays in place until a hand-drawn Hellion logo replaces it. No AI-generated artwork — ever.

License

EUPL-1.2 (same as upstream Chat 2). See LICENCE.

Acknowledgments

  • Infi & Anna (ascclemens) — original Chat 2 engine, filtering, IPC, all the heavy lifting before this fork existed.
  • Dalamud team — the plugin framework underneath everything.
  • JonKazama-Hellion — fork maintenance, privacy/retention/export features, German localization.

AI assistance disclosure

See AI_DISCLOSURE.md.

S
Description
A Linux-aware, GDPR-compliant chat plugin for FINAL FANTASY XIV.
Readme EUPL-1.2 16 MiB
v1.4.3 Latest
2026-05-09 06:42:49 +00:00
Languages
C# 99.2%
Shell 0.8%