cafb6faa39
Manifest sync across csproj, yaml, repo.json, README, CHANGELOG, ROADMAP and the Plugin.cs schema-gate error message. ROADMAP also gets the v1.4.4 release block that was missed in that cycle's closure. Forge-post v1.4.5.md follows the established frontmatter + DE-body convention; the EN block is sourced from the yaml changelog by the forge-announce workflow.
202 lines
12 KiB
Markdown
202 lines
12 KiB
Markdown
# Hellion Chat — Roadmap
|
||
|
||
Planned work after the v1.0.0 standalone cut. This list is intentionally high-level: concrete specs, size estimates and
|
||
repro steps live in the internal backlog. External tracking runs via
|
||
[Gitea Issues](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/issues) with the `roadmap` label once an
|
||
item is scheduled for a cycle.
|
||
|
||
Order reflects priority, not a guarantee. Items may shift or be dropped entirely if they turn out to be a poor fit for
|
||
the plugin's privacy-first scope during brainstorming.
|
||
|
||
---
|
||
|
||
## Next Cycle (v1.4.6)
|
||
|
||
**Code-Hygiene + Refactor.** Build-side pre-commit hook with csharpier-check as a hard gate so format drift can't reach
|
||
a commit (~30 min). Plus the cycle absorbs whatever surfaces from v1.4.5 smoke that doesn't justify a hotfix. Concrete
|
||
scope is consolidated in the v1.4.6 brainstorm.
|
||
|
||
---
|
||
|
||
## v1.4.5 — UX and Robustness (released 2026-05-12)
|
||
|
||
Sixth sub-patch of the v1.4.x Polish Sweep series. User-visible robustness polish plus two doc/test polish items from
|
||
the audit backlog. Chat-log draw failures now surface as a one-shot notification instead of failing silently. The
|
||
first-run wizard splits accept from close: `OnClose` no longer silently sets `FirstRunCompleted`, and a new footer
|
||
"Later — keep defaults" button is the explicit path to dismiss without picking a profile. `InputHistoryService` clears
|
||
on plugin dispose so the previous session's typed commands don't bleed into the next load. `FontManager` falls back to
|
||
the system font path if the embedded Hellion font resource is missing (broken-csproj / dev-build only). The status bar
|
||
hides the version slot when the chat window is too narrow to fit all five slots without overlap. Plus
|
||
`Plugin.cs:167-168` gains an explicit session-only Auto-Tell-Tab invariant comment with a `TempTabCounter.InitFromList`
|
||
pin in the Build-Suite. No schema bump, no migration.
|
||
|
||
## v1.4.4 — Threading and IPC Safety Polish (released 2026-05-12)
|
||
|
||
Fifth sub-patch of the v1.4.x Polish Sweep series. `AutoTellTabsService.ActiveTempTabCount` switches from a
|
||
lock-protected LINQ `Count` to an `Interlocked` counter kept in sync from inside the existing mutation paths;
|
||
`Initialize()` seeds from the persisted Tabs list and `SaveConfig`'s snapshot-restore path calls a new
|
||
`ResyncTempTabCounter()` after the mid-step `RemoveAll`. `HonorificService` carries per-method threading banners and
|
||
`TryUnsubscribe`'s log level moves from Debug to Warning. `AutoTranslate.PreloadCache` is marked `IsBackground = true`
|
||
so plugin unload no longer waits for it. `Configuration.IsAllowedForStorage` logs once per unknown ChatType via a
|
||
`NonSerialized` `HashSet`, and `PrivacyPersistUnknownChannels` default flips to `true` for new installs. No schema
|
||
bump, no migration.
|
||
|
||
## v1.4.3 — Plugin-Load Async-Init + Repo-Cutover (released 2026-05-08)
|
||
|
||
Fourth and largest sub-patch of the v1.4.x Polish Sweep series. Plugin migrated to Dalamud's `IAsyncDalamudPlugin` API:
|
||
the constructor handles only bootstrap essentials (config load, language init, conflict detection); migrations, service
|
||
allocations, window construction and hook subscription move to `LoadAsync`. Schema gate replaces the v9 → v16 migration
|
||
chain; configs on schema v16+ load directly, older configs trigger an "install v1.4.2 first" error.
|
||
`AutoTranslate.PreloadCache` moved off the load path. `FontManager.BuildFonts` runs sync at the start of `LoadAsync`;
|
||
Dalamud rebuilds the font atlas on its own pipeline. Custom-repo URL cut over to `gitea.hellion-forge.cloud`; the GitHub
|
||
repo remains as a frozen v1.4.2 snapshot. Plugin load time sits at ~3.7 s median (5 reloads), comparable to v1.4.2 — the
|
||
async migration is a foundation for v1.4.4 lazy-init optimisations rather than an immediate user-perceived win.
|
||
|
||
## v1.4.2 — ChatLog Frame-Hot-Path (released 2026-05-08)
|
||
|
||
Third sub-patch of the v1.4.x Polish Sweep series. Per-frame allocations eliminated from the ChatLogWindow render path
|
||
and the settings status bar. Card-mode border loop in `DrawMessages` hoists five invariants into a pre-loop hoist;
|
||
`AutoTellTabTint` gets a per-tab cache via `TabTintCache` (separate validation keys per cache, no cross-invalidation);
|
||
status bar moves the cache-gate check before the aggregation and replaces LINQ `Sum`+`Count` with a single-pass foreach.
|
||
|
||
## v1.4.1 — Theme Engine Performance (released 2026-05-08)
|
||
|
||
Second sub-patch of the v1.4.x Polish Sweep series. ABGR cache pre-computed on theme records; `HellionStyle.PushGlobal`
|
||
reads from the cache instead of converting per slot per frame. **~13 % render-time recovery** in smoke tests (plan
|
||
estimate of 2–6 % was conservative; real result ~10–15 %). Custom-theme hot-reload survives transient file locks via
|
||
last-known-good snapshot. Plus: Synthwave Sunset as the tenth built-in, author credits consolidated under Hellion Forge,
|
||
Mint Grove + Forge Merchantman credited to Carla Beleandis as a community thanks.
|
||
|
||
## v1.4.0 — Critical Lifecycle Fixes (released 2026-05-07)
|
||
|
||
First sub-patch of the v1.4.x Polish Sweep series. Seven P0 findings from audit passes 3 and 4 resolved: async-void
|
||
loads, missing `IsBackground` flags, `GC.Collect` in Dispose, deferred-save race and pre-v13 backup lookup for
|
||
`WindowOpacity`. No schema bumps, no user-facing behaviour changes other than reload and shutdown running noticeably
|
||
cleaner.
|
||
|
||
## v1.3.0 — Plugin Integrations: Honorific (released 2026-05-07)
|
||
|
||
First cycle of the plugin integrations roadmap. Honorific custom titles displayed in the chat header with auto-detect
|
||
and silent fallback. New Integrations settings tab. Pattern-setter for the five following cycles (Context Menu,
|
||
NotificationMaster, RP Status Block, ExtraChat, XIVIM).
|
||
|
||
Spec: [Plugin Integrations Overview](../Hellion%20Chat%20Plugin-Integrationen.md)
|
||
|
||
## v1.2.3 — Theme Expansion (released 2026-05-06)
|
||
|
||
Four new built-in themes: Night Blue, Indigo Violet, Forge Merchantman, Hellion Spectrum (Deuteran/Protan-safe). No
|
||
engine changes. See `docs/CHANGELOG.md`.
|
||
|
||
(v1.2.2 was burned because the `repo.json` manifest was not bumped in sync on the first push — re-released as v1.2.3
|
||
with full manifest synchronisation.)
|
||
|
||
## v1.2.1 — Settings Cleanup (released 2026-05-06)
|
||
|
||
Settings re-sorted thematically (9 cards), 4 dead settings removed, auto-migration v15 → v16 without data loss.
|
||
|
||
## v1.2.0 — Layout Refresh (released 2026-05-05)
|
||
|
||
Top tabs refresh, sidebar tab icons, bottom status bar, card rows as default message render, auto-tell tab hashing.
|
||
|
||
## v1.1.0 — Theme Foundation (released 2026-05-05)
|
||
|
||
Theme engine with five built-in themes, settings card grid, custom themes via JSON, theme authoring docs. Plugin icon
|
||
updated to Hellion Forge hammer. See `docs/CHANGELOG.md` for details.
|
||
|
||
Items from the original v1.1.0 plan (ad-block / spam filter, receive-suppressed-tells toggle) were deferred in favour of
|
||
the theme engine — both items live on in the mid-term block.
|
||
|
||
---
|
||
|
||
## Mid-Term (v1.4.x+)
|
||
|
||
- **Plugin Integrations Roadmap (Cycles 2–6)** — six plugin integrations planned; Honorific (Cycle 1) is live, followed
|
||
by Context Menu, NotificationMaster, RP Status Block, ExtraChat and XIVIM in their own cycles. Spec and cycle order in
|
||
[Plugin Integrations Overview](../Hellion%20Chat%20Plugin-Integrationen.md).
|
||
- **Ad-Block / Spam Filter** — hybrid concept combining a lightweight built-in filter with optional `NoSoliciting` IPC
|
||
integration. Addresses ad-spam in public channels and tells. Deferred from the v1.1.0 plan.
|
||
- **Receive-Suppressed-Tells Toggle** — auto-tell tabs trigger even when a third-party plugin (e.g. XIVMessenger)
|
||
globally suppresses /tell display. Same hook layer as ad-block, so they are bundled.
|
||
- **Database Viewer Inline Search** — full-text search in the DB viewer via SQLite FTS5. Currently only date and channel
|
||
filters are available.
|
||
- **TempTell Persistence** — pin toggle on TempTell tabs so selected tells survive a relog. Tester request from Jingliu.
|
||
- **FontManager Async Refactor** — move `LoadGameSymFontAsync` out of the blocking plugin constructor. Fix cold-start
|
||
hitching on first plugin load (low severity; plugin is functional).
|
||
- **Separate Opacity Active vs. Inactive** — second slider for inactive window opacity. Upstream declines this; we can
|
||
decide differently here.
|
||
- **Failed-Tell Notification** — visible message on /tell failure (offline, restricted instance, blacklisted,
|
||
world-mismatch) instead of silent failure.
|
||
- **Per-Tab Sound Notification** — sound toggle and optionally a custom .wav per tab, with mute-in-combat option.
|
||
|
||
---
|
||
|
||
## Long-Term (v1.x+)
|
||
|
||
### Storage Backends (three-stage confirmation)
|
||
|
||
- MySQL/MariaDB backend for multi-device setups
|
||
- PostgreSQL backend
|
||
- AES-256 encryption for sensitive channels with a local key
|
||
|
||
### Linux-Specific
|
||
|
||
- WireGuard network detection as an optional filter trigger
|
||
- libnotify integration for native Linux toasts
|
||
- XDG compliance (complex under Wine)
|
||
|
||
### UX and Tab Management
|
||
|
||
- **Regex Tab Routing** — route plugin output spam into dedicated tabs, auto-sort tells from specific people. Clearly
|
||
scoped against ad-block: routing sorts into views, blocking hides globally.
|
||
- **Auto-Detect Duties** — tab switch on duty start via condition flag.
|
||
- **UX Bundle** — vertical tab bar as a layout option, Shift+Mousewheel to scroll tab headers without activating them,
|
||
global hotkey to close the active tab.
|
||
- **Configure Tab Title** — configurable tab title format (name / name + abbreviated world / full name / custom),
|
||
overridable per tab.
|
||
- **Name Display Options** — analogous to FFXIV vanilla (full name, first name abbreviated, initials), per-channel
|
||
override possible.
|
||
- **Item & Flag Linking** — outgoing: Shift-click on an item/flag sends it to the focused plugin input. Incoming: item
|
||
links and map coordinates are clickable.
|
||
- **Color Currently Selected Input Channel** — tint the channel-selector button in the input bar with the current
|
||
channel colour.
|
||
- **Plugin-Disclosure Pre-Send Filter** — configurable word/regex list blocks sending with a pre-send confirmation.
|
||
Protects against accidentally mentioning plugins in public channels.
|
||
- **Chat Clear on Name Change** — on character name change, migrate or wipe local history; default is wipe for maximum
|
||
privacy.
|
||
- **Hide Plugin Window on NG+ Screen** — extend hide logic to cover additional addon names.
|
||
- **Kick from Novice Network** — mentor niche; context menu entry with confirmation.
|
||
- **Text-to-Speech for /tell** — incoming tells via TTS, optionally per sender, with channel filter and mute-in-combat.
|
||
Low priority.
|
||
|
||
### Distribution and Branding
|
||
|
||
- Hand-drawn Hellion logo (currently a placeholder from the Hellion Online Media brand repo)
|
||
- GitHub Action for automatic `repo.json` sync after tag push
|
||
- Submission to the Dalamud main plugin repository (in addition to the custom repo)
|
||
|
||
---
|
||
|
||
## Bug Verifications
|
||
|
||
Carried over from the upstream issue tracker; not yet reproduced or verified in Hellion Chat 1.0.0. Will be tested
|
||
against the current state when opportunity allows.
|
||
|
||
- **Right-Click Whisper Error** in Field Ops / Special Instances (Eureka, Bozja, Occult Crescent, DRS) — upstream
|
||
[#168](https://github.com/Infiziert90/ChatTwo/issues/168). Reply helper appears to swallow the `@World` suffix.
|
||
- **FPS Drops with Plugin Active** — upstream [#145](https://github.com/Infiziert90/ChatTwo/issues/145). 10–20 % drop
|
||
since upstream v1.29.19.0. v1.0.0 includes several fixes on the suspected paths; repro test against the current state
|
||
is open.
|
||
- **Add Blacklist from Plugin Window** — upstream [#140](https://github.com/Infiziert90/ChatTwo/issues/140). Right-click
|
||
add-to-blacklist throws "Cannot locate character with that name"; works via vanilla chat.
|
||
- **DB Viewer Column Sort** — State column sorts lexicographically instead of numerically (10 before 2). XIVIM
|
||
[#82](https://github.com/NightmareXIV/XIVInstantMessenger/issues/82); repro in Hellion Chat open.
|
||
|
||
---
|
||
|
||
## Licence Boundary
|
||
|
||
Hellion Chat is licensed under EUPL-1.2. Concept imports from AGPL-3.0 plugins (e.g. XIV Instant Messenger) are
|
||
architectural inspiration only — no code was ported. Code imports from the upstream codebase are complete as of v1.4.x
|
||
because Chat 2 is undergoing a fundamental rework and selective patches are no longer cleanly portable. Status and
|
||
rationale in [`UPSTREAM_SYNC.md`](UPSTREAM_SYNC.md).
|