A Forge export can now carry a native GRIP-EMS sequence inside its envelope, and EMS reads it directly; the import preview labels the source.
GRIP-EMS v2.3.15
Released July 29, 2026. 8 entries in the author's notes.
Every entry
The author's own words, complete. Long sections are sorted into areas by LazyGrip.
Added
2A conditional action with no condition set warns at compile time instead of silently doing nothing.
Fixed
3Broken sequence data no longer takes the addon down. A sequence whose versions or steps field holds a number, a word of text, or true instead of a list (a bad import, a hand-edited SavedVariables file, an export from a buggy tool) used to raise a Lua error in whatever read it first: the import preview, the importer, the exporter, the repair scan at login, or a template copy. Every one of those paths now reports the broken entry and carries on.
The repair analyzer gained thirteen guards of its own, and applying its "Empty steps array" fix to a corrupt sequence works instead of raising.
Variable import rejects non-text names and function bodies instead of storing them.
Internal
3The stored-shape guard families for versions and steps are censused and behaviourally proven across the import, engine, and repair paths; the in-game test suite (/gems test) grew the fixtures that prove each guard live.
Every line-number citation in the malformed-entry test file was audited against the file it names: 21 stale pointers re-pinned by reading, and the twelve-target citation sweep passes clean.
The CVar registry header comment in Data/Defaults.lua reads the live census: 254 entries across 14 sections.
Grab it
Release notes written by Sataana and reproduced here with his permission.