GRIP-EMS v1.7.0-Beta
Released April 3, 2026. 145 entries in the author's notes.
Every entry
The author's own words, complete. Long sections are sorted into areas by LazyGrip.
Added
91Macros, export, import and sharing17
Add context menu shared between outline action bar and detail pane toolbar, supporting flat steps and all 4 structural node types
Syntax highlighting for macro commands in step edit boxes (UI/SyntaxHighlight.lua)
Action tree compiler for node-to-macrotext compilation (Engine/ActionCompiler.lua)
Inline clipboard (hidden EditBox Ctrl+C flow, falls back to ExportFrame on failure)
Macro stub body viewer (collapsible section showing BuildStubBody output)
Context Tab import origin indicator (imported vs user-created versions visually distinguished)
Macro recorder module (Engine/MacroRecorder.lua)
Configurable M+/Delve threshold sliders in Settings > Context
Import/Export
Raw text import path for plain macro paste (Import/RawImport.lua)
Action interval interleaving on import
Import conflict Compare option with visual diff
Export metadata editor stage (collection name, author, description, URL, talent string embedding with per-field toggles)
Freeform macro import warning (auto-detect raw /cast patterns, count display in import preview)
Quality of Life
Remote sequence browser for P2P shared sequences (UI/RemoteBrowser.lua)
P2P transmission: metadata-only sync, spell cache broadcast, chat links with clickable import, recipient autocomplete, cross-server
Corrupt sequence recovery (StaticPopup chain: Delete/Skip/Export Raw)
WagoAnalytics deep integration (sequence/import/export/feature events)
Saving, naming and editing13
Flat-to-actions migration: one-click conversion of flat step sequences to the action tree model with full undo support
Auto-focus name EditBox on structural node creation
Editor Enhancements
Undo/redo system (Ctrl+Z / Ctrl+Y) for step editing, drag operations, and structural changes (UI/UndoStack.lua)
Popup editor for quick sequence editing from the sequence list (UI/PopupEditor.lua)
Side-by-side sequence version comparison viewer (UI/ComparisonFrame.lua)
Multi-window popup editor system (frame pool max 4, independent dirty state, cascade offset, sequence sync via SEQUENCE_UPDATED)
Per-editor undo stacks in PopupEditor (Ctrl+Z/Y undo/redo, Alt+Up/Down move steps, Up/Down step nav)
Metadata description multi-line EditBox
Mouse wheel scroll in KeyPress/KeyRelease EditBox fields
Engine Modules
Spell picker dropdown with condition builder for step editing (UI/SpellPicker.lua, integrated into step editor)
Context Switching
CopyVersion() utility for safe per-version deep copy, replacing whitelist pattern that missed keyPress/keyRelease fields
SwitchVersion prompts Save/Discard/Cancel when switching versions with unsaved edits
Support/About page in Settings (version, links, system info)
Variables and recommendations12
Tab-autocomplete: sequence name fallback in step editor in addition to existing variable autocomplete
Dependency visualization in metadata panel (variable/sequence refs, found/missing status, reverse "Embedded by" lookup)
Gear change variables with bag and equipment tracking (Data/GearVariables.lua)
Variable event dropdown (75 curated events, categorized submenu)
Function-type variable evaluation cache (compiled function caching in VariableStore for performance)
Tab-autocomplete for \~variable\~ and sequence name insertion in step editor
/gems import now handles collection strings (multi-sequence + variables) via Preview path instead of failing (BUG-055)
Variable dependency auto-check on import (ResolveImportVariableDeps)
Optimal MS advisor (/gems msadvisor, analyzes sequence timing)
Locale risk detection: compile-time spell-name flagging with localeRiskFlags in VariableStore
Variables Tab locale warning banner (yellow icon for risky variables, suggests C_Spell.GetSpellName alternative)
Separate events-enabled toggle per variable (eventsEnabled field, independent of event string content)
Keybinds and the conflict panel8
Spell autocomplete via Tab key with spellbook search dropdown (UI/SpellPicker.lua)
Rich spell/item tooltips on step list rows (SetSpellByID, SetItemByID, keybind hint line)
Vehicle, skyriding, and pet battle keybind auto-suspension extracted to dedicated modules (Engine/VehicleKeybinds.lua, Engine/PetBattleButtons.lua)
28 per-map context keys for arenas (15) and battlegrounds (13) via instanceMapID detection with rated-type priority
53 total context keys (up from \~20 in v1.1.6)
9 new context keys (25 total): M+ tier detection (Low/Mid/High), PvP rated split (RatedArena/SoloShuffle/RatedBG), Delve tier detection (Low/High), Timewalking raid split
DebugWindow closes with ESC key (UISpecialFrames registration)
3 locale string wiring fixes (stub preview, empty hint, keybind hint)
Testing
Resets and modifiers5
5 structural node types: Action (spell step), Loop (cycle, blue), Pause (bars, yellow), If (conditional, purple), Embed (reference, green) with colored badge icons
6 configurable editor colours in Settings > Editor Colours for macro commands, conditionals, variables, comments, reset, numbers
Configurable macro reset modifiers (15 individual modifier toggles)
Pause conversion (3-mode: Clicks/GCD/MS compiled to empty steps)
25 unit tests across 8 categories in Test/TestSuite.lua (stepfunc, compiler, reset, import, export, serialization, variables, engine)
Languages3
Gamepad keybind capture (EnableGamePadButton + OnGamePadButtonDown, 32 button display names, ConsolePort addon detection)
Localization
10 locale stub files added (deDE, esES, esMX, frFR, itIT, koKR, ptBR, ruRU, zhCN, zhTW) with framework for community translation
AceLocale-3.0 localization framework (11 locale files, 591 strings across 65 categories, community translation contribution path)
Repair and spell warnings2
WoW Forever and plugins1
Plugin registration API for third-party addon integration (Core/PluginAPI.lua)
Combat and the Options pages1
AddOnRestrictionType-aware OOC queue (checks beyond InCombatLockdown for addon-restricted states)
Everything else29
Outline + Detail Pane pattern: left column shows flat steps and structural node badges, right column opens on node click with breadcrumb drill-down navigation
Breadcrumb navigation with truncation at depth 5+ (first segment, ellipsis, last 2 segments)
Context-sensitive detail pane with child node list and toolbar -
Drag-to-reorder for both outline rows and detail pane children with ghost frame and insertion indicator
Compiled preview Copy button strips WoW color codes for clean clipboard text
Ghost snap-back animation on drag cancel (lerp interpolation with alpha fade in StepListView)
Empty state illustration for sequence list (icon + label + hint when no sequences exist)
Scroll-during-drag in step list (auto-scroll near ScrollBox edges)
Action bar icon override for Blizzard, ElvUI, and Bartender4 bars with per-step icon updates (Engine/BarIntegration.lua)
Execution tracing diagnostics (Engine/ExecutionTracer.lua)
MS click rate slider (global + per-character, Settings > General)
CVar management panel (auto-fix + status display in Settings)
OOC queue priority + deduplication (replaces simple FIFO)
Configurable OOC timer delay (Settings > oocDelay, 1-60s, default 7)
Hierarchical actions: If/Loop/Embed nesting (ActionCompiler flattens to linear steps, per-type UI renderers in UI/ActionRenderers.lua)
Battleground Blitz detection via C_PvP.IsSoloRBG() with fallback chain (BattlegroundBlitz > RatedBG > PVP)
/gems mapinfo diagnostic command for live context detection
Select All/Clear All buttons per context group header
Visual fallback chain indicator (color-coded resolution path)
SequenceList "Compare with..." context submenu
Icon suggestion utility (SuggestSequenceIcon auto-detects from spell content)
Floating menu bar with movable shortcut icons (UI/FloatingMenu.lua)
Spell cache diagnostic viewer (UI/SpellCacheViewer.lua)
ContextTab group collapsed/expanded state persists across sessions
Clear Overrides confirmation dialog in SpellCacheViewer
LibQTip-2.0 tooltip library added
Developer utilities: /gems compress, /gems decompress
Click rate diagnostics (/gems status shows clickRate metrics)
Fixed
20Saving, naming and editing9
UndoStack \_suppressUndo permanently stuck true on callback error, disabling undo for the rest of the session (NEW-HIGH-02)
SpellCache spell-name overrides had no effect due to wrong AceDB path (read GRIPEMS.db instead of GRIPEMS.Settings.db) (NEW-MED-02)
Cross-realm chat links fell through to remote request path due to missing Ambiguate normalization on player name (HIGH-01)
SwitchVersion silently discarded unsaved step edits (HIGH-04)
TrackerHUD GetActiveVersion nil crash on corrupt version data (MED-40)
TrackerHUD name truncation off-by-one: displayed 9 chars instead of max 8 (MED-24)
UndoStack Push accepted nil or non-function callbacks, causing delayed crash on Undo/Redo instead of immediate caller error (HIGH-11)
UpdateEditArea SH hook race: programmatic SetText triggered SyntaxHighlight colorization, corrupting step data (S29-BUG-05)
ShowRenameDialog whitelist missed keyPress/keyRelease fields on version deep-copy
Macros, export, import and sharing2
P2P metadata sync non-functional: SendSequenceMeta and CMD_META handler accessed fields on wrapper table instead of wrapper.data, always sending updatedAt=0 and help="" (NEW-HIGH-01)
MacroManager DeleteStub substring match could delete wrong macro stub when one sequence name was a prefix of another (HIGH-03)
Variables and recommendations2
Repair and spell warnings1
SpellValidator load-time constant could crash if TOC load order ever changed (NEW-HIGH-03)
Keybinds and the conflict panel1
SettingsPanel early D binding could crash on TOC reorder (NEW-MED-03)
Everything else5
SpellCacheViewer Clear Overrides also targeted wrong db path, making the button non-functional (HIGH-14)
StepFunctions modulo-by-zero on empty sequences: Sequential returned NaN, Random errored (MED-38)
Autocomplete color code corruption from SyntaxHighlight focus hooks splicing colorized text into plain-text cursor positions (S30-BUG-01)
Flat sequences forced into tree mode after /reload due to unconditional auto-migration in Engine:LoadSequences (S30-BUG-02)
Removed Test/TestSuite.lua from TOC load list (file excluded from packages via .pkgmeta, caused load warnings for installed users)
Changed
22Saving, naming and editing5
MoveStep undo closures inlined (direct table swap)
EDITOR_HEADER_HEIGHT reduced from 220 to 200 (dark EditBox contrast fix)
PopupEditor callbacks unregistered on release instead of dispatching to idle instances (MED-37)
SequenceEditor callbacks skip refresh when editor panel is hidden (MED-14)
nameTooltipFrame dead overlay removed, tooltip moved directly to nameEditBox (NEW-LOW-01)
Variables and recommendations2
Repair and spell warnings2
Macros, export, import and sharing2
Combat and the Options pages1
OOCQueue now checks AddOnRestrictionType beyond InCombatLockdown
Keybinds and the conflict panel1
Duplicate locale key consolidated to GEMS_SEND_NO_SEQ (NEW-LOW-06)
Everything else9
C_TooltipInfo API migration (GetItemByID/GetSpellByID with fallback)
Dead DRAG_SCROLL_SPEED constant replaced with DRAG_SCROLL_INCREMENT
Preview icon strip edge fade textures on both sides (layout fix)
ComparisonFrame OnUpdate skips when frame is hidden (NEW-MED-04)
ReclaimFrame clears 12 scripts on recycle instead of 8, adding OnEnter, OnLeave, OnClick, and OnTextChanged (MED-20)
KeyPress/KeyRelease tooltip descriptions clarified with per-step fit behavior explanation (MED-UX)
5 tooltip strings standardized for tone and accuracy (S28-39)
README slash commands updated to 26 entries (S28-37)
.pkgmeta now excludes Test/, Prompts/, and internal dev folders from user packages (NEW-MED-07)
Internal
12Saving, naming and editing3
WoW Forever and plugins1
New files: UI/ComparisonFrame.lua, UI/PopupEditor.lua, UI/SyntaxHighlight.lua, Core/PluginAPI.lua, Engine/MacroRecorder.lua, UI/RemoteBrowser.lua, Engine/ActionCompiler.lua, UI/ActionRenderers.lua, Engine/VehicleKeybinds.lua, Engine/PetBattleButtons.lua, Engine/BarIntegration.lua, UI/SpellPicker.lua, UI/FloatingMenu.lua, UI/SpellCacheViewer.lua, Import/RawImport.lua, Data/GearVariables.lua, Engine/ExecutionTracer.lua, Test/TestSuite.lua, UI/UndoStack.lua, 11 Locale/\*.lua files
Macros, export, import and sharing1
BuildSeqDataFromGRIP1 shared helper eliminates import path drift
Everything else7
S28 Full Code Audit: 38 findings resolved across 4 tiers (see Backlog.md for itemized list with completion dates and evidence)
stylua reformat on 38 files (120 col, 4-space indent, Unix LF)
.luacheckrc redefined warnings re-enabled with targeted 432/self suppression and 5 inline exceptions (NEW-MED-10)
wow.toml: 6 missing globals added (gsub, gmatch, getfenv, setfenv, rawlen, GetSpecializationInfoByID) (NEW-MED-08)
luacheck 0 warnings / 0 errors across 65 shipped files
Phantom method check: SLV 53 methods, SE 42 methods -- all clean
28 sessions of parity work across 9 tiers (24 DONE, 4 PARTIAL, 0 DEFERRED)
Grab it
Release notes written by Sataana and reproduced here with his permission.