🐛 Stability Hotfix
What was broken
Two caching features caused real-world addon regressions:
| Bug | Cause | Affected |
|---|---|---|
| WeakAuras missing after spec switch | GetSpellInfo cache served stale spell data during one-shot rebuild | WeakAuras, any spec-dependent addon |
| Dead players show non-empty HP bars | StatusBar:SetValue cache prevented health update to 0 | Raid frames (Grid2, oUF, Blizzard) |
Root cause
Both UI cache and GetSpellInfo cache are fundamentally unsafe for public release:
-
UI Cache: WoW's C++ engine modifies widget state directly, bypassing our Lua-level hooks. Even with only 3 StatusBar hooks, the cache becomes stale in edge cases (death, spec switch, talent rebuild).
-
GetSpellInfo Cache: Even with 500ms TTL, addons like WeakAuras query
GetSpellInfo()only once during spec-switch reconstruction. A stale cached result poisons that one-shot initialization path until/reload.
What changed
| Component | v2.0.5 | v2.0.6 |
|---|---|---|
| UI Cache | 3 StatusBar hooks | Disabled |
| GetSpellInfo cache | TTL 500ms | Disabled |
| GetItemInfo cache | Permanent | Permanent (unchanged) |
| Everything else | Active | Active (unchanged) |
What remains active
All other optimizations are unaffected:
- ✅ mimalloc allocator (CRT + Lua VM)
- ✅ Adaptive GC with 4-tier stepping
- ✅ String table pre-sizing
- ✅ PreciseSleep frame pacing
- ✅ GetTickCount + timeGetTime QPC sync
- ✅ TCP_NODELAY + network stack
- ✅ MPQ read-ahead cache + FlushFileBuffers skip
- ✅ Combat log optimizer
- ✅ GetItemInfo permanent cache
- ✅ string.format fast path
- ✅ Timer resolution, thread priority, working set
Full Changelog
v2.0.5...v2.0.6