🐛 Hotfix — Community-Reported Bugs
Thank you to everyone who reported issues after v2.0.3. This release fixes all reported UI/text/crash problems.
What was broken
The UI Widget Cache worked (68+% skip rate), but too aggressively — it cached widget properties that WoW's C++ engine resets between frames. This caused:
| Bug | Cause | Affected |
|---|---|---|
| Russian/UTF-8 chat text truncated | SetText hook + format buffer too small
| ElvUI, all chat addons |
| DBM timer text missing | SetText cached stale after engine cleared FontString
| DBM-Warmane |
| Unit frame textures wrong | SetTexture / SetAlpha cached stale values
| oUF, ElvUI, all UF addons |
| Nameplate sizes stuck | SetWidth / SetHeight cached — engine resets every frame
| Custom nameplate addons |
| ERROR #132 on combat start | Corrupted widget state from stale cache | Various |
| Crash on fullscreen toggle | Stale cache entries after display mode change | ICC/TOC |
Root Cause
WoW's C++ engine modifies widget properties (text, size, texture, alpha) via direct C++ calls that bypass our Lua-level hooks. Our cache thought the value was still X, but the engine had reset it to Y. When the addon tried to set X again, we skipped it — breaking the UI.
Fix 1 — UI Cache: 10 hooks → 3 (StatusBar only)
Kept (safe — engine rarely modifies bar values directly):
StatusBar:SetValueStatusBar:SetMinMaxValuesStatusBar:SetStatusBarColor
Removed (unsafe — engine changes these via C++):
FontString:SetText— engine clears/recycles FontStringsFontString:SetTextColor— engine resets colorsTexture:SetTexture— engine swaps textures for icons/portraitsTexture:SetVertexColor— engine resets vertex colorsRegion:SetAlpha— engine controls fading effectsRegion:SetWidth— engine resets nameplate sizes every frameRegion:SetHeight— engine resets nameplate sizes every frame
These 3 StatusBar hooks have been proven safe by months of LuaBoost's ThrashGuard (same hooks, Lua-level) with zero complaints.
Fix 2 — string.format UTF-8 Buffer
The format fast path had a 255-byte buffer for each %s argument. Russian/Korean UTF-8 characters are 2-3 bytes each, so text was truncated at ~127 characters instead of the expected ~255.
Fixed: Buffers increased to 1024 bytes per argument, 4096 bytes total output.
Virus Detection (FAQ)
DLL injection + function hooking trigger antivirus false positives. This is expected and not harmful. Add an exception in your antivirus if needed. The source code is fully open — review it yourself.
Full Changelog
v2.0.3...v2.0.4