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:
@@ -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).
|
||||
|
||||
© 2023–2026 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.
|
||||
© 2023–2026 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)
|
||||
|
||||
Reference in New Issue
Block a user