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:
+26
-12
@@ -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
|
infrastructure. Independently of that, the plugin is built so that you can act on your own data the
|
||||||
way the GDPR expects.
|
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.
|
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
|
- 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.
|
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
|
- You can export every message the plugin has stored, in Markdown, JSON or CSV. You can delete it
|
||||||
stored history per channel, per date range, or globally.
|
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
|
## Outbound network calls
|
||||||
|
|
||||||
HellionChat makes two kinds of automatic outbound network requests. Both are inherited from upstream
|
HellionChat makes one kind of automatic outbound network request, inherited from upstream Chat 2 and
|
||||||
Chat 2 and both are documented here because "GDPR-by-design" means you should know what your client
|
documented here because "GDPR-by-design" means you should know what your client does on your behalf.
|
||||||
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`)
|
### 1. BetterTTV emote service (`api.betterttv.net`, `cdn.betterttv.net`)
|
||||||
|
|
||||||
@@ -93,8 +94,8 @@ does on your behalf.
|
|||||||
mentioned.
|
mentioned.
|
||||||
- The individual emote _images_ on `cdn.betterttv.net` are fetched on demand, only when an
|
- 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
|
incoming chat message contains a token matching one of the cached IDs. These are cached locally
|
||||||
(`emoteCache/`) and reused across sessions.
|
(`EmoteCacheV1/`) and reused across sessions.
|
||||||
- **Cached:** Yes, in `emoteCache/`. A given emote is downloaded once per machine and reused.
|
- **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
|
- **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.
|
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>
|
- **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)
|
### Links you click yourself (no automatic traffic)
|
||||||
|
|
||||||
The settings panel contains a few buttons that open external pages in your browser when you click
|
The About tab contains buttons that open external pages in your browser when you click them: the
|
||||||
them: the upstream Chat 2 GitHub repo, the upstream maintainers' Ko-fi pages, the HellionChat issue
|
Hellion Forge Discord invite, the HellionChat Gitea repository, its custom-repo manifest, and -- when
|
||||||
tracker and `hellion-media.de`. Nothing happens until you click. They are documented here for
|
the Honorific integration row is shown -- that plugin's GitHub repository and its author's profile.
|
||||||
completeness, not because they generate background traffic.
|
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
|
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.
|
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)
|
### Right to erasure (Art. 17)
|
||||||
|
|
||||||
Two options:
|
Two options:
|
||||||
|
|||||||
@@ -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
|
- **Retroactive cleanup** with preview and Ctrl+Shift confirmation. Applies the current whitelist to
|
||||||
an existing database, runs in the background, and calls VACUUM afterward.
|
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).
|
- **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
|
- **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
|
[`docs/THIRD_PARTY_NOTICES.md`](docs/THIRD_PARTY_NOTICES.md): what is stored, the single outbound
|
||||||
calls exist (BetterTTV opt-out, Square Enix Lodestone font), an explicit no-telemetry statement,
|
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.
|
and the mapping of GDPR rights (Art. 15/17/18/20/21) to concrete plugin functions.
|
||||||
|
|
||||||
### Onboarding
|
### Onboarding
|
||||||
@@ -99,8 +99,8 @@ Hellion Chat is developed under **Hellion Forge**, the specialized modding and p
|
|||||||
in `HellionStrings.<lang>.resx`.
|
in `HellionStrings.<lang>.resx`.
|
||||||
- **Hellion HUD theme** with cyan-teal accents, slate-violet tabs, and amber highlights for active
|
- **Hellion HUD theme** with cyan-teal accents, slate-violet tabs, and amber highlights for active
|
||||||
states.
|
states.
|
||||||
- **Chat color presets** (v0.6.0) with seven built-in bundles in Settings → Appearance → Chat
|
- **Chat color presets** (v0.6.0) with seven built-in bundles in Settings → Appearance → Colours:
|
||||||
Colors: Classic (Chat 2 default), High Contrast, Pastel, Dark Mode Tuned, Hellion (brand), plus
|
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.
|
bonus moods Night Blue and Indigo Violet. One-click apply, battle channels remain untouched.
|
||||||
- **Window opacity slider** for combat-friendly transparency.
|
- **Window opacity slider** for combat-friendly transparency.
|
||||||
- **Bundled UI font** (Inter Light, OFL-1.1) as an optional default instead of the system font.
|
- **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
|
- **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
|
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
|
First cycle of a multi-stage plugin integration roadmap (context menu, NotificationMaster, RP
|
||||||
status, ExtraChat, and XIVIM to follow).
|
status, ExtraChat, and XIVIM to follow).
|
||||||
|
|
||||||
### Pop-Out Convenience (v0.6.0)
|
### Pop-Out Convenience (v0.6.0)
|
||||||
|
|
||||||
- **Input bar in pop-out windows** as a global opt-in in Settings → Window → Window Frame. When
|
- **Input bar in pop-out windows.** Every pop-out has a compact input at the bottom with a
|
||||||
active, every pop-out window has a compact input at the bottom with a channel-colored icon button
|
channel-colored icon button and text field. No more switching back to the main window for a quick
|
||||||
and text field. No more switching back to the main window for a quick reply.
|
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
|
- **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
|
globally like in the main window (FFXIV channel API), but half-typed input doesn't collide between
|
||||||
the main window and pop-outs.
|
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)
|
- **[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.
|
(ascclemens)** for the Chat 2 engine, without which this fork would not exist.
|
||||||
- **Dalamud team** for the plugin framework.
|
- **Dalamud team** for the plugin framework.
|
||||||
- **Chat 2 Crowdin community** for the upstream string translations (see Settings → Info → "Chat 2
|
- **Chat 2 Crowdin community** for the upstream string translations. The About tab credits the
|
||||||
community translators").
|
upstream project; the per-translator list lives here rather than in the client.
|
||||||
|
|
||||||
### FFXIV Disclaimer
|
### FFXIV Disclaimer
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user