Compare commits
1
Commits
v2.0.2
...
6e24885241
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e24885241 |
+25
-38
@@ -20,8 +20,8 @@ Last reviewed: 2026-08-18 (HellionChat v1.12.0).
|
||||
`pluginConfigs/HellionChat/` directory.
|
||||
- The plugin does not phone home. No telemetry, no analytics, no crash reporter, no usage counter,
|
||||
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.
|
||||
- As of v2.0.2 the plugin makes **no outbound network requests at all**. The one that existed, the
|
||||
BetterTTV emote service, was removed along with the feature it served.
|
||||
- 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.
|
||||
|
||||
@@ -42,8 +42,9 @@ HellionChat keeps three kinds of state on your machine, all under
|
||||
ExtraChat. Public chat, NPC dialogue, system messages and battle logs are dropped on the storage
|
||||
layer and never written to disk.
|
||||
|
||||
3. **Cached emote images** (`EmoteCacheV1/` directory). Image files downloaded from BetterTTV when
|
||||
an emote appears in a message you receive. See "Outbound network calls" below.
|
||||
Earlier versions kept a third item here, an `EmoteCacheV1/` directory of images downloaded from
|
||||
BetterTTV. Nothing writes to it as of v2.0.2. If you used a version before that, the directory is
|
||||
still on disk and can be deleted by hand; the plugin no longer reads or creates it.
|
||||
|
||||
There is no shared state with the upstream Chat 2 plugin. `pluginConfigs/HellionChat/` is
|
||||
independent from `pluginConfigs/ChatTwo/`.
|
||||
@@ -73,35 +74,23 @@ turn the retention sweep on in the settings. Until then, stored messages stay un
|
||||
|
||||
## Outbound network calls
|
||||
|
||||
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.
|
||||
**None.** As of v2.0.2 the plugin makes no automatic outbound network requests of any kind. Both
|
||||
calls this section used to describe are gone, and the section is kept so the claim can be checked
|
||||
against what it replaced rather than simply asserted.
|
||||
|
||||
### 1. BetterTTV emote service (`api.betterttv.net`, `cdn.betterttv.net`)
|
||||
### 1. BetterTTV emote service (removed in v2.0.2)
|
||||
|
||||
- **What it does:** When a chat message arrives that references a BetterTTV emote, the plugin asks
|
||||
the BetterTTV API for the emote metadata and downloads the image from the BetterTTV CDN to display
|
||||
it inline.
|
||||
- **What is sent:** A standard HTTPS GET request. Your IP address reaches BetterTTV (unavoidable for
|
||||
any HTTPS request); the request itself contains no identifying user data, no character name, no
|
||||
message text. Only the emote ID being looked up is in the URL path.
|
||||
- **When it triggers:**
|
||||
- The emote _list_ (global emotes plus the top-1500 community emotes over fifteen API pages) is
|
||||
fetched from `api.betterttv.net` once per session at plugin startup, provided the **Show
|
||||
emotes** option is on. This first list-fetch happens before any chat message has arrived.
|
||||
BetterTTV's edge therefore sees your IP as soon as the plugin loads, not only after an emote is
|
||||
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
|
||||
(`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>
|
||||
Until v2.0.2 the plugin fetched an emote list from `api.betterttv.net` once per session at startup,
|
||||
and individual images from `cdn.betterttv.net` on demand, caching them in `EmoteCacheV1/`. The
|
||||
startup fetch meant BetterTTV's edge saw your IP as soon as the plugin loaded, whether or not an
|
||||
emote ever appeared in your chat. A setting could switch it off, but it was on by default.
|
||||
|
||||
Source: `HellionChat/EmoteCache.cs`.
|
||||
The feature was removed rather than defaulted off: BetterTTV moved its shared-emote endpoint behind
|
||||
authentication, which left 54 mostly static images from a set of 65, and that is not worth a
|
||||
connection nobody asked for. The download path, the cache directory and the renderer are gone from
|
||||
the source.
|
||||
|
||||
Messages already stored with emotes in them remain readable and show the code that was typed.
|
||||
|
||||
### 2. Square Enix Lodestone font (removed in v1.0.4)
|
||||
|
||||
@@ -204,13 +193,12 @@ messages. Existing data needs the retroactive cleanup to apply retroactively, by
|
||||
|
||||
| Party | Why they appear | What reaches them | Their privacy policy |
|
||||
| ---------------------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------- |
|
||||
| BetterTTV (NightDev LLC) | Optional emote rendering | HTTPS request for an emote ID; your IP | <https://betterttv.com/privacy> |
|
||||
| Hellion Forge (Gitea, self-hosted by Hellion Online Media) | Plugin distribution via custom repo, issue tracker | Whatever the Gitea instance sees from any HTTPS request to a public repo | <https://hellion-media.de/datenschutz> |
|
||||
| Dalamud / XIVLauncher (goatcorp) | Plugin loader, font subsystem, repo polling | Whatever Dalamud reports for itself; out of HellionChat's scope | <https://github.com/goatcorp/Dalamud> |
|
||||
|
||||
The Hellion Forge Gitea instance and the Dalamud/XIVLauncher loader are unavoidable for anyone using
|
||||
HellionChat through Dalamud at all. BetterTTV is the only third party HellionChat introduces on top
|
||||
of that baseline, and it is opt-out via settings.
|
||||
Both are unavoidable for anyone using HellionChat through Dalamud at all. Since v2.0.2 the plugin
|
||||
introduces no third party on top of that baseline: BetterTTV was the only one, and it left with the
|
||||
emote feature.
|
||||
|
||||
---
|
||||
|
||||
@@ -223,11 +211,10 @@ plugin pulls in:
|
||||
- `Microsoft.Data.Sqlite`: local SQLite access, no network.
|
||||
- `morelinq`: LINQ helpers, no network.
|
||||
- `Pidgin`: parser combinators, no network.
|
||||
- `SixLabors.ImageSharp`: image decoding (used for the BetterTTV emote pipeline), no network on its
|
||||
own.
|
||||
- `SixLabors.ImageSharp`: image decoding (icon handling), no network on its own.
|
||||
|
||||
The single network call listed under "Outbound network calls" is written directly in HellionChat's
|
||||
own source, not delegated to a dependency.
|
||||
No dependency opens a connection on the plugin's behalf, and since v2.0.2 the plugin opens none
|
||||
itself either.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -84,9 +84,9 @@ Hellion Chat is developed under **Hellion Forge**, the specialized modding and p
|
||||
- **Export** to Markdown, JSON, or CSV via the Dalamud file dialog (GDPR Art. 15 right of access).
|
||||
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, 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.
|
||||
[`docs/THIRD_PARTY_NOTICES.md`](docs/THIRD_PARTY_NOTICES.md): what is stored, an explicit
|
||||
no-telemetry statement, and the mapping of GDPR rights (Art. 15/17/18/20/21) to concrete plugin
|
||||
functions. As of v2.0.2 the plugin makes no outbound network requests at all.
|
||||
|
||||
### Onboarding
|
||||
|
||||
@@ -143,7 +143,6 @@ Deuteranopia/Protanopia-safe (red-green color blindness) based on the Wong/Okabe
|
||||
|
||||
### Stability
|
||||
|
||||
- BetterTTV cache crash fix (null key handling).
|
||||
- Font atlas build fallback for missing system fonts.
|
||||
- Defensive wrapping of all migration operations.
|
||||
|
||||
@@ -272,9 +271,6 @@ Linux / XIVLauncher Core:
|
||||
```bash
|
||||
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 / XIVLauncher:
|
||||
|
||||
@@ -24,7 +24,6 @@ I respond on weekdays during European business hours.
|
||||
influence)
|
||||
- The privacy filter in `MessageStore.cs` and the export pipeline
|
||||
- The configuration migration logic
|
||||
- The `EmoteCache` HTTP client and path handling
|
||||
- The Auto-Tell-Tabs spawn logic and history preload
|
||||
|
||||
### Out of scope
|
||||
|
||||
@@ -12,6 +12,18 @@ be a poor fit for the plugin's privacy-first scope during brainstorming.
|
||||
|
||||
## Released
|
||||
|
||||
**v2.0.2 — Emotes out, placeholders fixed (2026-08-19)** removed BetterTTV emote
|
||||
support entirely. Its shared-emote endpoint went behind authentication and that was
|
||||
where nearly all of them came from; what remained was 54 mostly static images, one
|
||||
of them animated at 492 frames. With it went the plugin's only outbound network
|
||||
call. Also fixed five settings descriptions that printed `{0}` instead of the
|
||||
plugin name, and replaced the preview images, which were older than every cycle in
|
||||
2.0.0.
|
||||
|
||||
**v2.0.1 — Hotfix (2026-08-19)** lifted MessagePack to 3.1.7 and repaired the
|
||||
release workflow, which built the 2.0.0 archive successfully and then failed to
|
||||
attach it.
|
||||
|
||||
**v2.0.0 — Rebuilt, Repaired, Reset (2026-08-19)** ships everything that was
|
||||
developed as v1.6.0 through v1.15.0. Those versions were never published on their
|
||||
own: the whole window layer was being rewritten from ImGui defaults to custom
|
||||
@@ -66,6 +78,25 @@ follows.
|
||||
Native-speaker review of the AI-assisted v1.5.3 translations (13 legacy Crowdin locales) runs in
|
||||
parallel as a continuous correction pass, gathered via the Hellion Forge Discord.
|
||||
|
||||
### Carried over from the 2.0.x cycle
|
||||
|
||||
Small items that surfaced during the 2.0.0 release and were deliberately left for
|
||||
a later pass rather than rushed into a patch:
|
||||
|
||||
- **Comment length.** 47 comment blocks run to 12 lines or more, the longest at 41.
|
||||
The task codes and personal names came out in 2.0.0; trimming the long ones needs
|
||||
judgement rather than a pattern, since several carry reasoning that is now the
|
||||
basis of the style reference.
|
||||
- **Channel names are only translated in 10 of 25 languages.** Spanish had two of
|
||||
three translated and one left in English, which was corrected. The other 15 sit
|
||||
fully in English, which is correct for anyone on an English client — FFXIV ships
|
||||
four client languages — but inconsistent where a language does have its own.
|
||||
- **An orphaned `EmoteCacheV1/` directory** stays on disk for anyone who ran a
|
||||
version before 2.0.2. Nothing reads or writes it. A one-time cleanup on load
|
||||
would be tidier than asking people to delete it by hand.
|
||||
- **`Metrics.Scale` uses the deprecated `ImGuiHelpers.GlobalScaleSafe`**, which is
|
||||
the only compiler warning left in the build.
|
||||
|
||||
---
|
||||
|
||||
## v1.5.6 — Settings Overhaul + Filter & Notification Polish (released 2026-05-23)
|
||||
|
||||
@@ -55,13 +55,12 @@ history, including the close of active cherry-picking in the v1.4.x cycle.
|
||||
## Components that touch the network
|
||||
|
||||
Of everything listed above, **none** of the bundled or NuGet components opens network connections on
|
||||
their own. All outbound traffic is initiated explicitly by HellionChat's own source files and is
|
||||
documented in `PRIVACY.md` under "Outbound network calls":
|
||||
their own, and as of v2.0.2 neither does HellionChat itself. Both calls this list used to name are
|
||||
gone:
|
||||
|
||||
- `HellionChat/EmoteCache.cs` → BetterTTV API + CDN (opt-out via setting)
|
||||
|
||||
The earlier Square Enix Lodestone font download (`FontManager.cs`) was removed in v1.0.4 — it was a
|
||||
leftover from upstream's removed webinterface feature and was no longer consumed.
|
||||
- `HellionChat/EmoteCache.cs` → BetterTTV API + CDN, removed in v2.0.2 along with the emote feature.
|
||||
- The Square Enix Lodestone font download (`FontManager.cs`), removed in v1.0.4 — a leftover from
|
||||
upstream's removed webinterface feature that was no longer consumed.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user