docs: hold the documentation against the code
Every claim in the user-facing docs, checked against what the plugin actually does after A2 to A5. The two GDPR sections in PRIVACY.md describe features that only exist again as of this cycle, so they now name the screens they live on and say what the cleanup does with a channel this build does not recognise. The export sentence promised a date range; the form offers an age in days. PRIVACY.md also named "Show emotes" in Settings as the way to stop the one outbound call the plugin makes. That switch has had no control since May, and a documented opt-out that only exists in the JSON is not an opt-out, so the toggle is back in the chat tab. Both its strings were already translated. Dead paths: the README source tree still listed a file deleted in May, docs/IPC.md cited a window that no longer exists, the first-run wizard pointed at the same removed file, and the theme authoring guide sent readers to a Themes tab that is called Appearance. The changelog lost two double blank lines that were failing markdownlint and holding preflight red. Preflight is green again. Historical documents keep their old paths on purpose: the changelog and the AI disclosure describe what was true when they were written.
This commit is contained in:
@@ -34,6 +34,17 @@ internal sealed class ChatTab
|
|||||||
v => Plugin.Config.Use24HourClock = v
|
v => Plugin.Config.Use24HourClock = v
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// PRIVACY.md names this switch as the way to stop the one outbound
|
||||||
|
// call the plugin makes, and it has had no control since May. A
|
||||||
|
// documented opt-out that only exists in the JSON is not an opt-out.
|
||||||
|
_w.ToggleRow(
|
||||||
|
ImGui.GetID("chat.display.emotes"u8),
|
||||||
|
Language.Options_ShowEmotes_Name,
|
||||||
|
Language.Options_ShowEmotes_Desc,
|
||||||
|
() => Plugin.Config.ShowEmotes,
|
||||||
|
v => Plugin.Config.ShowEmotes = v
|
||||||
|
);
|
||||||
|
|
||||||
// Descriptions move out of the help markers and onto the row. They
|
// Descriptions move out of the help markers and onto the row. They
|
||||||
// were written to be read; a (?) the user has to hover is where an
|
// were written to be read; a (?) the user has to hover is where an
|
||||||
// explanation goes to be ignored.
|
// explanation goes to be ignored.
|
||||||
|
|||||||
@@ -368,7 +368,9 @@ public sealed class FirstRunWizard : Window
|
|||||||
// Mirror the DataAndPrivacy coupling: turning load-previous on
|
// Mirror the DataAndPrivacy coupling: turning load-previous on
|
||||||
// also turns filter-include on (otherwise old messages bypass
|
// also turns filter-include on (otherwise old messages bypass
|
||||||
// the filter chain), and turning filter-include off forces
|
// the filter chain), and turning filter-include off forces
|
||||||
// load-previous off. Same idiom as Ui/SettingsTabs/DataAndPrivacy.cs.
|
// load-previous off. The settings tab that used to hold the same
|
||||||
|
// pairing was removed in May; the coupling lives here alone until
|
||||||
|
// the two checkboxes are reachable again.
|
||||||
if (loadPrev)
|
if (loadPrev)
|
||||||
_state.PendingFilterIncludePreviousSessions = true;
|
_state.PendingFilterIncludePreviousSessions = true;
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-6
@@ -95,7 +95,7 @@ does on your behalf.
|
|||||||
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.
|
(`emoteCache/`) and reused across sessions.
|
||||||
- **Cached:** Yes, in `emoteCache/`. A given emote is downloaded once per machine and reused.
|
- **Cached:** Yes, in `emoteCache/`. A given emote is downloaded once per machine and reused.
|
||||||
- **How to opt out:** Turn off the **Show emotes** option in Settings → Chat. 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>
|
||||||
|
|
||||||
@@ -148,17 +148,27 @@ locally, those rights translate directly into plugin features:
|
|||||||
|
|
||||||
### Right to access (Art. 15)
|
### Right to access (Art. 15)
|
||||||
|
|
||||||
Use the export feature in the plugin settings. You can export to **Markdown**, **JSON** or **CSV**,
|
Settings → Data & Privacy → Export. You can export to **Markdown**, **JSON** or **CSV**, narrowed
|
||||||
filtered by channel, date range or sender substring. The export goes through a Dalamud file dialog
|
by channel group, by age in days, or by a substring of the sender's name. The export goes through a
|
||||||
and writes wherever you point it, on your machine.
|
Dalamud file dialog and writes wherever you point it, on your machine. It reads the database on its
|
||||||
|
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.
|
||||||
|
|
||||||
### Right to erasure (Art. 17)
|
### Right to erasure (Art. 17)
|
||||||
|
|
||||||
Two options:
|
Two options:
|
||||||
|
|
||||||
1. **Targeted deletion.** The "retroactive cleanup" feature lets you apply your current whitelist to
|
1. **Targeted deletion.** Settings → Data & Privacy → Cleanup applies your current channel list to
|
||||||
the existing database. It shows a preview of what will be removed before you confirm with
|
the messages already stored. It shows a preview of what will be removed before you confirm with
|
||||||
Ctrl+Shift, runs in the background, and calls `VACUUM` afterwards to actually shrink the file.
|
Ctrl+Shift, runs in the background, and calls `VACUUM` afterwards to actually shrink the file.
|
||||||
|
Channels this build does not recognise -- ones a game patch added after the plugin was released
|
||||||
|
-- survive the cleanup while "save unknown channel types" is on, for the same reason they are
|
||||||
|
stored in the first place: so the decision about them stays yours.
|
||||||
|
|
||||||
|
The cleanup is only offered when it can mean something. With the privacy filter off, every
|
||||||
|
channel is stored and nothing contradicts your settings; with no channel selected, a cleanup
|
||||||
|
would delete everything, and that is what the clear button is for. Both cases say so instead of
|
||||||
|
offering a button that does not do what it looks like.
|
||||||
2. **Full deletion.** Close the game and delete the `pluginConfigs/HellionChat/` directory. The next
|
2. **Full deletion.** Close the game and delete the `pluginConfigs/HellionChat/` directory. The next
|
||||||
plugin start will produce a fresh, empty configuration.
|
plugin start will produce a fresh, empty configuration.
|
||||||
|
|
||||||
|
|||||||
@@ -169,9 +169,10 @@ HellionChat/
|
|||||||
│ └── Language*.resx # Upstream localization (Crowdin)
|
│ └── Language*.resx # Upstream localization (Crowdin)
|
||||||
├── Ui/
|
├── Ui/
|
||||||
│ ├── FirstRunWizard.cs # Three-profile onboarding
|
│ ├── FirstRunWizard.cs # Three-profile onboarding
|
||||||
│ ├── HellionStyle.cs # ImGui theme push (local and global)
|
│ ├── StyleEngine/ # Tokens, widgets and the theme push
|
||||||
│ └── SettingsTabs/
|
│ ├── Windows/ # Main, settings, popouts, DB viewer
|
||||||
│ └── DataAndPrivacy.cs # Data & Privacy tab (filters, retention, cleanup, export)
|
│ └── Components/Settings/Tabs/
|
||||||
|
│ └── DataPrivacyTab.cs # Data & Privacy tab (filters, retention, cleanup, export)
|
||||||
├── Ipc/ # IPC channels, migrated to HellionChat.* in v1.0.0
|
├── Ipc/ # IPC channels, migrated to HellionChat.* in v1.0.0
|
||||||
├── ChatTwoConflictDetector.cs # Blocks plugin load if upstream Chat 2 is active
|
├── ChatTwoConflictDetector.cs # Blocks plugin load if upstream Chat 2 is active
|
||||||
├── images/
|
├── images/
|
||||||
|
|||||||
@@ -130,7 +130,6 @@ release stays at v1.5.6.
|
|||||||
- Test suite 829 → 892, and `StatusBarCacheTests` is back in the build after sitting in the
|
- Test suite 829 → 892, and `StatusBarCacheTests` is back in the build after sitting in the
|
||||||
exclusion block.
|
exclusion block.
|
||||||
|
|
||||||
|
|
||||||
## [1.9.0] — unreleased (local only)
|
## [1.9.0] — unreleased (local only)
|
||||||
|
|
||||||
Polish, tester-beta preparation and a concurrency hardening pass. **Not published** — the public
|
Polish, tester-beta preparation and a concurrency hardening pass. **Not published** — the public
|
||||||
@@ -164,7 +163,6 @@ the assembly version reads 1.9.0.
|
|||||||
- Removed `DeferredSaveFrames`: the debounce was fully wired but never armed.
|
- Removed `DeferredSaveFrames`: the debounce was fully wired but never armed.
|
||||||
- Test suite 812 → 829, including migration and query-plan coverage.
|
- Test suite 812 → 829, including migration and query-plan coverage.
|
||||||
|
|
||||||
|
|
||||||
## Hellion Chat 1.5.6 — Settings Overhaul + Filter & Notification Polish (2026-05-23)
|
## Hellion Chat 1.5.6 — Settings Overhaul + Filter & Notification Polish (2026-05-23)
|
||||||
|
|
||||||
- Settings window reorganised: ten tabs down to seven (General, Appearance, Chat, Window, Channels, Data & Privacy, About). Each tab now uses collapsible sections grouped by control type. Sections start collapsed every time you open a tab — less noise, easier to find what you need.
|
- Settings window reorganised: ten tabs down to seven (General, Appearance, Chat, Window, Channels, Data & Privacy, About). Each tab now uses collapsible sections grouped by control type. Sections start collapsed every time you open a tab — less noise, easier to find what you need.
|
||||||
|
|||||||
+2
-2
@@ -169,8 +169,8 @@ the same tuple:
|
|||||||
`ChannelType` is the `HellionChat.Code.ChatType` enum value representing the target channel for the
|
`ChannelType` is the `HellionChat.Code.ChatType` enum value representing the target channel for the
|
||||||
current submission. It is sourced from the active tab's `UsedChannel`
|
current submission. It is sourced from the active tab's `UsedChannel`
|
||||||
(`HellionChat/Configuration.cs`), which the plugin keeps in sync by hooking the in-game shell
|
(`HellionChat/Configuration.cs`), which the plugin keeps in sync by hooking the in-game shell
|
||||||
(`HellionChat/GameFunctions/Chat.cs`) and by resolving temporary overrides inside the chat UI
|
(`HellionChat/GameFunctions/Chat.cs`) and by resolving temporary overrides in the input bar
|
||||||
(`HellionChat/Ui/ChatLogWindow.cs:597`). `InputChannel` values are converted into the exported
|
(`HellionChat/Ui/Components/InputBar.cs`). `InputChannel` values are converted into the exported
|
||||||
`ChatType` via `HellionChat/Code/InputChannelExt.ToChatType`.
|
`ChatType` via `HellionChat/Code/InputChannelExt.ToChatType`.
|
||||||
|
|
||||||
### Behavior
|
### Behavior
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
|
|
||||||
## TL;DR
|
## TL;DR
|
||||||
|
|
||||||
1. Open Settings → Themes → **Open themes folder**
|
1. Open Settings → Appearance → **Open themes folder**
|
||||||
2. Copy `example-theme.json` to `<your-name>.json` in the same folder
|
2. Copy `example-theme.json` to `<your-name>.json` in the same folder
|
||||||
3. Edit the file with any text editor
|
3. Edit the file with any text editor
|
||||||
4. Reload the plugin (toggle off/on in `/xlplugins`)
|
4. Reload the plugin (toggle off/on in `/xlplugins`)
|
||||||
5. Your theme appears in the Custom-Themes section in Settings → Themes
|
5. Your theme appears in the Custom-Themes section in Settings → Appearance
|
||||||
|
|
||||||
That's the whole loop. The rest of this document is reference.
|
That's the whole loop. The rest of this document is reference.
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ That's the whole loop. The rest of this document is reference.
|
|||||||
%APPDATA%\XIVLauncher\pluginConfigs\HellionChat\themes\
|
%APPDATA%\XIVLauncher\pluginConfigs\HellionChat\themes\
|
||||||
```
|
```
|
||||||
|
|
||||||
(or the equivalent path on Linux/macOS — Settings → Themes → "Open themes folder" opens it
|
(or the equivalent path on Linux/macOS — Settings → Appearance → "Open themes folder" opens it
|
||||||
directly).
|
directly).
|
||||||
|
|
||||||
Each `*.json` file in this folder is loaded as one theme. The `example-theme.json` that HellionChat
|
Each `*.json` file in this folder is loaded as one theme. The `example-theme.json` that HellionChat
|
||||||
@@ -179,11 +179,11 @@ Check `/xllog` after a plugin reload to see what loaded and what didn't.
|
|||||||
|
|
||||||
1. Edit the JSON, save the file.
|
1. Edit the JSON, save the file.
|
||||||
2. Reload the plugin: `/xlplugins` → toggle HellionChat off, then on.
|
2. Reload the plugin: `/xlplugins` → toggle HellionChat off, then on.
|
||||||
3. Settings → Themes → click your theme card.
|
3. Settings → Appearance → click your theme card.
|
||||||
4. Watch every plugin window (chat, settings, pop-out) and pick something to fix.
|
4. Watch every plugin window (chat, settings, pop-out) and pick something to fix.
|
||||||
5. Tweak. Reload. Repeat.
|
5. Tweak. Reload. Repeat.
|
||||||
|
|
||||||
Tip: the **Settings → Themes** picker shows a mini-mockup per theme — your colors are visible before
|
Tip: the **Settings → Appearance** picker shows a mini-mockup per theme — your colors are visible before
|
||||||
you switch.
|
you switch.
|
||||||
|
|
||||||
## Sharing themes
|
## Sharing themes
|
||||||
|
|||||||
Reference in New Issue
Block a user