a3fbaab173
Manifest-bump in 8e9332a missed the three DownloadLink* entries.
Plugin-Manager fetched v1.0.1 zip (AssemblyVersion 1.0.1.0) against
the new repo.json (AssemblyVersion 1.0.2.0), tripping the version-
match guard.
42 lines
12 KiB
JSON
42 lines
12 KiB
JSON
[
|
||
{
|
||
"Author": "JonKazama-Hellion",
|
||
"Name": "Hellion Chat",
|
||
"InternalName": "HellionChat",
|
||
"AssemblyVersion": "1.0.2.0",
|
||
"Description": "Hellion Chat is a privacy-focused chat replacement for FINAL FANTASY XIV based on the Chat 2 codebase (EUPL-1.2). One feature is intentionally removed (the optional webinterface) and a stack of privacy controls is added on top. Tabs, channel filters, RGB colours, emotes, screenshot mode, IPC integration and the chat replacement window itself work the same. The webinterface is intentionally not part of Hellion Chat because it serves a different use case from the smaller default footprint this plugin is built around.\n\nOn 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.\n\nKey privacy and data-handling features:\n\n- Channel whitelist with a Privacy-First default\n- Per-channel retention with a daily background sweep\n- Retroactive cleanup with a Ctrl+Shift confirm\n- Export to Markdown, JSON or CSV\n- First-run wizard with three preset profiles (Privacy-First, Casual, Full History)\n- Bilingual UI (English and German) with live language switching\n- Independent plugin state — own config file and database directory, so Hellion Chat does not share state with upstream Chat 2\n\nBased on Chat 2 by Infi and Anna, licensed under EUPL-1.2.\n\nModding & support: join the Hellion Forge Discord at https://discord.gg/X9V7Kcv5gR — community for Hellion Chat and other Hellion Online Media plugins/tools.",
|
||
"ApplicableVersion": "any",
|
||
"RepoUrl": "https://github.com/JonKazama-Hellion/HellionChat",
|
||
"Tags": [
|
||
"Social",
|
||
"UI",
|
||
"Chat",
|
||
"Replacement",
|
||
"Privacy"
|
||
],
|
||
"DalamudApiLevel": 15,
|
||
"LoadRequiredState": 0,
|
||
"LoadSync": false,
|
||
"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.0.2 — 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",
|
||
"AcceptsFeedback": true,
|
||
"DownloadLinkInstall": "https://github.com/JonKazama-Hellion/HellionChat/releases/download/v1.0.2/latest.zip",
|
||
"DownloadLinkUpdate": "https://github.com/JonKazama-Hellion/HellionChat/releases/download/v1.0.2/latest.zip",
|
||
"DownloadLinkTesting": "https://github.com/JonKazama-Hellion/HellionChat/releases/download/v1.0.2/latest.zip",
|
||
"TestingAssemblyVersion": "1.0.2.0",
|
||
"IconUrl": "https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/HellionChat/images/icon.png",
|
||
"ImageUrls": [
|
||
"https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/HellionChat/images/chatWindow.png",
|
||
"https://raw.githubusercontent.com/JonKazama-Hellion/HellionChat/main/HellionChat/images/withSimpleTweaks.png"
|
||
],
|
||
"DownloadCount": 0,
|
||
"IsHide": false,
|
||
"IsTestingExclusive": false,
|
||
"CategoryTags": [
|
||
"social"
|
||
]
|
||
}
|
||
]
|