The per-frame check that keeps the buff rows clear of the enlarged
minimap now lives on a child frame of BuffFrame, so it only runs while
the stock buffs are visible. Buff addons such as VCB hide BuffFrame and
TemporaryEnchantFrame; the stock BuffFrame_Enchant_OnUpdate re-anchoring
stops with them, and the check was moving hidden frames every frame.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
WorldMap Class Colors assumed WorldMapRaidN shows raidN. In a raid the
map packs its icons and stores the real unit on each icon, so icons
showed other players' class colors. Use the icon's unit, or its name
for battleground team members outside the raid. The updaters are now
children of the maps, so they only run while a map is open.
Class Portraits checked the target-of-target GUID on every frame. Check
when the stock handler reports a new name, and otherwise five times a
second.
Enlarged Minimap is unchanged: the stock UI re-anchors the buff frame
every frame, so its check has to as well. Documented in
Docs/PERFORMANCE.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
- libunitscan: expire the shared player cache once per session (180 days
for known classes, 90 for class-less, at most 10,000 players). Every
sighting now stamps an age, so roster and mouseover entries can expire.
- libunitscan: keep a player's GUID only while the class is unknown and
resolve such entries later with GetPlayerInfoByGUID.
- libunitscan: skip the GUID lookup for known chat speakers seen within
the hour, throttle full guild rescans to once a minute, skip UnitGUID
when UnitClass answered, and query ClassicAPI's player cache once per
miss instead of twice.
- Social Colors: drop its separate 180-day cleanup.
- Range Color: use its own 0.2 s timer. Sharing Blizzard's rangeTimer ran
the check every frame for every ranged button.
- Docs/PERFORMANCE.md: document the cache rules.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
- Debuff Timer: hide the native Cooldown's own countdown numbers so the
countdownForCooldowns CVar cannot double the overlay text.
- README: merge the duplicated feature lists, match module names and
default states to the in-game options, link the extra Docs, and state
the recommended ClassicAPI version.
- Docs/CLASSICAPI_UPDATES.md: record the v1.17.7 to v1.18.13 review.
- .gitignore: ignore editor and merge leftovers.
- ShaguTweaks.toc: drop the Russian note from the English-only fork.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7