You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Single-Codebase Support: Fully restored seamless compatibility across both Fantasy Grounds Classic (FGC) and Fantasy Grounds Unity (FGU) in a unified master branch.
Robust FGC Runtime Detection (checkFGC): Implemented reliable runtime detection that handles string version return values (e.g. "3.3.16") under FGC's Lua 5.1 runtime, as well as UtilityManager.isClientFGU and Session.VersionMajor without comparison crashes.
Actor Resolution Fix (getActorSafe): Fixed single-argument ActorManager.getActor(v) returning nil on FGC by routing to ActorManager.resolveActor(v).
Function Hook Hardening & Idempotency
/reload Recursion Elimination: Added idempotency guards to all function hooks (CombatManager.requestActivation, EffectManager.addEffect, EffectManager.addEffectByTable, and Combat Drop hooks) to prevent infinite recursion stack overflows when reloading.
Clean Action Attack Interception: Replaced direct ActionAttack.onAttack hook with ActionsManager.registerResultHandler("attack", fWrapper) using an unwrap table (aOwnResultWrappers) to avoid stomping or colliding with other extensions.
Event Deduplication & Tooling
Combat Tracker Drop Deduplication: Restored file-scoped drop deduplication (LAST_DRAG_INFO, LAST_NODE_NAME, LAST_NODE_TYPE) on FGC to suppress phantom double-drop events.
Automated Unit Testing: Expanded test suite to 29 assertions in test/run_tests.js covering FGC/FGU version detection, actor resolution, idempotency, and drop deduplication.
Clean Extension Packaging: Updated packaging script to exclude local development binaries (luacheck.exe).