ItemRack Anniversary

Anniversary Supported Version of ItemRack Classic.

File Details

ItemRack Anniversary v4.36

  • R
  • Apr 6, 2026
  • 148.24 KB
  • 15
  • 2.5.5+1
  • Classic + 1

File Name

ItemRack-bcc-anniversary-4.36.zip

Supported Versions

  • 2.5.5
  • 1.15.8

[4.36] - 2026-04-02

🐛 Bug Fixes

  • Pause Queue Bypassed on Movement: Fixed a critical bug where marking a trinket as "Pause Queue" (keep=true) would only hold while standing still — as soon as you started walking, the auto-queue would swap it away to the next item. The root cause was AutoQueueItemToEquip() never checking the keep or delay flags on the currently-equipped item. While ProcessAutoQueue had its own guards, AutoQueueItemToEquip was also called from IsSetEquipped() in the event system (triggered by PLAYER_STARTED_MOVING), which would falsely report the set as "not equipped" and trigger a re-equip that overrode the paused trinket.
  • Set Stuck on "Custom" After Queue Advance: Fixed a related issue where manually advancing the queue (which temporarily puts you in "Custom" state) would prevent re-equipping your set from the ItemRack menu — the set would stay on "Custom" even though all items were equipped. This was caused by the same IsSetEquipped false-negative from the missing keep check in AutoQueueItemToEquip.
  • Delay Flag Bypassed by Event System: Fixed the per-item delay setting (which prevents swapping an item until X seconds after use) being ignored when evaluated through the event system's IsSetEquipped path, matching the same structural fix as the keep flag.
  • Short Cooldown Auto-Queue: Fixed the auto-swap logic for items with short cooldowns (like the Parachute Cloak) by improving cooldown and delay evaluation.
  • Redundant Zone Events: Prevented redundant zone-based event triggers in cities and PvP zones by implementing a state-aware zone transition check.
  • Queue Initialization Popup: Suppressed an unintended behavior where Alt+LeftClicking an empty/uninitialized queue slot's quick-access button would abruptly pop open the ItemRack Options menu across the center of your screen. The addon will now silently auto-populate and toggle the new queue in the background, keeping your screen clear (you can still manually open the Queue menu for a slot using Alt+RightClick).

✨ Improvements

  • Per-Slot Queue Inheritance for Event Sets: When an event set (like a mount set) only defines a few slots, equipping it no longer wipes the auto-queue state of every other slot. GetQueues() and GetQueuesEnabled() now use per-slot inheritance: the active set's data takes priority, missing slots inherit from the previous set in the event stack, and the global queue is the final fallback. This means your bottom trinket's auto-queue keeps running normally when the mount event only swaps the top trinket.

🔧 Queue System Audit

  • Manual Queue Discarded in Combat: Fixed a critical bug where manual queue advances (right-click cycle) for any slot were silently discarded when leaving combat if auto-queue was disabled for that slot. The combat queue filter was too aggressive — it now correctly distinguishes between manual advances (which should always be honored) and auto-queued entries (which should be filtered when auto-queue is disabled). This was the root cause of the reported slot 14 (lower trinket) manual queue not working.
  • Missing UpdateQueueEnable Function: Defined the ItemRackOpt.UpdateQueueEnable() function which was called from two locations (Alt-click queue toggle in the Quick Access Menu and Quick Access Button) but never implemented. Previously, Alt-clicking to toggle auto-queue while the Queue Options panel was open for that slot would throw a Lua error instead of updating the checkbox state.
  • IsSetEquipped Queue-Awareness Dead Code: Fixed the auto-queue awareness check in IsSetEquipped which was rendered inactive by using #set.Queues on a sparse table (always returns 0 in Lua). The check now correctly queries the specific slot's queue list via GetQueues(setname)[i] and only activates when auto-queue is enabled for that slot via GetQueuesEnabled(). This reactivates the intended behavior: zone/buff events won't see a set as "already equipped" when the auto-queue has a pending swap.
  • RunAfterCombat Cleanup Skipping Entries: Fixed a classic Lua iteration bug where calling table.remove(t, i) during a forward for loop would shift indices and skip every other entry. If multiple deferred functions (like ConstructLayout and ReflectMainScale) were queued during combat, some would never be cleared and would re-run on every subsequent combat exit. Replaced with wipe().
  • SetQueue Crash When Options Not Loaded: Added a nil guard for ItemRackOptFrame:IsVisible() in the SetQueue function. Since ItemRackOptions is a LoadOnDemand addon, calling SetQueue() from a user's custom event script before the Options panel had ever been opened would crash with a nil index error.
  • SaveSet Per-Set Queue Context Desync: Fixed SaveSet calling GetQueuesEnabled() and GetQueues() without passing the set name, causing them to resolve against CurrentSet instead of the set being saved. If an event (zone/buff/spec change) updated CurrentSet while the Options panel was open, clicking Save would snapshot the wrong set's queue configuration, silently overwriting the user's in-place queue edits with data from an unrelated set.

[4.35] - 2026-03-28

✨ Improvements

  • Per-Set Queue Snapshotting: When Enable per-set queues is active, clicking "Save" on a Set now deeply copies all active AutoQueue metadata (including enabled slot states, item priority orders, explicit delay timers, and pause markers). Previously, saving a new set omitted this metadata, forcing users to manually rebuild their queues for each set.
  • On Movement Debounce Toggle: Added a "Stop Delay" check button to the Events option panel for the "On Movement" unequip hook. Users can now bypass the 0.5s debounce timer, initiating instantaneous gear swaps (e.g., unequipping your Riding Crop) the exact millisecond you press your movement key.
  • Queue Context Display: The Queue Options tab now explicitly displays the name and icon of the exact Set whose auto-queue you are actively editing, preventing confusion about which Set's queue is being modified.

🐛 Bug Fixes

  • Queue Editor Race Condition: Fixed a critical isolation bug where editing auto-queues while the Options menu was open could silently corrupt unrelated sets. If an event (like Mounting or entering Combat) caused a gear swap in the background, subsequent edits (moving items, changing delays, toggling auto-queue) would instantly bind to the newly equipped set instead of the one you originally selected. The Queue editor now securely snapshots and locks context to the specific set being edited regardless of background gear changes.
  • Queue Menu Empty Table Pollution: Fixed an issue where simply opening the Queue UI would rapidly spam the SavedVariables table with empty Queues objects across every single gear set you owned, bloating file sizes and triggering accidental per-set override defaults.
  • Bank Item Tooltips: Sanitized the internal IRStringToItemString generator to safely truncate custom trailing attributes. This prevents the WoW client's GameTooltip:SetHyperlink() function from crashing and rendering an empty UI when inspecting saved item sets located inside your Bank while the bank frame is closed.
  • Main Bank Empty Tooltips: Fixed a core engine bug where inspecting items residing natively in the 28-slot main Bank (bag == -1) returned stripped or broken tooltips (making other addons like VendorPrice append to an empty record). ItemRack now bypasses the failing GameTooltip:SetBagItem on this specific container, natively translating the slot into a player inventory ID using BankButtonIDToInvSlotID directly matching the Blizzard UI implementation.