EMS-Changelog

GRIP-EMS v2.0.2

Released May 5, 2026. 6 entries in the author's notes.

Every entry

The author's own words, complete. Long sections are sorted into areas by LazyGrip.

Added

2

Layer 1 boolean condition helpers for use in user variable expressions: GRIPEMS.HasBuff, GRIPEMS.HasDebuff, GRIPEMS.SpellReady, GRIPEMS.SpellOnCooldown, GRIPEMS.SpellEnabled, GRIPEMS.IsRestricted. Each helper pcall-wraps its underlying API and is safe to call in combat under 12.0 addon-action restrictions. Numeric variants (HealthBelow, PowerBelow, GetBuffStacks, SpellCooldownLeft, etc.) are architecturally blocked by the 12.0+ secret-value system on every reachable path tested -- see Research/Variable_Taint_Solution_2026-05-04.md v2.2 / v2.3 for the empirical sweep results. GRIPEMS.IsRestricted reads the existing GRIPEMS.restrictions table maintained by Engine/OOCQueue.lua's ADDON_RESTRICTION_STATE_CHANGED handler and registers no event handler of its own. Tracked under IC-VAR-01 Phase 3a.

#

Insert Helper button on the Variables Tab function-body editor: opens a picker with the eight Layer 1 condition helpers (HasBuff, HasDebuff, SpellReady, SpellOnCooldown, SpellEnabled, IsRestricted) and inserts the chosen helper at the cursor with the spellID placeholder pre-selected for type-over.

#

Changed

1

Function Body tooltip in the Variables tab now lists the six Layer 1 boolean helpers (HasBuff, HasDebuff, SpellReady, SpellOnCooldown, SpellEnabled, IsRestricted) and includes a Private aura note clarifying that 12.0+ Private auras are hidden from HasBuff and HasDebuff iteration. The locale-safety guidance is preserved. enUS authoritative; 10 mirror locales carry the new English value with REVALIDATE markers.

#

Fixed

3

BarIntegration ActionBar taint -- defensive guard. Engine/BarIntegration.lua rewritten so step icons land on addon-owned overlay textures only. 9 touch-points migrated; private overlays table plus 5 helpers (CreateOverlay, GetOrCreateOverlay, ApplyOverlayIcon, HideOverlayByName, HideAllOverlays); trackedButtons no longer caches originalTexture. Mirrors the StaticPopupDialogs private-table pattern from v2.0.1: addon state stays in addon-private storage, never written into Blizzard-owned tables. Closes the suspected root of ADDON_ACTION_BLOCKED on MultiBarBottomLeft:ShowBase() reported during talent swap and Guardian Druid form shift on Razer hardware autoclick. The previously disabled hooksecurefunc(ActionBarActionButtonMixin, "Update", ...) stays off; re-enabling it is now structurally safe and is tracked for v2.0.3 once telemetry confirms the defensive guard.

#

isInLongComment in the Variables tab function-body editor rewritten as a single-pass walker that tracks open level (count of = signs between brackets) and requires a matching close. Smart-concat now correctly suppresses inside --[==[ ... ]==] and other leveled long comments, not just plain --[[ ... ]]. Phase 3c.2-extra.

#

zhCN.lua and zhTW.lua were 98% Korean clones of koKR.lua from a prior copy-paste -- shipped in v2.0.1, exposing Chinese (Simplified and Traditional) players to Korean text across the Variables tab, settings, error messages, and every other locale-driven surface. Both files regenerated from enUS.lua source via machine translation, marked -- MT for future human-review pass. AceLocale registration headers preserved (zhCN, zhTW). Tracked under BUG-LOCALE-CHN-CLONE in the EMS Backlog. Phase 3c.1.5.

#

Grab it

Release notes written by Sataana and reproduced here with his permission.