Skip to content

4.4.0: FFXIV 7.56, Beastmaster support, dependency refresh - #209

Merged
logicallysynced merged 5 commits into
masterfrom
chromatics-4.x
Sep 10, 2026
Merged

logicallysynced merged 5 commits into
masterfrom
chromatics-4.x

Conversation

@logicallysynced

Copy link
Copy Markdown
Owner

FFXIV patch 7.56 support, Beastmaster, and a dependency refresh. Version moves to 4.4.0.

FFXIV 7.56 via Sharlayan 9.2.3

Carries the FCS bump for 7.56 alongside chat-log resume points and player-info parity work. No public API moved, so the upgrade is the package reference in both projects.

Beastmaster

BST is registered everywhere the job checklist reaches: job colours in GameHelper, both gauge-description switches, the Experience Tracker's BST_CurrentEXP, and JobBSTBase / JobBSTHighlight palette entries, with locale keys regenerated across all seven languages. The legacy palette file maps by reflection, so it picked the new entries up without a manual edit.

Beastmaster is a limited job like Blue Mage. FFXIVClientStructs has no gauge union member for it because the game gives it none, so the Job Gauge layers report that rather than pretending otherwise.

Three tests come with it, and they guard the next job rather than only this one: every job in Sharlayan's enum must have base and highlight colours, and each must round-trip through the legacy palette file. Writing them surfaced that the nine base classes and the Unknown sentinel legitimately have no entries, so those are excluded with the reasoning recorded.

Background connection failures no longer close the app (CHROMATICS-1P)

IsBenignSocketError listed the shutdown-time socket errors but not ConnectionRefused, so a smart light switched off at the wall reached CrashHandler.HandleCrash through the unobserved-task path and closed Chromatics with a crash dialog. That code plus TimedOut, HostUnreachable, NetworkUnreachable, HostDown and NetworkDown now count as the user's network, and the handler names the device that stopped answering instead of returning silently.

Dependencies

Avalonia 12.0.4 -> 12.1.2 across both UI projects, Sentry 6.6.0 -> 6.10.0, the three Hue libraries to 3.3.0, System.Drawing.Common to 10.0.12, Test SDK to 18.10.0, and NAudio 2.3.0 -> 3.1.0.

NAudio 3 carried the only real work. It retired WasapiLoopbackCapture and moved capture to a zero-copy span delegate, so the Audio Visualizer now builds its capture through WasapiRecorderBuilder().WithLoopbackCapture() and reads spans directly into the buffered provider. Passing no device means the default render endpoint, which is the same system-wide loopback the old type gave us.

xunit.runner.visualstudio 4.0.0 is held back on purpose: it targets xunit v3 and the test project is on 2.9.3, so taking it needs a v3 migration rather than a version bump.

Notes

  • 195/195 xUnit tests pass.
  • The Audio Visualizer needs a listen before release. The NAudio 3 migration compiles clean and matches the documented API, but audio capture is the one part of this that can't be verified from a test run.

🤖 Generated with Claude Code

logicallysynced and others added 2 commits September 10, 2026 22:19
…(v4.3.36 -> v4.4.0)

Fixes CHROMATICS-1P

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds 25 Occult Crescent status colours and three missing weather types, and
fixes two weather colours whose palette fields were spelled singular against
the game's plural names, so they never resolved.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@logicallysynced logicallysynced self-assigned this Sep 10, 2026
logicallysynced and others added 3 commits September 10, 2026 22:53
…e rename

Palette files are keyed on the field name, so renaming the two weather fields
to their plural in-game spellings would have reset whatever colour the user
had picked. Setter-only aliases carry the old keys across and retire them on
the next save. Also prunes the orphaned singular keys from the six translated
locale files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Blue Mage and Beastmaster have no job gauge, so the layer-type tooltip fell
through to the generic description and implied a gauge was coming. Both now
say so, and say to pick another layer type.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GetJobClassDynamicLayerDescriptions had no callers in any of the three
projects. The live equivalent is LayerItemViewModel's tooltip table, which
is localised and reachable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@logicallysynced
logicallysynced merged commit 6951c6d into master Sep 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant