• v1.5.3 35e8d3a7fe

    v1.5.3
    Security / scan (push) Successful in 19s
    Build / Build (Release) (push) Successful in 29s
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 5s
    Release / Build and attach release ZIP (push) Successful in 49s
    Stable

    JonKazama-Hellion released this 2026-05-19 15:30:01 +00:00 | 413 commits to main since this release

    v1.5.3 — Localisation Wave + Bundled-Font Overhaul (2026-05-19)

    Multi-language pass plus a long-standing first-frame HITCH lands
    as a side effect of a font-stack rewrite.

    User-visible:

    • 24 selectable UI languages (was 2). Catalan, Czech, Danish,
      Dutch, English, Finnish, French, German, Greek, Hungarian,
      Italian, Japanese, Korean, Norsk bokmål, Polish, Portuguese
      (BR + PT), Romanian, Russian, Spanish, Swedish, Turkish,
      Ukrainian, Simplified + Traditional Chinese. Sorted by endonym,
      "None" pinned first. Non-native locales are AI-assisted and
      flagged for native-speaker review via the Forge Discord.
    • Bundled Inter Light replaces Exo 2 (SIL OFL 1.1, 343 KB). The
      Inter font ships Latin Extended-A/B, Greek polytonic and
      Cyrillic Supplement coverage; NotoSansCjkRegular joins as a
      third merge layer for Hangul and Simplified-Han glyphs the
      FFXIV Japanese game font does not ship.
    • First-frame HITCH dropped from ~74 ms (v1.5.2 baseline that
      held since v1.4.x) to a median of ~20 ms (5-reload sample
      17.9-23.6 ms, Linux/Wine). The bundled-font path silently
      fell back to the FFXIV Axis font for the entire v1.5.x series
      because of an early-return in the draw loop. The fix that
      routes RegularFont through draw also lands the defer-pattern
      win the v1.5.1 cycle was reaching for.
    • ExtraGlyphRanges auto-activates on language change. Korean,
      ChineseFull and the two new flags (LatinExtended, Greek) toggle
      on without a manual visit to Fonts and Colours.
    • New WarningText under the language dropdown notes FFXIV's
      chat input only fully supports EN/DE/FR/JA character sets.
      Other languages render in HellionChat but may garble when
      typed into in-game chat.

    Under the hood:

    • Three-layer font stack: Inter Light primary, FFXIV
      JapaneseFont merge 1 for kana/kanji style, NotoSansCjkRegular
      merge 2 for everything else CJK.
    • LanguageOverride enum gains ten locales plus three previously
      commented out (Italian, Korean, Norwegian as nb). New
      values append to the enum so existing config integers stay
      stable across update.
    • Crowdin gap closed: four post-sync ChatTwo keys backfilled
      into 13 legacy locales with per-key AI markers.
    • Plugin.LoadAsync runs a one-shot migration that ORs in the
      matching ExtraGlyphRanges flag for users already on a
      non-default language. Settings.Apply auto-activates on
      change going forward.
    • Em-dash sweep across the EN source and 18 translations to the
      house style. Russian and Ukrainian keep the typographic norm.

    Migration v17 stays. UseHellionFont users transition from Exo 2
    to Inter Light transparently on first reload.

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo.
    To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL:
      https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2.
    Based on Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.5.2 67bec11f10

    v1.5.2
    Security / scan (push) Successful in 18s
    Build / Build (Release) (push) Successful in 28s
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 6s
    Release / Build and attach release ZIP (push) Successful in 40s
    Stable

    JonKazama-Hellion released this 2026-05-18 21:48:07 +00:00 | 416 commits to main since this release

    v1.5.2 — First-Run Wizard Rework (2026-05-18)

    UX patch. The first-run wizard becomes a four-step flow with a
    new Roleplay privacy profile and a power-settings step that
    surfaces previously-hidden defaults. Existing v1.5.1 users see
    the new wizard once on first v1.5.2 boot.

    What changes user-visible:

    • Wizard navigation: Welcome → Privacy profile → Power settings
      → Done. Forge-Bronze pagination dots, dedicated stage for the
      power settings so they are no longer buried in Settings.
    • Fourth privacy profile "Roleplay": Privacy-First plus Say and
      both emote types, with a 30-day window for Say and a 90-day
      window for emotes. Shout, Yell and Novice Network stay out.
    • Privacy picker becomes a 2x2 grid. Casual stays the
      recommended option with a ★ marker.
    • Power-settings step covers Load Previous Session, Filter
      Include Previous Sessions, Auto-Tell-Tabs History Preload,
      Compact Density, Prettier Timestamps and a built-in theme
      picker. All six map to existing Configuration fields — no new
      settings introduced.
    • Staged commit: the wizard only writes to Config on the Finish
      step. Decide-later or X-close at any point leaves the existing
      config untouched.
    • Inline test hint on the done step: "type /tell
      into chat" surfaces the auto-tell-tab spawn mechanism.
    • Window starts at 720x480 (was 900x560) and can shrink to
      600x400; Step 1 keeps the fox banner in a folded TreeNode so
      the onboarding copy stays primary.
    • Existing users get the new wizard surfaced once on first boot
      after the update via the new WizardLastShownVersion config
      field. Future cycles bump the constant only when the wizard
      itself changes shape.

    Under the hood:

    • WizardStateSmokeStep added to /xlperf alongside the FontManager
      and ThemeSwitch self-tests.
    • Twelve new pure-helper xUnit Facts in the Build Suite cover
      all four privacy profile sets and their retention overrides.

    Migration v17 stays (no schema bump). The Configuration grows
    one optional string field (WizardLastShownVersion) which
    defaults to empty for legacy users.

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo.
    To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL:
      https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2.
    Based on Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.5.1 edab5c7a6d

    v1.5.1
    Security / scan (push) Successful in 20s
    Build / Build (Release) (push) Successful in 29s
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 5s
    Release / Build and attach release ZIP (push) Successful in 34s
    Stable

    JonKazama-Hellion released this 2026-05-17 17:17:19 +00:00 | 427 commits to main since this release

    v1.5.1 — FontAtlas Refactor and Hellion Forge Signature (2026-05-17)

    Hybrid FontManager refactor plus an embedded provenance mark.

    What changes under the hood:

    • FontManager handle creation moves into the ctor inside a single
      atlas.SuppressAutoRebuild() block. The font atlas now builds once
      per plugin load instead of four to five times — less CPU and GPU
      pressure in the first seconds after a reload, less atlas texture
      memory churn.
    • Hybrid property model: Axis, AxisItalic and FontAwesome become
      init-only handles. RegularFont and ItalicFont stay mutable because
      the eight font settings still need to replace them at runtime —
      that path is funnelled through RebuildDelegateFonts() now and
      runs without a plugin reload.
    • FontAwesome reuses Dalamud's UiBuilder.IconFontFixedWidthHandle
      instead of building its own atlas slot. One delegate-build step
      less in the ctor.
    • BuildFontsAsync and BuildFonts are removed; the live mutation
      path is RebuildDelegateFonts() now.
    • Two FontManager self-test steps registered with /xlperf: ctor
      smoke (every handle non-null after Phase-1 resolve, no atlas
      load-exception) and push smoke (Push() returns without throwing).

    Honorific full-gradient port (originally the v1.5.1 main item) was
    dropped: Honorific 3.2 exposes no IPC for the rendered gradient
    frame, and an in-plugin port of the colour palette was declined.
    The integration stays at the v1.4.7 glow-only shape.

    User-visible:

    • Hellion Forge signature: a small fox-head ASCII silhouette is
      emitted to /xllog on every plugin load, and a full fox banner
      with "Hellion Forge" set inside the body is available as a
      folded TreeNode in the First-Run Wizard and Settings ->
      Information tab. Drawn by Julia Moon, embedded in the plugin DLL.
    • No settings changes, no migration. v17 stays.

    Note on performance: the cross-plugin baseline target from v1.5.0
    (matching Lightless and XIVInstantMessenger at ~7 ms HITCH) did
    not land this cycle. HITCH stays around 80 ms because the cost is
    in the UiBuilder first-frame render path, not in the atlas build
    (which this cycle did reduce from 4-5 builds per load to 1). A
    first-frame render investigation is reserved for a later cycle.

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo.
    To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL:
      https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2.
    Based on Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.5.0 f2a2daf39d

    v1.5.0
    Security / scan (push) Successful in 21s
    Build / Build (Release) (push) Successful in 26s
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 5s
    Release / Build and attach release ZIP (push) Successful in 33s
    Stable

    JonKazama-Hellion released this 2026-05-17 09:45:34 +00:00 | 437 commits to main since this release

    v1.5.0 — DI Foundation and Service Refactor (2026-05-17)

    Major architecture cycle. The plugin bootstrap moves to a
    generic-host DI container (Microsoft.Extensions.Hosting +
    IServiceCollection) modelled on Lightless Sync. Service logging
    moves from a static Plugin.LogProxy locator to typed
    Microsoft.Extensions.Logging.ILogger via constructor injection,
    bridged over Dalamud's IPluginLog by a custom DalamudLogger trio.

    What changes under the hood:

    • 18 instance-class services migrate to ILogger via constructor
      injection across four slices: data layer (MessageStore,
      MessageManager, AutoTellTabsService), IPC and integrations
      (HonorificService, IpcManager, TypingIpc, ExtraChat, the three
      GameFunctions classes), UI window layer (ChatLogWindow,
      DbViewer, Popout, three settings tabs), and root (Commands,
      ThemeRegistry, PayloadHandler).
    • Plugin.LogProxy stays in place for the eight buckets ctor
      injection cannot reach: static helpers (EmoteCache,
      AutoTranslate, MemoryUtil, WrapperUtil), Dalamud-reflected
      types (Configuration), the Message data class, and instance
      classes that only log from static methods (FontManager, one
      GameFunctions site).
    • Plugin.cs finishes at 1012 lines — virtually identical to the
      pre-cycle 1013. The new Phase-1 host build and Plugin.X bridge
      wiring trade out exactly the service and window allocations
      that previously lived in LoadAsync.
    • Cross-plugin baseline confirms no performance penalty against
      Chat 2: HellionChat first-frame HITCH 77 ms median, Chat 2
      74 ms median. Lightless and XIVInstantMessenger sit around
      7 ms by deferring their font-atlas build past Finished
      loading — that pattern is the v1.5.1 follow-up.

    User-visible:

    • Slash-command insert fix: pasting a slash command into the
      chat input (Friend List "/tell" action, plugin-driven inserts
      from Artisan, AllaganTools etc.) now replaces the existing
      input instead of concatenating. Cherry-picked from ChatTwo
      upstream ee7768ac with namespace adaptation.

    Migration v17 stays (no schema bump).

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo. To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2. Based on
    Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.4.10
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 7s
    Release / Build and attach release ZIP (push) Successful in 37s
    Stable

    JonKazama-Hellion released this 2026-05-16 12:14:12 +00:00 | 453 commits to main since this release

    v1.4.10 — Symbol-Picker and Tell-History Fix (2026-05-16)

    Eleventh and final sub-patch of the v1.4.x polish-sweep series.
    Symbol picker for the chat input, a tell-history reload fix for
    users with many active partners, and a closing cleanup sweep
    before v1.5.0 picks up the DI-container adoption.

    • Symbol picker: a small smile-icon button left of the channel
      indicator opens a popup with two tabs. The first lists all 161
      FFXIV PUA glyphs (Dalamud's SeIconChar enum); the second
      carries 97 server-verified BMP symbols (latin marks, currency,
      the full Greek alphabet, geometric shapes, suits, notes) —
      every one of them round-tripped through /echo and /say in a
      four-round probe so the in-channel render matches what the
      picker shows. Click drops the glyph at the caret, multi-insert
      keeps the popup open, and a recent-used strip floats the last
      sixteen picks across both tabs. Toggle in Settings → Chat →
      Message behaviour, default on.
    • Pinned auto-tell tabs reload their full history again: a
      hidden 500-row scan cap in PreloadHistory used to override the
      user-configurable AutoTellTabsHistoryPreload setting, so
      less-frequent pinned partners (rare /tell sessions in an
      otherwise busy week) lost their backlog. The cap is removed;
      the (Receiver, Date) index keeps SQL fast, the client-side
      loop still respects your setting as the upper bound.
    • Slash-command teardown: /hellion, /hellionView,
      /hellionDebugger (and #if DEBUG /hellionSeString) wrappers are
      now cached as private fields. Plugin teardown detaches the
      live registration instead of re-Register'ing with identical
      args — closes a latent maintenance hazard from v1.4.9.
    • v1.4.x polish-sweep wraps up here. The ImGuiListClipper render
      refactor that was on the v1.4.10 reserve list got dropped
      after cross-platform smoke showed the scroll rubber-band is a
      Wine / Linux render-pipeline quirk, not universal — Windows
      users never saw it. It will get its own platform-targeted
      spike in a later patch. Next major cycle is v1.5.0 with the
      DI-container adoption (Microsoft.Extensions.Hosting +
      ILogger) modelled on Lightless.
    • Migration v17 stays (no schema bump).

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo. To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2. Based on
    Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.4.9 7c9b90c767

    v1.4.9
    Security / scan (push) Successful in 22s
    Build / Build (Release) (push) Successful in 31s
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 7s
    Release / Build and attach release ZIP (push) Successful in 36s
    Stable

    JonKazama-Hellion released this 2026-05-15 11:35:48 +00:00 | 462 commits to main since this release

    v1.4.9 — Plugin-Load Render Polish (2026-05-15)

    Tenth sub-patch of the v1.4.x polish-sweep series. First-frame
    render cost drops from ~127 ms median to ~76 ms median,
    comfortably under Dalamud's 100 ms HITCH warning threshold.

    • First-frame defer: six non-essential rendering sections inside
      ChatLogWindow skip their first Draw and run one frame later
      (bottom status bar, channel-name SeString chunks, window bounds
      check, v0.6.1 hint banner, autocomplete, input-preview
      calculation). User-visible delay is ~17 ms at 60 fps, hidden
      inside the post-reload font-atlas build window.
    • Slash-command centralisation: /hellion, /hellionView,
      /hellionSeString and /hellionDebugger are registered in
      LoadAsync instead of inside the corresponding window
      constructors. The plugin-manager Open and configuration buttons
      hang on the same path.
    • Plugin-load profiling logs stay on at Information level
      (MessageStore connect/migrate, FilterAllTabs, auto-translate
      warmup) as a regression tripwire — a future load past 100 ms
      will show up in /xllog without a Debug filter.
    • ChatTwo IPC compatibility layer: HellionChat now mirrors
      ChatTwo's full IPC surface (GetChatInputState,
      ChatInputStateChanged, Register, Unregister, Available,
      Invoke) under the ChatTwo.* namespace in addition to our
      existing HellionChat.* provider gates. Third-party
      integrations that historically only subscribe to ChatTwo's
      IPC — for example Artisan's and AllaganTools' context-menu
      hooks — keep working without requiring a code change on their
      side. Conflict detection prevents ChatTwo from loading in
      parallel with HellionChat, so there is no slot-collision risk
      at runtime.
    • Migration v17 stays (no schema bump).

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo. To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2. Based on
    Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.4.8 55120e6572

    v1.4.8
    Security / scan (push) Successful in 23s
    Build / Build (Release) (push) Successful in 29s
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 7s
    Release / Build and attach release ZIP (push) Successful in 37s
    Stable

    JonKazama-Hellion released this 2026-05-14 10:13:23 +00:00 | 471 commits to main since this release

    v1.4.8 — Hook-Layer and Polish Quick-Wins (2026-05-14)

    Ninth sub-patch of the v1.4.x polish-sweep series. Hook-layer
    cluster (DbViewer FTS5 full-text search, ad-block foundation
    investigation) plus three polish quick-wins.

    • DbViewer full-text search: optional FTS5 index across the full
      chat history. Built asynchronously on first load after the
      update with a progress toast. The local page-filter remains
      available as the default mode. Queries match as exact phrases
      -- multi-word terms must appear together in order; advanced
      users can opt into raw FTS5 MATCH syntax by wrapping their own
      double-quotes.
    • Custom theme files now auto-reload when edited while the theme
      is active -- no need to re-click the theme in the picker.
    • Retention sweep no longer blocks the framework thread, removing
      the ~194ms mini-hitch per sweep.
    • Status bar renders correctly at Windows display scaling > 100%.
    • Receive-suppressed-tells routing investigated this cycle and
      postponed to v1.5.x: when other plugins suppress tells via
      CheckMessageHandled, the FFXIV chat pipeline skips the
      RaptureLogModule.AddMsgSourceEntry path so HellionChat's
      ContentIdResolverHook does not fire and tell-partner
      identification breaks. The fix belongs next to the planned
      ad-block hook layer where the same patch surface comes up.
    • Internal: messages.Id is declared BLOB but stored as TEXT
      (Microsoft.Data.Sqlite Guid binding). FTS bulk insert and
      LoadByGuids match the TEXT storage form on both sides.
      Migration v17 stays (no schema bump).

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo. To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2. Based on
    Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.4.7 d3fdcdf43d

    v1.4.7
    Security / scan (push) Successful in 23s
    Build / Build (Release) (push) Successful in 30s
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 7s
    Release / Build and attach release ZIP (push) Successful in 39s
    Stable

    JonKazama-Hellion released this 2026-05-13 09:07:52 +00:00 | 485 commits to main since this release

    v1.4.7 — Backlog Cleanup and Mid-Features (2026-05-13)

    Eighth sub-patch of the v1.4.x polish-sweep series. First
    user-visible feature bundle since v1.4.5 — pinned tell tabs that
    survive relog, opt-in Honorific glow rendering, and a configurable
    sidebar.

    • TempTell Pin: right-click a TempTell tab in the sidebar to pin
      it. Pinned tabs survive relog, keep their conversation history
      (loaded on demand from the message store), and stay bound to
      the same /tell partner. Hard cap of 5 pinned tabs in a pool
      separate from the 15-tab auto-tell pool — total ceiling is 20
      tabs. New 'Pinned' section in the sidebar with its own divider
      header
    • Honorific Glow outline now renders when the title carries a
      Glow colour. Opt-in via Settings → Integrations → 'Render glow
      outlines (Honorific)' (default off, dodges the per-frame
      DrawList overhead on low-end hardware). Gradient (Color3 /
      GradientColourSet / Wave / Pulse) is parsed but rendered
      statically — a later cycle will port the full animation
    • Sidebar width is now configurable in Theme & Layout (range
      44–160 px). Default stays icon-only; widen to fit section
      headers like 'Active Tells (3)' without truncation
    • Settings Save no longer pops the chat input back to /tell with
      a pinned partner — Configuration.UpdateFrom now preserves the
      runtime CurrentChannel across the persistent-tab merge, and
      TabSwitched deep-clones the seeded channel instead of sharing
      the previous tab's UsedChannel
    • Util/ImGuiUtil.cs DrawArrows IconButton id now uses
      (id + 1).ToString() instead of the operator-precedence quirk
      id + 1.ToString() — generated IDs stay numerically stable
    • Internal: IPluginLogProxy indirection over Dalamud's IPluginLog
      routes all ~91 Plugin.Log call sites through a testable proxy.
      MessageStore.Migrate0 can now run in xUnit without loading
      Dalamud.dll, closing the gap F12.1 left in v1.4.6
    • Internal: TempTab counter switched from an Interlocked cached
      field to a derived Tabs.Count(predicate) — pin-state transitions
      are cold-path and don't need lock-free reads

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo. To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2. Based on
    Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.4.6 1d88cb4c42

    v1.4.6
    Security / scan (push) Successful in 22s
    Build / Build (Release) (push) Successful in 29s
    Release / Build and attach release ZIP (push) Successful in 37s
    Forge Announce / Post changelog to Hellion Forge (push) Failing after 7s
    Stable

    JonKazama-Hellion released this 2026-05-12 19:28:29 +00:00 | 500 commits to main since this release

    v1.4.6 — Code Hygiene and Refactor (2026-05-12)

    Maintenance patch. No user-visible behaviour changes; tightens the
    development feedback loop, fixes two upstream-inherited bugs, and
    prepares the code for the v1.4.7 backlog cleanup.

    • preflight.sh gains a csharpier reflow check and a markdownlint
      pass so style drift and markdown violations are caught at the
      pre-push gate
    • FontManager fallback catches the full set of atlas-toolkit
      throws (IO, InvalidOperation, ArgumentException) — a corrupt
      font config no longer takes down the whole atlas build
    • BrandingLinks and IntegrationLinks URLs validated on plugin
      load — a typo in a future URL rotation now throws at startup
    • Cherry-picked from ChatTwo upstream f35b7d3: Chat.SetChannel
      no longer leaks the native Utf8String when the linkshell check
      rejects the channel
    • Cherry-picked from ChatTwo upstream f35b7d3: Tab.Clone now
      deep-clones UsedChannel and TellTarget — PopOut and Temp tabs
      no longer mutate each other's channel state
    • Active-tab underline scales with DPI and rounds to physical
      pixels for crisp rendering above 100% scaling
    • IconButton width parameter no longer subtracts HUD-scaled
      padding from a raw int (measured width passes through verbatim)
    • Internal: HellionStyle ChildBgAlpha extracted to a testable
      helper; Plugin.SaveConfig clones only the temp tabs;
      SettingsOverview caches the draw-list per frame;
      Dalamud.Utility.Util surface routed through an IPlatformUtil
      indirection (MessageStore IsWine probe is now testable in
      isolation)
    • Built-in themes: Crystal Nocturne (sapphire and electric
      magenta over obsidian, by CRYSTALLITE) replaces Moonlit Bloom.
      Users with Moonlit Bloom selected fall back to Hellion Arctic
      on first load

    Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo. To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2. Based on
    Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads
  • v1.4.5 2e057ce6c4

    v1.4.5
    Security / scan (push) Successful in 22s
    Build / Build (Release) (push) Successful in 31s
    Forge Announce / Post changelog to Hellion Forge (push) Successful in 8s
    Release / Build and attach release ZIP (push) Successful in 40s
    Stable

    JonKazama-Hellion released this 2026-05-12 13:32:45 +00:00 | 519 commits to main since this release

    v1.4.5 — UX and Robustness (2026-05-12)

    Sixth sub-patch of the v1.4.x polish-sweep series. Chat-log draw
    failures surface as a notification, the first-run wizard has an
    explicit "Later" option, the input history clears on plugin reload,
    and the status bar version slot stops clipping in narrow windows.

    • Chat window draw errors now show a one-shot notification instead
      of failing silently — stack trace stays in /xllog
    • First-run wizard: explicit "Later — keep defaults" button.
      Closing the X no longer silently accepts the defaults; the wizard
      reopens on the next plugin load if nothing was picked
    • InputHistoryService clears on plugin dispose so the previous
      session's typed commands don't bleed into the next load
    • Status bar hides the version slot when the chat window is too
      narrow to fit all five slots without overlap
    • Internal: explicit session-only Auto-Tell-Tab invariant in
      Plugin.cs plus a pinning test in the Build-Suite
    • Internal: FontManager falls back to the system font if the
      embedded Hellion font resource is missing — logs a Warning

    How to install

    This release is distributed via the HellionChat custom repository, not the Dalamud main plugin repo. To install:

    1. In XIVLauncher: Settings → Experimental → Custom Plugin Repositories
    2. Add the URL: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/repo.json
    3. Enable, save, then /xlplugins → search Hellion Chat → install

    Project documents

    Licence

    EUPL-1.2. Based on
    Chat 2 by Infi and Anna, also EUPL-1.2.

    Downloads