Mount, companion, and toy caches no longer rebuild on PLAYER_ENTERING_WORLD for every boot. Built the first time the Spell Picker or Spell Cache Viewer actually asks for them; a deferred eager build 3s after PEW still populates diagnostics (perftest, compartment menus) without opening the picker. Cuts cold- boot scan time on characters that never open the picker UIs. Event-driven invalidation (NEW_MOUNT_ADDED, NEW_TOY_ADDED, PET_JOURNAL_LIST_UPDATE, UNIT_PET, PET_BAR_UPDATE) still re-dirties the lazy flag so the next picker read rebuilds.
GRIP-EMS v1.9.6
Released April 18, 2026. 3 entries in the author's notes.
Every entry
The author's own words, complete. Long sections are sorted into areas by LazyGrip.
Performance
3UNIT_SPELLCAST_SUCCEEDED off-GCD reclassifier no longer wipes the entire TempoAdvisor debounce table and re-analyses every registered sequence. A name-keyed spellID-to-sequence index (TA.\_spellToSequences) drives a scoped reanalyse that touches only the sequences referencing the spells that were just flipped to off-GCD. For spells no active sequence uses -- the common case -- the scoped helper returns immediately. Rename is handled implicitly via the existing SequenceEditor DELETED+CREATED pair; no dedicated rename event or GUID infrastructure was added. The index rebuilds on SPELL_CACHE_REFRESHED so existing saved sequences are indexed correctly once SpellCache finishes its first scan at PLAYER_ENTERING_WORLD.
SpellCache dropped three pcall guards around C_Spell.GetSpellInfo in the hot scan path. The modern API returns nil cleanly for unknown IDs and does not raise; pcall was pure overhead across \~3k spellbook entries per scan. The three GetSpellBaseCooldown sites keep their pcall (older global, less stable).
Grab it
Release notes written by Sataana and reproduced here with his permission.