699d4ede1d
Add .prettierrc.json, .markdownlint.json, .yamllint.yaml, .gitattributes Run CSharpier, Prettier and markdownlint across the entire codebase. No logic changes — formatting, using order and line endings only.
35 lines
9.1 KiB
JSON
35 lines
9.1 KiB
JSON
[
|
||
{
|
||
"Author": "JonKazama-Hellion",
|
||
"Name": "Hellion Chat",
|
||
"InternalName": "HellionChat",
|
||
"AssemblyVersion": "1.4.3.0",
|
||
"Description": "Hellion Chat is a privacy-focused chat replacement for FINAL FANTASY XIV, forked from Chat 2 (EUPL-1.2). Tabs, channel filters, RGB colours, emotes, screenshot mode, and IPC integration all work the same. The optional web interface from Chat 2 is not included — it conflicts with the smaller default footprint this plugin is built around.\n\nOn top of the Chat 2 foundation, Hellion Chat adds data-handling controls that respect modern privacy rules across the EU, US and Japan. By default only your own conversations are stored; public chat, NPC dialogue, system messages and battle logs are discarded at the storage layer.\n\nPrivacy features:\n- Channel whitelist with a Privacy-First default\n- Per-channel retention periods with a daily background sweep\n- Retroactive cleanup with preview and Ctrl+Shift confirm\n- Export to Markdown, JSON or CSV\n- First-run wizard with three profiles: Privacy-First, Casual, Full History\n- Bilingual UI (English and German) with live language switching\n- Own config file and database directory, no shared state with upstream Chat 2\n\nRecent releases:\nv1.3.0 — Honorific plugin integration: custom titles shown in the chat header, auto-detect with silent fallback.\nv1.4.0 — Lifecycle fixes: clean shutdown, explicit background threads, no lost config saves on disable.\nv1.4.1 — Theme engine performance pass (~13 % render-time recovery); Synthwave Sunset added as the tenth built-in theme.\nv1.4.2 — Chat log frame hot-path: three per-frame allocation patterns removed from the render loop.\nv1.4.3 — Async plugin load via IAsyncDalamudPlugin; schema gate replaces the migration chain for older configs.\n\nBased on Chat 2 by Infi and Anna, licensed under EUPL-1.2.\n\nSupport and community: Hellion Forge Discord at https://discord.gg/X9V7Kcv5gR",
|
||
"ApplicableVersion": "any",
|
||
"RepoUrl": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat",
|
||
"Tags": ["Social", "UI", "Chat", "Replacement", "Privacy"],
|
||
"DalamudApiLevel": 15,
|
||
"LoadRequiredState": 0,
|
||
"LoadSync": false,
|
||
"CanUnloadAsync": false,
|
||
"LoadPriority": 0,
|
||
"Punchline": "A Hellion Forge plugin. Privacy-first chat for FFXIV, built to stay out of your way.",
|
||
"Changelog": "**Hellion Chat 1.4.3 — Plugin-Load Async-Init + Repo-Cutover (2026-05-08)**\n\nPlugin lifecycle migrated to Dalamud's `IAsyncDalamudPlugin` API. The constructor now does only the bootstrap-essentials (config load, language init, conflict detection); migrations, service allocations, window construction and hook subscription move to LoadAsync. Dalamud can keep its UI responsive while the heavy work runs.\n\n- IAsyncDalamudPlugin two-phase load with per-line CaptureFailure in DisposeAsync (mirrors LightlessSync's pattern); idempotency guard protects against reload races\n- Schema-gate replaces the v9 → v16 migration chain. Configs on schema v16+ load directly; older configs trigger an \"install v1.4.2 first\" error so the historic migration path stays intact\n- AutoTranslate.PreloadCache moved off the load path. First use may have a sub-second hitch instead of every-load; the upstream chose differently, we accept first-use latency\n- FontManager.BuildFonts is called sync at the start of LoadAsync; Dalamud rebuilds the font atlas on its own pipeline so the custom Hellion-Exo2 font appears with a brief font-pop after load (matches ChatTwo's behaviour)\n- Custom-repo URL moved to gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat. GitHub repo stays as a frozen v1.4.2 snapshot; new releases ship from Gitea. Existing testers need to update the custom-repo URL once\n- Plugin-load time in this release sits at ~3.7 s median (5 reloads), comparable to v1.4.2. Async migration is foundational for v1.4.4 Lazy-Init optimisations rather than an immediate user-perceived win\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**Hellion Chat 1.4.2 — ChatLog Frame-Hot-Path**\n\nThird sub-patch of the v1.4.x Polish Sweep series. Per-frame allocations from the chat-log render path eliminated.\n\n- DrawMessages card-mode hoists theme/drawList/winLeft/winRight/borderColorAbgr out of the per-message loop. About 500 redundant calls per frame at 100 visible messages, multiplied by every pop-out window\n- Auto-tell tab tint and icon use a per-tab cache. Hash computation and string allocation only happen when the tell target name or world drifts. AutoTellTabTint stays a pure hash helper; cache lives in a thin TabTintCache wrapper\n- Status bar gates its tab aggregation behind the same one-second cache it already used for the format strings. LINQ Sum and Count replaced with a single foreach pass that runs on roughly 1% of frames\n\nRealistic frame-time recovery: 2-5% in typical scenes, more on pop-out-heavy setups because the card-border hoist scales per window.\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**Hellion Chat 1.4.1 — Theme Engine Performance**\n\nSecond sub-patch of the v1.4.x Polish Sweep series. Heap pressure from the theme engine's per-frame render path removed, plus a tenth built-in theme and hardening for the custom-theme hot-reload.\n\n- Theme records carry a pre-computed ABGR-packed cache for every color slot; cache is filled when the theme is registered and refreshed defensively on every Switch()\n- HellionStyle.PushGlobal reads ABGR values from the cache instead of calling ColourUtil.RgbaToAbgr per slot per frame; ~13 % render-time recovery measured in typical scenes (plan estimate was 2–6 %, real ~10–15 %)\n- ThemeRegistry custom-theme reload distinguishes a recoverable file lock (editor mid-save) from a permanent IO failure; locked themes keep their last-known-good snapshot and retry on the next lookup instead of dropping out of the picker\n- New built-in: Synthwave Sunset — Hot Magenta + Cyan on midnight violet, 80s neon-grid vibes; tenth theme in the picker\n- Author credits refreshed: brand themes are credited as \"Hellion Forge\"; Mint Grove and Forge Merchantman now credited to Carla Beleandis as a community thanks\n\nNo schema bump, no user-visible behaviour change other than smoother frames on GC-sensitive setups and one additional colour option.\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**Hellion Chat 1.4.0 — Critical Lifecycle Fixes**\n\nFirst sub-patch of the v1.4.x Polish Sweep series. Seven known lifecycle and race bugs eliminated before any performance refactor sits on top.\n\n- MessageStore disposal no longer triggers GC.Collect globally; Pooling=false on the SQLite connection means there's nothing left to clean up by hand\n- PendingMessage and RetentionSweep worker threads are explicitly marked IsBackground=true so the plugin domain can unload during XIVLauncher reload without waiting for them\n- EmoteCache image and gif loaders moved from async-void to async Task with a shared task tracker, draining on Dispose so an in-flight load can no longer write to a disposed EmoteImages entry\n- DisposeAsync 10s timeout now warns loudly instead of silently leaving the worker behind\n- Plugin.Dispose flushes any pending DeferredSaveFrames before tearing services down, so settings changes made in the last few frames before disable are no longer lost\n- The v13→v14 config migration now reads the pre-v13 backup and carries HellionThemeWindowOpacity into the new WindowOpacity field instead of falling back to the default 0.85\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://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases",
|
||
"AcceptsFeedback": true,
|
||
"DownloadLinkInstall": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v1.4.3/latest.zip",
|
||
"DownloadLinkUpdate": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v1.4.3/latest.zip",
|
||
"DownloadLinkTesting": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/download/v1.4.3/latest.zip",
|
||
"TestingAssemblyVersion": "1.4.3.0",
|
||
"IconUrl": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/icon.png",
|
||
"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/settingsOverview.png",
|
||
"https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/themesPicker.png"
|
||
],
|
||
"DownloadCount": 0,
|
||
"IsHide": false,
|
||
"IsTestingExclusive": false,
|
||
"CategoryTags": ["social"]
|
||
}
|
||
]
|