File Details
v4.9.0
- R
- Feb 11, 2026
- 223.16 KB
- 2.0K
- 12.0.1+3
- Retail
File Name
CaerdonWardrobe-v4.9.0.zip
Supported Versions
- 12.0.1
- 12.0.0
- 11.2.7
- 11.2.5
Caerdon Wardrobe
v4.9.0 (2026-02-11)
Full Changelog Previous Releases
- Performance improvements and added support for Great Vault and Catalyst.
- Add transmog status overlay to Revival Catalyst output slot
New ItemConversion feature hooks the output slot's RefreshIcon to display
learnable/collected icons on the converted item preview. Uses
C_TooltipInfo.GetItemInteractionItem() to resolve the output hyperlink and
the standard ContinueOnItemLoad pipeline for async data.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com - Fix SetSelectionPanel icons, coroutine pipeline stalls, and binding text truncation
Three interrelated bugs prevented DressingRoom SetSelectionPanel items from
showing learnable icons and caused inconsistent ensemble status at vendors:- ProcessItem_Coroutine stale state: ContinuableContainer async callbacks
could write to processQueue after the coroutine exited, permanently blocking
future processing. Fix: always reset processQueue at start and route
callbacks through waitingToProcess with OnUpdate re-registration. - DressingRoom hooks never installed: TryHookDressUp required all three
Blizzard globals simultaneously, but DressUpOutfitDetailsSlotMixin loads
from a separate addon. Fix: split into independent hook groups that install
as each global becomes available. - Binding text truncation at small scales: SetScale(<1) on font strings caused
text like "BoA" to truncate to "B..." because the logical width wasn't
compensated for the scale factor. Fix: divide width by bindingScale.
Also adds ContinueOnItemLoad pattern to DressingRoom, extraData.appearanceSourceID
fallback for Equipment pipeline, ConsumableMixin isNotReady for pending source
data, SetAllPoints on caerdon overlay frame, and CLAUDE.md documentation.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
- ProcessItem_Coroutine stale state: ContinuableContainer async callbacks
- Remove dead code block referencing nil module-scope variables
The block in GetSlotUpgradeDiff referenced appearanceID, playerClassID,
and sourceID which are never defined at that scope, so it could never
execute.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com - Hoist redundant API calls out of loops in EquipmentMixin and ProfessionMixin
GetEquipmentSetIDs() was called on every loop iteration instead of once
before the loop. GetItemUniquenessByID() for the current item was called
on every accessory gear iteration instead of being cached beforehand.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com - Unregister OnUpdate when idle and share source caches with ConsumableMixin
Eliminates per-frame OnUpdate overhead when no items are queued by
unregistering the handler and re-registering on demand. Exposes transmog
source caches from EquipmentMixin so ConsumableMixin reuses the same
cached GetSourceInfo/GetAllAppearanceSources results and lazily populates
item info fields on shared sourceInfo objects.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com - Increase item processing throughput from 40 to 400 items/sec
Raise maxItemsPerFrame from 4 to 20 and reduce the OnUpdate interval
from 100ms to 50ms. Per-item cost is now much lower thanks to status
caching and the equipped gear snapshot, so the higher throughput won't
cause frame drops. Bag overlays should appear nearly instantly on
re-open (cache hit) and noticeably faster on first open.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com - Cache transmog source info and pre-compute equipped gear snapshot
Add module-level caches for GetAllAppearanceSources and GetSourceInfo
results so repeated lookups for shared appearances skip the API. Derived
fields (itemSubTypeID, specs, minLevel) are populated on the cached
table only once. Remove unused PlayerCanCollectSource call in the inner
source loop.
Build an equipped gear snapshot (link, id, level, uniqueness, etc.)
once per invalidation cycle and share it across all upgrade helper
functions instead of creating ItemLocation objects and making per-slot
API calls for every bag item. Refactors IsTwoHandedMainHandEquipped,
ShouldIgnoreEmptySlot, GetBlockedOffhandComparisonLevel,
GetUniqueUpgradeInfo, HasBetterOrEqualEquippedItem,
HasEqualEquippedItemLevel, and GetUpgradeItemLevelDelta.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com - Add status result caching and reduce table allocations
Cache GetCaerdonStatus results by itemLink+bound state so reopening
bags skips all tooltip parsing, transmog API calls, and binding checks.
Cache is invalidated via RefreshItems on game-state events. Also hoist
the constant bindTextTable to module scope and recycle the tooltipData
table to eliminate per-call allocations in the hot path.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com - Add Great Vault (WeeklyRewards) transmog overlay support
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com - Fix recipes showing as learnable without required profession
Old classic recipes lack a RestrictedSkill tooltip line, so the
profession check in that handler never fires. Now verify the player
has the profession via IsRecipeProfessionLearned before marking a
recipe as learnable.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

