docs: finish holding the documentation against the code

The first pass through A6 caught the dead file paths and the two GDPR
sections. A review pass walked every remaining claim and found eight
more that no longer describe the plugin.

The privacy notice carries a "last reviewed" stamp and commits, in its
own text, to keeping it accurate for the version it describes. It still
said v1.1.0 after the block that rewrote two of its sections.

Both documents announced two outbound network calls in their opening
paragraphs. The Lodestone font download went away in v1.0.4 and the
notice explains that further down, so the summary contradicted its own
body. There is one call, and it is BetterTTV.

The emote cache is `EmoteCacheV1/`, which the notice states correctly in
one place and wrongly in two others, two lines above a line this cycle
had already touched.

The list of buttons that open a browser named a Ko-fi page that appears
nowhere in the source, an issue tracker and a website that have no
button, and left out the Discord invite and the two Honorific links that
do. In a section that exists precisely to enumerate where a click sends
you, both halves matter.

The README described the pop-out input bar as an opt-in under a settings
section that does not exist. Neither does the switch: PopOutInputEnabled
has no reader, the input bar is unconditional, and the field belongs on
the deletion list. Said plainly instead.

Also: the export narrows by age, not by a date range, in both documents;
the tab is called About, not Info, and it has no per-translator list;
the sections are Colours and Integrations.

Plus a note the users affected by it deserve: the v24 migration switches
the privacy filter off where it was on with nothing selected, and until
now that was only in the log.
This commit is contained in:
2026-08-18 22:14:45 +02:00
parent 06ef0bfb1c
commit 4f4f5fc86a
2 changed files with 38 additions and 23 deletions
+26 -12
View File
@@ -10,7 +10,7 @@ of your data in the GDPR sense, because no data ever leaves your machine on the
infrastructure. Independently of that, the plugin is built so that you can act on your own data the
way the GDPR expects.
Last reviewed: 2026-05-05 (HellionChat v1.1.0).
Last reviewed: 2026-08-18 (HellionChat v1.12.0).
---
@@ -22,8 +22,8 @@ Last reviewed: 2026-05-05 (HellionChat v1.1.0).
no remote update check beyond what Dalamud itself does.
- One outbound network call exists by design: the BetterTTV emote service (for chat emotes). It is
documented in detail below and can be reasoned about per request.
- You can export every message the plugin has stored, in Markdown, JSON or CSV, and you can wipe
stored history per channel, per date range, or globally.
- You can export every message the plugin has stored, in Markdown, JSON or CSV. You can delete it
by channel, by age, or all of it at once.
---
@@ -73,9 +73,10 @@ turn the retention sweep on in the settings. Until then, stored messages stay un
## Outbound network calls
HellionChat makes two kinds of automatic outbound network requests. Both are inherited from upstream
Chat 2 and both are documented here because "GDPR-by-design" means you should know what your client
does on your behalf.
HellionChat makes one kind of automatic outbound network request, inherited from upstream Chat 2 and
documented here because "GDPR-by-design" means you should know what your client does on your behalf.
The second one this section used to list, the Lodestone font download, was removed in v1.0.4 and the
font is bundled instead.
### 1. BetterTTV emote service (`api.betterttv.net`, `cdn.betterttv.net`)
@@ -93,8 +94,8 @@ does on your behalf.
mentioned.
- The individual emote _images_ on `cdn.betterttv.net` are fetched on demand, only when an
incoming chat message contains a token matching one of the cached IDs. These are cached locally
(`emoteCache/`) and reused across sessions.
- **Cached:** Yes, in `emoteCache/`. A given emote is downloaded once per machine and reused.
(`EmoteCacheV1/`) and reused across sessions.
- **Cached:** Yes, in `EmoteCacheV1/`. A given emote is downloaded once per machine and reused.
- **How to opt out:** Turn off the **Show emotes** option in Settings → Chat → Display modes. With it disabled, the
emote cache does not load and no requests to BetterTTV are made for the rest of the session.
- **BetterTTV's privacy policy:** <https://betterttv.com/privacy>
@@ -117,10 +118,11 @@ Cached `FFXIV_Lodestone_SSF.ttf` files left over from earlier versions remain in
### Links you click yourself (no automatic traffic)
The settings panel contains a few buttons that open external pages in your browser when you click
them: the upstream Chat 2 GitHub repo, the upstream maintainers' Ko-fi pages, the HellionChat issue
tracker and `hellion-media.de`. Nothing happens until you click. They are documented here for
completeness, not because they generate background traffic.
The About tab contains buttons that open external pages in your browser when you click them: the
Hellion Forge Discord invite, the HellionChat Gitea repository, its custom-repo manifest, and -- when
the Honorific integration row is shown -- that plugin's GitHub repository and its author's profile.
Nothing happens until you click. They are documented here for completeness, not because they
generate background traffic.
---
@@ -154,6 +156,18 @@ Dalamud file dialog and writes wherever you point it, on your machine. It reads
own connection and writes to a temporary file first, so a run that is interrupted leaves the
previous export in place rather than a file that looks complete and is not.
### A note on the v1.12.0 filter correction
Before v1.12.0 the privacy filter applied the unknown-channel failsafe to known channels as well, so
a channel you had unticked was still stored whenever that failsafe was on -- which is its default.
That is fixed: an unticked channel stays out.
One consequence is worth stating plainly. A configuration that had the filter on, the failsafe on
and no channel selected was storing everything through that hole. The corrected rule would store
nothing at all, so the upgrade turns the filter off for exactly those configurations and writes a
line to `/xllog` saying so. Nothing changes about what is stored; it is now stated where you can see
it. Pick your channels and switch the filter back on whenever you like.
### Right to erasure (Art. 17)
Two options:
+12 -11
View File
@@ -75,10 +75,10 @@ Hellion Chat is developed under **Hellion Forge**, the specialized modding and p
- **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.
Narrow it by channel group, by age in days, or by a substring of the sender's name.
- **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,
[`docs/THIRD_PARTY_NOTICES.md`](docs/THIRD_PARTY_NOTICES.md): what is stored, the single outbound
call that exists and how to switch it off (BetterTTV), an explicit no-telemetry statement,
and the mapping of GDPR rights (Art. 15/17/18/20/21) to concrete plugin functions.
### Onboarding
@@ -99,8 +99,8 @@ Hellion Chat is developed under **Hellion Forge**, the specialized modding and p
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
- **Chat color presets** (v0.6.0) with seven built-in bundles in Settings → Appearance → Colours:
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 UI font** (Inter Light, OFL-1.1) as an optional default instead of the system font.
@@ -118,15 +118,16 @@ Deuteranopia/Protanopia-safe (red-green color blindness) based on the Wong/Okabe
- **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 → About → Extensions → Honorific.
fallback: without Honorific the slot is invisible. Toggle in Settings → About → Integrations.
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 → Window → 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.
- **Input bar in pop-out windows.** Every pop-out 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. It is always on: the `PopOutInputEnabled` switch this once described has no reader and no
control, and is scheduled for removal.
- **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.
@@ -446,8 +447,8 @@ layer. © 2026 Hellion Online Media for the Hellion Chat extensions.
- **[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. The About tab credits the
upstream project; the per-translator list lives here rather than in the client.
### FFXIV Disclaimer