GRIP-EMS v1.9.1
Released April 12, 2026. 29 entries in the author's notes.
Every entry
The author's own words, complete. Long sections are sorted into areas by LazyGrip.
Added
19Variables and recommendations5
TempoAdvisor engine (Engine/TempoAdvisor.lua): per-sequence click rate analysis with 3-tier model -- theoretical GCD timing, per-sequence stored recommendations, adaptive learning from ExecutionTracer play data
TempoOverlay HUD (UI/TempoOverlay.lua): movable dark-themed overlay showing Faster/Slower guidance, live CPS, recommended MS, off-GCD step count, confidence level (Estimated vs Calibrated), and sparkline history
Audio alerts on tempo mismatch (too fast / too slow, opt-in)
Human-readable text export for forum/Discord sharing (metadata, numbered steps, KeyPress/KeyRelease, variables with event names)
Macros, export, import and sharing4
Legacy import preserves Interval from Repeat actions as node property (no more data loss on import)
Import Quality
Sequence disable toggle: disabled sequences import as dormant, show \[Disabled\] suffix and 0.3 alpha icon, right-click Enable/Disable in sequence list context menu
Pet ability (/cast) and Toy (/use) sub-type import branches
MetaData (Author, SpecID, Icon) now read on clipboard import path
Other
Resets and modifiers3
Repair and spell warnings2
Everything else5
Settings panel: Faster/Slower section with mode selector, buffer slider, Hold Mode CVar toggle
Interval property on Action nodes -- interleave a spell every N steps at compile time
ActionCompiler two-phase weave (works inside Loop blocks)
StepListView detail pane: interleave checkbox + interval spinner (2-50 range) with inline \[IL:N\] row indicator
Migration report distinguishes dormant vs active sequence counts
Fixed
10Variables and recommendations3
TempoAdvisor CPS source: use Engine:GetButtonPressRate() instead of CLEU spell timestamps (\~0.3/sec vs actual \~2.8/sec)
StoreRecommendation: field-by-field merge instead of table replace (was wiping empirical blendedMs/totalSamples data)
blendedMs overwrite guard in StoreRecommendation merge loop
Resets and modifiers1
/gems resetui persistence: empty table instead of nil so OnHide saves the reset position correctly (BUG-057)
Saving, naming and editing1
Faster/Slower clickTimes threshold: 10 -> 3 (CLEU only yields 4-6 entries per 10s window, old threshold was unreachable)
Combat and the Options pages1
SetPropagateKeyboardInput taint: pcall wrapper in SequenceEditor OnKeyDown prevents ADDON_ACTION_BLOCKED in combat
Everything else4
CvarProfileManager IsCVarSecure: unpack GetCVarInfo positional returns instead of table indexing (was always returning false)
Phantom eng.activeSequence: replaced with eng.\_lastClickedSequence in PrintStatus, LDB tooltip, and UpdateBroker
Micro-stutter: UNIT_SPELL_HASTE player-only filter (was firing for all nearby units), reusable tables in AnalyzeSequence, OnUpdate replaced with C_Timer.NewTicker, incremental GC
Hold to Cast CVar description: clarified native ActionButton scope
Grab it
Release notes written by Sataana and reproduced here with his permission.