Commit Graph

36 Commits

Author SHA1 Message Date
JonKazama-Hellion 35e8d3a7fe fix(font): bundled font now actually renders, ship Inter Light, +CJK fallback
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
Plugin.cs:937 only pushed RegularFont when Config.FontsEnabled was true.
  FontsAndColours.cs:50 forces FontsEnabled=false whenever UseHellionFont is
  enabled (to hide the chooser UI), so the bundled-font path was silently
  dead and the FFXIV Axis game-font took over. Exo 2 looked "almost right"
  because it overlaps Axis on basic Latin, so the regression went unnoticed
  for the entire v1.5.x series.

  The fix routes RegularFont through draw whenever either FontsEnabled or
  UseHellionFont is on. First-frame HITCH dropped from ~74 ms to ~20 ms
  median (5-reload Linux/Wine sample 17.9-23.6 ms) as a side effect — the
  v1.5.1 "too optimistic" defer-pattern hypothesis was actually a symptom
  of this bug, not bad math.

  Font-stack overhaul on top:
  - Inter Light (Static 18pt-Light, 343 KB, SIL OFL 1.1) replaces Exo 2 as
    the bundled font. Inter ships full Latin Extended-A/B, Greek polytonic
    and Cyrillic Supplement coverage.
  - NotoSansCjkRegular added as a third merge layer for Hangul,
    Simplified-Chinese-specific Han glyphs, and CJK fallbacks the FFXIV
    Japanese font does not ship.
  - Two new ExtraGlyphRanges flags (LatinExtended, Greek) implemented via
    AddChar pair lists in SetUpRanges.
  - Settings.Apply auto-activates the matching ExtraGlyphRanges flag on
    language change. Plugin.LoadAsync runs a one-shot migration that ORs
    in the required flag for an already-selected language.
  - ExtraGlyphRanges CollapsingHeader reachable regardless of
    UseHellionFont (was hidden in the early-return branch).
  - New WarningText below the language combo: FFXIV's chat engine only
    fully supports EN/DE/FR/JA. Other scripts render in the HellionChat
    UI but may garble in in-game chat input/send.

  Localisation wave (originally a FR-only cycle):
  - 24 selectable UI languages. LanguageOverride enum gains 10 new locales
    plus 3 previously commented-out (Italian, Korean, Norwegian with ISO
    code `nb` instead of `no`). All new values append to keep existing
    user-config integer serialisation stable.
  - Resource bundle split: HellionStrings.resx (24 locales, 328 keys) for
    fork-added strings, Language.resx (24 locales, 456 keys) for the
    ChatTwo-Crowdin-heritage. 4 post-sync Crowdin keys backfilled into
    13 legacy locales with per-key AI-assisted comment marker.
  - Em-dash sweep on EN source plus 18 translations. Russian and Ukrainian
    keep their typographic norm.

  Old HellionFont.ttf + HellionFont-OFL.txt removed; Inter-Light.ttf +
  Inter-OFL.txt take their place. Configuration field UseHellionFont keeps
  its name for backwards-compat. Migration v17 stays.
2026-05-19 17:28:48 +02:00
JonKazama-Hellion 003bd5c695 docs(changelog): polish v1.5.2 prose hygiene
Fixes two minor copy-paste artefacts in the v1.5.2 CHANGELOG block:
the duplicate trailing "EUPL-1.2." right after the Based-on footer,
and a stray German "Optik" tab name in the power-settings list
(the settings tab is "Appearance" in EN, the German label only
appears in the localised UI). Yaml / repo.json / ROADMAP / README
already used the right wording.
2026-05-18 23:36:13 +02:00
JonKazama-Hellion e1f84a9b10 chore(release): v1.5.2 manifest bump
Bumps csproj Version, repo.json AssemblyVersion/TestingAssemblyVersion
plus the three DownloadLink* URLs, yaml + repo.json changelog blocks
(slim-rule: v1.5.2 + v1.5.1 + v1.5.0 + v1.4.10 retained, v1.4.9
trimmed to the Full history footer link), docs CHANGELOG long-form
block, ROADMAP v1.5.2 marked complete and v1.5.3 set as next cycle
(FR localisation with Hezcal native-speaker review), README status
strings plus moved pre-v1.5.2 history. Changelog includes the
in-cycle UI shrink + Fox-Banner-TreeNode smoke fix and the
WizardLastShownVersion re-show-once mechanism for existing users.
2026-05-18 23:29:56 +02:00
JonKazama-Hellion 82cbf4c281 chore(release): v1.5.1 manifest bump
- csproj <Version> 1.5.0 to 1.5.1; <None Include="images\**"> now
  excludes the source-only ASCII study folder so the deploy stays
  clean
- yaml + repo.json changelog block prepended with the v1.5.1 entry,
  v1.4.8 trimmed out per the slim rule (three to four versions in
  the manifest cache, older history lives on the Gitea release page)
- repo.json AssemblyVersion + TestingAssemblyVersion bumped to
  1.5.1.0, three DownloadLink* URLs point at v1.5.1
- docs/CHANGELOG and docs/ROADMAP gain the v1.5.1 entry; ROADMAP
  Next-Cycle slot moves to v1.5.2 First-Run-Wizard rework
- README status sections updated, the previous v1.5.0 paragraph
  kept under a "Project status (pre-v1.5.1, kept for context)"
  heading
- Forge-post .github/forge-posts/v1.5.1.md added, DE body honest
  about the HITCH-win miss
- yamllint config ignores the plugin manifest yaml because it
  follows DalamudPackager's 4-space indent convention rather than
  yamllint's default 2

Changelogs are honest about the cross-plugin HITCH target from
v1.5.0 not landing this cycle.
2026-05-17 19:12:22 +02:00
JonKazama-Hellion 0220e5d756 chore(linting): refresh configs and sweep auto-fix
Pull in the refreshed linter and tooling configs (editorconfig,
gitignore, gitattributes, prettierignore, prettierrc, markdownlint,
yamllint, env.example, dotnet-tools) and run prettier and markdownlint
in --fix / --write mode across the repo so the existing tree matches
the new rules.

- prettier 2-space indent on yaml/yml and json overrides, asterisk
  strong, underscore emphasis, proseWrap always
- markdownlint MD007 indent aligned to 2 and MD049 to underscore so
  prettier output stays passing
- preflight Block F also ignores CLAUDE.md (gitignored personal file)
- prettierignore extended to keep HellionChat.yaml manifest and the
  NuGet packages.lock.json out of the formatter

No semantic content changed; csharpier, build, full build-suite
(729/729) and the new prettier/markdownlint/yamllint checks all green.
2026-05-17 17:20:55 +02:00
JonKazama-Hellion 7d87f1c4fe chore(release): v1.5.0 manifest bump
Version strings bumped across all eight tracked surfaces:

- HellionChat/HellionChat.csproj   <Version>1.5.0</Version>
- repo.json                        AssemblyVersion + TestingAssemblyVersion = 1.5.0.0
- repo.json                        three DownloadLink* URLs -> /v1.5.0/latest.zip
- repo.json                        Changelog field synced with yaml
- HellionChat/HellionChat.yaml     new v1.5.0 changelog block on top; v1.4.7
                                   drops out per the four-block slim rule
- docs/CHANGELOG.md                v1.5.0 entry prepended
- docs/ROADMAP.md                  Next Cycle pointer moves to v1.5.1, v1.5.0
                                   joins the released-cycle archive block
- README.md                        three status surfaces (badge, header,
                                   Project Status long-form) on v1.5.0
- .github/forge-posts/v1.5.0.md    Discord announcement body (German)

Preflight blocks A-F all green. Changelog embed total 2050 / 5500 chars
(four subblocks), forge-post frontmatter inside the 60/40 char caps.

Tag, push, merge are reserved for Flo.
2026-05-17 11:43:07 +02:00
JonKazama-Hellion 3e91177833 release: bump to v1.4.10 2026-05-16 13:25:53 +02:00
JonKazama-Hellion b81894b859 docs: surface the ChatTwo IPC compatibility layer in v1.4.9 patch notes
Adds a "ChatTwo IPC compatibility layer" bullet across all six
release-note surfaces so the new behaviour from commits 8c4afaa and
655c903 is visible to users via the manifest installer, the Gitea
release page, the README project-status section, the changelog/roadmap
docs and the Forge-Discord announcement.

Files touched:
- HellionChat/HellionChat.yaml: bullet added inside the v1.4.9
  changelog block, preserved order so the regression-tripwire line
  still comes before the migration-stays line.
- repo.json: Changelog field kept synchronous (JSON-escaped newlines).
- README.md: project-status paragraph extended with a one-sentence
  recap of the IPC mirror and the conflict-detection caveat.
- docs/CHANGELOG.md: bullet inserted between the profiling-logs and
  migration-stays bullets, code-fenced gate names.
- docs/ROADMAP.md: v1.4.9-released section gets the same recap so the
  cycle history stays self-describing.
- .github/forge-posts/v1.4.9.md: German-only bullet for the Discord
  embed, slotted before the migration-v17 bullet. Char-cap holds —
  preflight Block C reports the embed total well under 5500 chars.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 13:04:18 +02:00
JonKazama-Hellion d9f6704316 chore: bump version to 1.4.9, sync manifest
Manifest version bump for the v1.4.9 release cut. Schema-required v16
stays unchanged (R1/R2/R3 are all config-neutral refactors).

Files touched:
- HellionChat/HellionChat.csproj: <Version> 1.4.8 -> 1.4.9
- HellionChat/Plugin.cs: schema-migration error string self-reference
  (v1.4.8 -> v1.4.9, required schema v16 stays)
- repo.json: AssemblyVersion, TestingAssemblyVersion, 3x DownloadLink*
  URLs all bumped to 1.4.9 / v1.4.9. Changelog field is still on v1.4.8;
  the v1.4.9 block plus v1.4.5 slim-drop land in the next commit.
- README.md: shield badge, version header in lead paragraph, project-
  status block rewritten for v1.4.9 (Plugin-Load Render Polish).
- docs/CHANGELOG.md: v1.4.9 block inserted above v1.4.8.
- docs/ROADMAP.md: v1.4.9 moved into the released-versions list,
  "Next Cycle" header now targets v1.4.10 (Render Clipper + Symbol
  Picker reserves carried over from the v1.4.9 plan).

yaml changelog block and repo.json Changelog field follow in the
docs commit so the slim-drop of v1.4.5 stays atomic with the v1.4.9
block insert.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 11:31:35 +02:00
JonKazama-Hellion eecedd9f97 chore: bump version to 1.4.8, sync manifest
- csproj <Version>, Plugin.cs schema-gate self-reference, repo.json
  (AssemblyVersion, TestingAssemblyVersion, 3x DownloadLink URLs).
- README.md shield badge, version header, Project Status body.
- docs/CHANGELOG.md gains a v1.4.8 section above v1.4.7.
- docs/ROADMAP.md flips Next Cycle to v1.4.9 (Plugin-Load Render
  Polish), v1.4.8 moves into the released history above v1.4.7.
- Config schema stays at v17, Migration v17 stays additive.

repo.json Changelog field and HellionChat.yaml changelog block plus
the new forge-posts/v1.4.8.md follow in a separate commit (slim-drop
of v1.4.4 happens there).
2026-05-14 10:28:51 +02:00
JonKazama-Hellion f4ea460644 chore: bump version to 1.4.7, sync changelog and forge post
- csproj <Version> -> 1.4.7
- repo.json AssemblyVersion + TestingAssemblyVersion -> 1.4.7.0
- repo.json DownloadLink{Install,Update,Testing} URLs -> /v1.4.7/
- repo.json + HellionChat.yaml changelog: prepend v1.4.7 block, retire
  v1.4.3 (slim rule keeps the last 3-4 versions)
- docs/CHANGELOG.md + docs/ROADMAP.md: v1.4.7 section, next-cycle
  pointer flipped to v1.4.8 Hook-Layer-Cycle
- README.md release badge + version stamps + Project Status block
  rewritten for v1.4.7
- .github/forge-posts/v1.4.7.md (new): DE body with subtitle
  "Backlog Cleanup and Mid-Features" / versionsnatur "Mid-Feature-Patch"
- Pin diagnostic logs (RehydratePinnedTabs / TryPin / Unpin /
  PromoteToPermanent) downgraded from Info to Debug so non-debug
  console stays quiet on release builds
2026-05-13 11:00:25 +02:00
JonKazama-Hellion c8ba8c1cd0 docs: linting Docs
Security / scan (push) Successful in 22s
Build / Build (Release) (push) Successful in 29s
2026-05-12 22:41:54 +02:00
JonKazama-Hellion c5fe69f0d3 feat(themes): swap Moonlit Bloom for Crystal Nocturne, sort built-ins by colour family
Crystal Nocturne (royal sapphire + electric magenta on obsidian, by
CRYSTALLITE) replaces Moonlit Bloom in the built-in roster. The same
chat-channel tinting convention applies: sapphire-blue identity on
party/team channels, accent-magenta on tells, and an alternating
mint/yellow/peach palette across the eight linkshell slots so each
LS stays individually distinguishable on the dark obsidian background.

Users who had Moonlit Bloom selected fall back to the default Hellion
Arctic on the first plugin load. A custom JSON copy of Moonlit Bloom
dropped into pluginConfigs/HellionChat/themes/ keeps working as a
user theme.

Plus a cosmetic re-sort of the registry: insertion order now drives a
deliberate Theme-Picker grid layout (3 columns) — blue family in row 1,
purple to magenta in row 2, green/warm/classic in row 3, Synthwave
Sunset alone in row 4 as a retro bonus.
2026-05-12 21:28:16 +02:00
JonKazama-Hellion 0d016aaa5d docs: log v1.4.6 release notes
CHANGELOG.md gets the full per-bullet block, ROADMAP.md gets the
released-cycle summary plus a v1.4.7 next-cycle placeholder, README
status section and version badge updated.
2026-05-12 20:58:57 +02:00
JonKazama-Hellion e5dbc333fa docs: linter pass on v1.4.5 release notes
Whitespace and line-reflow drift from the markdown linter on the four
files touched by the versions-bump commit (forge-post, README,
CHANGELOG, ROADMAP). No content changes.
2026-05-12 15:30:06 +02:00
JonKazama-Hellion cafb6faa39 chore: bump version to 1.4.5
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.
2026-05-12 14:33:13 +02:00
JonKazama-Hellion 3e4601a0c8 chore: reflow drift from v1.4.4 closure
Whitespace and line-reflow artefacts from auto-formatter passes plus a
packages.lock.json indent normalisation. No content changes.
2026-05-12 13:08:59 +02:00
JonKazama-Hellion 0fc88e480a chore: bump version to 1.4.4 + changelog sync + forge-post
Threading and IPC safety release. Items: F2.1 (Interlocked counter),
F4.1/F4.2/F4.3 (HonorificService threading banners + warning log),
F9.2 (AutoTranslate IsBackground), F3.1 (PrivacyPersistUnknownChannels
default), F3.2 (unknown-ChatType warning).

verify-changelog-sync: yaml/repo.json/forge-post in sync, embed-total
~2699/5500, 3/4 yaml subblocks. verify-version-consistency and
verify-manifest-shape both green.
2026-05-12 10:11:31 +02:00
JonKazama-Hellion 3b24b2adc4 docs: translate CHANGELOG and ROADMAP to English
Security / scan (push) Successful in 13s
Translate all remaining German sections in docs/CHANGELOG.md and
docs/ROADMAP.md to English for consistency across the repository.
Previously English sections left unchanged.
2026-05-11 20:32:11 +02:00
JonKazama-Hellion 699d4ede1d chore: housekeeping — linter & formatter setup
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.
2026-05-10 13:01:00 +02:00
JonKazama-Hellion 8dc8b87580 Bump version to 1.4.3 and sync manifest files 2026-05-08 22:22:22 +02:00
JonKazama-Hellion baeec369e6 Cutover custom-repo URL from GitHub to Gitea 2026-05-08 22:12:40 +02:00
JonKazama-Hellion 6689cdb968 chore: bump version to 1.4.2 and document ChatLog Frame-Hot-Path 2026-05-07 22:47:09 +02:00
JonKazama-Hellion 54bfeb0f6f chore: bump version to 1.4.1 and document Theme Engine Performance 2026-05-07 19:58:50 +02:00
JonKazama-Hellion f8a734d93f chore: bump version to 1.4.0 and document Critical Lifecycle Fixes 2026-05-07 19:04:20 +02:00
JonKazama-Hellion c8485233d5 chore: bump version to 1.3.0 and document Plugin Integrations Cycle 1 2026-05-06 21:54:58 +02:00
JonKazama-Hellion eead8d813c chore: re-release Theme Expansion as v1.2.3
Hab vergessen die repo.json wieder mit zu bumpen, deshalb hat
Dalamud den v1.2.2-Release nicht angenommen — komplette Manifest-
Bump-Checkliste diesmal durchgezogen: csproj, yaml-Description +
Changelog, repo.json (AssemblyVersion + TestingAssemblyVersion +
drei DownloadLink*-URLs + Description + Changelog), CHANGELOG.md,
ROADMAP.md, README.md, Forge-Post-Datei. Inhalt unverändert
gegenüber v1.2.2.
2026-05-06 14:24:31 +02:00
JonKazama-Hellion df0844b737 docs: add 1.2.2 entry to CHANGELOG and backfill missing 1.2.1 2026-05-06 14:01:23 +02:00
JonKazama-Hellion 4b43fdb0ad fix(settings): conditional refilter on save — preserve chat history for cosmetic changes
Settings.Save() unconditionally ran ClearAllTabs + FilterAllTabsAsync
after every save. The cycle reloads messages from the DB, which silently
wipes any in-session message that wasn't persisted — Privacy-First
configurations block most channels from the DB, so all unlogged
channels (Allgemein/Say/Yell/Shout under default filters) showed up
empty after every settings save.

New HasFilterRelevantChanges helper compares Mutable to Plugin.Config
across:
- PrivacyFilterEnabled
- PrivacyPersistChannels (HashSet<ChatType>)
- PrivacyPersistUnknownChannels
- FilterIncludePreviousSessions
- per-persistent-tab: Identifier (reorder/swap), SelectedChannels,
  ExtraChatAll, ExtraChatChannels

Refilter only runs if any of those changed. Cosmetic settings (theme,
tab icons, layout, fonts, language) leave the chat log untouched.
Combined with the prior UpdateFrom Identifier-mapping fix and the
TempTab skip in ClearAllTabs/FilterAllTabs, both persistent and
Auto-Tell tabs now fully survive a settings save.

Reported by Flo from in-game testing 2026-05-05/06: 'der allgemein
chat tab z.b immernoch gecleart wird' / 'alle vom plugin nicht
geloggten channel sind dann leer'.

Also updated yaml changelog, docs/CHANGELOG.md and .github/forge-posts/
v1.2.0.md to describe the actual fix shape rather than the partial
UpdateFrom-only fix that preceded it.
2026-05-06 00:05:49 +02:00
JonKazama-Hellion 56621669b2 release(v1.2.0): finalize changelog, yaml notes, forge announce post
Final release-doc pass for v1.2.0:
- yaml changelog extended with the post-T14 polish notes
  (Auto-Tell variety, unread pulse, layout fixes, settings-save
   wipe fixes for both persistent and TempTabs)
- docs/CHANGELOG.md date filled in (2026-05-05) and same polish
  notes added under Added/Fixed sections
- .github/forge-posts/v1.2.0.md created — DE bullet body, picked
  up by forge-announce.yml on tag push (EN side reads the yaml
  changelog block)

1920 chars in the forge post — comfortably under the 5500-char
total cap that the workflow enforces.
2026-05-06 00:00:44 +02:00
JonKazama-Hellion 3e98b9103f chore(release): bump to v1.2.0 — layout refresh 2026-05-05 19:54:56 +02:00
JonKazama-Hellion 52da5d5e23 chore(release): bump to v1.1.0 — theme foundation 2026-05-05 15:04:52 +02:00
JonKazama-Hellion 698eb01bbe chore(release): bump to v1.0.3
v1.0.2 tag was claimed before the DownloadLink fix shipped, so the
content moves to v1.0.3. No code changes — manifest, repo.json,
CHANGELOG and README version refs roll forward; DownloadLink* URLs
now point to v1.0.3/latest.zip.
2026-05-04 16:17:06 +02:00
JonKazama-Hellion 8e9332ac8c chore(release): prepare v1.0.2 — polish patch
Four small backlog items bundled:

- New: hide chat (and every other plugin window) while the New Game+
  menu is open. Settings -> Window -> Frame, default off. Skips the
  whole WindowSystem.Draw() pass while QuestRedo is visible, mirroring
  the existing HideInLoadingScreens pattern.
- New: tint the channel selector button in the active channel colour.
  Settings -> Appearance -> Colours, default on. Reuses the existing
  inputColour computation (incl. ExtraChat override) and adds an
  ImGuiCol.Button push around the selector. New ColourUtil helper
  AdjustBrightness derives hover/active variants.
- Fix: PayloadHandler.InlineIcon hardcoded all hover icons to 32x32.
  Replaced with float-based aspect-ratio-preserving shrink, single
  scale-factor, zero-size guard, named MaxInlineIconSize constant.
  Affects six call sites (status, item, achievement and other inline
  hover paths).
- Diagnostic: HideState transitions log on Verbose level for both
  ChatLogWindow and Popout.

Manifest bumped to 1.0.2 across csproj, yaml, repo.json. CHANGELOG
entry added, README version line updated. yaml + repo.json changelog
trimmed to the slim 4-version window (1.0.2, 1.0.1, 1.0.0, 0.6.1).
2026-05-04 15:57:52 +02:00
JonKazama-Hellion fcb72e2b78 chore(release): prepare v1.0.1 — window position recovery
Bumps version to 1.0.1.0 and aligns the user-facing changelog across
HellionChat.csproj, HellionChat.yaml, repo.json and docs/CHANGELOG.md.

Headline fix: off-screen window recovery (one-shot bounds check on
plugin load + manual reset button under Settings -> Window -> Frame).
Bundled housekeeping since v1.0.0: docs restructured into docs/, stale
ChatTwo/* paths cleaned up across configs, Pidgin 3.3.0 -> 3.5.1,
actions/setup-dotnet 4 -> 5, github/codeql-action 3 -> 4.

DLL build verified locally; release.yml workflow generates the release
body from HellionChat.yaml on tag push.
2026-05-04 12:15:26 +02:00
JonKazama-Hellion d63c710836 docs: restructure into docs/ folder, add roadmap and learning notes
- Move AI_DISCLOSURE, THIRD_PARTY_NOTICES, UPSTREAM_SYNC, ipc.md
  into docs/ (ipc.md renamed to IPC.md for consistency)
- Add docs/ROADMAP.md, docs/CHANGELOG.md, docs/CONTRIBUTORS.md,
  docs/LEARNING-JOURNEY.md
- Update README to reflect the v1.0.0 standalone state, drop the
  development section, refresh the architecture tree, add a
  release-cadence block linking to LEARNING-JOURNEY
- Fix stale ChatTwo/* source paths to HellionChat/* across docs
- Update cross-links in PRIVACY, CONTRIBUTING and .github/* so they
  point at the new docs/ paths

Pure documentation pass, no code changes.
2026-05-04 09:03:59 +02:00