From da291b7fcaea19a7fad2bcdcf82e1a51b2e72a24 Mon Sep 17 00:00:00 2001 From: JonKazama-Hellion Date: Wed, 6 May 2026 22:06:58 +0200 Subject: [PATCH] docs: add v1.3.0 release-notes drafts and trim manifest changelog --- HellionChat/HellionChat.yaml | 344 -------------------- docs/release-notes/v1.3.0-forge-post.md | 20 ++ docs/release-notes/v1.3.0-github-release.md | 19 ++ repo.json | 2 +- 4 files changed, 40 insertions(+), 345 deletions(-) create mode 100644 docs/release-notes/v1.3.0-forge-post.md create mode 100644 docs/release-notes/v1.3.0-github-release.md diff --git a/HellionChat/HellionChat.yaml b/HellionChat/HellionChat.yaml index 04b1b15..c2ac11f 100755 --- a/HellionChat/HellionChat.yaml +++ b/HellionChat/HellionChat.yaml @@ -110,350 +110,6 @@ changelog: |- Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). - **Hellion Chat 1.2.1 — Settings Cleanup** - - Re-sorted the settings menu so related options live together. Card names - now describe their contents in plain words — "Theme & Layout", "Fonts & - Colours", "Data Management" — and each card has a short subtitle so you - don't have to guess where a setting lives. No new features, just - housekeeping. - - Card changes: - - - Theme & Layout (new) collects the theme picker, window frame style - (title bar, sidebar, hide button, pop-out title bar) and the timestamp - style options. - - Fonts & Colours (new) is the new home for font choice, font size and - per-channel chat colours. - - Data Management (new) is everything you do with stored messages: - retention windows, cleanup, export, the database viewer and the - advanced shift-click tools. All previously scattered between Privacy - and Database. - - Privacy is now focused on one job: the privacy filter. - - Chat absorbs the Auto-Tell-Tabs history preload slider that used to - live under Privacy. - - General groups the keybind mode under Input where it belongs. - - Cleanup: - - - Removed legacy "Style override" option and the unused style-name field - — both made obsolete by the Themes system in 1.1.0. - - Removed the legacy WindowAlpha slider; if you had it set, the value is - automatically migrated to Theme & Layout → Window Style → Window - Transparency. - - Removed the unused ShowThemeQuickPicker schema field. - - Migration v15 → v16: - - - A backup of your previous config is written to - pluginConfigs/HellionChat.json.pre-v16-backup before the schema change, - in case you want to roll back manually. - - All other settings are preserved unchanged. - - One-time toast on first start if you previously had Style override - enabled — it explains the change. Users who never touched that setting - see no toast. - - Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). - - **Hellion Chat 1.2.0 — Layout Refresh** - - Second UI cycle: tab layouts modernised in both modes, a new - bottom status bar, card-rows as default message render, and - Auto-Tell tabs that you can finally tell apart at a glance. - - Sidebar (icon-only, fixed 44 px): - - - Tab name on hover-tooltip, vertical accent pill on the - active tab, child background no longer paints the top - padding area. - - Per-tab custom icons via Settings → Tabs. - - Auto-Tell tabs: each partner gets a hashed icon (envelope/ - star/heart/bell/bookmark/flag/fire) plus hashed color - (12-color palette) — 84 distinct combinations. - - Pulsing red dot in the top-right of any tab with unread - messages, subtle 2-second sine pulse, respects - Configuration.ReduceMotion. - - Top tabs: - - - Accent underline pill on the active tab instead of the old - background fill. Icon prefixes were attempted but reverted - — Dalamud's default font atlas has no FontAwesome glyphs. - - Bottom status bar (22 px, 1×/sec cached): - - - Active channel with color dot, Privacy-First badge, tab + - message counters, auto-tell counter (hidden at zero), - plugin version (right-aligned, muted). - - Message rendering: - - - Card rows by default — sender header in channel color, body - on its own line, subtle border between cards. - - Compact-Density toggle in Appearance returns the classic - single-line `[HH:mm] Sender: Text` layout. - - Bug fixes from in-game testing: - - - Settings save no longer wipes chat history. Refilter cycle - only runs when filter-relevant settings actually changed - (privacy, channel selection); cosmetic changes leave the - chat intact. Persistent and Auto-Tell tabs both survive. - - Hellion Schrift (Exo 2) no longer blocks font-size - adjustment — 4K users can scale up properly. - - Sidebar buttons align with the first message row, status - bar version slot is no longer clipped. - - Migration v14 → v15: legacy theme fields removed - (HellionThemeEnabled, HellionThemeWindowOpacity). All other - settings preserved. - - Polish (lerps, theme crossfade, header quick-picker) follows - in v1.3.0. - - Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). - - **Hellion Chat 1.1.0 — Theme Foundation** - - First major UI cycle after the standalone v1.0.0 cut. Theme engine, - five built-in themes, customisable JSON themes, modernised settings - layout. - - New themes (Settings → Themes): - - - **Hellion Arctic** — the brand default, Arctic Cyan + Ember Glow - on industrial slate. - - **Chat 2 Klassik** — Steel Blue on neutral grey, eckige Kanten. - The upstream Chat 2 look on the new engine. - - **Event Horizon** — Cosmic Purple on near-black. Deep-space mood. - - **Moonlit Bloom** — Bloom Magenta + Soft Sage on deep-violet - night. - - **Mint Grove** — Mint Green + Honey Amber on deep forest. First - member of the Grove family. - - Theme engine highlights: - - - Slug-based selection in Settings → Themes with mini-mockup - previews per theme. - - Click a theme card and the whole plugin (chat, settings, - pop-outs, viewer) repaints instantly. - - Custom themes via JSON in pluginConfigs/HellionChat/themes/. - Example template seeded on first launch. - - Optional per-theme chat-channel colours. When a theme proposes - its own chat colours and yours differ, a dezent banner offers - Apply / Keep — never auto-overwriting. - - Migration v13 → v14: existing users land on Hellion Arctic. Pick - Chat 2 Klassik to keep the upstream look. - - Settings layout: - - - New card-grid overview on Settings open. Click a card to drill - into the section. - - Breadcrumb back to overview, ESC also returns. - - Detail view drops the redundant tab list — section content uses - the full width. - - Branding: - - - Plugin icon swapped from the ChatTwo derivative to the Hellion - Forge hammer. - - New docs/THEME-AUTHORING.md walks you through writing your own - themes with the Forge logo on top. - - Technical: - - - HellionStyle.PushGlobal is now theme-driven. Configuration. - HellionThemeEnabled is deprecated and will be removed in v1.2.0. - - New ThemeRegistry singleton with LastWriteTime-cached custom- - theme loader. - - 51 local unit tests cover the data model, registry, JSON round- - trip and built-in sanity checks. - - Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). - - **Hellion Chat 1.0.3 — Polish patch** - - - New: optionally hide chat (and every other plugin window) while the - New Game+ menu is open. Toggle in Settings → Window → Frame, default - off. Closing the menu restores all windows. - - New: optionally tint the channel selector button next to the input - field with the currently active channel's colour. Toggle in - Settings → Appearance → Colours, default on. Matches the existing - input-text tint and respects ExtraChat overrides. - - Fix: status, item and other inline hover icons keep their original - aspect ratio. Debuff icons with non-square dimensions are no longer - visually squished into a 32×32 box. - - Diagnostic: hide-state transitions (battle, cutscene, user-hide, - cutscene override) are now logged on Verbose level for easier bug - reports — off by default, enable with `/xllog set HellionChat verbose`. - - Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). - - **Hellion Chat 1.0.1 — Window Position Recovery** - - - Automatic bounds check on the first draw after plugin load. - When the persisted window position has no overlap with the - primary viewport, the window snaps to a safe top-left default. - Helpful after a monitor disconnect, resolution change or - multi-monitor layout switch between sessions. - - New "Reset Window Position" button in Settings → Window → Frame - as a manual escape hatch for edge cases the automatic check - doesn't catch. - - Tested on Linux/Wayland with a hard-cut three-monitor reduction; - window recovers cleanly without manual JSON editing. - - Housekeeping carried over since v1.0.0: - - - Documentation restructured into docs/ folder. New CHANGELOG, - CONTRIBUTORS, LEARNING-JOURNEY and ROADMAP added - - Stale ChatTwo/* paths in repo configs updated to HellionChat/* - - Pidgin parser library bumped from 3.3.0 to 3.5.1 (CIString - Unicode fix relevant for non-ASCII channel/tab names) - - GitHub Actions: actions/setup-dotnet bumped 4 → 5, - github/codeql-action bumped 3 → 4 - - Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). - - **Hellion Chat 1.0.0 — Standalone Major Release** - - First fully standalone release. Internal cleanup plus a sweep of - pre-existing correctness, security, threading and resource-leak - fixes carried over from the upstream codebase. No user action - required — auto-update applies cleanly, configuration and database - paths unchanged. - - Standalone identity: - - - Code namespace consolidated from ChatTwo.* to HellionChat.* across - all source files - - IPC channels migrated from ChatTwo.* to HellionChat.* (6 channels: - Register, Available, Unregister, Invoke, GetChatInputState, - ChatInputStateChanged) — third-party plugins that bound to the old - channels need to be updated; none known at release time - - ImGui popup ID renamed to hellionchat-context-popup - - Repository folder restructured (ChatTwo/ → HellionChat/), all CI - and build paths updated accordingly - - Public-facing descriptions reworded from upstream-fork framing to - standalone framing (Chat 2 attribution preserved per EUPL-1.2) - - Colour preset 'ChatTwo Default' is now 'Klassik (Chat 2 Default)' - - Safety: - - - Plugin now refuses to load when upstream Chat 2 is also active — - bilingual conflict message in EN/DE, throw before any subsystem - initialization, prevents the runtime crash that previously occurred - when both plugins replaced the same chat window in parallel - - SQLite native binary bumped to 3.50.3 (CVE-2025-6965 memory - corruption from aggregate-term overflow, CVE-2025-7709) - - NuGet restore now honors packages.lock.json so transitive - dependencies don't drift between machines or CI runs - - Default tab layout sharpened (one-time tab reset on first start): - - The first-run tab layout is reorganized into five thematic tabs - based on external tester feedback. General contains only Say, - Yell and Shout (immediate-surroundings public chat). System - absorbs the gameplay-event streams (NpcDialogue, Loot, Crafting, - Gathering, PF recruitment pings) and announcement noise - (BattleSystem, FreeCompanyAnnouncement, PvpTeamAnnouncement) - that previously lived in General. FreeCompany, Group and - Linkshell each own their channel set. The static Tell tab is - gone — Auto-Tell-Tabs spawns per-conversation tabs on demand. - The Beginner / Novice-Network preset is no longer added by - default but is still available via Settings, Tabs. - - This is a one-time tab-layout reset for users on config version - 12 or older. Privacy, Retention, Theme and every other setting - is preserved. Your previous tab configuration is written to - pluginConfigs/HellionChat.json.pre-v13-backup so you can restore - it manually if you prefer the old layout. - - Crash-class fixes (formerly latent in upstream): - - - MathUtil.HasOverlap now uses a correct AABB test; identical or - edge-touching rectangles are no longer reported as non-overlapping - - ChatCode.Equals compares fields directly instead of GetHashCode; - removes the hash-collision anti-pattern - - IpcManager.Dispose uses UnregisterAction to match the matching - RegisterAction call; previous mismatch leaked the action - subscription on every plugin reload - - ExtraChat.Dispose now unsubscribes all three IPC subscriptions - (was only the first); leaks closed - - TellTarget.FromTarget guards against a zero IPlayerCharacter.Address - before dereferencing the unsafe Character* cast - - GameFunctions ResolveTextCommandPlaceholderDetour null-checks the - Hook reference instead of using the null-forgiving operator - - Popout.cs and SettingsTabs/Tabs.cs bounds-check list indexing so - a tab drop or empty-worlds list no longer crashes the UI - - Debugger.cs now declares IDisposable so the existing Dispose runs - - Correctness fixes: - - - GlobalParametersCache.GetValue captures Cache into a local before - the bounds check, so a concurrent Refresh can't slip a different - array between check and read - - IconUtil binary search bounds initialized to entries.Length-1 and - reset on redirect-restart; entries.Length==0 short-circuits - - Sheets.WorldsOnDatacenter now compares DataCenter.RowId (was - Region.RowId) so it actually returns same-DC worlds - - Message.cs back-reference loop iterates the processed Sender/Content - properties so chunks added by CheckMessageContent get Message set - - Language.zh-Hans Webinterface_Start_Success corrected to - "网页界面已启动" (was "网页界面已停止") - - Threading and async: - - - AutoTranslate Entries/ValidEntries are now serialized behind a - single lock; the preload worker thread and main thread no longer - race on the underlying dictionary/hash set - - Privacy retention and cleanup workers bound their framework-refresh - waits to 5 seconds with a logged timeout; a hung framework tick can - no longer deadlock the background worker - - Resource handling: - - - EmoteCache reuses the static HttpClient instead of allocating a new - one per call (closed socket leak) - - FontManager wraps HttpClient/HttpResponseMessage in using-blocks - and adds EnsureSuccessStatusCode; failed downloads no longer - silently produce a zero-byte font file - - SearchSelector mixes the row index into the ImGui ID stack so - selectables don't collapse to a single ambiguous ID - - SettingsTabs/Chat blocked-emote add-button now opens its selector - popup on left-click - - Performance: - - - DbViewer text export caches filteredHistory.Count once instead of - re-enumerating the IEnumerable on every batch (O(N) instead of - O(N²) on large histories) - - License attribution (NOTICE.md, COPYRIGHT, THIRD_PARTY_NOTICES.md - and the Credits section in README) is unchanged. - - Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). - - **Hellion Chat 0.6.1 — Pop-Out Discoverability & /tell Auto-Pop-Out** - - - Pop-out button now visible in the chat header (no more hunting - through the right-click menu) - - One-time hint banner explains pop-out tabs and the right-click - shortcut - - New setting: open new /tell tabs directly as pop-out windows - (Settings → Chat → Auto-Tell-Tabs) - - Pop-out input is now enabled by default — closing a pop-out still - returns the tab to the sidebar - - Bugfix: dropping or logging out with an LRU/popped auto-tell tab - now also closes its pop-out window (no more ghost windows) - - Bugfix: dead zone below the chat input bar when the v0.6.0 pop-out - hint banner was visible (also fixed retroactively for the v0.6.0 - banner inside pop-outs) - - Modding & support: join Hellion Forge — https://discord.gg/X9V7Kcv5gR - - Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). - --- Earlier history: https://github.com/JonKazama-Hellion/HellionChat/releases diff --git a/docs/release-notes/v1.3.0-forge-post.md b/docs/release-notes/v1.3.0-forge-post.md new file mode 100644 index 0000000..c6b5d1f --- /dev/null +++ b/docs/release-notes/v1.3.0-forge-post.md @@ -0,0 +1,20 @@ +**Hellion Chat 1.3.0 - Plugin Integrations: Honorific** + +EN - First plugin-integration cycle: +- Honorific titles now show in the chat header above the message log +- Live updates, auto-hide when Honorific is not installed +- New "Integrations" settings tab with status indicator and toggle +- Maintainer attribution buttons for Honorific repo and Caraxi profile +- Coming soon: context menu actions, smart notifications, RP status block, ExtraChat channels, quick DMs + +DE - Erste Plugin-Integration: +- Honorific-Titel jetzt im Chat-Header über dem Message-Log +- Live-Update, Auto-Hide wenn nicht installiert +- Neuer "Integrations"-Settings-Tab mit Status-Indikator und Toggle +- Maintainer-Attribution-Buttons für Honorific-Repo und Caraxi-Profil +- Bald: Kontextmenü, Notifications, RP-Block, ExtraChat, schnelle DMs + +Got integration ideas? Hop on the Hellion Forge. +Idee für eine Integration? Schreib mir auf der Forge. + +Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). diff --git a/docs/release-notes/v1.3.0-github-release.md b/docs/release-notes/v1.3.0-github-release.md new file mode 100644 index 0000000..f41b26d --- /dev/null +++ b/docs/release-notes/v1.3.0-github-release.md @@ -0,0 +1,19 @@ +## Hellion Chat 1.3.0 - Plugin Integrations: Honorific + +First step on the plugin-integration roadmap. HellionChat now +listens to Honorific and shows your custom title in the chat +header. The slot auto-hides when Honorific is not installed, +when no custom title is active, or when you are using the +original FFXIV title. + +- New "Integrations" settings tab +- Honorific integration with auto-detection and live updates +- "Coming soon" preview of the next five planned integrations: + context menu actions, smart notifications, RP status block, + ExtraChat channels, and quick DM compose +- Maintainer attribution buttons for Honorific repo and Caraxi +- New service-class pattern under HellionChat/Integrations/ + +Modding and support: join Hellion Forge - https://discord.gg/X9V7Kcv5gR + +Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2). diff --git a/repo.json b/repo.json index ddaa9a6..5e8a3c5 100644 --- a/repo.json +++ b/repo.json @@ -20,7 +20,7 @@ "CanUnloadAsync": false, "LoadPriority": 0, "Punchline": "Chat replacement with privacy controls aligned to EU, US and JP rules — based on Chat 2 (EUPL-1.2)", - "Changelog": "**Hellion Chat 1.3.0 - Plugin Integrations: Honorific**\n\nFirst step on the plugin-integration roadmap. HellionChat now listens to Honorific and shows your custom title in the chat header. The slot auto-hides when Honorific is not installed, when no custom title is active, or when you are using the original FFXIV title.\n\n- New \"Integrations\" settings tab\n- Honorific integration with auto-detection and live updates\n- \"Coming soon\" preview of the next five planned integrations: context menu actions, smart notifications, RP status block, ExtraChat channels, and quick DM compose\n- Maintainer attribution buttons for Honorific repo and Caraxi\n- New service-class pattern under HellionChat/Integrations/\n\nModding and support: join Hellion Forge - https://discord.gg/X9V7Kcv5gR\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n**Hellion Chat 1.2.3 — Theme Expansion**\n\nFour new built-in themes round out the picker. No engine changes, no settings touched — just more colour options.\n\n- **Night Blue** — Royal Blue on deep marine. Cool tech-dashboard mood, distinct from the brand themes.\n- **Indigo Violet** — Royal Violet on deep indigo with a turquoise-mint counter for an aurora glitter feel. Sister to Event Horizon but darker and denser; the turquoise accent keeps the two distinguishable.\n- **Forge Merchantman** — Patina bronze on workshop slate, warm amber counter. Hellion Forge given a theme of its own — sister to Hellion Arctic but greener and warmer instead of cold cyan.\n- **Hellion Spectrum** — Deuteran/Protan-safe channel colours using Wong/Okabe-Ito palette tones. Channel identity (Tell pink, Yell yellow, Shout orange, Party blue, FC green) is preserved; tones are chosen so each channel stays distinguishable under red-green colour vision deficiency. Covers the ~99% of CVD cases that are red-green.\n\nNo schema bump, no migration. Default theme is unchanged (Hellion Arctic). Existing custom themes keep working.\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n**Hellion Chat 1.2.1 — Settings Cleanup**\n\nRe-sorted the settings menu so related options live together. Card names now describe their contents in plain words — \"Theme & Layout\", \"Fonts & Colours\", \"Data Management\" — and each card has a short subtitle so you don't have to guess where a setting lives. No new features, just housekeeping.\n\nCard changes:\n\n- Theme & Layout (new) collects the theme picker, window frame style (title bar, sidebar, hide button, pop-out title bar) and the timestamp style options.\n- Fonts & Colours (new) is the new home for font choice, font size and per-channel chat colours.\n- Data Management (new) is everything you do with stored messages: retention windows, cleanup, export, the database viewer and the advanced shift-click tools. All previously scattered between Privacy and Database.\n- Privacy is now focused on one job: the privacy filter.\n- Chat absorbs the Auto-Tell-Tabs history preload slider that used to live under Privacy.\n- General groups the keybind mode under Input where it belongs.\n\nCleanup:\n\n- Removed legacy \"Style override\" option and the unused style-name field — both made obsolete by the Themes system in 1.1.0.\n- Removed the legacy WindowAlpha slider; if you had it set, the value is automatically migrated to Theme & Layout → Window Style → Window Transparency.\n- Removed the unused ShowThemeQuickPicker schema field.\n\nMigration v15 → v16:\n\n- A backup of your previous config is written to pluginConfigs/HellionChat.json.pre-v16-backup before the schema change, in case you want to roll back manually.\n- All other settings are preserved unchanged.\n- One-time toast on first start if you previously had Style override enabled — it explains the change. Users who never touched that setting see no toast.\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n**Hellion Chat 1.1.0 — Theme Foundation**\n\nFirst major UI cycle after the standalone v1.0.0 cut. Theme engine, five built-in themes, customisable JSON themes, modernised settings layout.\n\nNew themes (Settings → Themes):\n\n- **Hellion Arctic** — the brand default, Arctic Cyan + Ember Glow on industrial slate.\n- **Chat 2 Klassik** — Steel Blue on neutral grey, eckige Kanten. The upstream Chat 2 look on the new engine.\n- **Event Horizon** — Cosmic Purple on near-black. Deep-space mood.\n- **Moonlit Bloom** — Bloom Magenta + Soft Sage on deep-violet night.\n- **Mint Grove** — Mint Green + Honey Amber on deep forest. First member of the Grove family.\n\nTheme engine highlights:\n\n- Slug-based selection in Settings → Themes with mini-mockup previews per theme.\n- Click a theme card and the whole plugin (chat, settings, pop-outs, viewer) repaints instantly.\n- Custom themes via JSON in pluginConfigs/HellionChat/themes/. Example template seeded on first launch.\n- Optional per-theme chat-channel colours. When a theme proposes its own chat colours and yours differ, a dezent banner offers Apply / Keep — never auto-overwriting.\n- Migration v13 → v14: existing users land on Hellion Arctic. Pick Chat 2 Klassik to keep the upstream look.\n\nSettings layout:\n\n- New card-grid overview on Settings open. Click a card to drill into the section.\n- Breadcrumb back to overview, ESC also returns.\n- Detail view drops the redundant tab list — section content uses the full width.\n\nBranding:\n\n- Plugin icon swapped from the ChatTwo derivative to the Hellion Forge hammer.\n- New docs/THEME-AUTHORING.md walks you through writing your own themes with the Forge logo on top.\n\nTechnical:\n\n- HellionStyle.PushGlobal is now theme-driven. Configuration.HellionThemeEnabled is deprecated and will be removed in v1.2.0.\n- New ThemeRegistry singleton with LastWriteTime-cached custom-theme loader.\n- 51 local unit tests cover the data model, registry, JSON round-trip and built-in sanity checks.\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n**Hellion Chat 1.0.3 — Polish patch**\n\n- New: optionally hide chat (and every other plugin window) while the New Game+ menu is open. Toggle in Settings → Window → Frame, default off. Closing the menu restores all windows.\n- New: optionally tint the channel selector button next to the input field with the currently active channel's colour. Toggle in Settings → Appearance → Colours, default on. Matches the existing input-text tint and respects ExtraChat overrides.\n- Fix: status, item and other inline hover icons keep their original aspect ratio. Debuff icons with non-square dimensions are no longer visually squished into a 32×32 box.\n- Diagnostic: hide-state transitions (battle, cutscene, user-hide, cutscene override) are now logged on Verbose level for easier bug reports — off by default, enable with `/xllog set HellionChat verbose`.\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n**Hellion Chat 1.0.1 — Window Position Recovery**\n\n- Automatic bounds check on the first draw after plugin load. When the persisted window position has no overlap with the primary viewport, the window snaps to a safe top-left default. Helpful after a monitor disconnect, resolution change or multi-monitor layout switch between sessions.\n- New \"Reset Window Position\" button in Settings → Window → Frame as a manual escape hatch for edge cases the automatic check doesn't catch.\n\nTested on Linux/Wayland with a hard-cut three-monitor reduction; window recovers cleanly without manual JSON editing.\n\nHousekeeping carried over since v1.0.0:\n\n- Documentation restructured into docs/ folder. New CHANGELOG, CONTRIBUTORS, LEARNING-JOURNEY and ROADMAP added\n- Stale ChatTwo/* paths in repo configs updated to HellionChat/*\n- Pidgin parser library bumped from 3.3.0 to 3.5.1 (CIString Unicode fix relevant for non-ASCII channel/tab names)\n- GitHub Actions: actions/setup-dotnet bumped 4 → 5, github/codeql-action bumped 3 → 4\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n**Hellion Chat 1.0.0 — Standalone Major Release**\n\nFirst fully standalone release. Internal cleanup plus a sweep of\npre-existing correctness, security, threading and resource-leak\nfixes carried over from the upstream codebase. No user action\nrequired — auto-update applies cleanly, configuration and database\npaths unchanged.\n\nStandalone identity:\n\n- Code namespace consolidated from ChatTwo.* to HellionChat.* across\n all source files\n- IPC channels migrated from ChatTwo.* to HellionChat.* (6 channels:\n Register, Available, Unregister, Invoke, GetChatInputState,\n ChatInputStateChanged) — third-party plugins that bound to the old\n channels need to be updated; none known at release time\n- ImGui popup ID renamed to hellionchat-context-popup\n- Repository folder restructured (ChatTwo/ → HellionChat/), all CI\n and build paths updated accordingly\n- Public-facing descriptions reworded from upstream-fork framing to\n standalone framing (Chat 2 attribution preserved per EUPL-1.2)\n- Colour preset 'ChatTwo Default' is now 'Klassik (Chat 2 Default)'\n\nSafety:\n\n- Plugin now refuses to load when upstream Chat 2 is also active —\n bilingual conflict message in EN/DE, throw before any subsystem\n initialization, prevents the runtime crash that previously occurred\n when both plugins replaced the same chat window in parallel\n- SQLite native binary bumped to 3.50.3 (CVE-2025-6965 memory\n corruption from aggregate-term overflow, CVE-2025-7709)\n- NuGet restore now honors packages.lock.json so transitive\n dependencies don't drift between machines or CI runs\n\nDefault tab layout sharpened (one-time tab reset on first start):\n\nThe first-run tab layout is reorganized into five thematic tabs\nbased on external tester feedback. General contains only Say,\nYell and Shout (immediate-surroundings public chat). System\nabsorbs the gameplay-event streams (NpcDialogue, Loot, Crafting,\nGathering, PF recruitment pings) and announcement noise\n(BattleSystem, FreeCompanyAnnouncement, PvpTeamAnnouncement)\nthat previously lived in General. FreeCompany, Group and\nLinkshell each own their channel set. The static Tell tab is\ngone — Auto-Tell-Tabs spawns per-conversation tabs on demand.\nThe Beginner / Novice-Network preset is no longer added by\ndefault but is still available via Settings, Tabs.\n\nThis is a one-time tab-layout reset for users on config version\n12 or older. Privacy, Retention, Theme and every other setting\nis preserved. Your previous tab configuration is written to\npluginConfigs/HellionChat.json.pre-v13-backup so you can restore\nit manually if you prefer the old layout.\n\nCrash-class fixes (formerly latent in upstream):\n\n- MathUtil.HasOverlap now uses a correct AABB test; identical or\n edge-touching rectangles are no longer reported as non-overlapping\n- ChatCode.Equals compares fields directly instead of GetHashCode;\n removes the hash-collision anti-pattern\n- IpcManager.Dispose uses UnregisterAction to match the matching\n RegisterAction call; previous mismatch leaked the action\n subscription on every plugin reload\n- ExtraChat.Dispose now unsubscribes all three IPC subscriptions\n (was only the first); leaks closed\n- TellTarget.FromTarget guards against a zero IPlayerCharacter.Address\n before dereferencing the unsafe Character* cast\n- GameFunctions ResolveTextCommandPlaceholderDetour null-checks the\n Hook reference instead of using the null-forgiving operator\n- Popout.cs and SettingsTabs/Tabs.cs bounds-check list indexing so\n a tab drop or empty-worlds list no longer crashes the UI\n- Debugger.cs now declares IDisposable so the existing Dispose runs\n\nCorrectness fixes:\n\n- GlobalParametersCache.GetValue captures Cache into a local before\n the bounds check, so a concurrent Refresh can't slip a different\n array between check and read\n- IconUtil binary search bounds initialized to entries.Length-1 and\n reset on redirect-restart; entries.Length==0 short-circuits\n- Sheets.WorldsOnDatacenter now compares DataCenter.RowId (was\n Region.RowId) so it actually returns same-DC worlds\n- Message.cs back-reference loop iterates the processed Sender/Content\n properties so chunks added by CheckMessageContent get Message set\n- Language.zh-Hans Webinterface_Start_Success corrected to\n \"网页界面已启动\" (was \"网页界面已停止\")\n\nThreading and async:\n\n- AutoTranslate Entries/ValidEntries are now serialized behind a\n single lock; the preload worker thread and main thread no longer\n race on the underlying dictionary/hash set\n- Privacy retention and cleanup workers bound their framework-refresh\n waits to 5 seconds with a logged timeout; a hung framework tick can\n no longer deadlock the background worker\n\nResource handling:\n\n- EmoteCache reuses the static HttpClient instead of allocating a new\n one per call (closed socket leak)\n- FontManager wraps HttpClient/HttpResponseMessage in using-blocks\n and adds EnsureSuccessStatusCode; failed downloads no longer\n silently produce a zero-byte font file\n- SearchSelector mixes the row index into the ImGui ID stack so\n selectables don't collapse to a single ambiguous ID\n- SettingsTabs/Chat blocked-emote add-button now opens its selector\n popup on left-click\n\nPerformance:\n\n- DbViewer text export caches filteredHistory.Count once instead of\n re-enumerating the IEnumerable on every batch (O(N) instead of\n O(N²) on large histories)\n\nLicense attribution (NOTICE.md, COPYRIGHT, THIRD_PARTY_NOTICES.md\nand the Credits section in README) is unchanged.\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n**Hellion Chat 0.6.1 — Pop-Out Discoverability & /tell Auto-Pop-Out**\n\n- Pop-out button now visible in the chat header (no more hunting through the right-click menu)\n- One-time hint banner explains pop-out tabs and the right-click shortcut\n- New setting: open new /tell tabs directly as pop-out windows (Settings → Chat → Auto-Tell-Tabs)\n- Pop-out input is now enabled by default — closing a pop-out still returns the tab to the sidebar\n- Bugfix: dropping or logging out with an LRU/popped auto-tell tab now also closes its pop-out window (no more ghost windows)\n- Bugfix: dead zone below the chat input bar when the v0.6.0 pop-out hint banner was visible (also fixed retroactively for the v0.6.0 banner inside pop-outs)\n\nModding & support: join Hellion Forge — https://discord.gg/X9V7Kcv5gR\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n---\n\nEarlier history: https://github.com/JonKazama-Hellion/HellionChat/releases", + "Changelog": "**Hellion Chat 1.3.0 - Plugin Integrations: Honorific**\n\nFirst step on the plugin-integration roadmap. HellionChat now listens to Honorific and shows your custom title in the chat header. The slot auto-hides when Honorific is not installed, when no custom title is active, or when you are using the original FFXIV title.\n\n- New \"Integrations\" settings tab\n- Honorific integration with auto-detection and live updates\n- \"Coming soon\" preview of the next five planned integrations: context menu actions, smart notifications, RP status block, ExtraChat channels, and quick DM compose\n- Maintainer attribution buttons for Honorific repo and Caraxi\n- New service-class pattern under HellionChat/Integrations/\n\nModding and support: join Hellion Forge - https://discord.gg/X9V7Kcv5gR\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n**Hellion Chat 1.2.3 — Theme Expansion**\n\nFour new built-in themes round out the picker. No engine changes, no settings touched — just more colour options.\n\n- **Night Blue** — Royal Blue on deep marine. Cool tech-dashboard mood, distinct from the brand themes.\n- **Indigo Violet** — Royal Violet on deep indigo with a turquoise-mint counter for an aurora glitter feel. Sister to Event Horizon but darker and denser; the turquoise accent keeps the two distinguishable.\n- **Forge Merchantman** — Patina bronze on workshop slate, warm amber counter. Hellion Forge given a theme of its own — sister to Hellion Arctic but greener and warmer instead of cold cyan.\n- **Hellion Spectrum** — Deuteran/Protan-safe channel colours using Wong/Okabe-Ito palette tones. Channel identity (Tell pink, Yell yellow, Shout orange, Party blue, FC green) is preserved; tones are chosen so each channel stays distinguishable under red-green colour vision deficiency. Covers the ~99% of CVD cases that are red-green.\n\nNo schema bump, no migration. Default theme is unchanged (Hellion Arctic). Existing custom themes keep working.\n\nBased on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).\n\n---\n\nEarlier history: https://github.com/JonKazama-Hellion/HellionChat/releases", "AcceptsFeedback": true, "DownloadLinkInstall": "https://github.com/JonKazama-Hellion/HellionChat/releases/download/v1.3.0/latest.zip", "DownloadLinkUpdate": "https://github.com/JonKazama-Hellion/HellionChat/releases/download/v1.3.0/latest.zip",