GRIP - Enhanced Macro Sequencer

The free macro sequencer for World of Warcraft. No paywalls. Every feature included.

v1.9.1

New in v1.9.1

Tempo Advisor NEW

Per-sequence click rate analysis with adaptive learning. A movable overlay tells you when to speed up or slow down.

Interleave / Weave NEW

Set an interval on any Action node and the compiler weaves it every N steps into your rotation automatically.

Import Quality NEW

Checksum validation, disable toggle, Pause/Pet/Toy import fixes, and clipboard metadata reading.

Installation

Addon Manager (recommended)

Search for GRIP - Enhanced Macro Sequencer or GRIP-EMS in any of these addon managers:

Manual Install

  1. Download the latest release from CurseForge or Wago.
  2. Extract the GRIP-EMS folder into:
    World of Warcraft/_retail_/Interface/AddOns/GRIP-EMS/
  3. Restart WoW or type /reload in chat.

Requirements

Quick Start

Get your first rotation running in five steps:

1

Open the editor

Type /gems in chat to open the sequence editor.

2

Create a sequence

Click New and give your sequence a name.

3

Add your spells

Type one spell per step. Press Tab for spell autocomplete from your spellbook.

4

Save and bind

Click Save , switch to the Keybind tab, and press your desired key.

5

Play

Find a target and start pressing your keybind. Your rotation fires automatically, one spell per press.

Tip: Switching from another sequencer? Jump to Migration instead.

Migration

GRIP-EMS imports sequences from other macro sequencer addons. Everything transfers: sequences, variables, step functions, metadata, multi-version data, and context overrides.

In-Game Migration

If your old addon is still installed:

  1. Open GRIP-EMS with /gems
  2. Click Migrate in the sequence list
  3. Everything transfers automatically with a report in chat

Clipboard Import

  1. Export a sequence from your old addon to clipboard
  2. In GRIP-EMS, run /gems import
  3. Paste the string into the import window
  4. Pick which sequences to import. Conflicts are color-coded with skip, replace, and rename options per item.
Tip: GRIP-EMS auto-detects the format. GRIP1 (native), legacy serialized, and raw macrotext (/cast lines) are all supported.

Core Concepts

Sequence

A sequence is an ordered list of macro steps. Each step is a line of WoW macro text (up to 255 characters). When you press the keybind, the addon fires the current step and advances to the next one.

Step Function

The step function controls the order in which steps execute:

Reset Conditions

Reset conditions send the sequencer back to step 1. You can combine them:

Example: target/combat/5 resets on target change, combat end, or 5 seconds idle.

Macro Stub

Each sequence creates a SecureActionButton (macro stub) at load time. This is the button that WoW fires when you press the keybind. The addon updates its macro text each keypress to point to the current step.

Variables

Account-wide ~varname~ substitution in macro text. Variables can be plain text or Lua functions that re-evaluate on events. Use them to share common fragments across sequences.

The Editor

Open the editor with /gems. The editor supports up to 4 simultaneous windows so you can compare and edit multiple sequences side by side.

Editor Tabs

The Steps tab is where you build your rotation. Each line is one macro step.

  • Type a spell name and press Tab for autocomplete from your spellbook
  • Drag steps to reorder using the handle on the left
  • Each step shows a live character count (green under 200, yellow 200-240, red 241-255)
  • The interleave spinner appears on Action nodes -- set an interval to weave that spell every N steps
  • KeyPress/KeyRelease editor for per-step prefix/suffix macrotext
  • Working-copy editing: Save or Discard when you are ready

Assign a keybind to this sequence. Binds are stored per-spec and auto-switch on spec change.

  • Press the key you want to bind
  • Vehicle and pet battle keybind slots available (12 + 6)
  • Gamepad support with ConsolePort detection

View the generated macro text for each step. Useful for debugging why a step might not fire correctly.

  • Shows the final 255-char macro per step
  • Rotation preview: icon strip or text list
  • Copy to clipboard from text mode

Manage variables used in this sequence. Variables use ~varname~ syntax and get substituted at runtime.

  • Plain text variables for shared macro fragments
  • Lua function variables with event-driven re-evaluation
  • Full WoW macro syntax support

Configure which contexts (raid, dungeon, PvP, etc.) activate this sequence version. See the Context System section for the full list of 53 context types.

  • Collapsible groups with Select All / Clear All
  • Per-context variable overrides
  • Visual fallback chain indicator

View and edit the raw serialized data for this sequence. For advanced users who want to inspect or manually tweak the underlying data structure.

Hierarchical Actions

Beyond simple linear step lists, GRIP-EMS supports a hierarchical action tree with nesting. The visual node editor lets you build control flow structures.

Node Types

If / Else Conditional Branching

An If node compiles a True branch and a False branch into a single chunk of WoW macro conditional text. The macro engine evaluates the condition you typed in the Cond box at runtime and runs whichever branch matches. EMS v2.1.0 fixed multi-action branches and automatic DeMorgan negation; earlier versions silently dropped all but the first action of each branch.

Out-of-combat examples

Mount toggle. Shift held casts the utility spell, otherwise summon a mount.

/cast [mod:shift] Aspect of the Cheetah; Reins of the Crimson Deathcharger

Indoor fallback. One-sided If with no True branch. The compiler emits an explicitly negated condition so the mount only fires outdoors.

/cast [noindoors] Reins of the Crimson Deathcharger

Profession dailies. Different commands per branch, so the compiler splits into two lines.

/dismount [mounted]
/cast [nomounted] Mining

In-combat examples

Modifier burst. Shift swaps the filler for a cooldown.

/cast [mod:shift] Bestial Wrath; Cobra Shot

Target-aware cast. Damage on hostile targets, heal on friendly.

/cast [harm] Cobra Shot; Mend Pet

Pet-aware Hunter. The production sequence shipped in v2.0.x and now under regression coverage.

/cast [nopet] 982; 217200

Condition cheat sheet

Conditionals players reach for first. The spec doc has the full catalog.

mod:shift
True while shift is held. Variants for ctrl, alt, and L/R sided forms.
combat
True while in combat.
nocombat
True while out of combat.
harm
True when the current target is hostile.
help
True when the current target is friendly.
mounted
True while mounted.
indoors
True while inside a building or cave.
advflyable
True in zones where Skyriding is allowed (added 10.0.7).
stealth
True while in stealth (Rogue, Feral Druid, etc.).
nopet
True when no pet is active. Hunters and Warlocks use this for revive/summon fallbacks.
spec:N
True when current spec index matches N. Use slash for OR groups, e.g. spec:1/3.
pvpcombat
True while in PvP combat with another player. Counts PvP-flagged combat NPCs in arenas and battlegrounds. Does not trigger on NPC combat in war-mode open world.

Full list with patch history at the WoW conditional reference.

DeMorgan negation

If the True branch is empty, the compiler emits an explicitly negated condition for the False branch instead of an empty first clause with a semicolon fall-through. The shorter form [noindoors] mount compiles to a single bracket with the negated condition; the alternative [indoors] ; mount would compile to a two-clause macro with an empty first clause, which is harder to read and provides no behavioral advantage. The full DeMorgan rule set lives in spec section 5.

Path indicator

The editor shows a small badge next to the Cond box label. The label tells you which compile path the node took: Single line, Two-line split, Per-step, or Optimized fall-through. The Compiled Output preview pane shows the literal macrotext the engine will see. If you set a multi-action True branch and the badge reads Per-step, that is the expected path.

Interleave / Weave NEW

Set an interval (2-50) on any Action node to weave it every N steps. For example, if you set a trinket use to interval 5, the compiler inserts it every 5th step.

The compiler works in two phases:

  1. Flatten -- expand Loop, Repeat, and Conditional nodes into a linear step list
  2. Interleave -- insert weaved actions at their configured intervals

Interleave works inside Loop blocks. The editor shows an [IL:N] indicator on interleaved rows in the step list.

Tip: Use Interleave for maintenance buffs, trinket procs, or cooldowns that you want fired at regular intervals without disrupting the main rotation flow.

The ActionCompiler walks the tree depth-first. Each leaf Action node becomes a step. Loop and Repeat nodes multiply their children. Conditional and If/Else nodes evaluate at compile time if the condition is static, or produce a conditional macro line otherwise.

After flattening, the interleave pass scans for nodes with an Interval property and inserts them at the specified positions. The final output is a standard step list that the sequencing engine processes normally.

Sequencing Engine

Execution Flow

  1. You press the keybind
  2. The engine reads the current step from the active sequence
  3. The step function decides which step to fire (Sequential, Priority, etc.)
  4. The macro stub text is updated with the chosen step
  5. WoW fires the SecureActionButton, casting the spell
  6. The engine advances to the next step (or resets based on reset conditions)

Icon Resolution

The engine resolves spell icons through a pipeline:

  1. Check for a user-defined icon override in the sequence metadata
  2. Parse the current step for a /cast or /use command
  3. Look up the spell ID in the spell cache
  4. Query GetSpellTexture for the icon path
  5. Fall back to the default question-mark icon if all else fails

Macro Generation

Each step is a WoW macro line with a 255-character hard limit (enforced by Blizzard). The engine handles:

Warning: If a step exceeds 255 characters after variable substitution, the macro will be truncated by WoW and may not cast correctly. Watch the character counter in the editor.

Tempo Advisor NEW

The Tempo Advisor analyzes your sequence to recommend an optimal click rate (milliseconds between keypresses). It starts with a theoretical estimate and gets more accurate as it learns from your actual play data.

4-Phase System

1 Phase 1: Spell Classification

The advisor categorizes every spell in your sequence into one of 7 timing categories: OFF_GCD (instant, no cooldown trigger), ON_GCD_INSTANT (triggers the GCD but casts instantly), ON_GCD_CAST (has a cast time on the GCD), LONG_CAST (cast time longer than the GCD), CHANNEL (channeled spell), PAUSE_CLICKS (wait step), UNKNOWN (spell data not yet cached).

2 Phase 2: Theoretical Analysis

Using the spell categories, the advisor builds a transition graph between steps. It calculates the expected time between keypresses by simulating each step transition and summing GCD durations, cast times, and off-GCD windows.

3 Phase 3: Empirical Learning

After 30 play samples from the ExecutionTracer, the advisor blends real data into the recommendation. The mix is 70% theoretical / 30% empirical. Stale CLEU data is detected and discarded automatically.

4 Phase 4: Stored Recommendations

Each sequence stores its own recommendation (recommended MS, sample count, blend ratio). Recommendations update adaptively as you play, and persist across sessions.

Faster/Slower Overlay

A movable dark-themed widget that shows:

The overlay is draggable. Reposition it wherever works best for your UI.

Audio Alerts

When enabled, the advisor plays a subtle sound if your click rate drifts too far from the recommendation. This is opt-in via Settings.

Slash Commands

Command Description
/gems fs Show current Tempo Advisor status
/gems fs on Enable the Faster/Slower overlay
/gems fs off Disable the overlay
/gems fs reset Clear stored data and start fresh

The advisor builds an NxN matrix where N is the number of steps. Each cell represents the expected time (in ms) transitioning from step i to step j. For Sequential step function, only the diagonal+1 cells matter. For Priority, the entire first row is weighted heavily since step 1 is always attempted first.

Off-GCD spells get a near-zero transition time. Channeled spells use their full channel duration. The final recommendation is the weighted average across all likely transitions, plus a configurable buffer.

Setting Description Default
Mode Off / Overlay / Auto-Set Overlay
Buffer Extra MS padding on the recommendation 10
Sparkline Show CPS sparkline on the overlay On
Audio Alerts Sound on tempo mismatch Off
Hold Mode CVar Let the advisor manage Hold to Cast Off

Context System

GRIP-EMS detects 53 context types across 7 groups. When you enter a raid, dungeon, arena, battleground, or delve, the addon automatically switches to the matching sequence version if one exists.

Context Types

Content

Raid Normal Raid Heroic Raid Mythic Dungeon Normal Dungeon Heroic Dungeon Mythic M+ Low M+ Mid M+ High Delve T1-T3 Delve T4-T6 Delve T7-T8 Delve T9+ Timewalking Solo World Content

Rated PvP

Arena 2v2 Arena 3v3 Rated BG Solo Shuffle

Arena Maps

Nagrand Arena Blade's Edge Dalaran Sewers Ruins of Lordaeron Ashamane's Fall Black Rook Hold Arena Empyrean Domain Enigma Crucible Hook Point Mugambala Nokhudon Proving Grounds Robodrome Tiger's Peak Tol Viron Arena

Battleground Maps

Alterac Valley Warsong Gulch Arathi Basin Eye of the Storm Strand of the Ancients Isle of Conquest Twin Peaks Battle for Gilneas Silvershard Mines Temple of Kotmogu Deepwind Gorge Seething Shore Ashran

Auto-Detection

The detection system reads instance info, map data, difficulty IDs, and keystone level to determine the current context. It checks on zone change, difficulty change, and group roster update.

Per-Context Variable Overrides

In the Context tab of the editor, you can override variables for specific contexts. For example, you might swap a trinket-use variable for a different trinket in M+ vs raid.

Fallback Chains

If no exact context match exists, the system falls back through a priority chain. For example, M+ High falls back to M+ Mid, then M+ Low, then Dungeon Mythic, then the default version. The editor shows a visual fallback chain indicator.

Import and Export

Clipboard Import

  1. Run /gems import to open the import window
  2. Paste your sequence string (GRIP1, legacy, or raw macrotext)
  3. GRIP-EMS auto-detects the format
  4. A preview shows each sequence with metadata (author, spec, icon)

Import Preview

The preview window shows:

Collection Import

A single import string can contain multiple sequences and their dependent variables. GRIP-EMS resolves transitive variable dependencies so nothing gets left behind.

Export

Text Export

A human-readable format for forum and Discord posts. Shows metadata, numbered steps, KeyPress/KeyRelease lines, and variables with event names. Paste it anywhere text works.

Raw Macrotext Import

Paste plain /cast lines and GRIP-EMS auto-parses them into steps. No need to wrap them in any special format.

P2P Sharing

Share sequences directly with other players in-game.

Sending

Receiving

Block List

Security

Shared sequences are data only. They contain spell names, step functions, and metadata. No executable Lua code is transmitted or accepted. The import system validates all data before storing it.

Tracker HUD

A movable icon overlay showing your active sequences during gameplay.

Visibility Modes

Cycle through modes with /gems tracker.

Features

Positioning

Drag the tracker to any screen position. Lock it in place with /gems tracker lock. Unlock with the same command.

Macro Recorder

Capture your spell casts and build a sequence automatically.

How to Record

  1. Type /gems record to start recording
  2. Play your rotation normally -- each spell you cast is captured as a step
  3. Type /gems record again to stop
  4. The recorded sequence appears in your editor, ready to save and bind

What Gets Captured

Good Uses

Tip: Record on a target dummy for the cleanest result. Real combat introduces procs and situational casts that muddy the recording.

Remote Browser

Browse sequences shared by other players in your group.

How to Use

  1. Type /gems browse to open the browser window
  2. See sequences from party and raid members who also run GRIP-EMS
  3. Click a sequence to preview its steps, metadata, and step function
  4. Click Import to add it to your library

Bandwidth

The browser uses metadata-only sync by default. Only sequence names, authors, and spec info are sent over the addon channel. Full sequence data is fetched on-demand when you click to preview, keeping the bandwidth footprint minimal.

Availability

Only players in your current party or raid who also run GRIP-EMS are visible. The list refreshes automatically when group composition changes.

Keybindings

Per-Spec Storage

Keybinds are stored per-spec. When you switch specs, your binds switch automatically. Your Protection Paladin binds stay separate from your Retribution binds.

Slash Commands

Command Description
/gems bind <name> <key> Bind a key to a sequence
/gems unbind <name> Remove the keybind
/gems binds List all keybinds for the current spec

Vehicle and Pet Battle Binds

GRIP-EMS provides 12 vehicle/override bar keybind slots and 6 pet battle action buttons (abilities, swap, pass, forfeit). These are separate from your normal rotation binds and activate automatically when you enter a vehicle or pet battle.

Gamepad Support

Controller and gamepad keybinds are supported with ConsolePort detection. If you use a gamepad, GRIP-EMS detects ConsolePort and maps binds to controller buttons.

How Macro Stubs Work

When you bind a key, GRIP-EMS creates a SecureActionButton (macro stub) and assigns it to that key. The binding is a temporary override -- it never touches your saved WoW keybinds. When the addon disables (vehicles, skyriding), the overrides suspend automatically.

Accessibility NEW

GRIP-EMS aims to be usable for players who rely on screen readers, play one-handed, play with tremor, play with low vision, or avoid motion in the UI. Settings live under the Accessibility subpanel at /gems settings -> Accessibility. Design vocabulary follows AbleGamers APX (Accessible Player Experiences). The in-game panel is modelled on Elder Scrolls Online's Accessibility Mode: one place, grouped by population.

This page lists features that ship in v2.0.0. Things the WoW addon API does not expose are called out separately under What EMS cannot do.

One-click Accessibility Mode

A single toggle in the Accessibility subpanel turns on speech, reduce-motion, the High-Contrast palette, editor scale 1.25x, large-target density, the cursor overlay, and Simplified Mode together. Toggling it off restores your prior state, not the defaults; EMS snapshots whatever you had set before the preset turned things on.

On the first login after installation, EMS reads Blizzard's accessibility CVars (colorblindMode, cameraBobbing, gamepad-detected) and pre-applies matching EMS settings. This is one-shot. If your Blizzard settings change later, you can re-run the mirror from the Accessibility subpanel.

Vision

Motion and vestibular

The reduce-motion toggle disables the two animation sites in the addon: the Tempo overlay alert pulse, and the Tracker fade-in on sequence change.

Motor

Cognitive, new players, ESL

Audio

Sound cues for validation errors, validation success, import-related info, and step advance. Four semantic cues routed through LibSharedMedia, so any sound installed by SharedMedia, WeakAuras, ElvUI, or similar is pickable per cue. Channel selection (Master / SFX / Ambience / Dialog). Opt-in, off by default.

A visual-flash complement to sound cues is available for Deaf and hard-of-hearing players: an 80x80 frame at top-center of the screen flashes red / green / cyan / gold for the matching cue, sustained 0.6 seconds. The visual toggle is independent of the sound toggle, so users can run audio-off and visual-on or both together.

Theming

A bounded subpanel covers the everyday controls: global font, editor scale, validation-badge palette, border and background opacity, per-panel alpha. A full per-element editor lives at /gems theme. The full editor exposes 45 element classes across Panels, Overlays, Rows, Buttons, Text, Emphasis, and Global. Five user-named preset slots, plus copy-to-all-profiles. Themes can be shared via chat link.

The theming apply engine uses two patterns. Persistent UI (panels, singleton overlays, the focus ring) is frame-registered: EMS holds a reference to the widget and re-skins it directly when the theme changes. Transient and construction-time UI (rows, buttons, text FontStrings, emphasis state modifiers, the global addon font) is consumer-lookup: the widget reads its spec from the current theme at the moment it renders. Both patterns produce identical visible theming. Consumer-lookup classes are not unbound and are not reserved; they apply at a different point in the widget's lifecycle.

Five overlay classes are reserved in the taxonomy for features not yet shipped in v2.0.0: overlay.toast.info, overlay.toast.error, overlay.modal.dim, overlay.tooltip, overlay.dragPreview. Their specs are in place so future work can bind them without a taxonomy change. One panel class, panel.profileMgr, is a Blizzard-owned surface (the AceDBOptions profile picker); EMS cannot currently reach a frame handle for it, so its theming is deferred until that handle is exposed.

Feedback panel

Four buttons under /gems -> Accessibility -> Feedback link to AbleGamers APX, the Game Accessibility Guidelines, a Netflix documentary on accessible play in WoW, and the support Discord. WoW has no browser-launch API, so each button opens a static-popup edit box with the URL pre-selected for Ctrl+C copy.

Compatibility with other accessibility addons

AddonCoexistsNotes
BlindSlashYesEMS TTS speaks step announcements. The chat-frame emitter pipes state into a dedicated chat-frame slot (default frame 9) for BlindSlash to parse.
ConsolePortYesDetected at login via the gamepad-detected flag. The keybind UI accepts gamepad buttons without extra config.
DialogueUIYesNo shared UI surface.
Leatrix PlusYesNo shared UI surface. Leatrix's own cursor-enhancement options are a good choice for users who want more cursor textures than EMS ships.
ElvUIYesEMS owns its own frames. Anchor MainFrame inside an ElvUI layout normally.
WeakAurasYesNo shared UI surface. No taint interaction.
Atkinson Hyperlegible (font addon)YesEMS bundles an in-app font switch via LibSharedMedia with Atkinson Hyperlegible included. Third-party font addons still coexist.

What EMS cannot do

These are capabilities the addon API does not expose. They are structural limits, not deferred features.

Slash commands

CommandDescription
/gems settingsOpen settings, then click Accessibility
/gems simplifiedToggle Simplified Mode
/gems themeOpen the per-element Theming editor

Feedback and reporting

The support Discord at discord.gg/temptingus is the primary channel. Accessibility reports go in the addon thread. The Feedback panel inside /gems -> Accessibility surfaces the same link plus the three external standards EMS draws from.

References

CVar Dashboard

A management panel for 213 WoW console variables across 13 sections. Each variable has a recommended value and the dashboard tracks how far your settings deviate from optimal.

Health Score

A weighted 0-100 score summarizing your CVar health. Critical settings (like SpellQueueWindow or maxfps) carry more weight than cosmetic ones. The score updates live as you change values.

Auto-Switching Profiles

Four built-in profiles switch automatically based on detected content:

Custom Profiles

Create, clone, rename, and delete your own profiles. Useful if the built-in presets do not match your hardware or preferences.

Profile Map Editor

Maps each of the 53 context keys to a CVar profile. When the context system detects a zone change, the matching profile activates automatically.

Fix Controls

What Changed

On login, the dashboard detects which CVars changed since your last session and highlights them. Useful for catching settings that external addons or game patches might have modified.

Combat
Camera
Display
Graphics
Mouse
Nameplates
Network
Performance
Raid Frames
Sound
Spell Queue
Targeting
UI

SQW Optimizer

Dynamic SpellQueueWindow optimization that adjusts your spell queue timing in real time based on measured network latency.

How It Works

WoW has a console variable called SpellQueueWindow that controls how many milliseconds early you can queue your next spell cast. Too low and you clip GCDs. Too high and you lose reaction time.

The SQW Optimizer continuously measures your latency using EWMA (Exponentially Weighted Moving Average) smoothing with outlier rejection, then sets the SpellQueueWindow to an optimal value.

Formula

SpellQueueWindow = clamp(ewma_latency + buffer, 50, 400)

Dashboard Integration

When enabled, the CVar Dashboard shows a Managed badge on SpellQueueWindow and skips it in the health score calculation (since the optimizer is handling it).

Logout Restore

On logout, the optimizer restores SpellQueueWindow to its pre-optimization value so your setting is clean if you disable the addon later.

Slash Commands

Command Description
/gems sqw Show current SQW status and values

Repair Module

Automated diagnostics for your sequences with one-click fixes.

How to Use

13 Diagnostic Categories

Empty Steps
Oversized Steps (255+ chars)
Stale Spells
Duplicate Steps
Missing Variables
Invalid Step Functions
Broken Reset Conditions
Orphan Keybinds
Missing Metadata
Conflicting Contexts
Malformed KeyPress/KeyRelease
Unused Variables
Icon Resolution Failures

Fix All

After running a repair, click Fix All to apply all safe fixes in one click. Fixes that might change behavior (like removing duplicate steps) are marked for review.

Quality Gating

Before exporting or sending a sequence, GRIP-EMS runs a quick repair check. If issues are found, you get a warning with the option to fix before sharing.

Spell Cache Viewer

Browse the cached spell data that the sequencing engine uses for icon resolution, autocomplete, and spell validation.

How to Use

  1. Type /gems spellcache to open the viewer
  2. Search by spell name or spell ID
  3. See cached data: icon texture, cast time, cooldown, GCD category, and spell school

What the Cache Contains

The spell cache stores data for every spell referenced in your sequences plus spells from your current spellbook. It populates on login and updates when you change spec or talents.

Debugging Icons

If a spell icon is not resolving correctly in the tracker or action bar, check the spell cache viewer. Common issues:

Tempo Advisor Integration

The Tempo Advisor reads cast time and GCD category from the spell cache to classify each step. If a spell shows as UNKNOWN in the advisor, check whether the cache has data for that spell ID.

Debug and Diagnostics

Tools for troubleshooting when something is not working as expected.

Debug Mode

/gems debug -- toggle debug mode. When on, the engine prints every decision to chat: which step was selected, why, and what macro text was generated.

Debug Window

/gems debugwindow -- open a scrollback window (500-message buffer) that collects debug output without flooding your chat frame.

Execution Tracer

The execution tracer records per-step data (timestamp, step index, spell name, cast result, GCD state, and latency) and feeds it into the Tempo Advisor for empirical learning. It activates automatically when the Tempo Advisor is enabled.

Other Commands

Command Description
/gems diag Print a diagnostic summary to chat
/gems mapinfo Show current content detection data
/gems test Run the in-game test suite
/gems status Show addon version and sequence count

UI Tour

Click the numbered hotspots below to explore each area of the editor interface.

Sequence List
BM_SingleTarget
BM_AoE
Fire_Opener
1
Steps Keybind Macros Variables Context Raw
1. /cast Kill Command
2. /cast Barbed Shot
3. /cast Cobra Shot
1

Sequence List

The left panel shows all your sequences. Each entry displays the sequence name, spec icon, and a health score badge from the Repair Module. Click to select, right-click for options (rename, delete, enable/disable).

2

Steps Tab

Your rotation steps, one per row. Drag the handle to reorder. Each step shows a character count and spell icon. Action nodes with Interleave display an [IL:N] indicator and spinner control.

3

Toolbar

Create, delete, import, export, and open settings. The toolbar also has undo/redo buttons and a search field for filtering the sequence list.

4

Keybind Tab

Assign a per-spec keybind. Press the key you want, and it binds immediately. Toggle between normal, vehicle, and pet battle bind slots.

5

Context Tab

Pick which contexts (raid, dungeon, PvP, etc.) activate this sequence version. 53 context types in collapsible groups with Select All / Clear All.

6

Tracker HUD

A preview of the floating combat overlay. Shows the sequence icon, step counter, and keybind label. Drag to reposition in-game.

7

Tempo Advisor Overlay

The Faster/Slower widget. Shows your current MS vs recommended MS, a delta bar, CPS sparkline, and confidence level (Estimated or Calibrated).

Keyboard Shortcuts

Key Action
Ctrl+Z Undo
Ctrl+Y Redo
Tab Spell autocomplete
Ctrl+S Save sequence
Delete Remove selected step

Sequence Builder

Build a sequence right here in the guide and see how it works. The live preview shows the execution order, and each step has a character counter.

Step Functions

Sequential

Step 1, 2, 3, ... N, then back to 1. The default and most common.

Priority

Always tries step 1 first. Falls through if the spell cannot cast.

Reverse Priority

Same as Priority but starts from the last step.

Random

Picks a random step each keypress. Fun for fishing macros.

Execution Preview

Type some steps above to see the preview.

Import Walkthrough

Walk through the 4-stage import process step by step.

Slash Commands

All 42 slash commands at a glance. Type /gems help in-game for a quick reference.

Command Description Category
/gems Toggle the sequence editor Basic
/gems help Show all available commands Basic
/gems open Open the editor (alias) Basic
/gems status Show addon version and sequence count Basic
/gems settings Open the settings panel Basic
/gems guide Open the interactive tutorial Basic
/gems resetui Reset window position and size to defaults Basic
/gems create Create a new sequence Sequences
/gems delete <name> Delete a sequence by name
/gems delete BM_ST
Sequences
/gems list List all stored sequences Sequences
/gems reset <name> Reset a sequence to step 1 Sequences
/gems validate Check all sequences for stale or unknown spells Sequences
/gems revalidate Force re-tag all sequences with spell IDs Sequences
/gems bind <name> <key> Bind a key to a sequence
/gems bind BM_ST F5
Keybinds
/gems unbind <name> Remove keybind from a sequence Keybinds
/gems binds Show all keybinds for the current spec Keybinds
/gems import Open the import paste window Import/Export
/gems export <name> Export a sequence to clipboard Import/Export
/gems exportall Open multi-select export window Import/Export
/gems migrate Migrate sequences from a compatible sequencer Import/Export
/gems send <name> <target> Send a sequence to a player
/gems send BM_ST Targettoon
Sharing
/gems accept Accept the last received sequence Sharing
/gems block <player> Block a player from P2P sharing Sharing
/gems unblock <player> Unblock a player Sharing
/gems blocklist List all blocked players Sharing
/gems browse Open the remote macro browser Sharing
/gems tracker Cycle tracker visibility modes UI
/gems tracker lock Lock or unlock tracker position UI
/gems cvar Open the CVar Dashboard
/gems cvar reset, /gems cvar profile
UI
/gems spellcache Open the spell cache viewer UI
/gems fs Tempo Advisor status
/gems fs on, /gems fs off, /gems fs reset
UI
/gems msadvisor Analyze sequence timing for optimal click rate UI
/gems debug Toggle debug mode Diagnostics
/gems debugwindow Toggle the debug window Diagnostics
/gems diag Print a diagnostic summary to chat Diagnostics
/gems test Run the in-game test suite Diagnostics
/gems repair <name> Analyze and repair a sequence
/gems repair BM_ST
Diagnostics
/gems repairall Analyze and repair all sequences Diagnostics
/gems mapinfo Show current content detection data Diagnostics
/gems testlocale Run locale translation round-trip test Developer
/gems compress Compress a sequence string Developer
/gems decompress Decompress a sequence string Developer

Common Workflows

  1. /gems -- open the editor
  2. Click New , name your sequence
  3. Add steps in the Steps tab (one spell per line, Tab for autocomplete)
  4. Save, switch to Keybind tab, press your key
  5. Test on a target dummy and adjust
  1. Ask your friend to /gems export <name>
  2. They paste the string in Discord/party chat
  3. You run /gems import, paste the string
  4. Preview, resolve conflicts, and import
  1. Enable Tempo Advisor: /gems fs on
  2. Play your rotation for a few minutes
  3. Watch the Faster/Slower overlay for guidance
  4. After 30 samples it switches to Calibrated mode
  5. Adjust your MS slider to match the recommendation

Plugin API

Third-party addons can register sequences with GRIP-EMS through the plugin API.

Registration

GRIPEMS:RegisterPlugin("MyAddon", sequenceTable)

The sequenceTable is a Lua table of sequences following the standard GRIP-EMS format. Each entry must have a name, steps, and step function at minimum.

Callback

GRIPEMS:OnPluginLoaded(function(addonName)
  -- plugin is ready
end)

Fires after GRIP-EMS loads and processes the registered sequences. Use it to apply any post-registration setup.

Format Requirements

Tip: Plugin-registered sequences appear in the editor with a plugin badge and cannot be edited directly. Export them first if you want to modify.

Settings Reference

All settings grouped by panel. Open settings with /gems settings.

The Accessibility subpanel (one-click preset, speech, reduce motion, contrast preset, density, cursor overlay, simplified mode, sound cues, theming, flicker-safe palette) is documented separately. See the Accessibility section above for the full list and design rationale.

General

Click Rate (MS)
Global milliseconds between keypresses
250
Per-Character MS
Override the global click rate for this character
Off
Auto-Migrate
Run migration check on first load
On
Minimap Button
Show the minimap icon
On
Locale
Override the auto-detected language
Auto

Tracker

Visibility
When to show the tracker overlay
In Combat
Scale
Size multiplier for tracker icons
1.0
Lock Position
Prevent dragging the tracker
Off
Step Counter
Show step number on tracker icons
On

Profiles

Active Profile
Current AceDB settings profile
Default
Profile Map
Which CVar profile activates for each context
Built-in

Sharing

Auto-Accept Friends
Accept sequences from friends without prompt
Off
Chat Links
Show clickable links when receiving sequences
On
Block List
Players blocked from P2P sharing
Empty

CVar Dashboard

Auto-Fix Entries
Per-CVar opt-in for automatic correction
None
Auto-Switch Profile
Change CVar profile based on content detection
On
Health Score Display
Show the 0-100 health score in the panel
On

SQW Optimizer

Enabled
Dynamic SpellQueueWindow tuning
Off
Buffer
Extra MS added to the EWMA latency estimate
20
Restore on Logout
Reset SQW to original value on logout
On

Faster/Slower

Mode
Tempo Advisor mode: Off, Overlay, or Auto-Set
Overlay
Buffer
MS padding added to the recommended rate
10
Sparkline
Show CPS sparkline history on the overlay
On
Audio Alerts
Play a sound on tempo mismatch
Off
Hold Mode CVar
Let the Advisor manage Hold to Cast
Off

Debug

Debug Mode
Print engine decisions to chat
Off
Debug Window
Show the scrollback debug window
Off
Execution Tracer
Log per-step execution details
Off

Roadmap

Feature timeline for GRIP-EMS. Everything marked SHIPPED is available now.

Version Features Status
v1.0 Sequencing engine, visual editor, 4 step functions SHIPPED
v1.1 Multi-version sequences, context auto-switching SHIPPED
v1.2 P2P sharing, chat links, block list SHIPPED
v1.3 Variables, Lua function vars, event-driven re-evaluation SHIPPED
v1.4 Tracker HUD, 4 visibility modes, scale/lock SHIPPED
v1.5 Per-spec keybinds, vehicle/pet battle support, gamepad SHIPPED
v1.6 Multi-window editor, syntax highlighting, spell autocomplete SHIPPED
v1.7 Hierarchical actions, macro recorder, 11-language localization SHIPPED
v1.7.1 Sharing controls, plugin API, repair module SHIPPED
v1.8 Action bar integration, side-by-side diff, metadata editor SHIPPED
v1.9.0 CVar Dashboard, SQW Optimizer, spell cache viewer SHIPPED
v1.9.1 Tempo Advisor, Interleave/Weave, import quality, text export SHIPPED
v2.0 CVar profile export/import, SQW sparkline, advanced triggers PLANNED

Glossary

Action Node

A hierarchical building block in the visual editor: Action, Loop, Repeat, Conditional, If/ElseIf/Else.

Calibrated

Tempo Advisor confidence level after collecting 30+ play samples.

Compile

The process of flattening a hierarchical action tree into a linear step list for the sequencing engine.

Context

A game situation (raid tier, dungeon difficulty, PvP mode, etc.) that can trigger automatic version switching.

CPS

Clicks Per Second. Shown in the Tempo Advisor sparkline overlay.

CVar

Console Variable. A WoW client setting stored by the game engine.

DJB2

A fast hash function used for checksum validation during sequence import.

Estimated

Tempo Advisor confidence level before 30 play samples are collected.

EWMA

Exponentially Weighted Moving Average. Used by the SQW Optimizer to smooth latency data.

GCD

Global Cooldown. The minimum time between most spell casts, usually 1.5 seconds before haste.

GRIP1

The native serialization format for GRIP-EMS sequences. A compressed Lua table string.

Health Score

A 0-100 quality rating. The CVar Dashboard and Repair Module both generate health scores.

Interleave

A compile-time weave that injects a spell every N steps into the rotation.

Macro Stub

A SecureActionButton created at load time to execute a sequence. Keybinds attach to these.

Off-GCD

A spell that can be cast without triggering the Global Cooldown.

P2P

Player-to-Player. Direct sequence sharing via whisper, party, or raid chat.

Priority

A step function that always tries step 1 first, then step 2 if step 1 fails, and so on.

Profile

A saved set of CVar values. The CVar Dashboard supports 4 auto-switching profiles plus custom ones.

Reset Condition

An event that sends the sequencer back to step 1: combat, target, gear, spec, or idle timer.

Sequential

The default step function. Advances one step per keypress, then loops to step 1.

SpellQueueWindow

A WoW CVar controlling how early your next spell can be queued (in milliseconds).

Step Function

The algorithm deciding which step fires next: Sequential, Priority, ReversePriority, or Random.

Tempo Advisor

Per-sequence click rate analysis with a Faster/Slower overlay. Learns from your play data.

Weave

Synonym for Interleave. Set an interval on an Action node to weave it every N steps.

FAQ

No. GRIP-EMS fires one spell per keypress using standard WoW macro API calls. You press the button; the addon picks which spell to cast. This is the same mechanism Blizzard provides for castsequence macros.

Every feature ships free. No Patreon tier-gating, no premium version. If you want to say thanks, there is a PayPal sponsor link on CurseForge.

Yes. Use /gems import, paste the string, and GRIP-EMS auto-detects the format. Alternatively, if the old addon is still installed, use /gems migrate to transfer everything in one click.

GRIP-EMS stores keybinds per-spec. Switch back to the original spec and your binds will reappear. You can also run /gems binds to see what is currently bound.

Yes. Use /gems send <name> <player> to send directly, or /gems export to copy the string to clipboard for Discord or forum posting. Friends can also click the chat link to accept immediately.

WoW enforces a 255-character limit on each SecureActionButton macro. GRIP-EMS shows a live character counter in the editor so you can see how close each step is to the limit.

Make sure action bar icon integration is enabled in Settings. GRIP-EMS supports Blizzard, ElvUI, and Bartender4 action bars. If you use a different bar addon, the icon may not update automatically.

Yes. Create a healing sequence with your heal spells, and use Priority step function if you want the addon to always try your strongest heal first. Variables and context switching work the same way for healers.

It starts with a theoretical estimate right away. After 30 play samples it blends in your actual data (70% theory, 30% empirical). You can see the confidence level (Estimated vs Calibrated) on the overlay.

Run /gems fs reset to clear the stored data and start fresh. You can also turn it off entirely with /gems fs off.

No. It only changes client-side console variables. If something feels wrong, open the dashboard and click Fix All Critical to revert to recommended values. The What Changed panel on login shows exactly what was modified.

The CVar Dashboard has a per-CVar reset button and a section-level Fix All button. For a full Blizzard default reset, type /console cvar_default in chat.

Yes. The Accessibility subpanel covers screen-reader support via a chat-frame emitter, three palette presets plus an 8-type colorblind matrix, a flicker-safe palette for photosensitivity, large-target density mode, Simplified Mode for switch input and eye trackers, and a one-click Accessibility preset. See the Accessibility section above for the full feature list, or ACCESSIBILITY.md on GitHub for the compatibility matrix.