promotional bannermobile promotional banner

Caerdon Wardrobe

Shows BOE / BOA, openables and unlearned pets and transmog wardrobe indicator on bank / bag / auction / merchant / guild bank / loot frame / loot roll / e...

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:
    1. 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.
    2. 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.
    3. 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
  • 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