API changelog¶
What changed in the public plugin API, per EMS release. This is not the EMS changelog — the addon ships plenty that never touches your plugin, and that noise is exactly what makes a full changelog useless for this. Everything below either adds something you can call, changes what an existing call returns, or fixes a case where a call misbehaved.
Newest first. A release that isn't listed didn't change the API surface.
API_VERSION won't tell you what's here
API_VERSION only bumps on a breaking change. Every entry below is
additive or a fix, so the contract has sat at 3 since EMS 2.3.0 — which
means RequireVersion(3) answers yes on 2.3.0 and on 2.3.9 alike, and the
capability list can't separate them either. Use RequireVersion to check
the tier, then feature-detect the specific thing you need:
Reading a key the API doesn't have returns nil rather than raising, so the
check is safe on any build.
EMS 2.3.7 — 2026-07-11¶
Added¶
API:GetAuthoredSteps(name)— the active version's per-step spell data in authored base order, as{ index, spellID, spellName, icon }. This is the order the user wrote, before the step function expands it and before interleave copies land. Use it when you want per-spell frequency or the base order; keep usingGetSequenceStepsfor anything that has to line up with the live step.
Changed¶
-
SEQUENCE_STEP_ADVANCEDnow reports the expandednumSteps. It previously fired the authored count while the button cycled the expanded array, so a 4-step Priority sequence advanced through steps 1..10 while the event told younumSteps = 4. It now fires10, andnumStepsmatches#GetSequenceSteps(name)for the same sequence.This one can break a working plugin
If you drew a progress readout from this payload, it was wrong before and is right now — no change needed. But if you compensated for the old mismatch (recomputing the real count yourself, or scaling the step index against it), that workaround now double-counts. Drop the compensation. Sequential and Random sequences are unaffected: expanded and authored are the same array there, so those never disagreed.
-
GetSequenceList()[i].stepCountnow sits in the execution domain for dormant sequences too. A registered-but-not-activated sequence reported the compiled count while#GetSequenceSteps(name)reported the expanded one — the same 4-vs-10 split, reachable throughGetSequenceListbecause it iterates dormant entries.stepCountnow always equals#GetSequenceSteps(name)and is a valid denominator forcurrentStep, which is what the data reference always claimed.
EMS 2.3.4 — 2026-07-03¶
Added¶
GetSequenceInfogained five metadata fields:help,helplink,changelog,talentString, andurl. All scalar copies, allnilwhen the author didn't set them.talentStringcarries a sequence's talent loadout string, which survives import, save, re-export, and duplication — so a plugin can offer "load this build" next to a rotation without asking the user to paste anything.
EMS 2.3.1 — 2026-06-30¶
Fixed¶
GetSequenceList()andSEQUENCE_STEP_ADVANCEDno longer error on a version with no steps. Three accessors checked that the version table existed but not that itsstepsfield did, so an empty version raisedattempt to get length of a nil valueon the length operator. They short-circuit to0now.
EMS 2.3.0 — 2026-06-30¶
Added¶
API_VERSION3, with thestepdata,macro, andslashcapabilities. This is the action-bar surface:GetSequenceStepsandGetSequenceMacroIndexto read,handle:EnsureSequenceMacroandhandle:RegisterSlashCommandto author. See the action-bar plugin guide.
Getting notified¶
New entries here are posted to the plugin-dev channel on Discord when they ship, so you don't have to poll this page.
If you'd rather not sit in Discord, watch the docs repo — Watch → Custom → Releases. Every API change here gets a matching release, and GitHub will mail you.
Something missing?¶
If a release changed behaviour your plugin depends on and it isn't written down here, that's a bug in this page — open an issue and it gets added.