GRIP - EMS (Enhanced Macro Sequencer)

One key. Your whole rotation.

GRIP - EMS is a free macro sequencer for World of Warcraft Retail. Midnight 12.0.1 to 12.1, eleven languages, and every feature is in the download.

Drop your spells into the editor, bind one key, and press it. EMS fires one step per press and walks the rotation for you. Keep a separate version for raid, Mythic+, PvP and solo and it swaps between them on its own when you zone in. Hand a sequence to someone in your group as a chat link they click once.

Free means free. Four editor windows at once, all twelve vehicle bar slots, the whole context system, the accessibility panel. No paid tier, no key, no account, nothing held back for a supporter build. I am the author, so full disclosure, but there is nothing to disclose beyond that.


Sixty seconds to your first sequence

  • Type /gems in chat
  • Click New and give it a name
  • Type your spells, one per step. Press Tab for autocomplete out of your own spellbook
  • Hit Save, open the Keybind tab, press the key you want
  • Target something and start pressing

Stuck anywhere, /gems guide opens the walkthrough in game, or read it in a browser: GRIP-EMS Guide v2.4.10 - The Free Macro Sequencer for World of Warcraft


The editor, full window


What is under the hood

The engine: one press, one step

Which step counts as next is a setting on the sequence, not something you have to write into the macro.

Step function What a press does
Sequential Your steps in written order, top to bottom, then back to the start
Priority The first step that is castable right now, so cooldowns slot themselves in around your filler
Reverse Priority The same check read from the bottom of the list upward
Random Picks a step at random each press

Reset conditions

Sequences put themselves back to step one on whatever you tick: combat ending, a target change, a gear swap, a spec change, or an idle timer. Tick more than one and write the timer in seconds.

Skyriding. With Auto Dismount in Flight on, pressing your sequence key while you have an attackable target dismounts you and casts in the same press. Druid flight forms are handled too. Press it with nothing targeted and the press goes to the skyriding bar as normal.

Hold While Channeling. A press that lands mid channel casts nothing and leaves the step counter where it was, so you stop clipping your own channel and stop burning steps on it. A separate setting ends an empowered spell the moment it reaches maximum rank instead of running the hold window down.

The editor: six tabs, four windows, undo on everything

Six tabs per sequence: Steps, Keybind, Macros, Variables, Context, Raw, plus a seventh, Variants, once you switch it on in Settings. Up to four sequence windows open at once, each with its own undo history on Ctrl+Z.

Nested nodes in the step list

Steps are not a flat list. Add a Loop, a Pause, an If, or Embed another sequence, and nest them as deep as the rotation needs. If and Else take multiple actions per branch, negate themselves correctly when you leave one side empty, and count characters against the 200 and 255 limits while you type.

Spell picker

Press Tab in a step and it completes out of your spellbook. The spell picker opens the same list with filters and a condition builder, so a modifier line or a stance check goes in without typing the syntax from memory.

Validation warnings

Every step is checked against your spellbook as you work. A yellow badge means the game knows the spell but this character does not have it. A red badge means the game does not know it at all. Loops and If nodes inherit the badge of anything flagged inside them, so nothing hides behind a collapsed container.

The rest of it, in short:

  • Hover a step row and you get the game’s own tooltip, the same one your action bar shows, with any validation warning added under it
  • Numeric spell IDs draw as localised names in the list while the stored macro text stays exactly as you wrote it
  • Drag to reorder with a drop indicator, or select a range with shift and move, duplicate or delete the block in one action
  • Working copy editing: nothing touches your saved sequence until you press Save
  • Rotation preview as an icon strip or as text you can copy out
  • Side by side comparison of two sequences with a colour coded diff
  • Six editor colours you can set, and a per step character counter that changes colour as you approach the limit
  • Spells revalidate on their own when you change spec or talents
  • Right click any sequence in the list for Activate, Fork, Copy to character, Export, Send to Player, Export Multiple, Open in New Window, Compare with, Repair and Rename

Rotation preview

One sequence, one keybind, every kind of content

A sequence holds as many versions as you want. Single target, cleave, AoE, a PvP build, whatever you run. Tick which content each version belongs to and the addon picks for you when you zone in.

A version per content type

There are 53 content types: raid difficulties, dungeon difficulties, Mythic+ tiers, rated PvP modes, Delve tiers, Timewalking, solo play, and per map detection for arenas and battlegrounds. Set nothing on a version and it stays your default. Set a chain and the fallback resolves in a visible order, so you can see which version is going to fire before the pull.

Content detection

Where a tier is a judgement call you set the number yourself. Mythic+ mid and high tiers and the Delve high tier each have their own threshold in Settings.

Keybinds that stay out of your way
  • Keys are per spec and switch with the spec, with an optional per talent loadout layer on top
  • Bindings are applied at runtime as override bindings. Your saved WoW keybinds are never edited
  • Sequences suspend themselves in vehicles, on skyriding bars and in pet battles, then come back
  • Twelve vehicle and override bar slots, and six pet battle buttons for abilities, swap, pass and forfeit
  • Mouse buttons 4 to 31, wheel up and wheel down, and gamepad input with ConsolePort detection
  • Sequence icons sit on your action bars for Blizzard, ElvUI and Bartender4
  • /gems keys opens a conflict panel that checks every sequence key, vehicle slot and pet battle slot against your saved bindings, override bindings, modified clicks and click bindings. Where it can name the addon behind a binding, it names it, with the file and line it came from. Two kinds of conflict clear from the panel itself, and Undo puts the last change back
Variables

Write ~myvar~ anywhere in a step and it substitutes at fire time, account wide. A variable can be plain text or a Lua body that re-evaluates on the events you care about.

Function bodies run against a fixed read only list: spell, aura, item and unit queries plus the standard Lua functions. A variable can ask what your cooldown is. It cannot cast, send chat, change a setting, or reach another addon’s data.

Sharing, import and export

Send a sequence to a player by whisper, or to your party or raid, and it arrives as a chat link they click to accept. /gems browse lists what the people around you are running. A block list keeps specific players out.

Multi select export

Export one sequence or a whole collection. Variables a sequence depends on come along on their own, including variables referenced by other variables. The export window lets you set a collection name, an author, a description, a help link and a talent loadout string before you generate the string.

Someone else’s work stays theirs. Sending, exporting or answering a request for a sequence you did not write raises a confirmation naming the author first, and that name follows the content through however many times it has been copied. A sequence its author marked do not share is refused outright, and no confirmation can lift that. Sequences you wrote go out with no prompt.

Import preview

Imports are a two stage preview. Conflicts are colour coded per item with skip, replace and rename, and Compare puts the incoming version side by side with yours before you commit.

  • Paste plain /cast lines and they parse into steps
  • Storage and export use spell IDs, so a sequence written on a German client reads correctly on an English one, and step text retranslates on its own when you change client language
  • Macros a sequence depends on travel with it and rebuild on import, with a warning naming anything the bundle is missing
  • Copy as Text produces a readable version for a forum post or a Discord message
Tracker HUD

A movable strip of icons for your active sequences, with the step counter on each one and the last pressed sequence highlighted. Four visibility modes: always, in combat, only with a target, or never. Scale it, stack it horizontally or vertically, lock it in place.

Tuning, diagnostics and repair

CVar dashboard

A sequencer is only as good as the client settings under it, so the tuning tools ship in the same box.

Tool What it does
CVar Dashboard /gems cvar 284 game variables across 14 sections, each with a recommendation and a one click fix. A health score recorded at every login with a trend line, five profiles that switch by content type, and a What Changed list after a patch touches your settings
SQW Optimiser /gems sqw Tunes SpellQueueWindow against your measured latency, with smoothing, outlier rejection and an automatic restore at logout
Tempo Advisor /gems fs Watches how fast you are pressing against what the sequence needs and tells you faster or slower, learning as it goes
Repair /gems repairall Thirteen categories of sequence problem, found and fixed in place, with a health score per sequence and a warning before you export or send something broken
Diagnostics /gems trace, /gems test An execution tracer for when a step does something you did not expect, a debug window with 1000 lines of scrollback, and the addon’s own test suite runnable in game
Recorder /gems record Casts what you press into a sequence, so you can build one by playing instead of typing

Also in the box: profile based settings, a minimap button and addon compartment entry, a What’s New popup after an update, a plugin API at version 4 for other addons to build on, and a spell cache viewer with per spell renames.

Accessibility

EMS is built to be usable if you rely on a screen reader, play one handed, play with tremor, play with low vision, are Deaf or hard of hearing, or need the interface to stop moving. It all lives in one place under /gems settings, grouped by who it is for.

  • Display. Editor scale from 0.8x to 2.0x, a resizable window, font switching through LibSharedMedia with Atkinson Hyperlegible bundled, three palette presets, an eight type colourblind matrix with a strength slider, and a large target density mode that meets WCAG 2.5.5 AAA
  • Second channel. Spoken step announcements through Blizzard text to speech, a chat frame emitter for external screen reader bridges, four semantic sound cues, a visual flash that mirrors every cue for Deaf players, and a high contrast focus ring on every focusable widget
  • Motor. Keyboard navigation across every widget that is not a text box, pickers with 14 filter modes so a long macro string never has to be typed by hand, a cursor overlay, and Simplified Mode for switch input, eye trackers, sip and puff and head tracking
  • Photosensitivity. No repeating flashes anywhere. The two animations in the addon are both reduce motion guarded and audited against WCAG 2.3.1, with a flicker safe palette that damps alpha ranges below the threshold
  • One switch. Accessibility Mode turns speech, reduce motion, high contrast, 1.25x scale, large targets, the cursor overlay and Simplified Mode on together. Turn it off and your previous settings come back

Anything the WoW addon API cannot expose is written down rather than glossed over. Reports and requests go in the Discord.

Every slash command

/gems help prints this list in game. Everything here also has a button somewhere.

Everyday
/gems Open or close the editor
/gems open Same thing, spelled out
/gems create New sequence
/gems list List your sequences
/gems delete <name> Delete a sequence by name
/gems reset <name> Put a sequence back to step one
/gems settings Settings panel
/gems guide The interactive walkthrough
/gems status Version and sequence count
/gems help Every command
Keybinds and tracker
/gems bind <name> <key> Bind a key to a sequence
/gems unbind <name> Remove that keybind
/gems binds Every keybind on this spec
/gems keys Keybind conflict panel
/gems tracker Cycle tracker visibility
/gems tracker lock Lock or unlock the tracker
/gems resetui Window position and size back to default
Sharing
/gems import Open the paste window
/gems export <name> Export one sequence
/gems exportall Multi select export
/gems migrate Pull sequences out of another sequencer
/gems send <name> <player> Send a sequence to someone
/gems browse Browse what your group is running
/gems accept Accept the last one received
/gems block <player> Block a player from sending to you
/gems unblock <player> Unblock them again
/gems blocklist Who is currently blocked
Tuning and diagnostics
/gems cvar CVar Dashboard
/gems sqw SpellQueueWindow optimiser
/gems fs Tempo Advisor
/gems msadvisor Analyse a sequence for its ideal click rate
/gems repair <name> Diagnose and fix one sequence
/gems repairall Diagnose and fix all of them
/gems validate Check every sequence for stale or unknown spells
/gems revalidate Re-tag every sequence with spell IDs
/gems record Macro recorder on or off
/gems spellcache Spell cache viewer
/gems mapinfo What the addon thinks you are currently doing
/gems trace Execution tracer
/gems debug, /gems debugwindow Debug output and the debug window
/gems test Run the in game test suite
/gems testlocale Locale round trip test
/gems compress, /gems decompress String tools for addon developers

Posting your sequences here

I opened this thread back in March asking whether EMS sequences could be posted here, and never got a straight answer either way. So here is the practical version, for anyone who wants to share one and is happy to check with a mod first.

Run /gems export <name>, or right click the sequence and pick Export. The export window has a Copy as Text button that gives you a readable version which reads fine in a post, and it gives you the loadable string right next to it. Paste the string in a code block:

!EMS1!...your export string...

Anyone with EMS runs /gems import, pastes it, and gets a preview listing every sequence and variable in the string before anything is written. Variables the sequence depends on ride along in the string on their own, including variables referenced by other variables, so you do not have to remember to export them separately.

If the sequence is not yours, EMS asks you first and names the original author. That prompt is the whole point of it, so please leave the attribution alone when you post.


Coming from another sequencer

Your sequences, variables, step functions, metadata, multiple versions and context settings all transfer.

Old addon still installed? Open EMS and press Migrate. Everything comes across and you get a line by line report in chat.

Uninstalled it already? Export from the old addon, run /gems import, paste the string. Conflicts are colour coded per item with skip, replace and rename.


Install

Addon manager. Search for GRIP - Enhanced Macro Sequencer on CurseForge, Wago, WowUp or WoWInterface. Both folders come with it.

By hand. Download the file, unzip it, and drop both folders into your Interface\AddOns directory. The second folder is called GRIP-EMS_LocaleNames and it is a data bundle that loads on demand. Leave it enabled.

Requirements. Retail only, Midnight 12.0.1 to 12.1. No other addon is required for any of it. Current release is v2.4.10.

There is no Classic build yet, which is the most common question I get, and it is the first option in the poll below for exactly that reason.


What should I look at next?

Signal, not a roadmap. Every option below is a real open item, and none of them has a date on it.

  • Classic support (MoP Classic, TBC Anniversary, Era)
  • Per spec versions, so one sequence covers tank and DPS without a rebind
  • A bindable key that switches a single step off between pulls
  • Once per target steps, for marks, DoTs and apply once effects
  • Sequence list grouped by class and spec, with dividers
  • A Diagnostics tab that tells you what is wrong in plain words
0 voters
More screenshots

One key, the whole rotation.
One key, the whole rotation.

A loop inside a loop inside a loop.
A loop inside a loop inside a loop.

Migrate everything in one go.
Migrate everything in one go.

The sequence list.
The sequence list.

Versions of versions.
Versions of versions.

The export string.
The export string.

Metadata on the export.
Metadata on the export.

Send, compare, duplicate.
Send, compare, duplicate.

The macro recorder.
The macro recorder.


Links and support

If something is broken, say what you pressed and what happened, and paste the error if the addon threw one. That gets it fixed faster than anything else.

Part of GRIP, which stands for Gameplay Refinement & Interface Platform.

7 Likes

I am going to give it a try and give you feedback later today :smiley: it’s always fun to test new stuff.

3 Likes

Sounds very interesting! I have been testing sequences made by Claude and ChatGPT with some decent results. I was wondering if there is a wat to make it more AI friendly. Most of the time GauPanda, EA, OAK and NTX are battling it out for best Sequence! With the proper information, AI can help tweak macros to be that much closer to ‘perfect’, lol. Just curious.

1 Like

If the AI is given enough specific information, directions, time and resources, as well as crossing fingers it will not hallucinate, you for sure can get a decent sequence out of it.

1 Like

On initial login, errors: 1x LUA_WARNING: GRIP-EMS/GRIP-EMS.toc:35 Couldn’t open GRIP-EMS/Libs/LibQTip-2.0/lib.xml

1x GRIP-EMS/Engine/BarIntegration.lua:245: attempt to call field ‘RegisterCallback’ (a nil value)
[GRIP-EMS/Engine/BarIntegration.lua]:245: in function ‘Init’
[GRIP-EMS/Engine/Engine.lua]:1441: in function <GRIP-EMS/Engine/Engine.lua:1439>

Locals:
self = {
enabled = false
pendingRescan = false
trackedButtons = {
}
adapters = {
}
}
allAdapters = {
1 = {
}
2 = {
}
3 = {
}
}
LAB = {
callbacks = {
}
activeButtons = {
}
ACTION_HIGHLIGHT_MARKS = {
}
eventFrame = Frame {
}
nonActionButtons = {
}
flyoutHandler = LABFlyoutHandlerFrame {
}
actionButtons = {
}
actionButtonsNonUI = {
}
NumChargeCooldowns = 0
buttonRegistry = {
}
FlyoutInfo = {
}
FlyoutButtons = {
}
}
(*temporary) = nil
(*temporary) = nil
(*temporary) = {
enabled = false
pendingRescan = false
trackedButtons = {
}
adapters = {
}
}
(*temporary) = “OnButtonUpdate”
(*temporary) = “attempt to call field ‘RegisterCallback’ (a nil value)”
BI = {
enabled = false
pendingRescan = false
trackedButtons = {
}
adapters = {
}
}
GRIPEMS = {
SequenceList = {
}
SpellPicker = {
}
RemoteBrowser = {
}
PopupEditor = {
}
ActionRenderers = {
}
StepFunctions = {
}
UndoStack = {
}
KeybindManager = {
}
ContextTab = {
}
SpellValidator = {
}
SequenceEditor = {
}
state = {
}
OOCQueue = {
}
VehicleKeybinds = {
}
Transmission = {
}
MacroRecorder = {
}
ActionCompiler = {
}
GearVariables = {
}
DebugWindow = {
}
addonName = “GRIP-EMS”
LegacyMigrate = {
}
PluginAPI = {
}
KeybindTab = {
}
SyntaxHighlight = {
}
Settings = {
}
StepListView = {
}
Serialization = {
}
ComparisonFrame = {
}
TrackerHUD = {
}
WhatsNew = {
}
version = “v1.7.0-beta1”
UI = {
}
Defaults = {
}
Engine = {
}
RawImport = {
}
wagoAnalytics = {
}
GRIPExport = {
}
MacroManager = {
}
FloatingMenu = {
}
gamepadDetected = false
SpellCache = {
}
ExecutionTracer = {
}
VariableStore = {
}
ExportFrame = {
}
BarIntegration = {
}
SettingsPanel = {
}
LegacyImport = {
}
ImportFrame = {
}
PetBattleButtons = {
}
VariablesTab = {
}
RawTab = {
}
MacrosTab = {
}
SpellCacheViewer = {
}
}
BlizzardAdapter = {
name = “Blizzard”
}
ElvUIAdapter = {
name = “ElvUI”
}
BT4Adapter = {
name = “Bartender4”
}

1 Like

No worries. Looking forward to checking it out!

1 Like

Just pushed an update, should be fixed!

1 Like

[v1.7.2] - 2026-04-06

Fixed

Tree-Mode Editor (BUG-060)

  • Action bar buttons (Del, Dup, Up, Down) now correctly operate on the
    action tree in hierarchical sequences instead of silently targeting the
    flat step array
  • Node badge rows (If/Loop/Embed) can now be manipulated via action bar
    buttons, not just right-click context menus
  • Button enable/disable states are now tree-mode-aware, reflecting the
    selected node’s position in the action tree
  • Outline selection is now mutually exclusive: clicking a step row clears
    node badge highlight and vice versa

Slash Command (BUG-061)

  • /gems now opens the main UI on first use without requiring a prior
    minimap or compartment button click
1 Like

:crossed_swords: GRIP - Enhanced Macro Sequencer v1.7.3 :crossed_swords:

:globe_showing_europe_africa: The “We Speak Your Language Now” Update

EMS just learned 10 new languages overnight. Every single UI string — all 795 of them — translated across every WoW client language. Your macro engine finally stops yelling at you in English.

:germany: German ¡ :spain: Spanish (EU) ¡ :mexico: Spanish (MX) ¡ :france: French ¡ :italy: Italian
:south_korea: Korean ¡ :brazil: Portuguese ¡ :russia: Russian ¡ :china: Simplified Chinese ¡ :taiwan: Traditional Chinese

All translations use Blizzard’s own official terminology — no Google Translate crimes here. Every string is tagged -- MT so community translators can spot-check and refine. See something weird? That’s your cue to be a hero. :superhero:


:control_knobs: Per-Sequence Reset Modifier Overrides

Tired of flipping your global reset settings just because ONE sequence is special? Now each sequence can override reset modifiers independently. Your globals stay global. Your exceptions stay exceptional.

:shield: Variable Locale Safety

Switch your game language mid-session and watch your variables… not break. Spell-name variables now carry spell IDs under the hood, and EMS auto-heals them when your locale changes. Witchcraft? No. Phase 2f.

:video_game: ConsolePort Integration

Controller gang, we see you. The keybind tab now detects your ConsolePort bindings and warns about conflicts before you discover them the hard way in a key.

:locked: Restriction State Awareness

M+? Raid encounter? PvP? The Tracker HUD now lights up with an amber restriction label when Blizzard’s addon restrictions kick in. No more guessing why your sequence feels different mid-pull.

:package: Import Resilience

Imports got an armor upgrade. Failed format detection? Logged. Import stats? Tracked. Cross-locale imports? Source language recorded. Your import flow is now basically a black box flight recorder.


Lok’tar ogar :saluting_face:

:wrench: GRIP-EMS v1.8.0 — The Repair Module :wrench:

Your sequences just got a doctor.

:stethoscope: Sequence Repair

GRIP-EMS now scans every sequence you own across 13 diagnostic categories and tells you exactly what’s wrong — then fixes it with one click.

Stale spells? Fixed. Broken variables? Fixed. Character limit violations, keybind conflicts, action tree issues? Fixed. Fixed. Fixed.

  • :green_circle: Health Score on every sequence — green, yellow, or red at a glance
  • Right-click any sequence → Repair to scan instantly
  • /gems repair <name> or /gems repairall to batch-fix everything
  • Hit Fix All and let it rip

:shield: Quality Gates

  • Exporting or sending sequences with critical issues? Warning dialog first.
  • Just imported something? Chat notification so you know to /gems repair right away.

:test_tube: Test Suite Ships In-Game

/gems test now ships with the addon — run it anytime to verify your install.


:warning: Fresh Paint — Feedback Wanted!

These features are brand new. Built with care, but not yet battle-tested by hundreds of players — that’s your job.

False positive? Missed issue? Weird edge case? Tell me. Drop it in Discord or DM me. No report is too small. This is how we make it bulletproof. :muscle:

Update: CurseForge, Wago, WoWInterface, or WowUp.
No paywalls. No Patreon. Every feature included. Always.

Already downloaded it and tested it a few days ago, think it was the day of the post.

As a backend dev i cant really talk about ui/ux :sweat_smile:

Didnt do a lot of testing but when i tried it out it worked out if the box, migrated my monk sequence and used it without issue. TBH II am more impressed by the easy transition from another addon to this one, thats one of the hard tasks.

Not checked all the new features, so i apologize if i mention something that exists already. Are there any plans for adding something like a simulation mode, testmode with custom stats like x haste, lastly any plans of evaluating damage logs for tryining dummies if thats possible due to the API changes that came with midnight.

PS. If i can help with anything let me know, mainly a python dev here but i know basic lua.

1 Like

““As a backend dev i cant really talk about ui/ux :sweat_smile:”” - This is one of my pain points, i just KNOW there are a lot of things that can LOOK and “feel” better/more polished, but… so many ideas! :stuck_out_tongue:
As far as sims (and related), as far as I am aware, running simulations or evaluating logs (automagiclly) will be rough, for one there is obviously the calculations that have to be done on the fly and be dynamic etc. And like you mentioned, the API changes dont make it any easier.

I have… ideas and “side projects" that are related, but they arent the main focus right now

Keep doing what your doing, thank you!

1 Like

Can I ask is this a better version of GSE? Why would we use it over GSE? THANK YOU

1 Like

its a alterative to GSE and wowlazytools

1 Like

Think of it as a car, in essence they do the same thing at its core.
But, different brands, different models, different specifications and different options.
Different fuel, petrol vs. electric etc.
I cant tell you if/why you specifically should switch, as I am not in the business of directly claiming EMS is better than GSE.
It is how ever, free, to try :slight_smile:
Who knows, maybe it will suit you better, maybe it will not.

Created a little youtube video with an introduction / guide etc.

1 Like

Does this work on tbc anniversary?

1 Like

It does not, Retail only for the foreseeable future.

:fire: GRIP - Enhanced Macro Sequencer v1.9.1

The free macro sequencer just got a brain.


:high_voltage: Tempo Advisor (Faster/Slower)

Ever wonder “how fast should I actually spam this?” — now the addon tells you.

The new Tempo Advisor analyzes every spell in your sequence, figures out the optimal click rate, and shows you a live overlay telling you to speed up or slow down. It starts with a theoretical estimate and gets smarter the more you play — after 30 samples it blends your actual combat data into the recommendation.

  • Movable dark-themed overlay with live CPS sparkline
  • Per-sequence recommendations that persist across sessions
  • Audio alerts when your tempo drifts (opt-in)
  • /gems fs to control it all

:shuffle_tracks_button: Interleave / Weave

Set an interval on any Action node and the compiler automatically weaves it every N steps into your rotation. Perfect for spenders, maintenance buffs, or anything you want on a cadence.

  • Works inside Loop blocks
  • 2-50 step interval range
  • Visual [IL:N] indicator in the editor
  • Legacy imports preserve interval data (no more losing Repeat cadence on import)

:clipboard: Import Quality

  • DJB2 checksum validation — green check if the string is intact, yellow warning on mismatch
  • Sequence disable toggle — import sequences as dormant, enable when ready
  • Pause, Pet ability, and Toy import fixes
  • Clipboard metadata reading (Author, SpecID, Icon)

:hammer_and_wrench: Bug Fixes

  • Micro-stutter fix (UNIT_SPELL_HASTE was firing for every nearby unit, not just you)
  • Combat taint fix for SetPropagateKeyboardInput
  • CVar Dashboard IsCVarSecure actually works now
  • TempoAdvisor CPS was reading ~0.3/sec from CLEU instead of your actual ~2.8/sec button presses

:inbox_tray: Get it now — update through CurseForge, Wago, or WoWInterface

Every feature. Zero paywalls. Always free.