name: Hellion Chat author: JonKazama-Hellion punchline: Chat 2 with privacy controls aligned to EU, US and JP rules description: |- Hellion Chat is built on top of Chat 2 with one removal and a stack of privacy controls on top. Tabs, channel filters, RGB colours, emotes, screenshot mode, IPC integration and the chat replacement window itself work the same. The optional webinterface that Chat 2 ships is intentionally not part of this fork because it serves a different use case from the smaller default footprint Hellion Chat is built around. On top of that, Hellion Chat adds privacy and data-handling controls designed to align with the modern data protection rules that apply across the EU, the United States and Japan. By default only your own conversations are stored; messages from strangers, NPCs and system spam stay out of the database. Retention windows are configurable per channel, history can be wiped retroactively, and stored data can be exported on demand. Key additions on top of Chat 2: - Channel whitelist with a Privacy-First default - Per-channel retention with a daily background sweep - Retroactive cleanup with a Ctrl+Shift confirm - Export to Markdown, JSON or CSV - First-run wizard with three preset profiles (Privacy-First, Casual, Full History) - Bilingual UI (English and German) with live language switching - Independent plugin state — own config file and database directory, so Hellion Chat does not share state with the upstream plugin Based on Chat 2 by Infi and Anna, licensed under EUPL-1.2. repo_url: https://github.com/JonKazama-Hellion/HellionChat accepts_feedback: true icon_url: https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/ChatTwo/images/icon.png image_urls: - https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/ChatTwo/images/chatWindow.png - https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/ChatTwo/images/withSimpleTweaks.png tags: - Social - UI - Chat - Replacement - Privacy changelog: |- **Hellion Chat 0.6.0 — UX Polish: Pop-Out Input + Colour Presets** Two opt-in UX features land in the same release. Existing users see no change unless they enable the new toggles. Pop-out input bar: - New global master switch in Settings → Window → Frame: "Enable input in pop-outs". Default OFF so existing behaviour is preserved - When enabled, every pop-out window grows a compact input bar at the bottom (channel-coloured icon button left, text input right). The auto-translate picker is intentionally not part of the compact bar in v0.6.0 — typical pop-out workflows (FC greeter, club hostess) rarely need it there - Each pop-out keeps an independent text buffer and history cursor; channel changes still apply globally because that is how the FFXIV channel API works - Up/Down navigates a shared input history singleton across the main window and every open pop-out - First pop-out opening after the upgrade shows a one-time hint banner pointing users to the new toggle Chat colour presets: - Seven built-in presets above the per-channel colour list in Settings → Appearance → Colours: ChatTwo Default, High-Contrast, Pastell, Dark-Mode-Tuned, Hellion (brand-coloured, blue/orange Arctic Cyan + Ember Glow palette from the Hellion Online Media branding spec), plus two bonus mood presets — Night Blue (royal blue, classic-cool) and Indigo Violet (royal violet, glitter-mystic) - Apply is immediate and overwrites the channels covered by the preset; battle-channel colours are left alone so combat tuning stays intact Configuration migrates from v10 to v11 with a diagnostic log entry; no data is reset. Bilingual (English/German) for both new sections. Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). **Hellion Chat 0.5.4 — WrapText hardening** Replaces the unsafe pointer-arithmetic in ImGuiUtil.WrapText with Span- and index-based control flow. Closes the persistent CodeQL Critical alert "unvalidated local pointer arithmetic" that kept re-firing on every shape of the previous fix. Hardening: - WrapText now allocates a buffer sized by Encoding.UTF8.GetMaxByteCount via ArrayPool, validates the actual encoded length against that ceiling, and threads the rest of the algorithm through int offsets instead of raw byte pointers - Pointer arithmetic only happens inside two small private helpers (CalcWordWrap and DrawText) that take the pinned base pointer plus int offsets sourced from the plugin's own logic, not from any virtual-method return - Added a 16 KiB upper bound on the buffer rent to prevent a pathological input from triggering an unbounded ArrayPool allocation No user-visible behaviour change. Word-wrap output is byte-identical to v0.5.3. Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). **Hellion Chat 0.5.3 — Pointer arithmetic hardening** Closed CodeQL Critical alert in ImGuiUtil.WrapText by validating the encoded byte buffer length via GetByteCount before pointer arithmetic. Single-fix patch on top of v0.5.2. **Hellion Chat 0.5.2 — Bugfix patch** Auto-Tell-Tabs history-separator landed below the live tell instead of above (preload now excludes the trigger message). Plugin icon packaging fixed by removing a stale DalamudPackager.targets override that conflicted with the SDK 15 default. Default config aligned to the maintainer's daily driver: HellionThemeWindowOpacity 0.5, Use24HourClock true, Gruppe tab no longer auto-routes /party. Two earlier CodeQL findings closed (workflow permissions, empty-input pointer arithmetic). **Hellion Chat 0.5.1 — Backlog Sweep** Pure hardening and polish. Eight backlog items from the v0.5.0 codebase review collected into one patch: cleanup-preview-stale detection, greeted-tab dim background, Performance HelpMarker consistency, Tabs/Database tab names from HellionStrings, FontChooser framework-thread marshalling, async-void on EmoteCache.LoadData, parameterised SQL via BindIntList helper. --- Earlier history at https://github.com/JonKazama-Hellion/HellionChat/releases.