0.9.7
What's new
Changelog
All notable changes to WoWtility will be documented here.
[0.9.7] - 2026-10-14
Updated
- Version updates for World of Warcraft 12.1.5.
Fixed
- iLvl: Changed
GetItemInfotoC_Item.GetItemInfofor Character and Inspect item-quality colours and for two-handed weapon detection in Inspect and tooltip averages. ChangedGetDetailedItemLevelInfotoC_Item.GetDetailedItemLevelInfofor Inspect slot levels and Inspect/tooltip averages. Average item-level colours now useC_Item.GetItemQualityColorinstead ofGetItemQualityColor. - AutoSell: Changed both equipped-gear and bag-item level lookups from
GetDetailedItemLevelInfotoC_Item.GetDetailedItemLevelInfo. These checks determine the lowest equipped item level and whether bag gear meets the selling rules. - AutoQuest: Changed reward lookups from
GetItemInfotoC_Item.GetItemInfowhen checking for reputation-only rewards and selecting the highest-item-level or highest-vendor-price reward. - Cooldown Items: Changed consumable/trinket eligibility checks from
GetItemInfoInstanttoC_Item.GetItemInfoInstant. The icon fallback now usesC_Item.GetItemInfo, item counts useC_Item.GetItemCountdirectly, and obsolete globalGetItemCooldownandGetItemSpellfallbacks have been removed. - Shared item helpers: Changed the item-name fallback used by gem scanning from
GetItemInfotoC_Item.GetItemInfo. - LFG Filter: Replaced
C_LFGList.GetSearchResultMemberInfowithC_LFGList.GetSearchResultPlayerInfo. Lust checks now readclassFilename, and party-fit checks readassignedRolefrom the returned player-info table. Missing member information returns no role or class. - Module loading: Wrapped each module's
OnEnableorInitcall inxpcall. If one fails, its error is sent to WoW's normal Lua error handler and initialization continues with the next module. - Packaging: Corrected
.pkgmeta's changelog path fromChANGELOG.mdtoCHANGELOG.mdso it matches the filename on the Linux release runner.
[0.9.6]
Fixed
- iLvl: Corrected Midnight Season 2 item-level colour thresholds to the track entry levels: Adventurer 266, Veteran 279, Champion 292, Hero 305, and Myth 318.
[0.9.5]
Fixed
- Dungeon Teleports: Corrected the Temple of Sethraliss and Kings' Rest portal spells to use Path of the Sacred Temple and Path of the Slumbering Conqueror respectively.
[0.9.4]
Updated
- Dungeon Teleports: Dungeon abbreviations now remain visible before their portals are earned. Hovering an unearned portal explains that timing the dungeon at Mythic Level 10 or higher unlocks it.
[0.9.3]
Updated
- Updated for World of Warcraft 12.1.0.
- Dungeon Teleports: Updated dungeon names, abbreviations, and teleport spells for the Midnight Season 2 Mythic+ rotation.
- Cooldown Items: Duplicate detection now checks the additional Cooldown Viewer categories introduced in 12.1.0, including spec-agnostic and equipment-slot cooldowns.
- iLvl: Updated average item-level colour thresholds for the Midnight Season 2 gear tracks.
Fixed
- LFG Filter: Protected party-role lookups so restricted unit data cannot interrupt group-fit filtering.
[0.9.2] - 2026-06-18
Updated
- Updated for World of Warcraft 12.0.7.
Added
- Housing Control: Added a search bar above the Placed Decor list. Type any part of an item's name to dim everything that doesn't match, making it easy to spot what you're looking for in a long list. Press Escape or clear the box to show everything again.
[0.9.1] - 2026-05-16
Fixed
- Prefill Delete: Now auto-fills the "DESTROY" confirmation text when destroying housing décor items. Previously only worked for bag item deletion.
[0.9.0] - 2026-05-02
Added
- Vehicle Keys (New Module): Assign your own keybind to each of the six buttons on the Vehicle / Override action bar — completely independent of your normal action-bar bindings. Open the Vehicle Keys page in WoWtility's settings, click a slot, press any key (with modifiers — Shift, Ctrl, Alt are all supported) and you're done. Bindings are per-character, activate the moment you board a vehicle, and clear themselves the moment you exit, so your standard 1–6 keys stay free for normal play. Each vehicle button also re-labels its on-screen hotkey display to show the bind you actually use, so you can see at a glance what does what when you mount up. Combat-safe — bindings applied while in a vehicle during combat lockdown are automatically deferred until combat ends.
Fixed
- AutoSell: Fixed an error when trying to auto-sell at a merchant inside instanced content such as ritual sites.
- iLvl: Enchants and gems applied to equipped items now update immediately in the character pane — previously you had to close and reopen it to see the change.
- Cooldown Items / Dungeon Teleports: Hovering a WoWtility button while Quick Keybind mode was open could cause an error and break the keybind flow. Both modules now stay out of the way while Quick Keybind is active.
- Cooldown Items: Fixed an error in the Keybindings options panel caused by WoWtility's slot frames being picked up as binding targets.
[0.8.2] - 2026-04-27
Fixed
- iLvl: Fixed a Lua error ("Secret values are only allowed during untainted execution") that could spam the chat when an inspect completed while a tooltip held a tainted unit token. The tooltip refresh path now safely handles tainted unit tokens, and the inspect frame + UNIT_CONNECTION handlers were similarly hardened against the same class of error.
- AutoSell / LFG Filter: Defensively guarded NPC identity lookups (used to detect unsellable vendors like Delve supply merchants) and party-member class lookups (used by the Lust filters) against the same "secret values" taint class — these don't throw today but are exactly the kind of API call Blizzard has been retroactively flagging via hotfix.
- Loot UI: When a single quest awarded reputation to two factions at once (e.g. Guild + The Singularity), only one entry appeared in the popup and its amount was the sum of both — the two reps now display as separate rows with their correct individual amounts. Items produced from disenchanting, milling, prospecting, and crafting also now pop up in the loot window; previously the "You create: …" chat message was ignored and these items never appeared.
[0.8.1] - 2026-04-23
Fixed
- LFG Filter: "Only show groups that fit my party" was showing solo players groups with a free slot regardless of role — for example, a DPS player would see groups that only had a Tank spot open. The filter now correctly determines the player's role when they aren't in a group yet: it first checks their LFG panel role selection, then falls back to their current specialization (e.g. a Brewmaster is treated as a Tank even with no role explicitly selected).
- Dungeon Teleports: Hovering a dungeon tile now shows Blizzard's native dungeon tooltip first — best run time, affixes, score — with the WoWtility cooldown line appended below. Previously only the spell name and cooldown were shown.
[0.8.0] - 2026-04-22
Updated
- Compatibility: Updated for World of Warcraft patch 12.0.5.
Fixed
- iLvl: Opening the Character frame could cause a Lua error and prevent item level overlays from appearing on your gear slots. The enchant text next to the Head slot has also been nudged down slightly so it sits in a more natural position.
[0.7.5] - 2026-04-21
Fixed
- Cooldown Items: Fixed "Interface action failed" errors appearing in combat. The Cooldown Items bar was interfering with WoW's protected action system during combat, blocking ability use. No longer causes any errors in combat.
- Loot UI: Group loot roll items clean up correctly as soon as a roll finishes, rather than lingering for up to 5 minutes. Fixed an edge case in M+/Raid where opening a loot window while every item was still being rolled on would show a blank empty frame — it now waits quietly and shows won items normally.
- Power Bar: Fixed cascading Lua errors in M+ and Raid when the Power Bar module is active. Blizzard's built-in power bar was being disabled too aggressively, causing the game to lose track of it internally.
- Cutscene Skip: Movie skipping now uses the correct Blizzard method to stop a movie, rather than forcibly hiding the frame.
- Talking Head: Fixed an edge case where suppressing a talking head popup could silence its audio without actually hiding the frame.
[0.7.4] - 2026-04-11
Fixed
- LFG Filter: All three filters (both Lust filters and "Only show groups that fit my party") were broken — Lust classes weren't being detected in groups, role checks weren't matching your party's Tank/Healer/DPS composition against listed groups, and filtered groups weren't being visually removed from the list. All filters now work as expected: Lust filters correctly identify Shamans, Mages, Hunters and Evokers, "fit my party" properly checks that the group has room for your party's size and roles, and filtered groups are removed from the list immediately. Offline party members are no longer counted when checking if your party fits.
[0.7.3] - 2026-04-09
Changed
- Dungeon Teleports: Reworked the Mythic+ Dungeons screen so each dungeon tile is now a click-to-teleport surface in its own right. A large gold abbreviation (e.g.
MC,NPX,WRS) sits on every tile you've learned the teleport for, so you can still tell which dungeon is which after Blizzard re-sorts them by completed keystone level. Hovering a tile highlights it with a rounded gold border and shows the teleport tooltip with the current cooldown; on cooldown tiles, the abbreviation stays dimmed so readiness is obvious at a glance. Clicking anywhere on the tile casts the teleport — no more aiming at a small button.
[0.7.2] - 2026-04-08
Added
- iLvl: New "Hide equipped comparison on action bars" option. When you hover an item on your action bars — for example, an on-use trinket — only that item's own tooltip is shown, instead of Blizzard also popping up both of your currently-equipped trinkets next to it and covering a big chunk of the screen. Comparison tooltips still work as normal everywhere else (bags, merchants, character frame, loot, etc.). Enabled by default.
[0.7.1] - 2026-04-07
Added
- LFG Filter: New "Only show groups with a Lust class" option in the Premade Group Finder filter dropdown — the opposite of "Only show groups without a Lust class" (renamed for consistency with the other checkboxes), for when you want a group that's already got Bloodlust covered. The two Lust filters are mutually exclusive, and both now factor in your own party — if you or a party member are a Shaman, Mage, Hunter or Evoker, you're already bringing Lust, so all three filters (Lust and "Only show groups that fit my party") evaluate against the full group you'd end up in after joining, not just the listing in isolation.
Fixed
- LFG Filter: "Only show groups that fit my party" sometimes showed groups that didn't actually have room for everyone — for example, a party of two DPS would still see groups with only one spot left. It now properly checks that the group has enough free spots for your whole party, while still hiding groups that already have a player in one of your roles (so a party with a Tank won't see groups that already have a Tank).
- LFG Filter: Fixed a taint error in the Premade Group Finder's applicant viewer ("attempt to compare field 'isNew'…") when hosting a group. Toggling a WoWtility filter no longer force-refreshes the list — changes apply on the next natural search refresh.
[0.7.0] - 2026-04-06
Added
- Cooldown Items (New Module): A small bar of item slots that sits above Blizzard's Cooldown Manager. Drag any trinket, potion, healthstone, drum or other on-use item from your bag onto an empty slot and it'll track its cooldown with the native sweep, show your current bag count, and let you click it to use the item just like an action bar button. The bar is hidden out of combat and fades in the moment combat starts, with empty slots automatically tucking away so only your usable items remain — perfectly centred. Pop it up any time alongside Blizzard's Cooldown Manager settings panel to configure it without leaving the menu. Choose how many slots you want (1–10) and whether to hide empty slots in combat from its settings page. Items already tracked by Blizzard's Cooldown Manager are blocked to avoid duplicates. Movable in Edit Mode or by right-clicking the minimap button.
- Dungeon Teleports (New Module): The Mythic+ Dungeons screen now shows a small teleport button on every current-season dungeon you've learned the teleport for. One click and you're there — no more digging through the spellbook or making clunky macros. Buttons grey out and show a countdown (e.g. "7h") while recharging, and brighten back up the moment you finish a dungeon and the cooldown resets. Updates live as you unlock new teleports or the season rolls over.
- LFG Filter (New Module): Adds extra options directly inside the Premade Group Finder's filter dropdown:
- No Lust class already in group — instantly hide any listing that already has a Shaman, Mage, Hunter, or Evoker, so you can quickly find groups that still need someone to bring Bloodlust, Heroism, Time Warp, Primal Rage, or Fury of the Aspects.
- Only show groups that fit my party — when queuing with friends, only show listings that have enough open role slots for everyone in your group. Queueing as a Tank + Healer duo? You'll only see groups needing a Tank and a Healer. Queueing as three DPS? Only groups with three free DPS slots. Works solo too.
- Power Bar: Paladins now get the full Blizzard Holy Power bar — the ornate runeholder frame sits behind the five runes at their correct sizes and positions, and a soft golden glow fades in as you build Holy Power, just like the default UI.
Changed
- Minimap Button: Right-clicking now also unlocks the new Cooldown Items bar alongside the Power Bar and Loot UI, and clicking anywhere outside a WoWtility frame instantly re-locks everything so you can tap out the same way modern UIs work. The unlock notification is now a single "Frames unlocked" message instead of one per module.
- Loot UI: The loot window now sits behind other UI frames like the Profession and Crafting windows by default, so it no longer blocks buttons you're trying to click while it fades out. You can still bring it back to the front from its settings.
- Settings: LFG Timer and LFG Filter no longer clutter the settings sidebar with their own pages — they're simple on/off toggles and now live only in the main WoWtility options list.
Fixed
- Alias: No more "addon action blocked" popups when typing in party chat inside dungeons, raids or Mythic+ — even out of combat. Alias now stays out of the way entirely while you're in any instance and resumes normally in the open world.
- Power Bar: Paladin Holy Power no longer shows the entire bar squished into every individual rune slot. Each rune now displays its own unique artwork.
[0.6.5] - 2026-04-04
Changed
- iLvl: Gem stat text on the character frame is now light blue for better readability alongside enchant text.
Fixed
- iLvl: Enchant text on weapon slots no longer appears shifted up or misaligned when wrapping.
[0.6.4] - 2026-04-04
Fixed
- Minimap Button: Now works correctly with minimap addons like SexyMap and ElvUI — fades in and out with other icons, supports square minimaps, and positions correctly on the minimap edge regardless of size or addon modifications.
- Power Bar: Pip spacing now scales with icon size so backgrounds never overlap. Settings no longer error on classes without a resource bar, such as Demon Hunter.
- iLvl: Enchant text on weapon slots no longer overlaps the bottom tabs or gets cut off with "…" on long names. Wand and ranged weapon enchants are now detected and displayed.
[0.6.3] - 2026-04-02
Added
- Minimap Button: A minimap button that opens the WoWtility settings panel with the submenu expanded. Drag to reposition around the minimap. Right-click to unlock the Power Bar and Loot UI for repositioning.
- Power Bar: All classes now display Blizzard's native border and background artwork behind each pip, completing the look to match the default UI.
[0.6.2] - 2026-04-01
Fixed
- Power Bar: Death Knight runes now track correctly — runes update in real time when spent and recharging, show the correct colour per spec (green for Unholy, blue for Frost, red for Blood), deplete right to left, and each pip displays a cooldown swipe so you can see when it's coming back.
[0.6.1] - 2026-03-31
Added
- Power Bar: Hide Out of Combat option — the bar disappears when you leave combat and reappears when you enter it. Custom Pip Colour — enable the toggle to pick your own colour for the pip icons instead of the default class colour.
Fixed
- iLvl: Enchant overlay text on the character pane now wraps tighter on both sides, preventing left and right labels from overlapping in the middle.
- Power Bar: Removed non-functional Reset Position button from settings. Moved description text underneath the header for better readability.
- Settings: Colour picker swatch and info text no longer bleed through onto other settings pages when frames are recycled.
[0.6.0] - 2026-03-30
Added
- Power Bar (New Module): A movable class power bar for Soul Shards, Holy Power, Combo Points, Chi, Arcane Charges, Runes, and Essence. Choose between Blizzard artwork or a flat Simple style. Paladin Holy Power shows unique art per rune. Customise icon scale, spacing, and toggle an optional background. The bar automatically hides for specs that don't use the resource and reappears when you swap back. The default Blizzard power bar is hidden while this module is active; turning it off prompts a reload to restore it cleanly.
- Edit Mode: A single "WoWtility" checkbox now appears in Blizzard's Edit Mode panel, letting you reposition all WoWtility elements at once with a familiar blue selection overlay.
Fixed
- Auto Repair: Guild bank repairs are now verified reliably instead of relying on a short delay, which could silently fall back to personal funds.
[0.5.8] - 2026-03-26
Fixed
- Alias: Fixed "addon action blocked" error when typing in guild/community chat during combat in dungeons and raids.
[0.5.7] - 2026-03-25
Added
- Loot UI: Tooltip on hover — hovering over looted items in the notification window now shows the full item tooltip, so you can inspect stats at a glance without opening your bags.
Fixed
- Loot UI: Group loot roll items no longer incorrectly show as looted ("+1 item") in the notification window. Roll tracking now persists beyond the loot window closing so won-roll items are properly filtered.
[0.5.6] - 2026-03-18
Changed
- iLvl / Inspect: Enchant overlay text no longer shows the "Enchant Ring - ", "Enchant Cloak - ", etc. prefix — only the enchant name is displayed (e.g. "Silvermoon's Alacrity" instead of "Enchant Ring - Silvermoon's Alacrity").
Added
- Dungeon Gossip (New Module): Automatically progresses single-option NPC gossip dialogs inside dungeons and raids. Useful for instances like Pit of Saron where NPCs require interaction to advance. Enabled by default.
- Alias: Community channel support — alias can now be prepended in Blizzard Community channels, with a separate "Communities" toggle independent from the existing "World Chat" (Trade, General, etc.) setting.
Fixed
- Cutscene Skip: Fixed an error when skipping movies caused by a removed Blizzard API.
- Loot UI:
- Group loot roll items (e.g. housing pieces) no longer appear in the loot notification or cause an empty "Take All" frame when auto-looting. Roll items are now fully excluded from the display until actually awarded to you.
- Fixed roll items briefly appearing in the manual loot window before disappearing. They are now removed from the display immediately.
- Fixed an error that could occur when a loot slot contained no data.
- Alias:
- "Communities" toggle not working — enabling the setting had no effect. Community channels now correctly use the "Communities" setting instead of falling through to "World Chat".
- Fixed "Addon action blocked" notification that could appear in instances during combat when chat tabs were created.
[0.5.5] - 2026-03-17
Added
- LFG Timer (New Module): Shows a colour-coded countdown timer with progress bar on the LFG dungeon queue proposal popup so you know exactly how long you have to accept. Counts down from 40 seconds with green → gold → red colour transitions. Styled to match the Blizzard dialog frame.
- Talking Head: Granular per-difficulty suppression settings — Always, Dungeon Normal, Dungeon Heroic, Dungeon Mythic/M0, Dungeon M+, Raid Normal/LFR, Raid Heroic, Raid Mythic, Timewalking, and Abundance. "Always" toggle greys out all other options when checked. Info text at top of settings explaining that checkboxes disable talking heads.
- Talking Head: Chat message notification when a talking head popup is blocked by the addon.
- Cutscene Skip: Granular per-difficulty settings matching the Talking Head pattern — Always, Dungeon Normal, Dungeon Heroic, Dungeon Mythic/M0, Dungeon M+, Raid Normal/LFR, Raid Heroic, Raid Mythic, and Timewalking. "Always" toggle with greying cascade and info text.
- Cutscene Skip: M0 and M+ are now separate toggles (previously combined as a single Mythic/M+ option).
- Cutscene Skip: Timewalking dungeon and raid support (difficulty IDs 24 and 33).
- Settings: Every module sub-page now has its own enable/disable checkbox that syncs bidirectionally with the root settings panel toggle. Toggling from either location updates the other in real time.
- Settings: All module settings controls now grey out when their module is disabled (from root panel or sub-page toggle) and restore when re-enabled, respecting cascading dependencies (e.g. Auto Sell → Gear sub-controls, Talking Head → "Always" → situational controls).
Fixed
- Loot UI: Reputation gains now display the proper faction crest icon instead of a generic handshake — resolves icons via Blizzard's currency data for renown factions, with major-faction atlas as a fallback.
- Loot UI: Warband (account-wide) reputation gains now display in the loot popup — previously only standard "Reputation with X" messages were parsed; warband messages were silently ignored.
- Talking Head: Suppression not working in WoW 12.0+ — the global function
TalkingHeadFrame_PlayCurrentwas changed to a methodTalkingHeadFrame:PlayCurrent(). Hook updated to method-stylehooksecurefunc(TalkingHeadFrame, "PlayCurrent", ...). - Talking Head: Suppression now uses
Hide()+StopSound(voHandle)with a 25ms delay instead ofCloseImmediately(), which could cause race conditions with NPC dialogue audio. - Talking Head: Hook installation timing — added
PLAYER_ENTERING_WORLDfallback for cases whereADDON_LOADEDforBlizzard_TalkingHeadUIwas missed. - Talking Head / Cutscene Skip: "Always" checkbox greying out situational controls did not persist when leaving and re-entering the settings page — controls appeared enabled despite "Always" still being ticked. Fixed by passing the combined module + "Always" state to the dependent control initializers.
- Settings: Info text from
CreateInfoTextInitializercould persist across settings pages when Blizzard recycled the frame. Now hidden via anOnHidehook.
Changed
- Item Level: Durability display now uses a tab-style frame (matching the Character / Reputation / Currency tabs) anchored below the stats panel, instead of floating text that could overlap stat rows on characters with many stats.
- Talking Head: Old single "Dungeons & Raids" toggle migrated automatically to new per-difficulty settings.
- Cutscene Skip: Old combined
cutsceneSkipMythic(M0+M+) setting migrated automatically to separate M0 and M+ keys.
Removed
- Social Toast module removed — Blizzard's layout code continuously repositions the Quick Join toast, making reliable custom placement infeasible without risking taint.
- Loot UI: Renown level-up notifications no longer appear in the loot popup (Blizzard already shows these natively). Incremental reputation gains (e.g. "+10 Silvermoon Court") still display as before.
[0.5.4] - 2026-03-14
Added
- Alt Bags: Personal bank items are now tracked separately from bag items. Tooltips show the total count per character with an inline "(X in bank)" suffix when items exist in the personal bank, making it easy to see at a glance whether an item is in bags or banked.
Changed
- Loot UI: Edit Mode checkbox repositioned — now sits inside the Edit Mode panel in an outlined container adjacent to the Layout dropdown, instead of at the bottom of the frame where it was easily overlooked.
Fixed
- Loot UI: Money loot display could show massively inflated amounts (e.g. 30k or 1.6M gold) instead of the actual loot. Two bugs: the
namefield stored the player's total gold balance (GetMoney()) instead of the looted delta, and theplayerMoneybaseline could go stale between loot sessions because it was cleared when the loot frame wasn't visible. Baseline is now always updated after eachPLAYER_MONEYevent. - Loot UI: Hidden system currencies (e.g. "11.0 Delves - System - Seasonal Affix - Events Active/Maximum") no longer appear in the loot popup. Currencies where
isDiscoveredis false are now filtered out. - Loot UI: Taint errors in reputation and player name handling —
CHAT_MSG_COMBAT_FACTION_CHANGEandCHAT_MSG_LOOTcan deliver tainted secret strings from Blizzard's secure code.Detainthelper strengthened with string concatenation to fully strip taint, andGetReputationChangeFromText/IsMessageSenderPlayerwrapped inpcallas a safety net. - Item Level: Durability text could overlap stats on characters with many stat categories (e.g. tanks with Block/Parry/Dodge). Now anchors to the fixed
CharacterFrameInsetRightcontainer instead of the scrollableCharacterStatsPane.
[0.5.3] - 2026-03-09
Added
- Talking Head (New Module) (Beta): Hide the Talking Head NPC popup in configurable situations. Three independent checkboxes — Dungeons & Raids, Abundance Events, and Always. The Abundance setting also mutes all 41 of Dundun's voice lines via
MuteSoundFileso the narration is silenced without affecting any other game audio; voices are automatically restored when leaving the cave or disabling the module. Disabled by default (opt-in). - Item Level: Gear Durability display on the character pane — shows overall durability as a colour-coded percentage (green → amber → red) at the bottom of the stats panel. Enabled by default with a toggle in the Item Level settings.
- Cutscene Skip (New Module) (Beta): Automatically skip cutscenes and movies inside dungeon and raid instances. Per-difficulty checkboxes for Normal, Heroic, and Mythic/M+ dungeons, plus Normal/LFR, Heroic, and Mythic raids. Movies are tracked per-character so they play once on first viewing and auto-skip on repeats. Mythic/M+ dungeons and Heroic/Mythic raids enabled by default.
- Pet Alert: Notification Size setting — choose between Small, Medium, or Large alert notifications. Medium is the default and matches the previous size.
- Loot UI: Quest reward notifications — items, money, and currencies received from quest turn-ins are displayed in the loot popup.
- Loot UI: Money displayed as a standard item panel with a gold coin icon and formatted gold/silver/copper text, instead of a separate text-only frame.
- Loot UI: Reputation gains now show the faction's icon — renown factions display their crest, others show a generic reputation icon.
Changed
- Loot UI: Show All Money Changes and Show All Currency Changes now default to enabled.
- Loot UI: Fade delay doubled — normal items 2 → 4 seconds, overflow 4 → 8 seconds.
Fixed
- Loot UI: Taint error when comparing
guidinIsMessageSenderPlayer— the GUID from chat message events can be a tainted secret string from Blizzard's secure code, causing "attempt to compare tainted value" errors. The comparison is now wrapped inpcalland falls back to theplayerNamecheck on failure. - Pet Alert: Entering combat without a pet could delay the alert by up to 5 seconds because
InCombatLockdown()had not yet updated whenPLAYER_REGEN_DISABLEDfired. The combat entry handler now passes the combat state directly to the mode check. - Pet Alert: Mounting caused a false "No Pet Active" alert because the pet temporarily despawns while mounted. The alert now suppresses while
IsMounted()is true and re-evaluates on dismount. - Loot UI: Reputation gain pattern matching now uses Blizzard's global string constants instead of hardcoded English text, supporting all locales and future wording changes.
- Loot UI: Internal tracking currencies (e.g. "12.x Professions – Tracker") with no icon are no longer shown in the loot popup.
- Loot UI: Merchant sales and mailbox pickups no longer trigger money notifications when all-source money tracking is enabled.
[0.5.2] - 2026-03-04
Fixed
- Item Level: M+ score on player tooltips is now hidden between seasons. The API retains the previous season's score during expansion transitions —
C_MythicPlus.GetCurrentAffixes()is checked to detect whether a season is active, and the score is suppressed when it isn't. Automatically re-enables when a new season starts. - Alt Bags: Gold total now always includes the current character's gold even when "Include Current Character" is disabled. The setting now only controls whether the character appears as an individual line — the total reflects visible characters plus the current character, since their gold is already shown on the backpack bar.
- Pet Alert: Demonology Warlock Felguard (and other pets) silently despawning without triggering the missing-pet alert. WoW does not fire
UNIT_PETorUNIT_DIEDfor all pet disappearance scenarios (phasing, pathing failures, boss mechanics, server-side cleanup). A 5-second heartbeat ticker now periodically re-checksUnitExists("pet")— negligible overhead, guarantees the alert appears regardless of how the pet was lost.
[0.5.1] - 2026-03-04
Fixed
- AutoSell: Delve supply merchants (Delvers' Supplies, Explorers' League Supplies) no longer trigger auto-sell. These merchants open a merchant frame but refuse item sales, causing error spam. Now detected via an NPC ID blacklist extracted from
UnitGUID("npc")— locale-independent and future-proof.
Improved
- Core: Gold amounts now display with comma separators (e.g.
1,234,567) in all money formatting — affects Alt Bags gold tooltips, AutoSell, AutoRepair, and merchant total messages.
[0.5.0] - 2026-03-04
Added
- Alt Bags (New Module): Item counts across alts on item tooltips — hover over any item in your bags to see how many each of your other characters has (bags + personal bank).
- Alt Bags: Gold amounts across characters on money frame tooltips — hover over any gold display (vendor frames, character panel, backpack currency area) to see each alt's gold.
- Alt Bags: Currency amounts across characters on currency tooltips — hover over any tracked currency to see how much each alt has.
- Alt Bags: Warband Bank row on item tooltips, showing a separate count for items stored in the account-wide bank.
- Alt Bags: Backpack currency tooltip — the backpack gold/token area (which has no native tooltip) now shows a standalone tooltip with alt gold when hovered.
- Alt Bags: Individual toggle checkboxes for Items, Gold, and Currency tooltip display — each can be enabled or disabled independently.
- Alt Bags: Reagents Only filter — optionally limit item tooltip counts to reagents and profession materials only.
- Alt Bags: Character Filter setting (
Warband/Selected Characters) with a character picker to choose exactly which alts appear in tooltips. - Alt Bags: Include Current Character toggle to optionally include the logged-in character in tooltip counts.
- Alt Bags: Show Warband Bank toggle to show or hide the Warband Bank row on item tooltips.
- Alt Bags: Full localisation for English, French, and German.
- Alias:
<Name>and>Name<format options for the alias prefix. - AutoSell / AutoRepair: Merchant total summary line showing net gold change (e.g.
+123gor-182g) when both sell and personal repair occur in the same vendor visit.
Fixed
- Alias: "UI action blocked" error caused by Midnight security changes when sending chat inside instanced content during combat. Alias now works everywhere (including PvP/arena and dungeons/raids) except when in combat lockdown inside an instance.
- Alias: Incoming chat filters are now registered only once; re-enabling the module no longer stacks duplicate filters that process every message multiple times.
- AutoQuest: Quest reward selection calling
GetQuestRewardon every loop iteration instead of after picking the best reward — could cause the wrong item to be chosen. - AutoQuest: "Let me pick" reward mode now auto-completes quests that have no actual choice (0 or 1 reward options), instead of stopping at the turn-in screen.
- AutoRepair: Merchant session is now initialised on
MERCHANT_SHOWeven when AutoSell is disabled, preventing stale data from a previous visit leaking into the merchant total. - AutoRepair: Guild repair partial-success fallback now records the remaining
newCostinstead of the originalrepairCost, so the merchant total and print are accurate when guild funds partially cover the bill. - AutoSell: Sell total now uses actual gold gained (
GetMoney()before vs after) instead of pre-calculated item prices, preventing false reports when a vendor refuses items. UsesPLAYER_MONEYevent for reliable detection regardless of latency. - AutoSell: Frame leak — the
PLAYER_MONEYlistener now reuses the module's own event handler instead of creating a throwaway frame every vendor visit. - AutoSell: Sell message and merchant total not appearing — the 0.15s safety timer was too short for the server to confirm sells, so the
PLAYER_MONEYlistener was cleaned up before it could fire. Safety timer increased to 2s and is now cancelled as soon as the first server response arrives. A high-water mark tracks peak gold so that a later repair deduction doesn't pollute the sell total. - AutoSell: Double
MERCHANT_SHOWevents no longer stack sell timers — the pending timer is cancelled and state is reset before scheduling a new one. - Bags:
BAG_UPDATEhandler is now debounced withC_Timer.NewTimer— multiple per-bag events coalesce into a singleUpdateAllBagscall instead of stacking timers. - Bags:
HookScriptregistrations on bag frames are now guarded so re-enabling the module doesn't stack duplicate hooks. - AchievementBack: Navigation history is now capped at 50 entries, preventing unbounded memory growth during long browsing sessions.
- Character Frame:
Blizzard_CharacterUIis now deferred-loaded viaEventUtil.ContinueOnAddOnLoaded, so hooks don't silently fail if the addon hasn't loaded atOnEnable. - Core:
ADDON_LOADEDevent is now unregistered after WoWtility loads, stopping the handler from firing on every subsequent addon load. - Core:
utils.Printandutils.PrintErrornow guard againstnilmessages instead of erroring on string concatenation. - Inspect / Tooltip: Debounce timer now uses
C_Timer.NewTimerinstead ofC_Timer.After(which returns nil), so the guard actually prevents duplicate updates. - Inspect / Tooltip: Timer cancellation now uses
:Cancel()instead of setting to nil, preventing stale callbacks from firing after the handle is discarded. - Inspect / Tooltip:
inspectCacheis now pruned of expired entries every 60 seconds, preventing unbounded memory growth from hovering many players. - PetAlert:
UNIT_AURAevent is now only registered for Warlock characters, avoiding unnecessary callback overhead for all other classes. - PetAlert: Frost Mage with Lonely Winter talented incorrectly receiving the "No Pet Active" alert.
IsPlayerSpellcannot reliably detect passive talents, so the check now looks for Summon Water Elemental in the spellbook instead. - PetAlert: Marksmanship Hunter with Lone Wolf talented had the same false alert. Now checks for the Lone Wolf damage-buff aura instead of the passive talent.
- Settings:
moduleAliasandmoduleAutoRepairdefaults in the settings UI now match the savedvars default (true), so "Reset" restores the correct values.
Changed
- Alias: Removed "Name: Message" (plain) format option. The
name:pattern was too greedy and matched normal chat from other players, causing false-positive colouring. Remaining formats —(Name),[Name],<Name>,>Name<— all use unambiguous delimiters. Users previously set to plain will automatically fall back to parens. - Character Frame: Gem & Enchant toggle button now persists state across sessions by writing to saved variables (
gemsEnabled/enchantsEnabled). If one overlay is on and the other off, the first click normalizes both to on, then the next click turns both off. The button icon desaturates when overlays are disabled. - Character Frame: Average item level now overrides Blizzard's built-in ilvl display in the stats pane with a decimal value (e.g.
623.4) coloured by gear rarity, instead of a separate addon overlay. Uses a lightweight per-frame enforcer (OnUpdate) that only runs while the character panel is open and only writes when Blizzard has overwritten the text or colour — eliminates the constant flicker caused by the previousSetText/SetTextColorhook approach. - Core:
FormatMoneyandFormatMoneyNethelpers moved toWoWtility.utils— AutoSell and AutoRepair now share a single implementation instead of maintaining identical copies. - Core:
InitModulesnow iterates modules in registration order (ipairs) instead ofpairs, which had no guaranteed ordering.
Improved
- AutoAccept: Guild roster lookup is now O(1) via a cached hash table instead of iterating the full roster on every party invite. Cache is invalidated on
GUILD_ROSTER_UPDATEand rebuilt lazily. - AutoSell: Excluded item ID list is now cached and only re-parsed when the setting string changes, instead of rebuilding the table on every merchant visit.
- Core: Single shared tooltip scanner frame (
WoWtilityScanTooltip) replaces three identicalGameTooltipframes previously created by the gem/enchant scanner, character ilvl, and inspect modules. - Inspect / Tooltip:
GemEnchant_Scan.ScanItemnow reuses module-level result, gem, and enchant tables instead of allocating fresh tables on every call (~48 fewer table allocations per character frame update).
[0.4.3] - 2026-03-02 (Hotfix)
Fixed
- PetAlert: Frost Mage with Lonely Winter talented was incorrectly receiving the "No Pet Active" alert.
IsPlayerSpellcannot reliably detect passive talents from the talent tree, so the check now looks for Summon Water Elemental in the spellbook instead — if the pet spell isn't present, no alert. - PetAlert: Marksmanship Hunter with Lone Wolf talented had the same false alert. Now checks for the Lone Wolf damage-buff aura (same pattern as Grimoire of Sacrifice for Warlocks) instead of the passive talent.
[0.4.2] - 2026-03-01
Fixed
- PetAlert: Frost Mage talent detection now checks for Lonely Winter (the no-pet talent) instead of Summon Water Elemental, so the default on API failure is "expect a pet" — the safer direction.
- PetAlert: Demonology Warlock no longer checks for Felguard talent specifically — always expects a permanent demon (Felguard if talented, otherwise a basic demon).
Added
- PetAlert: Marksmanship Hunter support — alerts when no pet is active, unless Lone Wolf is talented.
[0.4.0] - 2026-02-26
Fixed
- Alias: "UI action blocked" error caused by Midnight security changes when sending chat inside instanced content during combat. Alias now works everywhere (including PvP/arena and dungeons/raids) except when in combat lockdown inside an instance.
- Alias: Incoming chat filters are now registered only once; re-enabling the module no longer stacks duplicate filters that process every message multiple times.
- AutoQuest: Quest reward selection calling
GetQuestRewardon every loop iteration instead of after picking the best reward — could cause the wrong item to be chosen. - AutoQuest: "Let me pick" reward mode now auto-completes quests that have no actual choice (0 or 1 reward options), instead of stopping at the turn-in screen.
- AutoRepair: Merchant session is now initialised on
MERCHANT_SHOWeven when AutoSell is disabled, preventing stale data from a previous visit leaking into the merchant total. - AutoRepair: Guild repair partial-success fallback now records the remaining
newCostinstead of the originalrepairCost, so the merchant total and print are accurate when guild funds partially cover the bill. - AutoSell: Sell total now uses actual gold gained (
GetMoney()before vs after) instead of pre-calculated item prices, preventing false reports when a vendor refuses items. UsesPLAYER_MONEYevent for reliable detection regardless of latency. - AutoSell: Frame leak — the
PLAYER_MONEYlistener now reuses the module's own event handler instead of creating a throwaway frame every vendor visit. - AutoSell: Sell message and merchant total not appearing — the 0.15s safety timer was too short for the server to confirm sells, so the
PLAYER_MONEYlistener was cleaned up before it could fire. Safety timer increased to 2s and is now cancelled as soon as the first server response arrives. A high-water mark tracks peak gold so that a later repair deduction doesn't pollute the sell total. - AutoSell: Double
MERCHANT_SHOWevents no longer stack sell timers — the pending timer is cancelled and state is reset before scheduling a new one. - Bags:
BAG_UPDATEhandler is now debounced withC_Timer.NewTimer— multiple per-bag events coalesce into a singleUpdateAllBagscall instead of stacking timers. - Bags:
HookScriptregistrations on bag frames are now guarded so re-enabling the module doesn't stack duplicate hooks. - AchievementBack: Navigation history is now capped at 50 entries, preventing unbounded memory growth during long browsing sessions.
- Character Frame:
Blizzard_CharacterUIis now deferred-loaded viaEventUtil.ContinueOnAddOnLoaded, so hooks don't silently fail if the addon hasn't loaded atOnEnable. - Core:
ADDON_LOADEDevent is now unregistered after WoWtility loads, stopping the handler from firing on every subsequent addon load. - Core:
utils.Printandutils.PrintErrornow guard againstnilmessages instead of erroring on string concatenation. - Inspect / Tooltip: Debounce timer now uses
C_Timer.NewTimerinstead ofC_Timer.After(which returns nil), so the guard actually prevents duplicate updates. - Inspect / Tooltip: Timer cancellation now uses
:Cancel()instead of setting to nil, preventing stale callbacks from firing after the handle is discarded. - Inspect / Tooltip:
inspectCacheis now pruned of expired entries every 60 seconds, preventing unbounded memory growth from hovering many players. - PetAlert:
UNIT_AURAevent is now only registered for Warlock characters, avoiding unnecessary callback overhead for all other classes. - Settings:
moduleAliasandmoduleAutoRepairdefaults in the settings UI now match the savedvars default (true), so "Reset" restores the correct values.
Added
- Alias:
<Name>and>Name<format options for the alias prefix. - AutoSell / AutoRepair: Merchant total summary line showing net gold change (e.g.
+123gor-182g) when both sell and personal repair occur in the same vendor visit.
Changed
- Alias: Removed "Name: Message" (plain) format option. The
name:pattern was too greedy and matched normal chat from other players, causing false-positive colouring. Remaining formats —(Name),[Name],<Name>,>Name<— all use unambiguous delimiters. Users previously set to plain will automatically fall back to parens. - Character Frame: Gem & Enchant toggle button now persists state across sessions by writing to saved variables (
gemsEnabled/enchantsEnabled). If one overlay is on and the other off, the first click normalizes both to on, then the next click turns both off. The button icon desaturates when overlays are disabled. - Character Frame: Average item level now overrides Blizzard's built-in ilvl display in the stats pane with a decimal value (e.g.
623.4) coloured by gear rarity, instead of a separate addon overlay. Uses a lightweight per-frame enforcer (OnUpdate) that only runs while the character panel is open and only writes when Blizzard has overwritten the text or colour — eliminates the constant flicker caused by the previousSetText/SetTextColorhook approach. - Core:
FormatMoneyandFormatMoneyNethelpers moved toWoWtility.utils— AutoSell and AutoRepair now share a single implementation instead of maintaining identical copies. - Core:
InitModulesnow iterates modules in registration order (ipairs) instead ofpairs, which had no guaranteed ordering.
Improved
- AutoAccept: Guild roster lookup is now O(1) via a cached hash table instead of iterating the full roster on every party invite. Cache is invalidated on
GUILD_ROSTER_UPDATEand rebuilt lazily. - AutoSell: Excluded item ID list is now cached and only re-parsed when the setting string changes, instead of rebuilding the table on every merchant visit.
- Core: Single shared tooltip scanner frame (
WoWtilityScanTooltip) replaces three identicalGameTooltipframes previously created by the gem/enchant scanner, character ilvl, and inspect modules. - Inspect / Tooltip:
GemEnchant_Scan.ScanItemnow reuses module-level result, gem, and enchant tables instead of allocating fresh tables on every call (~48 fewer table allocations per character frame update).
[0.3.5] - 2026-02-24 (Hotfix)
Fixed
- AutoSell: Sell total now uses actual gold gained (
GetMoney()before vs after) instead of pre-calculated item prices, preventing false reports when a vendor refuses items. UsesPLAYER_MONEYevent for reliable detection regardless of latency. - Alias: Fixed "UI action blocked" error caused by Midnight security changes when sending chat inside instanced content during combat. Alias now works everywhere (including PvP/arena and dungeons/raids) except when in combat lockdown inside an instance.
Added
- AutoSell / AutoRepair: Merchant total summary line showing net gold change (e.g.
+123gor-182g) when both sell and personal repair occur in the same vendor visit.
Changed
- Character Frame: Gem & Enchant toggle button now persists state across sessions by writing to saved variables (
gemsEnabled/enchantsEnabled). If one overlay is on and the other off, the first click normalizes both to on, then the next click turns both off. The button icon desaturates when overlays are disabled. - Character Frame: Average item level now overrides Blizzard's built-in ilvl display in the stats pane with a decimal value (e.g.
623.4) coloured by gear rarity, instead of a separate addon overlay.
[0.3.4] - 2026-02-22 (Hotfix)
Fixed
Pet Alert
- Fixed "attempt to compare local 'unit' (a secret string value tainted by 'WoWtility')" Lua error thrown in instanced content;
UNIT_PET,UNIT_DIED, andUNIT_AURAunit token comparisons are now wrapped inpcall, consistent with the same fix applied across the iLvl modules
[0.3.3] - 2026-02-22 (Beta)
Fixed
Alias
- Fixed "UI action blocked" combat lockdown errors occurring during M+ (and potentially PvP/arena) when sending chat messages while in combat
- Root cause: the outgoing chat hook was replacing a protected C function with a Lua wrapper, tainting the secure call path during combat lockdown
- Reworked to use function on each chat editbox instead — text is modified in the box before Blizzard's own secure send path reads it, so the addon never calls directly
- Added function guard to skip text modification in PvP and arena instances
- Added function to ensure detached/temporary chat windows are also covered
Auto Keystone
- Fixed keystone not being inserted for players
Added
Pet Alert (New Module)
- Displays a persistent on-screen alert when the player's permanent pet is missing
- Supports: Warlock (Affliction / Destruction / Demonology), Unholy Death Knight, Beast Mastery Hunter, Survival Hunter, Frost Mage (Water Elemental talent)
- Spec-aware and talent-aware: Demonology only alerts if Summon Felguard is talented; Frost Mage only if Summon Water Elemental is talented
- Affliction / Destruction Warlocks: only suppressed when Grimoire of Sacrifice is both talented and the buff is currently active
- Alert persists until pet is resummoned; fires on reload, zone change, combat start/end, pet death, and spec change
- Notification Mode setting: Always, Combat & Instances, Combat only, or Instances only (dungeons, raids, delves) — defaults to Instances only
- Alert positioned below instance entry text to avoid overlap
- Enabled by default; toggle via WoWtility settings
[0.3.2] - 2026-02-20 (Hotfix)
Fixed
Instanced Content
- Fixed two additional
UnitGUIDcalls inFindUnitForGUIDandTryCacheAndRefreshthat could throw "Secret values are only allowed during untainted execution" whenGameTooltip:GetUnit()orInspectFrame.unitreturned a secret unit token in a tainted context (e.g. C_Timer callbacks firing inside instances); all three secret-token paths are now consistently guarded withpcall - Fixed "attempt to compare a secret string value (tainted by 'WoWtility')" error; all four
UnitGUID(...) == guidcomparisons are now wrapped as a singlepcallcapturing both the call and the comparison, protecting against both secret-token inputs and secret-string return values
[0.3.1] - 2026-02-20 (Hotfix)
Fixed
Tooltip iLvl
- Fixed tooltip showing incorrect item level for players with two-handed weapons (equipLoc not yet cached by GetItemInfo, causing 2H double-count to be skipped)
- Fixed tooltip item level not loading on hover (could wait 20+ seconds with no result); added staggered retry system inspired by OiLvl
- Fixed tooltip NotifyInspect conflicting with Blizzard's own inspect system, causing the inspect frame to stall or require multiple clicks to open
- Fixed stale/wrong item level persisting through reloads due to premature caching before weapon slot data was fully available
Inspect iLvl
- Fixed blank inspect overlays on all players caused by tooltip cleanup clearing inspect inventory data (ClearInspectPlayer race condition)
- Fixed average item level not displaying when GetInventoryItemID returned stale data from a previously inspected player
- Fixed Lua error:
attempt to call global 'StartInspectTimeout'caused by function definition ordering - Added staggered retry updates (0.2s, 1s, 2s) after INSPECT_READY to handle partially-loaded inventory data
Instanced Content
- Fixed Lua error in tooltip hook caused by Blizzard's secure/tainted execution context in dungeons, raids, battlegrounds, and arenas
Disconnect Safety
- Added safety handling when inspecting a player who disconnects mid-inspect
- Added UnitIsConnected checks across inspect and tooltip modules
- Added UNIT_CONNECTION event handling to clear stale overlays
- Added 5-second inspect timeout to prevent hanging when INSPECT_READY never fires
[0.3.0] - 2026-02-20 (Beta)
Added
iLvl Module
- Gem and enchant stats now display directly on character frame gear slots (abbreviated for clarity)
- Missing gems are highlighted in red; unenchanted slots are highlighted in gold
- Tooltip iLvl — item level now shown in item tooltips
- M+ Score display in item tooltips
- Inspect iLvl — view gear item levels when inspecting other players
Auto Keystone (New Module)
- Automatically slots your Mythic Keystone into the Font of Power when the receptacle is opened
Damage Meter Reset (New Module)
- Auto-resets the Blizzard damage meter at the start of combat
- Separate toggles for open world and raid encounters
Auto Quest (New Module)
- Auto-accepts quests from NPCs and auto-completes turn-ins
- Configurable independently for trivial and non-trivial quests
Auto Accept (New Module)
- Auto-accepts role checks for LFG/LFR
- Auto-accepts party invites from friends and guild invites from guild members
Prefill Delete (New Module)
- Pre-fills the item deletion confirmation dialog automatically
Achievement Back Button (New Module)
- Adds a browser-style back button to the Achievement frame
- Maintains full navigation history including scroll position
Changed
- Removed persistent icons bleeding through frames
- iLvl slot text no longer bleeds out of the character frame; improved wrapping prevents overlap
- Extracted shared UI elements to a common utility to reduce duplication
- Added group notes prompt to relevant flows
Fixed
- Enchant slot detection made more dynamic; suppressed false "Not Enchanted" warnings for legacy and cosmetic enchants
- General code cleanup and refactor of repeated logic across modules
[0.2.2] - (Beta)
- Minor fixes and adjustments
[0.2.0] - (Beta)
Added
- Alias — Display an alternate name in chat with per-channel toggles and class color support
- Auto Sell — Automatically sell junk items at vendors with configurable low-ilvl filters
- Auto Repair — Auto-repair gear at vendors with guild bank support
- iLvl — Item level overlays on the character frame with upgrade level tracking
[0.1.0] - (Beta)
- Initial release
This mod has no additional files