chore(release): 2.0.4 -- shorter description, webinterface strings out
Security Scan (reusable) / Security Scan (push) Successful in 20s
Security / scan (push) Successful in 20s
Forge Announce / Post changelog to Hellion Forge (push) Successful in 12s
Build / Build (Release) (push) Successful in 29s
Release / Build and attach release ZIP (push) Successful in 29s

Housekeeping only, no behaviour change.

The v2.0.0 changelog block moves out of the plugin manifest to stay
inside the four-subblock limit; it remains in docs/CHANGELOG.md.
This commit is contained in:
2026-08-20 18:21:59 +02:00
parent 63c68327dd
commit 522545c7a2
6 changed files with 47 additions and 42 deletions
+8
View File
@@ -0,0 +1,8 @@
---
subtitle: "Aufgeräumt: Beschreibung und tote Strings"
versionsnatur: "Aufräum-Release"
---
Am Verhalten des Plugins ändert sich nichts. Zwei Dinge, die überfällig waren.
- **Die Beschreibung im Plugin-Installer war zu lang und an einer Stelle schlicht falsch.** Sie lief über 908 Zeichen und fing damit an, eine Kategorie zu nennen, statt zu sagen was das Plugin tut. Ausserdem stand dort 24 Sprachen, es sind 25. Und die beiden Manifeste trugen unterschiedliche Kurzbeschreibungen, in der Plugin-Liste stand also ein anderer Satz als in den Details. Jetzt sind es 367 Zeichen, überall dieselben.
- **30 Übersetzungsschlüssel für das Webinterface sind raus.** Das Feature selbst, seine HTTP-Routen und sein Frontend haben den Code im Mai verlassen, die Texte blieben in allen 25 Sprachen liegen, dazu je eine erzeugte Property. Vor dem Löschen wurde jeder Schlüssel einzeln gegen das gesamte Repository geprüft.
+1 -1
View File
@@ -1,7 +1,7 @@
<Project Sdk="Dalamud.NET.Sdk/15.0.0"> <Project Sdk="Dalamud.NET.Sdk/15.0.0">
<PropertyGroup> <PropertyGroup>
<!-- Independent versioning; see yaml changelog for upstream Chat 2 base --> <!-- Independent versioning; see yaml changelog for upstream Chat 2 base -->
<Version>2.0.3</Version> <Version>2.0.4</Version>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<!-- Use lock file to pin exact versions --> <!-- Use lock file to pin exact versions -->
+9 -33
View File
@@ -21,6 +21,15 @@ tags:
- Replacement - Replacement
- Privacy - Privacy
changelog: |- changelog: |-
**v2.0.4 — Housekeeping (2026-08-20)**
Nothing changes in how the plugin behaves. Two pieces of tidying that were overdue.
- **The installer description was long, and one line of it was wrong.** It ran to 908 characters and opened by naming a category instead of saying what the plugin does. It also claimed 24 interface languages when there are 25, and the two manifests carried different one-line summaries, so the store listing and the plugin details showed different sentences.
- **30 translation keys for the webinterface are gone.** That feature, its HTTP routes and its frontend left the code in May; the strings stayed behind in all 25 languages, along with a generated property for each. Every key was checked against the whole repository before anything was removed.
---
**v2.0.3 — Pop-out context menu, screenshot mode (2026-08-20)** **v2.0.3 — Pop-out context menu, screenshot mode (2026-08-20)**
- **The context menu never opened in a pop-out window.** Right-clicking a name or an item there did nothing at all. Every chat surface shares one popup state, and whichever window drew first cleared the menu it had not opened before the pop-out got its turn. The menu now stays with the window the click came from. - **The context menu never opened in a pop-out window.** Right-clicking a name or an item there did nothing at all. Every chat surface shares one popup state, and whichever window drew first cleared the menu it had not opened before the pop-out got its turn. The menu now stays with the window the click came from.
@@ -44,37 +53,4 @@ changelog: |-
- MessagePack raised from 3.1.4 to 3.1.7. It handles the payload serialisation behind the message database. The advisories are a recursion-depth limit in `Skip` and a fault in LZ4 decompression, both reachable only through crafted input — this plugin writes and reads its own bytes in a local file, so the practical exposure needs someone who already has write access to it. Lifted anyway, because it costs nothing. - MessagePack raised from 3.1.4 to 3.1.7. It handles the payload serialisation behind the message database. The advisories are a recursion-depth limit in `Skip` and a fault in LZ4 decompression, both reachable only through crafted input — this plugin writes and reads its own bytes in a local file, so the practical exposure needs someone who already has write access to it. Lifted anyway, because it costs nothing.
- The release workflow publishes through the Gitea API directly. The 2.0.0 build succeeded and then failed to attach its own archive, which is why that release had to be completed by hand. - The release workflow publishes through the Gitea API directly. The 2.0.0 build succeeded and then failed to attach its own archive, which is why that release had to be completed by hand.
---
**v2.0.0 — Rebuilt, Repaired, Reset (2026-08-19)**
Nine development cycles in one release. Everything built as v1.6.0 through v1.15.0 ships here; those versions were never published on their own.
**This update resets your settings.** Nine cycles of rebuilding left saved values pointing at surfaces that no longer exist, and starting over is the only way to be sure every install is on the same defaults. **Your message history is untouched** — it lives in a separate database. Your old settings are kept next to the config file as `HellionChat.json.pre-2.0.0.bak`.
Fixed, and several of these lost data or hid it:
- Retroactive cleanup could never be applied at all. The preview took the database lock itself and that counted as a change, so every preview went stale the instant it finished and the apply button never appeared.
- Compacting the database ran against an open reader and failed, after which the plugin reported that nothing had been deleted — while everything had.
- Deleting messages left them in the search index, so search kept returning rows that were already gone.
- Pinned tell tabs came up empty for a whole session: the history query ran at plugin start, before any character is logged in, and never tried again.
- Export wrote invalid JSON where a setting value was involved, and a byte-order mark that strict parsers reject.
- A pop-out with its title bar switched on could not be closed, and a tell from a popped-out partner hijacked the main window's active tab.
- One third-party emote service started returning 403, and that response took all 65 working global emotes down with it on every start.
- The GDPR notice for the full-history profile had been translated into 25 languages and shown nowhere since May.
Changed, and one of these changes what gets stored:
- **The channel grid is now authoritative.** Until now the unknown-channel failsafe was applied to known channels too, so a channel you had unticked was still being written while that failsafe was on. If that was you, this release stores less than before. Nothing already in the database is touched.
- Every window is drawn by the plugin rather than by ImGui defaults, and they share one visual language: structure carried by typography, a surface on anything you can press, and colours measured against what sits behind them.
- Typography has named roles — sender, body and timestamp mean the same thing everywhere, timestamps sit in their own column, system messages are italic.
- Export, the tab editor, database maintenance and pinning had lost their entry points during the rebuild and are reachable again.
- Screenshot mode reached one of four surfaces that draw a tab name. It reaches all four now.
Removed: six settings that had a control and a saved value but no reader anywhere in the plugin; a per-tab regex filter the game's own blackword filter covers; and a wizard checkbox that was collected, reported as applied and never read.
New: an Emote tab in the default layout, local and server clocks in the status bar, a screenshot mode reachable from the input row, `/hellion wizard` to reopen the setup wizard, a style lab under `/hellion lab`, and 25 UI languages with the settings window and wizard fully covered.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). The two codebases have diverged far enough that they no longer line up.
Earlier history: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases Earlier history: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases
+2 -2
View File
@@ -2,7 +2,7 @@
[![Build](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/actions/workflows/build.yml/badge.svg?branch=main)](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/actions/workflows/build.yml) [![Build](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/actions/workflows/build.yml/badge.svg?branch=main)](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/actions/workflows/build.yml)
[![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](LICENSE) [![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](LICENSE)
[![Latest release](https://img.shields.io/badge/release-v2.0.3-brightgreen)](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/latest) [![Latest release](https://img.shields.io/badge/release-v2.0.4-brightgreen)](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/latest)
[![Dalamud API](https://img.shields.io/badge/Dalamud-API_15-purple)](https://github.com/goatcorp/Dalamud) [![Dalamud API](https://img.shields.io/badge/Dalamud-API_15-purple)](https://github.com/goatcorp/Dalamud)
[![.NET](https://img.shields.io/badge/.NET-10.0-512BD4)](https://dotnet.microsoft.com/) [![.NET](https://img.shields.io/badge/.NET-10.0-512BD4)](https://dotnet.microsoft.com/)
[![FFXIV](https://img.shields.io/badge/FFXIV-Dawntrail-c3a37f)](https://www.finalfantasyxiv.com/) [![FFXIV](https://img.shields.io/badge/FFXIV-Dawntrail-c3a37f)](https://www.finalfantasyxiv.com/)
@@ -11,7 +11,7 @@
<img src="docs/images/hellion-forge.png" alt="Hellion Forge" width="180" /> <img src="docs/images/hellion-forge.png" alt="Hellion Forge" width="180" />
</p> </p>
**Version 2.0.3** — Privacy-first chat plugin for FINAL FANTASY XIV / Dalamud, originally **Version 2.0.4** — Privacy-first chat plugin for FINAL FANTASY XIV / Dalamud, originally
forked from [Chat 2](https://github.com/Infiziert90/ChatTwo) (EUPL-1.2). forked from [Chat 2](https://github.com/Infiziert90/ChatTwo) (EUPL-1.2).
Hellion Chat is a privacy-first chat plugin that began as a fork of Chat 2. The core it grew from Hellion Chat is a privacy-first chat plugin that began as a fork of Chat 2. The core it grew from
+21
View File
@@ -11,6 +11,27 @@ releases as an overview and links to the release pages for details.
--- ---
## [2.0.4] — 2026-08-20
Housekeeping. Nothing changes in how the plugin behaves.
### Changed
- The installer description is shorter and leads with what the plugin does
rather than what category it belongs to: 367 characters instead of 908. Two
things in it were also wrong rather than merely long — it claimed 24
interface languages when there are 25, and `repo.json` and the plugin yaml
carried different one-line summaries, so the store listing and the plugin
details showed different sentences.
### Removed
- 30 translation keys belonging to the webinterface, across all 25 languages,
plus the generated property for each. The feature itself, its HTTP routes and
its frontend went out in May; only the strings were left behind. Every key was
matched on word boundaries against the whole repository before removal, and
the build proves the rest: a key still in use would have failed to compile.
## [2.0.3] — 2026-08-20 ## [2.0.3] — 2026-08-20
### Fixed ### Fixed
+6 -6
View File
@@ -3,7 +3,7 @@
"Author": "Jon Kazama (Hellion Forge)", "Author": "Jon Kazama (Hellion Forge)",
"Name": "Hellion Chat", "Name": "Hellion Chat",
"InternalName": "HellionChat", "InternalName": "HellionChat",
"AssemblyVersion": "2.0.3.0", "AssemblyVersion": "2.0.4.0",
"Description": "A chat window that stores your own conversations and nothing else. Public chat, NPC dialogue, system messages and battle logs stay out of the database until you switch them on.\n\nRetention per channel, retroactive wipe, export to Markdown, JSON or CSV. Setup wizard with four profiles. 25 languages. Its own config and database.\n\nSupport: https://discord.gg/X9V7Kcv5gR", "Description": "A chat window that stores your own conversations and nothing else. Public chat, NPC dialogue, system messages and battle logs stay out of the database until you switch them on.\n\nRetention per channel, retroactive wipe, export to Markdown, JSON or CSV. Setup wizard with four profiles. 25 languages. Its own config and database.\n\nSupport: https://discord.gg/X9V7Kcv5gR",
"ApplicableVersion": "any", "ApplicableVersion": "any",
"RepoUrl": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat", "RepoUrl": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat",
@@ -20,12 +20,12 @@
"CanUnloadAsync": false, "CanUnloadAsync": false,
"LoadPriority": 0, "LoadPriority": 0,
"Punchline": "Chat replacement for FFXIV that keeps your conversations and forgets the rest.", "Punchline": "Chat replacement for FFXIV that keeps your conversations and forgets the rest.",
"Changelog": "**v2.0.3 \u2014 Pop-out context menu, screenshot mode (2026-08-20)**\n\n- **The context menu never opened in a pop-out window.** Right-clicking a name or an item there did nothing at all. Every chat surface shares one popup state, and whichever window drew first cleared the menu it had not opened before the pop-out got its turn. The menu now stays with the window the click came from.\n- **Screenshot mode could not be turned off.** It is a saved setting, but neither of its two toggles wrote the change to the config file, so switching it off never survived a reload and the mode came back on at every plugin load. Both toggles save now. If it is stuck on for you, one click off is enough.\n- **Text the game colours itself could render invisible.** Some of those colours arrive without an alpha byte, and the byte order swap then left them fully transparent.\n\n---\n\n**v2.0.2 — Emotes out, placeholders fixed (2026-08-19)**\n\n- **BetterTTV emote support is gone.** Its shared-emote endpoint went behind authentication, and that was where nearly all of them came from — what remained was a 65-entry global set, eleven of which are on the known-broken list, so 54 mostly static images from Twitch's early days. Exactly one was animated, and that one wanted 492 frames and 37 MB of video memory. The plugin now makes no outbound network calls at all. Messages stored with emotes still read fine; they show the code that was typed.\n- **Five settings descriptions printed `{0}` instead of the plugin name.** All 25 languages were affected, English included — it just hid better there, since \"Hide {0} during cutscenes\" still scans as a sentence while German puts the placeholder first. A test now walks every resource string with a placeholder and fails if one reaches a widget unformatted.\n- **New preview images.** The ones in the plugin installer were from 8 May and showed the interface as it looked before any of the window rebuilds.", "Changelog": "**v2.0.4 \u2014 Housekeeping (2026-08-20)**\n\nNothing changes in how the plugin behaves. Two pieces of tidying that were overdue.\n\n- **The installer description was long, and one line of it was wrong.** It ran to 908 characters and opened by naming a category instead of saying what the plugin does. It also claimed 24 interface languages when there are 25, and the two manifests carried different one-line summaries, so the store listing and the plugin details showed different sentences.\n- **30 translation keys for the webinterface are gone.** That feature, its HTTP routes and its frontend left the code in May; the strings stayed behind in all 25 languages, along with a generated property for each. Every key was checked against the whole repository before anything was removed.\n\n---\n\n**v2.0.3 \u2014 Pop-out context menu, screenshot mode (2026-08-20)**\n\n- **The context menu never opened in a pop-out window.** Right-clicking a name or an item there did nothing at all. Every chat surface shares one popup state, and whichever window drew first cleared the menu it had not opened before the pop-out got its turn. The menu now stays with the window the click came from.\n- **Screenshot mode could not be turned off.** It is a saved setting, but neither of its two toggles wrote the change to the config file, so switching it off never survived a reload and the mode came back on at every plugin load. Both toggles save now. If it is stuck on for you, one click off is enough.\n- **Text the game colours itself could render invisible.** Some of those colours arrive without an alpha byte, and the byte order swap then left them fully transparent.\n\n---\n\n**v2.0.2 — Emotes out, placeholders fixed (2026-08-19)**\n\n- **BetterTTV emote support is gone.** Its shared-emote endpoint went behind authentication, and that was where nearly all of them came from — what remained was a 65-entry global set, eleven of which are on the known-broken list, so 54 mostly static images from Twitch's early days. Exactly one was animated, and that one wanted 492 frames and 37 MB of video memory. The plugin now makes no outbound network calls at all. Messages stored with emotes still read fine; they show the code that was typed.\n- **Five settings descriptions printed `{0}` instead of the plugin name.** All 25 languages were affected, English included — it just hid better there, since \"Hide {0} during cutscenes\" still scans as a sentence while German puts the placeholder first. A test now walks every resource string with a placeholder and fails if one reaches a widget unformatted.\n- **New preview images.** The ones in the plugin installer were from 8 May and showed the interface as it looked before any of the window rebuilds.",
"AcceptsFeedback": true, "AcceptsFeedback": true,
"DownloadLinkInstall": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v2.0.3/latest.zip", "DownloadLinkInstall": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v2.0.4/latest.zip",
"DownloadLinkUpdate": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v2.0.3/latest.zip", "DownloadLinkUpdate": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v2.0.4/latest.zip",
"DownloadLinkTesting": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v2.0.3/latest.zip", "DownloadLinkTesting": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v2.0.4/latest.zip",
"TestingAssemblyVersion": "2.0.3.0", "TestingAssemblyVersion": "2.0.4.0",
"IconUrl": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/icon.png", "IconUrl": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/icon.png",
"ImageUrls": [ "ImageUrls": [
"https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/chatWindow.png", "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/chatWindow.png",