Releases: BluntEXE/StarfallStudio
Release list
v0.2.35
Fix: guard weapon draw data pointer reads to prevent AV crash race
v0.2.34's null-guard checked the character's native pointer once at the
top of FromCharacter, but GetWeaponDrawObjectData independently
re-fetched Native() and dereferenced it without a check. A
redraw/destroy race between the initial guard and the weapon-hidden
reads still produced an AccessViolationException with the same crash
signature. This release adds the missing null guard at the source and
both call sites (read + write paths).
v0.2.34
Fix actor spinning when moving in open world GPose
Fix crash (AccessViolation) during EnableDraw when SetRotation hook fired on a stale actor
Fix crash (AccessViolation) reading appearance from a character mid-redraw
Fix crash (AccessViolation) polling draw state on a character mid-redraw
v0.2.33-testing
Testing build — fixes crash introduced in v0.2.32-testing.
Root cause: SetRotation hook was skipping the original call during EnableDraw, leaving the game's model matrix uninitialised. This caused an AccessViolationException in native code that bypassed all managed exception handling and crashed the game.
Fix: Always call the original SetRotation first, then apply the transform override on top. This should also resolve the odd camera zoom behaviour reported alongside the crash.
Spinning model fix from v0.2.32 is preserved.
v0.2.32-testing
Testing build: fix model spinning when selected actor moves in open world GPose (crowded areas). Hook SetRotation in addition to SetPosition to fully lock the frozen transform.
v0.2.31 - Starfall File Formats & Full Rebrand
What's New
- Scene files now save as
.starscn(old.brioscnfiles still load) - Project files now save as
.starproj(old.brioprojfiles still load) - AutoSaves now use
.starautosave(old.brioautosavefiles still load) - All ImGui window IDs renamed
starfall_*— fixes conflicts when Brio is loaded alongside Starfall Studio - All remaining Brio-named source files renamed to Starfall equivalents
v0.2.30
v0.2.29
v0.2.28
v0.2.27
Fix button text alignment and icon=None layout\n\n- 'Browse for File' was showing as 'rowse for File'\n- 'Add new source' was showing as 'Add new sour'\n- Root cause: ButtonTextAlign formula in Button() helper was incorrect\n- Fix: corrected formula, iconWidth=0 when no icon
v0.2.26
v0.2.26
Stability fixes (dalamud-review audit)
- Hook detour safety: Added try/catch to all 26 hook detours across 10 files. Unhandled exceptions in hook detours propagate back into native FFXIV game threads and cause instant crashes. All detours now log errors and fall back to calling the original game function.
- Static hook fix: Fixed two Hook fields that were incorrectly marked static (GPoseService, CameraService). Static hooks survive plugin reload within a game session — the old detour stayed wired without being disposed, risking double-hook on reload.
- Init race fix: Added _disposed guard in the RunOnTick startup callback. If the plugin is unloaded during the 2-tick delay before init fires, the callback now returns early instead of initialising services that will never be cleaned up.
- Cleanup: Removed GC.SuppressFinalize calls on classes without finalizers. Replaced ReadOnlySeString.ToString() with .ExtractText() on 17 Lumina sheet field accesses (item/dye/emote/weather/facewear names). Fixed CharacterInitializeDetour typo. Fixed actor speed not restoring to 1.0 on entity dispose when a speed override was active.