chore(linting): refresh configs and sweep auto-fix

Pull in the refreshed linter and tooling configs (editorconfig,
gitignore, gitattributes, prettierignore, prettierrc, markdownlint,
yamllint, env.example, dotnet-tools) and run prettier and markdownlint
in --fix / --write mode across the repo so the existing tree matches
the new rules.

- prettier 2-space indent on yaml/yml and json overrides, asterisk
  strong, underscore emphasis, proseWrap always
- markdownlint MD007 indent aligned to 2 and MD049 to underscore so
  prettier output stays passing
- preflight Block F also ignores CLAUDE.md (gitignored personal file)
- prettierignore extended to keep HellionChat.yaml manifest and the
  NuGet packages.lock.json out of the formatter

No semantic content changed; csharpier, build, full build-suite
(729/729) and the new prettier/markdownlint/yamllint checks all green.
This commit is contained in:
2026-05-17 17:20:55 +02:00
parent 2315f10d91
commit 0220e5d756
53 changed files with 3501 additions and 2630 deletions
+143 -123
View File
@@ -14,27 +14,30 @@
**Version 1.5.0** — Privacy-first chat plugin for FINAL FANTASY XIV / Dalamud, built on
[Chat 2](https://github.com/Infiziert90/ChatTwo) (EUPL-1.2).
Hellion Chat is a privacy-first plugin built on the Chat 2 foundation. The majority of the engine comes from Chat 2
(message store, channel logic, hook system), and most keyboard shortcuts continue to work as you'd expect. What changes:
stricter privacy defaults out of the box, custom slash commands under `/hellionchat`, no web interface, and as of
v1.1.0, a theme engine as a step toward a distinct UI look and feel.
Hellion Chat is a privacy-first plugin built on the Chat 2 foundation. The majority of the engine
comes from Chat 2 (message store, channel logic, hook system), and most keyboard shortcuts continue
to work as you'd expect. What changes: stricter privacy defaults out of the box, custom slash
commands under `/hellionchat`, no web interface, and as of v1.1.0, a theme engine as a step toward a
distinct UI look and feel.
The data-handling focus is on GDPR/EU, US, and JP regulations, as far as practically applicable for a chat plugin:
per-channel retention periods, granular filters, and self-service data export. A full breakdown is available in
[`PRIVACY.md`](PRIVACY.md).
The data-handling focus is on GDPR/EU, US, and JP regulations, as far as practically applicable for
a chat plugin: per-channel retention periods, granular filters, and self-service data export. A full
breakdown is available in [`PRIVACY.md`](PRIVACY.md).
This is a standalone repository, licensed under EUPL-1.2. With v1.0.0 the standalone cut is complete: own namespace
`HellionChat.*`, own IPC channels, own source tree structure. Distribution via custom repo. Active upstream sync ended
with the v1.4.x cycle: Chat 2 is undergoing a fundamental rework and cherry-picks are no longer portable. From here,
Hellion Chat continues as an independent codebase — background and attribution in
This is a standalone repository, licensed under EUPL-1.2. With v1.0.0 the standalone cut is
complete: own namespace `HellionChat.*`, own IPC channels, own source tree structure. Distribution
via custom repo. Active upstream sync ended with the v1.4.x cycle: Chat 2 is undergoing a
fundamental rework and cherry-picks are no longer portable. From here, Hellion Chat continues as an
independent codebase — background and attribution in
[`docs/UPSTREAM_SYNC.md`](docs/UPSTREAM_SYNC.md).
## Acknowledgements
Hellion Chat is built on [Chat 2](https://github.com/Infiziert90/ChatTwo) by
**[Infiziert90 (Infi)](https://github.com/Infiziert90)** and **[Anna](https://github.com/anna-is-cute)**, who maintained
the plugin for years before I ever saw the source code. The entire core architecture, the message store, the channel
logic, the hook system, and much more all come from them. If Hellion Chat helps you, the credit for that belongs in
**[Infiziert90 (Infi)](https://github.com/Infiziert90)** and
**[Anna](https://github.com/anna-is-cute)**, who maintained the plugin for years before I ever saw
the source code. The entire core architecture, the message store, the channel logic, the hook
system, and much more all come from them. If Hellion Chat helps you, the credit for that belongs in
large part to Infi and Anna. A full acknowledgement is in [NOTICE.md](NOTICE.md).
Hellion Chat is developed under **Hellion Forge**, the specialized modding and plugin branch of
@@ -62,67 +65,73 @@ Hellion Chat is developed under **Hellion Forge**, the specialized modding and p
### Privacy / Compliance
- **Channel whitelist** for database persistence with privacy-first defaults. Out of the box, only your own
conversations are stored (tells, party, FC, linkshells, cross-world linkshells, alliance, ExtraChat). Public chat, NPC
dialogue, system spam, and battle logs are discarded at the storage layer.
- **Per-channel retention periods** with a daily background cleanup. Tells: 365 days, own conversation channels: 90
days, global default: 30 days. The default is OFF — the plugin deletes nothing without explicit consent.
- **Retroactive cleanup** with preview and Ctrl+Shift confirmation. Applies the current whitelist to an existing
database, runs in the background, and calls VACUUM afterward.
- **Export** to Markdown, JSON, or CSV via the Dalamud file dialog (GDPR Art. 15 right of access). Filter by channel,
date range, or sender substring.
- **Channel whitelist** for database persistence with privacy-first defaults. Out of the box, only
your own conversations are stored (tells, party, FC, linkshells, cross-world linkshells, alliance,
ExtraChat). Public chat, NPC dialogue, system spam, and battle logs are discarded at the storage
layer.
- **Per-channel retention periods** with a daily background cleanup. Tells: 365 days, own
conversation channels: 90 days, global default: 30 days. The default is OFF — the plugin deletes
nothing without explicit consent.
- **Retroactive cleanup** with preview and Ctrl+Shift confirmation. Applies the current whitelist to
an existing database, runs in the background, and calls VACUUM afterward.
- **Export** to Markdown, JSON, or CSV via the Dalamud file dialog (GDPR Art. 15 right of access).
Filter by channel, date range, or sender substring.
- **Full privacy overview** in [`PRIVACY.md`](PRIVACY.md) and third-party components in
[`docs/THIRD_PARTY_NOTICES.md`](docs/THIRD_PARTY_NOTICES.md): what is stored, which two outbound calls exist
(BetterTTV opt-out, Square Enix Lodestone font), an explicit no-telemetry statement, and the mapping of GDPR rights
(Art. 15/17/18/20/21) to concrete plugin functions.
[`docs/THIRD_PARTY_NOTICES.md`](docs/THIRD_PARTY_NOTICES.md): what is stored, which two outbound
calls exist (BetterTTV opt-out, Square Enix Lodestone font), an explicit no-telemetry statement,
and the mapping of GDPR rights (Art. 15/17/18/20/21) to concrete plugin functions.
### Onboarding
- **First-run wizard** with three profiles (Privacy-First, Relaxed, Full History) and a GDPR notice for the "Full
History" option.
- **Configuration migration** seeds privacy defaults for existing users and shows a notification on the first plugin
start after an update. With v1.0.0, users on config version 12 or older also receive a one-time tab layout reset; the
old tab configuration is backed up as `pluginConfigs/HellionChat.json.pre-v13-backup`.
- **Layout migration from Chat 2** moves configuration and database to `pluginConfigs/HellionChat/` without data loss.
Handles locked files gracefully (warns the user if Chat 2 is still loaded).
- **First-run wizard** with three profiles (Privacy-First, Relaxed, Full History) and a GDPR notice
for the "Full History" option.
- **Configuration migration** seeds privacy defaults for existing users and shows a notification on
the first plugin start after an update. With v1.0.0, users on config version 12 or older also
receive a one-time tab layout reset; the old tab configuration is backed up as
`pluginConfigs/HellionChat.json.pre-v13-backup`.
- **Layout migration from Chat 2** moves configuration and database to `pluginConfigs/HellionChat/`
without data loss. Handles locked files gracefully (warns the user if Chat 2 is still loaded).
- **Migrate3 recovery** heals partially migrated databases from old Chat 2 installations.
### Look & Feel
- **Bilingual UI** (English and German) with live language switching. Hellion-specific strings are in
`HellionStrings.<lang>.resx`.
- **Hellion HUD theme** with cyan-teal accents, slate-violet tabs, and amber highlights for active states.
- **Chat color presets** (v0.6.0) with seven built-in bundles in Settings → Appearance → Chat Colors: Classic (Chat 2
default), High Contrast, Pastel, Dark Mode Tuned, Hellion (brand), plus bonus moods Night Blue and Indigo Violet.
One-click apply, battle channels remain untouched.
- **Bilingual UI** (English and German) with live language switching. Hellion-specific strings are
in `HellionStrings.<lang>.resx`.
- **Hellion HUD theme** with cyan-teal accents, slate-violet tabs, and amber highlights for active
states.
- **Chat color presets** (v0.6.0) with seven built-in bundles in Settings → Appearance → Chat
Colors: Classic (Chat 2 default), High Contrast, Pastel, Dark Mode Tuned, Hellion (brand), plus
bonus moods Night Blue and Indigo Violet. One-click apply, battle channels remain untouched.
- **Window opacity slider** for combat-friendly transparency.
- **Bundled Hellion font** (Exo 2, OFL-1.1) as an optional default instead of the system font.
- **Hellion logo** bundled in the plugin and displayed in the Dalamud plugin list.
#### Custom Themes (v1.1.0)
HellionChat ships a theme engine with ten built-in themes (Hellion Arctic, Hellion Spectrum, Chat 2 Classic, Event
Horizon, Crystal Nocturne, Mint Grove, Night Blue, Indigo Violet, Forge Merchantman, Synthwave Sunset) and a JSON-based
authoring format for custom themes. Schema and step-by-step guide in
[`docs/THEME-AUTHORING.md`](docs/THEME-AUTHORING.md). Hellion Spectrum is Deuteranopia/Protanopia-safe (red-green color
blindness) based on the Wong/Okabe-Ito palette.
HellionChat ships a theme engine with ten built-in themes (Hellion Arctic, Hellion Spectrum, Chat 2
Classic, Event Horizon, Crystal Nocturne, Mint Grove, Night Blue, Indigo Violet, Forge Merchantman,
Synthwave Sunset) and a JSON-based authoring format for custom themes. Schema and step-by-step guide
in [`docs/THEME-AUTHORING.md`](docs/THEME-AUTHORING.md). Hellion Spectrum is
Deuteranopia/Protanopia-safe (red-green color blindness) based on the Wong/Okabe-Ito palette.
#### Plugin Integrations (v1.3.0)
- **Honorific custom titles in the chat header.** When the Honorific plugin is active and a custom title is set, it is
displayed in the chat header above the message log. Auto-detect with silent fallback: without Honorific the slot is
invisible. Toggle in Settings → Integrations → Honorific. First cycle of a multi-stage plugin integration roadmap
(context menu, NotificationMaster, RP status, ExtraChat, and XIVIM to follow).
- **Honorific custom titles in the chat header.** When the Honorific plugin is active and a custom
title is set, it is displayed in the chat header above the message log. Auto-detect with silent
fallback: without Honorific the slot is invisible. Toggle in Settings → Integrations → Honorific.
First cycle of a multi-stage plugin integration roadmap (context menu, NotificationMaster, RP
status, ExtraChat, and XIVIM to follow).
### Pop-Out Convenience (v0.6.0)
- **Input bar in pop-out windows** as a global opt-in in Settings → Windows → Window Frame. When active, every pop-out
window has a compact input at the bottom with a channel-colored icon button and text field. No more switching back to
the main window for a quick reply.
- **Per-pop-out independent text buffer and history cursor.** Changing channels in a pop-out works globally like in the
main window (FFXIV channel API), but half-typed input doesn't collide between the main window and pop-outs.
- **Shared input history** across all windows via singleton service. Up/Down arrow keys navigate the same list of the
last 30 entries everywhere.
- **Input bar in pop-out windows** as a global opt-in in Settings → Windows → Window Frame. When
active, every pop-out window has a compact input at the bottom with a channel-colored icon button
and text field. No more switching back to the main window for a quick reply.
- **Per-pop-out independent text buffer and history cursor.** Changing channels in a pop-out works
globally like in the main window (FFXIV channel API), but half-typed input doesn't collide between
the main window and pop-outs.
- **Shared input history** across all windows via singleton service. Up/Down arrow keys navigate the
same list of the last 30 entries everywhere.
### Stability
@@ -132,12 +141,13 @@ blindness) based on the Wong/Okabe-Ito palette.
### What's missing compared to Chat 2
The web interface was removed in Hellion Chat 0.2.0. It serves a different use case than the focus of this fork — remote
access to chat from a second device — which conflicts directly with the privacy-first premise: a chat plugin that starts
a local HTTP server is too large an attack surface for my threat model. So it's gone.
The web interface was removed in Hellion Chat 0.2.0. It serves a different use case than the focus
of this fork — remote access to chat from a second device — which conflicts directly with the
privacy-first premise: a chat plugin that starts a local HTTP server is too large an attack surface
for my threat model. So it's gone.
If you want the full Chat 2 feature set, the upstream plugin serves you better. Hellion Chat is deliberately the slimmer
fork.
If you want the full Chat 2 feature set, the upstream plugin serves you better. Hellion Chat is
deliberately the slimmer fork.
---
@@ -172,24 +182,26 @@ HellionChat/
### Rules
- **Code namespace is `HellionChat.*`.** Fully consolidated onto the plugin name since v1.0.0 — no remaining `ChatTwo.*`
anywhere in the source tree.
- **AssemblyName is `HellionChat`.** Own slot in `pluginConfigs/`, own file manifest, no shared state with Chat 2.
Parallel-loading upstream Chat 2 is actively blocked on startup (bilingual conflict message).
- **IPC channels are `HellionChat.*`.** Six channels for third-party plugin integration (`Register`, `Available`,
`Unregister`, `Invoke`, `GetChatInputState`, `ChatInputStateChanged`). Details in [`docs/IPC.md`](docs/IPC.md).
- **Hellion-specific strings in `HellionStrings.*.resx`**, strings carried over from Chat 2 in `Language.*.resx`. The
original `Language.*.resx` structure is preserved because the existing translations from the upstream Crowdin
community remain valuable.
- **No direct access to `Plugin.Interface.UiBuilder.FontAtlas`** outside of `FontManager`. Font fallback and the Hellion
font are managed centrally.
- **Code namespace is `HellionChat.*`.** Fully consolidated onto the plugin name since v1.0.0 — no
remaining `ChatTwo.*` anywhere in the source tree.
- **AssemblyName is `HellionChat`.** Own slot in `pluginConfigs/`, own file manifest, no shared
state with Chat 2. Parallel-loading upstream Chat 2 is actively blocked on startup (bilingual
conflict message).
- **IPC channels are `HellionChat.*`.** Six channels for third-party plugin integration (`Register`,
`Available`, `Unregister`, `Invoke`, `GetChatInputState`, `ChatInputStateChanged`). Details in
[`docs/IPC.md`](docs/IPC.md).
- **Hellion-specific strings in `HellionStrings.*.resx`**, strings carried over from Chat 2 in
`Language.*.resx`. The original `Language.*.resx` structure is preserved because the existing
translations from the upstream Crowdin community remain valuable.
- **No direct access to `Plugin.Interface.UiBuilder.FontAtlas`** outside of `FontManager`. Font
fallback and the Hellion font are managed centrally.
---
## Database
SQLite, schema inherited from upstream Chat 2 (migration level v3). Hellion extensions live in `Configuration` as
fields, not in the DB schema:
SQLite, schema inherited from upstream Chat 2 (migration level v3). Hellion extensions live in
`Configuration` as fields, not in the DB schema:
| Column | Type | Description |
| ---------------- | ------- | ---------------------------- |
@@ -229,15 +241,15 @@ Hellion Chat is distributed via a Dalamud **custom repository**.
### Migration from Chat 2 (with existing history)
Chat 2 and Hellion Chat share the database file until Hellion Chat moves it to its own path on first start. Order
matters:
Chat 2 and Hellion Chat share the database file until Hellion Chat moves it to its own path on first
start. Order matters:
1. **Disable Chat 2** in `/xlplugins` (do not uninstall, just disable).
2. **Fully close FFXIV** so SQLite releases the file lock. A plugin reload alone is not enough.
3. Restart the game.
4. Add the custom repo as described above.
5. Install Hellion Chat. On first start, the configuration file and the entire database directory are moved into the
HellionChat layout.
5. Install Hellion Chat. On first start, the configuration file and the entire database directory
are moved into the HellionChat layout.
6. **Verify** under Settings → Privacy → Refresh preview that the message count looks plausible.
### Troubleshooting
@@ -267,17 +279,18 @@ Start the game, enable Hellion Chat, and your history is back.
### Updates
Updates appear automatically in the plugin list once a new `vX.Y.Z` tag with a GitHub Release is published. No reinstall
needed.
Updates appear automatically in the plugin list once a new `vX.Y.Z` tag with a GitHub Release is
published. No reinstall needed.
---
## Distribution
Hellion Chat is distributed via its own Dalamud custom repository (`repo.json` in the repo root). Pushing a `vX.Y.Z` tag
triggers the [`release.yml`](.github/workflows/release.yml) workflow, which attaches the build output
(`HellionChat/bin/Release/HellionChat/latest.zip`) along with the matching changelog block from `HellionChat.yaml` to
the GitHub Release. Manual recovery path if the auto-trigger is missed: `gh workflow run release.yml -f tag=vX.Y.Z`.
Hellion Chat is distributed via its own Dalamud custom repository (`repo.json` in the repo root).
Pushing a `vX.Y.Z` tag triggers the [`release.yml`](.github/workflows/release.yml) workflow, which
attaches the build output (`HellionChat/bin/Release/HellionChat/latest.zip`) along with the matching
changelog block from `HellionChat.yaml` to the GitHub Release. Manual recovery path if the
auto-trigger is missed: `gh workflow run release.yml -f tag=vX.Y.Z`.
An optional submission to the Dalamud main plugin repo (in addition to the custom repo) is on the
[roadmap](docs/ROADMAP.md).
@@ -286,19 +299,22 @@ An optional submission to the Dalamud main plugin repo (in addition to the custo
## Project Status
**Version 1.5.0** — DI Foundation and Service Refactor. Major architecture cycle: the plugin bootstrap moves to a
generic-host DI container (`Microsoft.Extensions.Hosting` + `IServiceCollection`) modelled on Lightless Sync. All
18 instance-class services migrate from a static `Plugin.LogProxy` locator to `Microsoft.Extensions.Logging.ILogger<T>`
via constructor injection, with a custom `DalamudLogger` bridging the framework over to Dalamud's `IPluginLog`. The
proxy stays for the eight buckets ctor-injection cannot reach (static helpers like `EmoteCache`, Dalamud-reflected
`Configuration`, the `Message` data class, and static methods inside `FontManager` / `GameFunctions`). Plugin.cs
finishes the cycle at 1012 lines — virtually identical to the pre-cycle 1013 — because the new Phase-1 host build
and Plugin.X bridge wiring trade out exactly the service and window allocations that left `LoadAsync`. Cross-plugin
baseline confirms no performance penalty vs Chat 2: HellionChat first-frame HITCH 77 ms median, Chat 2 74 ms.
Lightless and XIVInstantMessenger sit around 7 ms by deferring their font-atlas build past `Finished loading`
that pattern is the v1.5.1 follow-up item. One user-visible fix bundled in from upstream: pasting a slash command
into the chat input (Friend List "/tell" action, plugin-driven inserts) now replaces the existing input instead of
concatenating onto whatever the user was typing. Migration v17 stays (no schema bump).
**Version 1.5.0** — DI Foundation and Service Refactor. Major architecture cycle: the plugin
bootstrap moves to a generic-host DI container (`Microsoft.Extensions.Hosting` +
`IServiceCollection`) modelled on Lightless Sync. All 18 instance-class services migrate from a
static `Plugin.LogProxy` locator to `Microsoft.Extensions.Logging.ILogger<T>` via constructor
injection, with a custom `DalamudLogger` bridging the framework over to Dalamud's `IPluginLog`. The
proxy stays for the eight buckets ctor-injection cannot reach (static helpers like `EmoteCache`,
Dalamud-reflected `Configuration`, the `Message` data class, and static methods inside `FontManager`
/ `GameFunctions`). Plugin.cs finishes the cycle at 1012 lines — virtually identical to the
pre-cycle 1013 — because the new Phase-1 host build and Plugin.X bridge wiring trade out exactly the
service and window allocations that left `LoadAsync`. Cross-plugin baseline confirms no performance
penalty vs Chat 2: HellionChat first-frame HITCH 77 ms median, Chat 2 74 ms. Lightless and
XIVInstantMessenger sit around 7 ms by deferring their font-atlas build past `Finished loading`
that pattern is the v1.5.1 follow-up item. One user-visible fix bundled in from upstream: pasting a
slash command into the chat input (Friend List "/tell" action, plugin-driven inserts) now replaces
the existing input instead of concatenating onto whatever the user was typing. Migration v17 stays
(no schema bump).
Hellion Chat is a standalone plugin, no longer a fork in the repository sense. Fully completed:
@@ -313,29 +329,31 @@ Hellion Chat is a standalone plugin, no longer a fork in the repository sense. F
- Audit hardening (path traversal, retention race, DbViewer consistency)
- About tab in Hellion branding, localized EN and DE, with license and disclaimer
- AI disclosure documented (see [`docs/AI_DISCLOSURE.md`](docs/AI_DISCLOSURE.md))
- Standalone cut: namespace `HellionChat.*`, IPC channels `HellionChat.*`, source tree restructure, conflict detection
against upstream Chat 2, SQLite CVE hardening (3.50.3)
- Theme engine with ten built-in themes plus JSON authoring format (engine v1.1.0, catalog extended in v1.2.3, including
CVD-safe Hellion Spectrum; Synthwave Sunset in v1.4.1)
- ABGR cache on theme records: `HellionStyle.PushGlobal` reads pre-computed ABGR instead of converting RGBA→ABGR per
slot per frame (v1.4.1, ~13% render-time recovery)
- Standalone cut: namespace `HellionChat.*`, IPC channels `HellionChat.*`, source tree restructure,
conflict detection against upstream Chat 2, SQLite CVE hardening (3.50.3)
- Theme engine with ten built-in themes plus JSON authoring format (engine v1.1.0, catalog extended
in v1.2.3, including CVD-safe Hellion Spectrum; Synthwave Sunset in v1.4.1)
- ABGR cache on theme records: `HellionStyle.PushGlobal` reads pre-computed ABGR instead of
converting RGBA→ABGR per slot per frame (v1.4.1, ~13% render-time recovery)
In progress: incremental modernization of UI look and feel beyond the theme engine. What's planned next and what's on
the long-term list is in [`docs/ROADMAP.md`](docs/ROADMAP.md). Concrete scheduled items are also tracked in the
[Gitea issue tracker](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/issues) under the `roadmap` label.
In progress: incremental modernization of UI look and feel beyond the theme engine. What's planned
next and what's on the long-term list is in [`docs/ROADMAP.md`](docs/ROADMAP.md). Concrete scheduled
items are also tracked in the
[Gitea issue tracker](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/issues) under
the `roadmap` label.
### On Release Cadence
Anyone looking at the repo for the first time will notice a lot of releases and a high commit count in a short time.
Both are deliberate. The full reasoning — four factors behind it — is in
Anyone looking at the repo for the first time will notice a lot of releases and a high commit count
in a short time. Both are deliberate. The full reasoning — four factors behind it — is in
[`docs/LEARNING-JOURNEY.md`](docs/LEARNING-JOURNEY.md), section "How I release this fast".
---
## Community & Support
- **Hellion Forge Discord** (community for HellionChat and other Hellion Online Media plugins and tools):
[discord.gg/X9V7Kcv5gR](https://discord.gg/X9V7Kcv5gR)
- **Hellion Forge Discord** (community for HellionChat and other Hellion Online Media plugins and
tools): [discord.gg/X9V7Kcv5gR](https://discord.gg/X9V7Kcv5gR)
- Bug reports and feature requests:
[Gitea Issues](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/issues)
- Discord DM: `@j.j_kazama`
@@ -345,25 +363,26 @@ Both are deliberate. The full reasoning — four factors behind it — is in
## License
EUPL-1.2 (same license as upstream Chat 2). Full text in [LICENSE](LICENSE), copyright notes with dual-holder block in
[COPYRIGHT](COPYRIGHT), personal acknowledgement to the upstream authors in [NOTICE.md](NOTICE.md).
EUPL-1.2 (same license as upstream Chat 2). Full text in [LICENSE](LICENSE), copyright notes with
dual-holder block in [COPYRIGHT](COPYRIGHT), personal acknowledgement to the upstream authors in
[NOTICE.md](NOTICE.md).
© 20232026 the Chat 2 authors ([Infi](https://github.com/Infiziert90), [Anna](https://github.com/anna-is-cute), and
upstream contributors) for the engine, IPC, and storage layer. © 2026 Hellion Online Media for the Hellion Chat
extensions.
© 20232026 the Chat 2 authors ([Infi](https://github.com/Infiziert90),
[Anna](https://github.com/anna-is-cute), and upstream contributors) for the engine, IPC, and storage
layer. © 2026 Hellion Online Media for the Hellion Chat extensions.
### Acknowledgments
- **[Infi](https://github.com/Infiziert90) and [Anna](https://github.com/anna-is-cute) (ascclemens)** for the Chat 2
engine, without which this fork would not exist.
- **[Infi](https://github.com/Infiziert90) and [Anna](https://github.com/anna-is-cute)
(ascclemens)** for the Chat 2 engine, without which this fork would not exist.
- **Dalamud team** for the plugin framework.
- **Chat 2 Crowdin community** for the upstream string translations (see Settings → Info → "Chat 2 community
translators").
- **Chat 2 Crowdin community** for the upstream string translations (see Settings → Info → "Chat 2
community translators").
### FFXIV Disclaimer
FINAL FANTASY XIV © SQUARE ENIX CO., LTD. All rights reserved. Hellion Chat is an unofficial, fan-made plugin and is not
affiliated with, supported by, sponsored by, or approved by Square Enix.
FINAL FANTASY XIV © SQUARE ENIX CO., LTD. All rights reserved. Hellion Chat is an unofficial,
fan-made plugin and is not affiliated with, supported by, sponsored by, or approved by Square Enix.
### AI Assistance
@@ -373,7 +392,8 @@ See [`docs/AI_DISCLOSURE.md`](docs/AI_DISCLOSURE.md) for the pair-level disclosu
## Project Documents
Standard repository documents live in the repo root; deeper documentation lives under [`docs/`](docs/).
Standard repository documents live in the repo root; deeper documentation lives under
[`docs/`](docs/).
### Repo Root
@@ -404,5 +424,5 @@ Standard repository documents live in the repo root; deeper documentation lives
---
Developed under **Hellion Forge**, the modding and plugin branch of **Hellion Online Media** | Bad Harzburg |
[hellion-media.de](https://hellion-media.de)
Developed under **Hellion Forge**, the modding and plugin branch of **Hellion Online Media** | Bad
Harzburg | [hellion-media.de](https://hellion-media.de)