promotional bannermobile promotional banner

DiabolicUI Arahort Edition

Orb-based graphical user interface replacement for World of Warcraft.
Back to Files

6.6.6-r499

File nameDiabolicUI3-6.6.6-r499.zip
Uploader
ArahortArahort
Uploaded
Aug 13, 2026
Downloads
115
Size
5.6 MB
Flavors
Retail
File ID
8640262
Type
R
Release
Supported game versions
  • 12.1.0

What's new

# DiabolicUI3 Changelog

## [6.6.6-r499] - 2026-08-13

### 🐛 Bug Fixes
- **Fixed frames losing their border and drag handle in Edit Mode**, the micro menu among them. Blizzard's selection label ends up testing `FontString:IsTruncated()`, which is secret while the frame it belongs to is anchored to one of our bars, and the resulting error aborted the loop before the remaining frames were set up

### 🔄 Changes
- The extra action button no longer draws the dark cooldown plate. Its geometry belongs to Blizzard and must stay untouched, otherwise the cooldown stops updating in combat, so the swipe is turned off and the countdown text is left on its own

---

## [6.6.6-r497] - 2026-08-12

### 🐛 Bug Fixes
- Fixed the role icon missing on your own frame in a group. Hiding it on units that are not group members, which the previous release introduced for the focus frames, also caught the player: that frame carries the `player` token rather than a party one

---

## [6.6.6-r495] - 2026-08-12

Support for **WoW 12.1 "Curse of Ula'tek"** (Interface `120100`). This patch closed
addon access to aura data and renamed a number of frames and APIs, so most of the
work below is about rebuilding on top of what 12.1 offers instead.

### ✨ New Features
- **Game Menu skin** — the Escape menu now matches the rest of the interface
  - Stone backdrop, metal button plates and a dimmed screen behind the menu
  - Separate plate for *Log Out* / *Exit Game* / *Return to Game*
  - Reskinning is postponed while in combat, so nothing is touched next to the protected buttons
  - Artwork and the original implementation by **Gonkast** (MyCustomFrames, "Charcoal" skin), used with permission and credited in the About panel

### 🔄 Changes
- **Player buffs next to the minimap are now Blizzard's own.** Our display was built on `SecureAuraHeaderTemplate`, which 12.1 loads for Classic only. Rather than rebuild it, the standard buff frame is left visible and no longer hidden by the addon
- **Unit frame auras rebuilt on the new AuraContainer** — the game no longer lets addons read aura data, so filtering and sorting are declared up front and performed by the game:
  - Target shows the player's own auras first in full colour, everything else follows dimmed
  - Nameplates show boss auras, the player's own short debuffs and stealable buffs
  - Stack counters, cooldown spirals and tooltips are now driven by the container
- **Raid frame customization (Experiments) is temporarily off** while it is reworked. The saved setting is left untouched, so it returns as you left it
- **Raid warnings use Blizzard's own presentation.** 12.1 rebuilt them around a font string pool, moved boss emotes into a private frame addons cannot reach, and made the raid warning an Edit Mode system, so it is positioned from the standard editor now
- **Health text shows the number with the percentage** next to it. Secret values cannot be abbreviated, so "1.2m" is no longer possible; the target of target shows the percentage alone, since the full number does not fit
- **The extra action button keeps Blizzard's cooldown look.** Its swipe is filled with a secret duration in combat, and that only reaches a frame no addon has touched, so restyling it cost the cooldown itself
- Focus and focus target show at most six debuffs, and no longer display a role icon — they are not group members

### 🐛 Bug Fixes
- Fixed the addon aborting during load on a hook for `TalentFrame_LoadUI`, a Classic-only leftover removed in 12.1. This aborted the whole *KillActionBars* pass, which is why **the default action bar with the gryphons came back**
- Fixed health and power bars freezing on every unit frame: oUF no longer publishes `frame.unit`, only `frame.__unit`, and every override still compared against the old field. This is what left **party members without resource bars**
- Fixed one party frame occasionally rendering oversized: a member button created during combat had its protected `SetIgnoreParentScale` blocked while the scale was applied anyway, so it scaled twice. Both calls now wait for the fight to end
- Fixed the focus target and target of target showing a stale name and health bar — those units fire no events of their own, so they now refresh on `UNIT_TARGET` of their base unit instead of waiting for the next poll
- Fixed a load error in the experience and reputation bars: `IsPlayerAtEffectiveMaxLevel` moved to `GameRulesUtil`
- Fixed a load error in the raid warning styling, which used the `timings` table and the named slot font strings that 12.1 removed
- **Fixed the health and power orbs standing still.** They asked for an interpolation mode that does not exist, and the resulting `nil` was rejected by the engine, so the fill never moved — silently, with nothing in the error log
- **Fixed the target frame losing its border and showing a white health bar.** Four plugin files still read the retired `frame.unit`, and the resulting error aborted the update before the bar was coloured and before the artwork was applied
- **Fixed bars refusing to colour by threat.** The threat status is secret in 12.1 and was used both as a condition and as a table key; threat colouring still applies wherever the game exposes the value
- **Fixed the pet bar erroring on every update**, which left buttons without icon, cooldown or keybind: the global `SetDesaturation` wrapper is gone, desaturation is a texture method now
- **Fixed proc highlights not lighting up.** The button library draws them through LibButtonGlow, which was missing from the addon
- **Fixed party resource bars disappearing.** Maximum power is restricted for group members and allied NPCs, and the code read that as "has no resource"; the bar now only hides when the maximum is readable and really zero
- **Fixed the absorb tag never displaying anything** and the health and power text silently dropping their maximum — secret values cannot be compared or concatenated in Lua, so the text is assembled through `C_StringUtil`
- **Fixed the focus target showing the previous unit's name and role icon**
- **Fixed empowered cast stage pips erroring** when the castbar was placed above the target's name, which anchored it to a secret font string
- **Fixed the golden highlight on the targeted group member**, which relied on a unit comparison that is secret in 12.1
- Fixed damage and healing numbers never showing crits, absorbs or blocks — the code compared an undefined global instead of its own variable

### 🔧 Internal
- Table of Contents updated to **Interface `120100`**
- **oUF updated to 14.0.0**, which carries the 12.1 aura rewrite; our health and power prediction plugins carried over
- **Replaced the LibActionButton-1.0-GE fork with upstream LibActionButton-1.0 v155**, which is maintained for 12.1. The out-of-range and unusable button colouring lives in the addon itself, so the look is unchanged
- Added **LibButtonGlow-1.0**, the proc highlight dependency of the button library
- Local patches to bundled libraries are marked with a `DIABOLIC PATCH (12.1)` comment so they survive the next library update
- Unit tooltips are built from the frame's own unit instead of going through Blizzard's handler, which reads the field oUF retired
- Game menu textures converted from TGA to PNG, 7.8 MB down to 1.8 MB

---

## [6.6.6-r481] - 2026-06-18

### 🔧 Internal
- Updated Table of Contents for **WoW 12.0.7** (Interface `120007`); dropped the older interface versions

---

## [6.6.6-r480] - 2026-06-14

### ✨ New Features
- **3D Model Orbs** — optional animated 3D models inside the player's health and power orbs (oUF_Diablo style)
  - Toggle in **Settings → Spheres** (off by default, saved per character)
  - **Visual model picker** — a gallery window with live 3D previews and paging, so you pick a model by its look instead of its name
  - **Animation speed** sliders (0.1–2.0) for the health and power orbs independently
  - Real-time: toggling the option and changing model/speed apply instantly, no reload needed
  - Fully localised in all 12 client languages

### 🔧 Internal
- Ported and namespaced the 3D orb engine (template, ModelScene camera, 206 model presets) under `DiabolicUI3` to avoid global conflicts
- 3D orb engine based on **oUF_Diablo / rModelOrbTemplate** by zork (Erik Raetz), MIT License — credited in the About panel

---

## [6.6.6-r479] - 2026-06-07

### ✨ New Features
- **Micro Menu keybinding** — assign a key to open/close the Diabolic Micro Menu
  - New binding **"Toggle Micro Menu"** under the *DiabolicUI* category in the Key Bindings menu
  - Works in combat — bound to the secure toggle button via an override binding, the same way the side panel toggles work
  - Localised in all 12 client languages

---

## [6.6.6-r478] - 2026-05-25

### ✨ New Features
- **Target Castbar** — a native cast bar for your current target, shown between the target's health bar and its debuffs
  - Spell icon, spell name and remaining cast time
  - "Cannot interrupt" shield indicator (uses the same secret-safe API as Platynator), shown on protected casts
  - Bar colour reflects interruptibility: **red** when the cast can be interrupted, **blue-grey** when it cannot
  - Uses the same bar/border textures as the Party frames and scales together with the Target frame
- **EditMode integration for the Target Castbar**
  - Toggle **"Show Target Castbar"** (enabled by default)
  - Toggle **"Castbar Above Name"** — optionally place the cast bar above the target's name instead of below the frame; debuffs reposition automatically
  - A sample cast bar is shown while Edit Mode is open (like the debuffs preview) so it can be positioned without an active cast
  - Fully localised in all 12 client languages

### 🐛 Bug Fixes
- Fixed a Lua error on enemy casts (`secret boolean value`) — interrupt state is no longer tested in Lua; it is resolved through the secret-safe `C_CurveUtil.EvaluateColorValueFromBoolean` and `SetAlphaFromBoolean`

### 🔧 Internal
- Converted the Target, Focus, Pet, Party and Nameplate cast bars from LibSmoothBar to native `StatusBar`s — LibSmoothBar stubs out the modern `SetTimerDuration` API and never runs the element `OnUpdate`, so those cast bars never filled or hid under WoW 12.0
- Removed the obsolete `hideTargetNameOnCast` setting and its migration

---

## [6.6.6-r476] - 2026-05-20

### 🐛 Bug Fixes
- **One-shot migration: Player Debuffs position reset**
  - Earlier versions of the Player Debuffs Edit Mode integration could persist a broken / off-screen saved position. Users affected by this saw the debuff frame "disappear" with no obvious way to recover it
  - On first login after installing this version, the saved position is automatically reset to its default (`userPositioned = false`, anchor `BOTTOMRIGHT`, x=316, y=100). Size / spacing / growth settings are intentionally left untouched
  - A migration marker (`global.migrations.playerDebuffsPositionReset`) guarantees the reset runs exactly once per account — subsequent re-positioning via Edit Mode persists normally

### 🔧 Internal
- Added a generic `global.migrations` table to support future one-shot data fixes without bumping version numbers in marker names

---

## [6.6.6-r475] - 2026-05-19

### 🐛 Bug Fixes
- **Player debuff icons appeared in the middle of the frame (and could vanish off-screen on some setups)**
  - The frame's screen-anchor (`positionPoint`, set by drag — could become `BOTTOM`, `TOP`, `CENTER`) was incorrectly reused as the *internal* `initialAnchor` (the corner inside the frame where the first icon starts). When the user dragged the frame to the bottom of the screen, `positionPoint` became `BOTTOM`, so the first icon anchored to the middle of the frame's bottom edge — making it look like the icons floated in the middle, and on smaller resolutions they could slide off-screen entirely
  - `initialAnchor` is now derived automatically from the **growth direction** (e.g. `growthX=LEFT + growthY=UP → BOTTOMRIGHT`), independent of where the frame itself is anchored on screen
  - `UpdateDebuffsLayout` now resets `anchoredButtons = 0` before `ForceUpdate` so existing icons re-anchor immediately when the user changes growth in Edit Mode

---

## [6.6.6-r474] - 2026-05-12

### 🐛 Bug Fixes
- **Player Debuffs jumped to a wrong spot when released in Edit Mode**
  - The debuff frame was a child of the Player frame, which uses `SetIgnoreParentScale(true)` and a custom unit-frame scale. LibEditMode computes drag coordinates in UIParent space, so the final `SetPoint` on a differently-scaled parent resolved to a different on-screen position
  - Re-parented to `UIParent` and applied `SetEditModeUFObjectScale(frame, 1)` (same pattern that fixed Focus / FocusTarget / Pet Orb / Extra & Zone buttons). The drag-and-drop position now matches the cursor exactly

---

## [6.6.6-r473] - 2026-05-10

### ✨ New Features
- **EditMode for Player Debuffs** (`Diabolic: Player Debuffs`)
  - Drag the debuff cluster to any position; saved globally per account
  - Slider: **icon size** (20–64 px, 1 px step)
  - Sliders: **horizontal spacing** and **vertical spacing** (0–30 px each)
  - Dropdowns: **horizontal growth** (Left/Right) and **vertical growth** (Up/Down)
  - All settings update in real time
  - On first drag the frame stops auto-positioning next to the action bars and uses the saved position from then on

### 🐛 Bug Fixes
- **Target auras did not appear in combat** (regression from r469)
  - The `InCombatLockdown` guard added to protect secure-parented Party aura buttons was applied to every aura button, so non-secure auras (Target, Player Debuffs) couldn't `Show()` during combat — they were created but stayed invisible until you left combat
  - Non-secure aura buttons are now marked `__nonsecure = true` and bypass the guard. Secure-parented Party buttons remain protected as before
- **Vehicle-leave button** (`MainMenuBarVehicleLeaveButton`)
  - The addon no longer force-hides Blizzard's vehicle-leave button. It now appears in the default Blizzard position and can be moved through the standard WoW Edit Mode

### 🔧 Changes
- **Player buffs near the health orb** are now disabled by default. The main buff header next to the minimap (`Diabolic: Buffs`) remains the canonical place for player buffs

### 🌍 Localization
- Added `PlayerDebuffsSize/SpacingX/SpacingY/GrowthX/GrowthY` (with descriptions) and `GrowthLeft/Right/Up/Down` strings across all 12 locales

---

## [6.6.6-r472] - 2026-04-24

### ✨ New Features
- **EditMode for the Pet Orb**
  - `Diabolic: Pet Orb` is now draggable via Edit Mode (only when the orb style is active)
  - Position is saved globally (falls back to the auto-calculated slot next to the player orb on first use)
  - **Pet Orb Size** slider in Edit Mode settings (20–200 px, 1 px step, default 100)
  - All artwork layers — main orb, backdrop, glass, border, shade — scale together proportionally in real time as the slider moves

### 🌍 Localization
- Added `PetOrbSize` / `PetOrbSizeDesc` strings across all 12 locales

---

## [6.6.6-r471] - 2026-04-23

### 🐛 Bug Fixes
- **Custom orb colors were overridden to red during combat** (`Libs/oUF/elements/health.lua`)
  - The safety fallback introduced in r469 (to prevent colorless HP bars on hostile NPC `focustarget`) was applied unconditionally when no colorXxx branch matched. On the Player orbs — where every `colorXxx` flag is intentionally disabled so the user's hand-picked color can be used via `SetStatusBarColor` — oUF's UNIT_* events in combat kept triggering `UpdateColor` and the fallback silently repainted the orbs red.
  - The fallback now only applies when at least one `colorXxx` flag is enabled. If the user (or a unit style) has disabled every flag and is painting the bar manually, we leave the custom color intact.

---

## [6.6.6-r470] - 2026-04-23

### ✨ New Features
- **Custom font selector** in Settings → Diabolic UI → Scale
  - Checkbox **Use custom font** (default off — keeps current behavior)
  - **Font dropdown** with built-in Blizzard fonts (Friz Quadrata, Morpheus, Skurri, Arial Narrow) + any fonts registered through **LibSharedMedia-3.0** (if installed)
  - Applies instantly to all Diabolic UI elements (unit frames, tooltips, castbars, action bar text, minimap, etc.) — no `/reload` required
  - Chat and number fonts are **not** affected (they intentionally stay on ARIAL Narrow)
  - Settings saved globally (per account)

### 🐛 Bug Fixes
- **`BagsBar:SetParent` taint in combat** (`BagButton.lua`)
  - The "Hide backpack" setting could trigger ADDON_ACTION_BLOCKED and silently fail to apply during combat. The update is now deferred to `PLAYER_REGEN_ENABLED` and re-applied safely when combat ends.
- **`OnTooltipSetUnit` secret-value handling** (`Tooltips.lua`)
  - Wrapped `GameTooltip:GetUnit()`, `UnitIsUnit` and `UnitName` calls in `pcall` + `issecretvalue` checks. Reduces the Blizzard `TooltipUtil.lua:39` error spam caused by our tooltip hook passing secret values further down the pipeline (notably visible when AllTheThings is installed).
- **Custom font revert** (`Core/API/Assets.lua`)
  - Turning off "Use custom font" now correctly reverts to the inherited `Game16Font` path immediately. Previously `fontObject:GetFont()` kept returning the overridden path, so the revert was a silent no-op until `/reload`.

### 🔧 Changes
- **TOC `OptionalDeps`** cleaned up: removed `Clique` (unused) and `LibKeyBound-1.0` (bundled in `Libs/`, not optional). Added `LibSharedMedia-3.0`.

### 🌍 Localization
- Added `UseCustomFont` / `UseCustomFontDesc` / `FontFace` / `FontFaceDesc` strings across all 12 locales

---

## [6.6.6-r469] - 2026-04-22

### ✨ New Features
- **EditMode for Extra Ability buttons**
  - `Diabolic: Extra Button` — drag the Extra Action Button (boss abilities, etc.) to any position
  - `Diabolic: Zone Ability` — drag the Zone Ability Button independently
  - Per-button size slider (20–100 px, 1 px step) inside EditMode settings
  - Position and size saved globally (per account)
  - Placeholder preview icons shown inside EditMode so the frames are visible/draggable even when no active ability is equipped
  - Default size: **60 px** (previously hardcoded 80)
  - Button size is now **independent from the "Unit Frames Scale" slider** — fully controlled by EditMode size

- **Bag Dump debug module** (`/bagdump`, `/bagdump bank`, `/bagdump clear`)
  - Scans all bag slots and saves detailed item info (itemID, quality, bind type, expansion, quest state, etc.) to `DiabolicUI3_BagDump` SavedVariablesPerCharacter
  - Useful for inventory audits and external tooling

### 🐛 Bug Fixes
- **FocusTarget on hostile NPCs** (WoW 12.0 secret values)
  - Fixed empty portrait for enemy target-of-focus: now falls back to a 2D portrait texture when the 3D model can't be loaded safely (secret GUID)
  - Fixed colorless HP bar on hostile NPCs: `UnitClass`/`UnitReaction` wrapped in `pcall` + `issecretvalue` checks; generic health color used as fallback
  - Fixed `boolean test on a secret boolean value` in `oUF/portrait.lua` when `UnitIsUnit` returns a secret
  - Fixed `attempt to compare local 'guid' (a secret string value)` in `oUF/portrait.lua`
  - Fixed `string conversion on a secret string value` in `Tags.lua` `:Name` tag
  - Fixed 2000+× Blizzard `TooltipUtil.lua:39` spam: `GameTooltip:GetUnit()` now wrapped in `pcall`
  - Fixed empty power bar for mobs without mana/rage: Power bar, background and decorative border are now hidden when `UnitPowerMax == 0` or is a secret value

- **ADDON_ACTION_BLOCKED for party auras** (`DiabolicPartyUnitButtonX:SetSize/Hide/EnableMouse`)
  - `oUF/auras.lua`: `SetSize`, `EnableMouse`, `Show`, `Hide` on secure-parented aura buttons are now skipped in combat (visual hide via `SetAlpha` in combat, real `Hide()` out of combat)
  - Party aura buttons are pre-sized at `CreateButton` time so `updateAura` never tries to resize them during combat

### 🔧 Changes
- **Extra Ability Buttons:** removed the D2R orb-style position override — positions are now driven exclusively by EditMode
- `.mcp.json` added to `.gitignore` (contains absolute user paths)

### 🌍 Localization
- Added `ExtraButtonSize` / `ExtraButtonSizeDesc` / `ZoneAbilitySize` / `ZoneAbilitySizeDesc` strings across all 12 languages (enUS, ruRU, deDE, esES, esMX, frFR, itIT, koKR, ptBR, ptPT, zhCN, zhTW)

---

## [6.6.6-r468] - 2026-04-19

### ✨ New Features
- **AzeriteUI-style Group Frames** (per-character, default **on**, in Settings → Unit Frames)
  - Custom Party frames replacing Blizzard CompactPartyFrame (raid frames untouched)
  - **Focus** and **FocusTarget** frames with identical visual
  - Portrait, role icon, health/power bars with separate decorative borders (Health-Bar-Border2)
  - HP text as percent or abbreviated number (toggle in EditMode)
  - 3×3 debuff grid under each frame (up to 40 auras, with stance-style `button-big` borders)
  - HealthPrediction overlays (incoming heals, absorbs, heal-absorbs)
  - Target highlight via golden portrait border tint
  - Castbar, LeaderIndicator, RaidTargetIndicator, PhaseIndicator, ReadyCheck, Resurrect
  - Player included in party (`showPlayer=true`)
  - HP % uses WoW 12.0 `UnitHealthPercent` + `CurveConstants.ScaleTo100` + `C_StringUtil.RoundToNearestString` for combat-safe display

- **EditMode integration for group frames**
  - Position saved per-character (party / focus / focustarget independently)
  - Checkbox: Show HP as Percentage (default on)
  - Sliders: HP Font Size (8–24, default 17), Name Font Size (8–24, default 16)
  - Sliders: HP Bar Height (8–30, default 16), Power Bar Height (4–24, default 10) — borders auto-align
  - Slider: Scale (0.5–1.5, default 1) — applies to party + focus + focustarget together
  - Force-show party header in EditMode so it's configurable solo

- **Minimap button collector: Mail + Tracking icons** (optional, in Settings → Map and Minimap)
  - When enabled, the Blizzard mail (9 o'clock) and tracking (3 o'clock) icons move into the bag
  - Mail slot appears/disappears with `HasNewMail()` via `UPDATE_PENDING_MAIL`

### 🔧 Fixes
- **Pet battle**: ClassPower, Stagger and Runes frames now properly hide during pet battles
- **XP bar**: hides on vehicle / override / possess / temp shapeshift action bars
- **Secondary action bars**: no longer hide during stun/polymorph override (keep visible)
- **ExtraButtons**: Guard `GetCheckedTexture` / `GetPushedTexture` for non-CheckButton buttons (fixes BetterHomes spam)
- **Portrait PostUpdate**: skips expensive `ClearModel+SetUnit` when unit GUID unchanged — prevents FocusTarget animation restart loop
- **FocusTarget/Focus drag**: use `SetEditModeUFObjectScale` so LibEditMode drag calculates position correctly (prevents teleport on release)
- **Party frame visibility**: state driver `[group:party,nogroup:raid]show;hide` — shows only in 5-man parties, raid uses Blizzard default
- **Lua warning**: fixed `nesting of [[...]] is deprecated` in commented `/dazparty` test block

### 🌐 Localization
- Added translations for new settings in all 12 locales:
  - `AzeriteGroupFrames`, `CollectMailAndTracking`
  - `PartyShowHealthPercent`, `PartyHealthFontSize`, `PartyNameFontSize`
  - `PartyHealthBarHeight`, `PartyPowerBarHeight`, `PartyScale`
- New `:HealthPercent` tag (WoW 12.0 combat-safe percent display)

---

## [6.6.6-r461] - 2026-03-27

### 🧹 Cleanup
- **Removed legacy code for Classic, TBC, Wrath, Cataclysm** — addon now targets only Retail (11.x / 12.x)
  - Deleted unused libraries: LibActionButton-1.0.OLD, LibHealComm-4.0, Libs_Vanilla.xml, Libs_TBC.xml
  - Deleted Classic aura system (AuraFilters, AuraStyles)
  - Deleted Wrath-only MultiCast bar (Shaman totem bar)
  - Cleaned `WoWClassic`/`WoWBCC`/`WoWWrath`/`WoWCata` branches from LibActionButton
  - Cleaned `ns.IsWrath`/`ns.IsClassic`/`ns.IsTBC` blocks from Components and Core
  - Removed Wrath addon list from Debugging, Wrath color logic from Colors, stale dates from Time
- **Misc fixes**: fixed duplicate esMX locale loading, added `.claude` to .pkgmeta ignore, cleaned orphaned references
- **README**: Updated with legacy code removal note

---

## [6.6.6-r458] - 2026-03-25

### 🔧 Fixes
- **ActionButton Cooldowns**: Fixed critical error with secret values in cooldown display after WoW 12.0.1 hotfix
  - `ActionButton_ApplyCooldown` no longer routes through secure delegate — tainted code can no longer pass secret values to `SetCooldown`
  - Replaced with `SetCooldownFromDurationObject()` using new duration object APIs (`C_ActionBar.GetActionCooldownDuration`, `C_ActionBar.GetActionChargeDuration`, `C_ActionBar.GetActionLossOfControlCooldownDuration`, `C_Spell` equivalents)
  - Added fallback for Item/Toy/Macro buttons that lack duration object APIs
  - Fixed `currentCharges` secret value comparison error in charge cooldown logic
  - Fixed `GetEffectiveAlpha()` returning nil when secret aspects are assigned
  - Three-tier cooldown system: duration objects → legacy `ActionButton_ApplyCooldown` → manual `CooldownFrame_Set`

---

## [6.6.6-r456] - 2026-03-22

### 🔧 Fixes
- **Target frame**: Hide Target Auras setting now persists correctly after clicking Apply in settings

### 📦 Assets
- Updated Platynator preset profile
- Updated UI preset profile

---

## [6.6.6-r452] - 2026-03-21

### ✨ Changes
- **Settings / About**: WoW game version now displayed alongside addon version
- **Settings / Auras**: Added "Hide Target Auras" toggle — hides aura display on target frame in real-time
- **ActionButton**: Release tag format updated to `6.6.6-rXXX` (dropped `release-` prefix)

### 🔧 Fixes
- **README**: Restructured "What's Different" section, added EditMode, real-time settings and hotkeys entries

---

## [6.6.6-r445] - 2026-03-20

### ✨ Changes
- **ActionButton**: Out-of-range buttons now display as grayscale instead of red tint

### 🔧 Fixes
- **LibActionButton**: Fixed `UpdateRange` logic for manual vs event call paths — `IsInRange()` returning `false` (out of range) was incorrectly treated as "no range requirement", causing buttons to show white when they should be gray
- **LibActionButton**: Fixed bar 2 losing red state after dismount — range state for regular bars is no longer cleared on `PLAYER_MOUNT_DISPLAY_CHANGED`, only override bar slots (121+) are reset

---

## [6.6.6-r441] - 2026-03-16

### 🔧 Fixes
- **LibActionButton**: Fixed stale `outOfRange` flag persisting when mounting (override bar) — buttons no longer show red incorrectly when on mount
- **LibActionButton**: Fixed stale `outOfRange` on `PLAYER_TARGET_CHANGED` — force range re-check on target switch; classic uses synchronous `UpdateRange`, retail resets and relies on `ACTION_RANGE_CHECK_UPDATE`
- **LibActionButton**: Fixed stale `outOfRange` on `UNIT_EXITED_VEHICLE` — range state cleared when exiting vehicle/transport
- **LibActionButton**: Fixed `UpdateRange` stale cleanup — when `checksRange` is nil (no target, range undetermined) the flag is now properly cleared instead of persisting

---

## [6.6.6-r440] - 2026-03-16

### 🔧 Changes
- **Castbar**: Cast timer text (`CastTimeText`) moved inside the progress bar, right-aligned with 10px padding, font size matched to spell name text

---

## [3.0.4] - 2026-03-13

All changes since 2.8.3:

### New Features
- EditMode Integration: Full native Edit Mode support for Minimap, MicroMenu, Auras, PetBar, ClassPower, Target frame and Castbar via LibEditMode (p3lim)
- Register Minimap with LibEditMode for drag positioning
- Add SetEditModeMinimapObjectScale for LibEditMode-compatible scaling
- Add LFG Eye Scale slider to EditMode settings
- Register MicroMenu toggle with LibEditMode for drag positioning
- Show micro menu bar during EditMode for visual feedback
- Add buttonSize and toggleAlpha sliders to EditMode settings
- Register auras frame with LibEditMode as "Diabolic: Buffs"
- Add icon size slider to EditMode settings
- PetBar: EditMode integration with LibEditMode, artwork scale fix
- ClassPower/Stagger/Runes: EditMode integration, reparented to UIParent
- Target frame: EditMode integration with position and scale controls
- LibEditMode: Added library for native Edit Mode frame management
- Add "Action Bars Glow" setting in Orbs category with animated breathing glow effect under the action bar frame (synced with eye glow animation, 2.5s BOUNCE cycle)
- When disabled, original static dark corner fills are restored
- Setting works in real-time without /reload
- Add configurable key bindings for left/right side panel toggle via Blizzard Key Bindings UI (SetOverrideBindingClick)
- Move minimap scale slider from main settings panel to EditMode minimap frame settings
- Scale is now stored in char.minimap.minimapScale instead of global.core.minimapRelativeScale, allowing per-character minimap sizing
- Restore Blizzard button effects for all users: SpellHighlight, proc overlay glow and NewAction sparkle
- Add multi-fallback chain for overlay glow (ActionButton_ShowOverlayGlow → ActionButtonSpellAlertManager → SpellActivationAlert) for compatibility across WoW versions
- Parent artworkHolder to PetHider instead of UIParent so angel/demon statues and orb backgrounds are hidden during pet battles
- Stagger (Brewmaster Monk): AzeriteUI-style Stagger — 3 orbs with per-tier colors (green/yellow/red), correct frame level, UpdateColor override
- ClassPower (AzeriteUI): AzeriteUI-style orbs now enabled by default for all players, settings toggle hidden
- Add WoW 12.0.5 interface version support

### LibActionButton-1.0-GE
- LibActionButton-1.0-GE: Major update — ported fixes from AzeriteUI v143
- Toy Button Type: Added support for Toy items on action bars
- GetDisplayCount: New display count system for charge-based spells
- Spell Cast VFX: Visual casting animations on action buttons (configurable)
- AutoCast Overlay: Visual indicator for locked transmog outfits
- Assisted Combat (One Punch): Button state updates for assisted combat actions
- Event-based Range: Retail now uses ACTION_RANGE_CHECK_UPDATE instead of polling
- Per-button OnUpdate: Replaced global OnUpdate with per-button for better performance
- LAB Version: Bumped MINOR_VERSION from 135 to 143
- New Callbacks: OnButtonUpdate, OnButtonState, OnButtonUsable, OnCooldownUpdate, OnCooldownDone, OnChargeCreated, OnUpdateRange
- Config Options: Added targetReticle, spellCastVFX, lossOfControlCooldown
- CVAR_UPDATE: Handler for assistedCombatHighlight changes

### Bug Fixes
- Fix Death Knight runes not appearing with Azerite style by removing ns.IsRetail condition check
- Fix AzeriteRunes_PostUpdate: compute allReady locally since oUF runes element only passes runemap to PostUpdate callback
- Anchor coordinates below FPS/latency text instead of MinimapCompassTexture which drifts when minimap scale changes
- Match font and color with performance text for visual consistency
- Fix mail icon disappearing after EditMode exit: Blizzard's EditMode layout cleanup resets MailFrame state. Added LibEditMode exit callback to re-apply RepositionMailFrame
- Hook MailIcon:Hide to re-show the icon on next frame when there's mail
- Show MailIcon in UpdateBorderVisibility alongside custom border/shade textures
- Re-apply Tracking repositioning after EditMode exit
- Fix EditMode position not persisting across reloads: save anchor point from normalizePosition alongside x/y
- Fix MicroMenu Bartender4 deferred init case where EditMode scale switch was never applied
- Fix castbar overlay width in EditMode: set initial overlay width and reset it when no cast is active, preventing texture from expanding to 558px during EditMode
- Reparent Stagger and Runes to UIParent (fixes horizontal offset)
- Restructure AzeriteClassPower_PostUpdate to apply layout during EditMode even when cur=0
- Add inEditMode guards to all PostUpdate functions (Azerite + standard)
- Include Stagger/Runes in EditMode OnShow/OnHide hooks
- LAB SpellVFX: Fixed assertion error — SpellVFX forward declarations were placed after OnEvent, making them invisible to the event handler
- LAB GetCount: Fixed secret number comparison error in Action.GetCount (IsSafeNumber check)
- PressHoldRelease: Extracted to separate UpdateReleaseCasting attribute, fixes Evoker zone-in bug
- OnDown Pickup: Replaced global CVar toggle with per-button useOnKeyDown attribute
- Count Caching: Added __LABCountCache for secret value resilience in combat
- Cooldown Validation: Added nil-checks for cooldownInfo/chargeInfo/lossOfControlInfo
- ChargeInfo Resolution: Added NormalizeChargeInfo and spell fallback chain
- Action.GetCount: Added item count fallback via C_Item.GetItemCount for macros
- Overlay Glow: Added activeAssist filtering for One Punch compatibility
- UpdateRangeTimer: Fixed to use per-button timer instead of global
- Player.lua: Added missing local noop = ns.Noop — stagger SetMinMaxValues/SetValue were nil causing error spam
- Stagger: Fixed AzeriteStagger_SetStatusBarColor iterating over all table keys — now iterates only numeric indices 1–3

### Changes
- Moved Target and ClassPower positions from global to per-character DB scope
- Move Auras, Minimap, MicroMenu EditMode positions to per-character DB
- Removed position/scale sliders replaced by EditMode (Settings.lua cleanup)
- Remove Minimap position and LFG Eye Scale sliders from addon Settings (now handled via Edit Mode)
- Remove MicroMenu position/size/alpha sliders from addon Settings (now handled via Edit Mode)
- Remove position sliders from addon settings (now via EditMode)
- Removed Target position X/Y sliders from addon settings (now in Edit Mode)
- Removed Target frame scale slider from addon settings (now in Edit Mode)
- Added targetPositionPoint to DB for anchor point persistence
- Disable toggle click handling in EditMode so selection overlay captures mouse events for dragging

### Localization
- Localization for all 12 languages
- Localized binding names for all 12 languages
- Localization: added ClassPower scale strings for all 12 locales

## [3.0.2] - 2026-03-13
- Fix GitHub Actions workflow not setting release as Latest (added make_latest: true)

## [3.0.1] - 2026-03-13
- Version bump release

## [3.0.0] - 2026-03-13
- Initial 3.0 release with all alpha changes

## [3.0.0-alpha19] - 2026-03-13
- Anchor coordinates below FPS/latency text instead of MinimapCompassTexture which drifts when minimap scale changes
- Match font and color with performance text for visual consistency

## [3.0.0-alpha18] - 2026-03-13
- Add "Action Bars Glow" setting in Orbs category with animated breathing glow effect under the action bar frame (synced with eye glow animation, 2.5s BOUNCE cycle)
- When disabled, original static dark corner fills are restored
- Setting works in real-time without /reload
- Fix Death Knight runes not appearing with Azerite style by removing ns.IsRetail condition check
- Fix AzeriteRunes_PostUpdate: compute allReady locally since oUF runes element only passes runemap to PostUpdate callback
- Localization for all 12 languages

## [3.0.0-alpha17] - 2026-03-13
- Remove ns.IsRetail condition check that prevented DK runes from being created on retail client
- Fix AzeriteRunes_PostUpdate: compute allReady locally since oUF runes element only passes runemap to PostUpdate callback

## [3.0.0-alpha16] - 2026-03-13
- Move minimap scale slider from main settings panel to EditMode minimap frame settings
- Scale is now stored in char.minimap.minimapScale instead of global.core.minimapRelativeScale, allowing per-character minimap sizing

## [3.0.0-alpha15] - 2026-03-12
- Add configurable key bindings for left/right side panel toggle via Blizzard Key Bindings UI (SetOverrideBindingClick)
- Localized binding names for all 12 languages
- Add WoW 12.0.5 interface version support

## [3.0.0-alpha14] - 2026-03-12
- Restore Blizzard button effects for all users: SpellHighlight, proc overlay glow and NewAction sparkle
- Multi-fallback overlay glow for WoW 11.x/12.0+ compatibility
- Move Auras, Minimap, MicroMenu EditMode positions to per-character DB

## [3.0.0-alpha13] - 2026-03-12
- Restore SpellHighlight, proc overlay glow and NewAction sparkle effects as default behavior instead of experimental setting
- Add multi-fallback chain for overlay glow (ActionButton_ShowOverlayGlow → ActionButtonSpellAlertManager → SpellActivationAlert) for compatibility across WoW versions

## [3.0.0-alpha12] - 2026-03-11
- New "DONT CLICK!" toggle in Experiments restores spell highlight, native Blizzard proc overlay glow, and new action sparkle effects

## [3.0.0-alpha11] - 2026-03-11
- Parent artworkHolder to PetHider instead of UIParent so angel/demon statues and orb backgrounds are hidden during pet battles

## [3.0.0-alpha10] - 2026-03-11
- Fix mail icon disappearing after EditMode exit: Blizzard's EditMode layout cleanup resets MailFrame state. Added LibEditMode exit callback to re-apply RepositionMailFrame
- Hook MailIcon:Hide to re-show the icon on next frame when there's mail
- Show MailIcon in UpdateBorderVisibility alongside custom border/shade textures
- Re-apply Tracking repositioning after EditMode exit

## [3.0.0-alpha9] - 2026-03-11
- Fix EditMode position not persisting across reloads: save anchor point from normalizePosition alongside x/y
- Applied to MicroMenu, Minimap, and Auras modules
- Fix MicroMenu Bartender4 deferred init case where EditMode scale switch was never applied

## [3.0.0-alpha8] - 2026-03-10
- Register Minimap with LibEditMode for drag positioning
- Add SetEditModeMinimapObjectScale for LibEditMode-compatible scaling
- Add LFG Eye Scale slider to EditMode settings
- Remove Minimap position and LFG Eye Scale sliders from addon Settings (now handled via Edit Mode)

## [3.0.0-alpha7] - 2026-03-10
- Register MicroMenu toggle with LibEditMode for drag positioning
- Disable toggle click handling in EditMode so selection overlay captures mouse events for dragging
- Show micro menu bar during EditMode for visual feedback
- Add buttonSize and toggleAlpha sliders to EditMode settings
- Remove MicroMenu position/size/alpha sliders from addon Settings (now handled via Edit Mode)

## [3.0.0-alpha6] - 2026-03-10
- Register auras frame with LibEditMode as "Diabolic: Buffs"
- Add icon size slider to EditMode settings
- Remove position sliders from addon settings (now via EditMode)

## [3.0.0-alpha5] - 2026-03-10
- Fix castbar overlay width in EditMode: set initial overlay width and reset it when no cast is active, preventing texture from expanding to 558px during EditMode

## [3.0.0-alpha4] - 2026-03-10
- Reparent Stagger and Runes to UIParent (fixes horizontal offset)
- Restructure AzeriteClassPower_PostUpdate to apply layout during EditMode even when cur=0
- Add inEditMode guards to all PostUpdate functions (Azerite + standard)
- Include Stagger/Runes in EditMode OnShow/OnHide hooks

## [3.0.0-alpha3] - 2026-03-09
- PetBar: EditMode integration with LibEditMode, artwork scale fix
- ClassPower/Stagger/Runes: EditMode integration, reparented to UIParent
- Target frame: EditMode integration with position and scale controls
- Moved Target and ClassPower positions from global to per-character DB scope
- Removed position/scale sliders replaced by EditMode (Settings.lua cleanup)
- Localization: added ClassPower scale strings for all 12 locales

## [3.0.0-alpha2] - 2026-03-09

### New Features
- **EditMode Integration**: Target frame now supports WoW Edit Mode positioning via LibEditMode (p3lim)
- **LibEditMode**: Added library for native Edit Mode frame management
- Target frame scale slider moved to Edit Mode dialog

### Bug Fixes
- **LAB SpellVFX**: Fixed assertion error — SpellVFX forward declarations were placed after OnEvent, making them invisible to the event handler
- **LAB GetCount**: Fixed secret number comparison error in Action.GetCount (IsSafeNumber check)

### Changes
- Removed Target position X/Y sliders from addon settings (now in Edit Mode)
- Removed Target frame scale slider from addon settings (now in Edit Mode)
- Added targetPositionPoint to DB for anchor point persistence

## [3.0.0-alpha1] - 2026-03-09

### ✨ New Features
- **LibActionButton-1.0-GE**: Major update — ported fixes from AzeriteUI v143
- **Toy Button Type**: Added support for Toy items on action bars
- **GetDisplayCount**: New display count system for charge-based spells
- **Spell Cast VFX**: Visual casting animations on action buttons (configurable)
- **AutoCast Overlay**: Visual indicator for locked transmog outfits
- **Assisted Combat (One Punch)**: Button state updates for assisted combat actions
- **Event-based Range**: Retail now uses ACTION_RANGE_CHECK_UPDATE instead of polling
- **Per-button OnUpdate**: Replaced global OnUpdate with per-button for better performance

### 🐛 Bug Fixes
- **PressHoldRelease**: Extracted to separate UpdateReleaseCasting attribute, fixes Evoker zone-in bug
- **OnDown Pickup**: Replaced global CVar toggle with per-button useOnKeyDown attribute
- **Count Caching**: Added __LABCountCache for secret value resilience in combat
- **Cooldown Validation**: Added nil-checks for cooldownInfo/chargeInfo/lossOfControlInfo
- **ChargeInfo Resolution**: Added NormalizeChargeInfo and spell fallback chain
- **Action.GetCount**: Added item count fallback via C_Item.GetItemCount for macros
- **Overlay Glow**: Added activeAssist filtering for One Punch compatibility
- **UpdateRangeTimer**: Fixed to use per-button timer instead of global

### 🔧 Changes
- **LAB Version**: Bumped MINOR_VERSION from 135 to 143
- **New Callbacks**: OnButtonUpdate, OnButtonState, OnButtonUsable, OnCooldownUpdate, OnCooldownDone, OnChargeCreated, OnUpdateRange
- **Config Options**: Added targetReticle, spellCastVFX, lossOfControlCooldown
- **CVAR_UPDATE**: Handler for assistedCombatHighlight changes

---

## [2.8.4-alpha1] - 2026-03-05

### ✨ New Features
- **Stagger (Brewmaster Monk)**: AzeriteUI-style Stagger — 3 orbs with per-tier colors (green/yellow/red), correct frame level, UpdateColor override
- **ClassPower (AzeriteUI)**: AzeriteUI-style orbs now enabled by default for all players, settings toggle hidden

### 🐛 Bug Fixes
- **Player.lua**: Added missing `local noop = ns.Noop` — stagger `SetMinMaxValues`/`SetValue` were nil causing error spam
- **Stagger**: Fixed `AzeriteStagger_SetStatusBarColor` iterating over all table keys — now iterates only numeric indices 1–3

---

## [2.8.3] - 2026-03-04

### 🔧 Changes
- **About Section**: Added SaiyaRatt to Thanks (Profile for Platynator)

---

## [2.8.2] - 2026-03-04

### 🐛 Bug Fixes
- **PetBar**: Fixed pet action bar permanently disappearing when accidentally clicking the invisible toggle handle above the bar — handle click now does nothing, bar always visible when pet exists

---

## [2.8.1] - 2026-03-04

### 🔧 Changes
- **About Section**: Added Discord link button in Settings → About

---

## [2.8.0] - 2026-03-01

### ✨ New Features
- **Eye Glow (D2R Style)**: New setting to enable pulsing glow on orb eyes (angel eye on health orb, demon eye on power orb)
  - Positioned precisely on angel (health) and demon (power) eyes
  - Smooth pulsing animation (40%→80% alpha, BOUNCE loop)
  - Setting in Settings → Spheres → "Eye Glow (D2R Style)"
  - Enabled by default (along with D2R orb style)

### 🎨 UI Improvements
- **Settings Panel Restructured**: Reorganized into subcategories (Spheres, Auras, Map, Minimap, etc.) with icons
- **About Section**: Added About subcategory with version, author links (GitHub, Patreon, Boosty) and credits
- **PetBar Artwork**: Added decorative background texture to pet action bar
- **MicroMenu Icon**: Updated toggle icon to ChatMenu variant

### 🐛 Bug Fixes
- **Castbar Spell Text**: Fixed spell name resetting below the castbar on each new cast — text now stays centered on the bar
- **Raid Frame Borders**: Fixed borders rendering above all other UI elements (map, quest journal) — now use parent-relative frame level instead of TOOLTIP strata
- **BG Widgets Visibility**: Fixed BG score/objective widgets disappearing when selecting a target — widgets now always visible
- **Raid Frame Name Overflow**: Name truncation now always active (independent of "Customize Raid Frames" setting) — strips realm suffix and constrains width
- **ExtraButton Yellow Square**: Fixed yellow checked texture overlay on ZoneAbility/ExtraAction buttons

### 🔧 Changes
- D2R Orb Style and Eye Glow enabled by default for new installations
- Platynator nameplate profile updated (DiabolicUI design with DiabolicUI textures)

### 🌍 Localization
- Added Eye Glow D2R setting strings in all 12 supported languages

---

## [2.7.3] - 2026-02-28

### 🐛 Bug Fixes
- **Settings Panel**: Fixed addon settings section not appearing in Interface Options when only DiabolicUI3 is enabled. Blizzard_Settings is now force-loaded at initialization instead of waiting for the player to open the settings panel

---

## [2.7.2] - 2026-02-28

### 🐛 Bug Fixes
- **Hide Raid Manager**: Fixed CompactRaidFrameManager reappearing in all scenarios (joining group/raid, BG entry, zone transitions). Replaced unreliable Hide()/hook approach with SetParent(UIHider) which makes the frame permanently invisible regardless of Blizzard's state drivers

---

## [2.7.1] - 2026-02-28

### 🐛 Bug Fixes
- **Hold to Cast**: Fixed hold-to-cast not working with the addon enabled. Switched from click bindings to command bindings (SetOverrideBinding) so key presses route through Blizzard's native action system (TryUseActionButton)

---

## [2.7.0] - 2026-02-25

### ✨ New Features
- **AzeriteUI-style ClassPower**: New experimental option to display class resources (combo points, runes, holy power, etc.) in AzeriteUI visual style
  - Enable in Settings → Experiments → "AzeriteUI Style ClassPower"
  - Round fills for round cases, diamond fills for diamond cases
  - Per-character setting, requires /reload
- **Side Panel Toggle Button Opacity**: New slider to control the opacity of buttons that open hidden left/right action bars
  - Located in Settings → Action Bars
  - Range 0 to 1, default 0.1
  - At 0, buttons are invisible until mouse hover
  - Real-time update without reload

### 🐛 Bug Fixes
- **Disable Side Panel Auto-Hide**: Added option to keep left and right action bar panels always visible (new setting in Action Bars section)
- **Extended Bars Default**: Extended Hidden Bars (Page 7) now enabled by default for new characters
- **Extended Mode Panel Positions**: Adjusted side panel positions in extended mode (+50px outward)
- **ExtraAbilityContainer Taint**: Extended pcall protection to all ExtraAbilityContainer operations
- **Hide Raid Manager**: Added option to hide Blizzard CompactRaidFrameManager
- **Charge Cooldown Visibility**: Fixed cooldown not showing on auto-hide side panels
- **Health Color Secret Value**: Fixed "table index is secret" error for Target of Target frames
- **Tooltip Backdrop/Positioning**: Fixed secret value errors with tooltip dimensions in WoW 12.0
- **Backdrop Taint**: Additional fixes for "secret number value" errors in BackdropTemplateMixin

### 🌍 Localization
- Added translations for all new settings across all 12 supported languages

---

## [2.6.5] - 2026-02-25

### ✨ New Features
- **Disable Side Panel Auto-Hide**: Added option to keep left and right action bar panels always visible
  - New setting in Action Bars section
  - Real-time toggle without reload required
- **Extended Bars Enabled by Default**: Extended Hidden Bars (Page 7) now enabled by default for new characters

### 🔧 Changes
- **Extended Mode Panel Positions**: Adjusted side panel positions in extended mode (+50px outward) for better spacing

---

## [2.6.4] - 2026-02-25

### 🐛 Bug Fixes
- **ExtraAbilityContainer Taint**: Extended pcall protection to all ExtraAbilityContainer operations
  - Wrapped SetFrameStrata, SetFrameLevel and ignoreFramePositionManager in pcall
  - Prevents additional taint errors from secure frame modifications in WoW 12.0

---

## [2.6.3] - 2026-02-24

### ✨ New Features
- **Hide Raid Manager Panel**: Added option in Experiments section to hide Blizzard CompactRaidFrameManager on left side of screen

### 🐛 Bug Fixes
- **ExtraAbilityContainer Taint**: Fixed taint error by wrapping SetObjectScale in pcall
- **Charge Cooldown Visibility**: Fixed cooldown not showing on auto-hide side panels
  - Changed visibility detection to use proper parent-based visibility
  - Added visibility ticker to update cooldowns when bar becomes visible

---

## [2.6.2] - 2026-02-24

### 🐛 Bug Fixes
- **Health Color Secret Value**: Fixed "table index is secret" error for Target of Target frames
  - UnitThreatSituation() returns secret values in WoW 12.0 for targettarget units
  - Used pcall for safe table access with potentially secret index
  - Falls back to default threat color if secret value encountered
- **Tooltip Backdrop**: Fixed SetupTextureCoordinates errors with secret dimensions
  - Wrapped SetupTextureCoordinates in pcall instead of OnShow hook
  - Preserved tooltip styling while preventing taint errors
- **Tooltip Positioning**: Fixed "arithmetic on secret number" for GetHeight/GetWidth
  - Added dimension caching for when values are not secret
  - Skips positioning gracefully when dimensions are secret

---

## [2.6.1] - 2026-02-23

### 🐛 Bug Fixes
- **Backdrop Taint (continued)**: Additional fixes for "secret number value" errors
  - Wrapped OnBackdropSizeChanged and ApplyBackdrop methods in pcall
  - Added pcall protection to RaidFrames SetBackdrop calls
  - Prevents BackdropTemplateMixin texture recalculation errors

---

## [2.6.0] - 2026-02-23

### ✨ New Features
- **Raid Frames Customization**: Added experimental settings to customize Blizzard CompactUnitFrames
  - Custom fonts and textures for raid/party frames
  - Border size and offset adjustments (top, bottom, left, right)
  - Role icon position offsets (X, Y)
  - Real-time preview when adjusting sliders
- **Statusbar Profiles**: Added texture profiles for statusbars (ui_profile.txt, platynator_profile.txt)

### 🐛 Bug Fixes
- **Backdrop Taint**: Fixed 129x "attempt to perform arithmetic on local 'width' (a secret number value)" error
  - Replaced SetAllPoints() with explicit point anchors in tooltip backdrop cache
  - Wrapped SetBackdrop, SetBackdropColor, SetFrameLevel calls in pcall
  - Prevents taint errors from Syndicator, Chattynator and other addons

### 🔧 Technical
- Removed unused power crystal textures from Assets
- Added pcall protection for all backdrop-related operations in WoW 12.0

### 🌍 Localization
- Added translations for Raid Frames settings in all 12 languages

---

## [2.5.1] - 2026-02-22

### 🐛 Bug Fixes
- **SOUL_FRAGMENTS Color**: Fixed "attempt to index local 'color' (a number value)" error for Demon Hunter Soul Fragments
- **GUID Taint**: Fixed "attempt to compare 'guid' (secret string tainted)" error when changing targets
- **Backdrop Taint**: Fixed tooltip backdrop turning white due to secret value taint propagation
- **Slider Ranges**: Extended position slider ranges from ±2000 to ±5000 for all settings

### 🔧 Technical
- Changed SOUL_FRAGMENTS color format to stages for oUF compatibility
- Added fallback in classpower.lua for simple {r,g,b} color tables
- Wrapped GUID comparison in pcall to handle WoW 12.0 tainted values
- Wrapped tooltip StatusBar hooks in pcall to prevent taint propagation

---

## [2.5.0] - 2026-02-20

### ✨ New Features
- **Class Resources Settings**: Added position and scale settings for runes, combo points, chi, holy power, etc.
  - Horizontal position (-2000 to 2000)
  - Vertical position (-2000 to 2000)
  - Scale (0.5 to 2.0)
- **Extended Class Resources**: Increased max points from 6 to 8 (texture supports future expansions)
- **LFG Eye Scale**: Added scale setting for dungeon finder eye icon (0.5 - 2.0)

### 🔧 Changes
- **Focus Frame**: Temporarily disabled custom Focus frame (using Blizzard default)
- **Pet Bar Position**: Now saved per-character instead of globally
- **Pet Bar Sliders**: Fixed real-time position updates

### 🌍 Localization
- Added translations for all new settings in all 12 languages

---

## [2.4.6-alpha] - 2026-02-20

### 🐛 Bug Fixes
- **Tooltip Errors**: Fixed SetUnitAura errors on minimap aura buttons (invalid index validation)
- **MoneyFrame Taint**: Removed MoneyFrame font modifications that caused taint on bag item tooltips
- **Aura Timer Bars**: Disabled timer bars under aura icons to fix orange residue on auras without duration

### 🔧 Technical
- Added index validation in Auras.lua UpdateTooltip function
- Removed taint-causing SetTooltipMoney and MoneyFrame font modifications
- Commented out CreateSmoothBar calls in Auras.lua and AuraStyles.lua

---

## [2.4.5-alpha] - 2026-02-19

### 🔧 Technical (WoW 12.0.1 Secret Values)
- **LibSmoothBar v7**: ScrollFrame approach for horizontal bars with secret values support
- **LibOrb v7**: ClipFrame approach for vertical orbs with secret values support
- Fixed target/ToT/focus health bars not updating
- Fixed player health/power orbs animation direction

---

## [2.4.4] - 2026-02-16

### ✨ Improvements
- **Real-time Settings**: All settings sliders now apply changes instantly without requiring /reload
  - Target frame position and scale
  - Aura icon size and position
  - Pet bar and stance bar position
  - Minimap position
  - MicroMenu toggle button transparency
  - Tooltip offset and settings
  - ActionBar settings
  - QoL movable frames settings
- **Tooltip Offset Step**: Changed slider step from 5 to 1 for precise positioning

### 🔧 Technical
- Fixed CallbackHandler usage: `ns.RegisterCallback()` instead of `ns.callbacks:RegisterCallback()`
- Added `UpdateIconSize` function for real-time aura icon resizing
- Implemented `RegisterProxySetting` for immediate settings updates

---

## [2.4.3] - 2026-02-15

### 🎨 Visual Improvements
- **Castbar Progress Texture**: Custom overlay texture for player and pet castbars
  - Uses Heath-Bar texture with proper fill animation via SetTexCoord
  - Blue color tint for visual distinction

---

## [2.4.2] - 2026-02-15

### 🎨 Visual Improvements
- **Castbar Border**: New custom border texture for player and pet castbars
  - Uses Health-Bar-Border2 texture for better visual consistency

---

## [2.4.1] - 2026-02-15

### 🐛 Bug Fixes
- **Tooltip Taint Fix**: Fixed taint error when hovering over POI/quests on world map
  - Blizzard_SharedXML/Backdrop.lua no longer throws "secret number value" errors
  - Map-related tooltips (MapCanvas, WorldMap, AreaPOI) now skip custom positioning
- **Minimap Ping Taint Fix**: Fixed ADDON_ACTION_FORBIDDEN when left-clicking minimap to ping
  - Changed from SetScript to HookScript for OnMouseUp handler
  - Blizzard's ping handler now works without taint
- **Mail Icon Border Visibility**: Border and shade now hide when no mail (was showing empty frame)

### 🔧 Changes
- Added statusbar profile files for UI and Platynator customization

---

## [2.4.0] - 2026-02-14

### ✨ New Features
- **Aura Growth Direction**: New per-character option to grow buff rows upward instead of downward
  - Checkbox in Settings → Auras section
  - Requires UI reload to apply
- **Minimap Icon Borders**: Added circular borders to Mail (9 o'clock) and Tracking (3 o'clock) icons
  - Matches the bag button border style for visual consistency
- **Expansion Landing Button**: ExpansionLandingPageMinimapButton (Dragonflight/War Within) now collected into minimap buttons container
- **Settings Panel Icon**: Added DiabolicUI icon next to addon name in Interface Options addon list

### 🌍 Localization
- Full translations for aura growth direction setting in all 12 supported languages

---

## [2.3.0] - 2026-02-10

### ✨ New Features
- **Platynator Integration**: Custom DiabolicUI styling for Platynator addon nameplates
  - Replaces Platynator health bars with power-crystal textures
  - Automatic frame sizing with combat scaling support
  - Experimental feature - enable in Settings → Experiments
- **Two Rows Target Auras**: New option to show 14 auras in 2 rows under target frame (instead of 7)
  - New checkbox in Settings → Auras section
  - Requires UI reload to apply
- **StanceBar Styling**: Custom DiabolicUI styling for stance/shapeshifting buttons
  - Power-crystal frame overlay matching action bar style
  - Proper border textures and consistent visual design

### 🎨 UI Improvements
- Extended all position slider ranges to -2000/2000 for more flexibility
- Improved Platynator frame width to properly cover health bar edges
- MicroMenu now has proper icon styling

### 🌍 Localization
- Full translations for all new settings in 12 supported languages
- Updated slider descriptions to show extended -2000 to 2000 range

### 🔧 Technical
- Added FRAME_WIDTH_EXTRA constant for Platynator health bar edge coverage
- Platynator slash commands disabled (internal testing only)
- Added twoRowsTargetAuras setting to global.auras database

---

## [2.1.0] - 2026-02-04

### ✨ New Features
- **MicroMenu Panel**: New vertical popup menu with all game micro buttons (Character, Spellbook, Talents, etc.), accessible via a toggle button in the bottom-right corner
- **MicroMenu Settings**: Enable/disable toggle, button size slider (20-50px), and position sliders (X/Y) in the Settings panel under "Other"
- **Auto-Hide**: MicroMenu automatically hides after 3 seconds when the mouse leaves the panel
- **Combat Safe**: Menu opens/closes freely in combat via secure frame handlers

### 🎨 UI Improvements
- Clean icon-only display: stripped Blizzard button backgrounds and borders for a minimal look
- Semi-transparent dark backdrop with tooltip-style border
- Toggle button with plus/minus texture, fades to 30% opacity when idle
- Hidden during pet battles and vehicle UI

### 🌍 Localization
- Full translations for MicroMenu settings in all 12 supported languages

## [2.0.1] - 2026-02-03

### 🐛 Bug Fixes
- **Cooldown Edge Fix**: Fixed yellow-orange cooldown edge line appearing on hidden side panel action bar buttons. WoW 12.0 C++ `ActionButton_ApplyCooldown` was enabling edge rendering internally, bypassing Lua hooks.

## [2.0.0] - 2026-02-01

### ✨ New Features
- **Diablo 2 Resurrected Orb Style**: New orb textures inspired by D2R (enabled by default)
- **Custom Orb Colors**: Per-character color picker for Health and Power orbs
- **Independent Target Frame Scale**: Separate scaling slider (0.5-2.0) for target frame
- **Extended Hidden Bars**: Option for 12 buttons per bar (6x2 layout) using action bar page 7
- **Pet Orb Style**: Show pet health as a sphere instead of portrait frame
- **Single-Button Assistant Support**: Dynamic icon updates during combat
- **Castbar Border**: ToT-style border texture for player and pet castbars
- **LFG Eye Animation**: Pulsing glow when in dungeon/raid queue

### 🎨 UI Improvements
- **Minimap Rework**: Repositioned Mail (left), Tracking (right), LFG eye (bottom) with custom textures
- **Settings Panel Reorganization**: Better organized with proper section headers
- **Renamed "Orbs" to "Spheres"**: Consistent terminology across all settings and localization
- **D2R Positions for Extra Buttons**: ZoneAbility and ExtraAction buttons positioned near orbs when D2R style is enabled
- **Hidden Minimap Clutter**: Removed zoom buttons, AddonCompartment, EditMode empty frame

### ⚡ Performance Optimizations
- Removed SetCooldown hooks from ActionBars, PetBar, StanceBar (major optimization)
- Added OnUpdate throttle for Tooltip (~30 fps instead of every frame)
- Added OnUpdate throttle for Auras (~30 fps for timer updates)
- Single-Button Assistant icon check runs only in combat (0.1s interval)

### 🐛 Bug Fixes
- Fixed ADDON_ACTION_BLOCKED errors when hiding auras, changing EditMode, moving frames in combat
- Fixed achievement toasts, loot popups, and bonus rolls not showing
- Fixed border appearing on action bar 2-3 after /reload
- Fixed SmallActionBar page conflict with ThirdActionBar
- Fixed tracking icon resetting on zone change
- Fixed LFG eye resetting position when talking to NPCs
- Fixed Cyrillic characters displaying as squares in aura timers
- Fixed Single-Button Assistant icon freezing in combat
- Fixed custom orb colors being overridden by PostUpdate functions
- Fixed tooltip taint for world objects

### 🔧 Changes
- Disabled custom nameplates module (use Blizzard default or Plater/Kui/etc.)
- D2R orb style is now enabled by default
- "Class Color for Power Orb" is now per-character setting

### 🌍 Localization
- Full localization support for all new features (12 languages)
- Languages: English, German, Spanish (EU/MX), French, Italian, Korean, Portuguese (BR/PT), Russian, Chinese (Simplified/Traditional)

---

## [2.0.0-alpha12] - 2026-01-31
### Performance
- ActionBars: Removed SetCooldown hook, set alpha once at creation (major optimization)
- PetBar: Same optimization for pet action buttons
- StanceBar: Same optimization for stance buttons

## [2.0.0-alpha11] - 2026-01-31
### Performance
- Tooltip OnUpdate: Added throttle (~30 fps instead of every frame)
- Auras OnUpdate: Reduced from 100 fps to ~30 fps for timer updates

## [2.0.0-alpha10] - 2026-01-31
### Changed
- Disabled custom nameplates (use Blizzard default or Plater/Kui/etc.)

### Maintenance
- Cleaned up TODO.md - removed completed tasks

## [2.0.0-alpha9] - 2026-01-31
### Added
- Castbar: Added ToT-style border texture to PlayerCastingBarFrame and PetCastingBarFrame
- QueueStatus (LFG eye): Added pulsing glow animation when in queue

### Improved
- Tracking icon: Now survives zone changes, NPC interactions, and reloads (hooked SetPoint)
- QueueStatus (LFG eye): Now survives NPC interactions (hooked SetPoint)

### Fixed
- Fixed tracking icon resetting to default position on zone change
- Fixed LFG eye resetting position when talking to NPCs

## [2.0.0-alpha8] - 2026-01-31
### Improved
- ExtraButtons: Added D2R orb style positions for ZoneAbilityFrame (500, 250) and ExtraActionButton (-495, 240)
- These buttons now appear near the orbs when D2R style is enabled

## [2.0.0-alpha7] - 2026-01-31
### Improved
- Minimap: Mail icon repositioned to 9 o'clock (left side)
- Minimap: QueueStatusButton (LFG eye) repositioned to 6 o'clock with custom orange texture
- Minimap: Hidden zoom buttons (+/-)

### Fixed
- Fixed zoom buttons not hiding due to ns.IsRetail being nil in WoW 12.0

## [2.0.0-alpha6] - 2026-01-31
### Improved
- Minimap: Mail icon repositioned to bottom (6 o'clock)
- Minimap: Tracking button repositioned to right side (3 o'clock)
- Minimap: Instance difficulty repositioned to top (12 o'clock)
- Minimap: Hidden AddonCompartmentFrame
- Minimap: Hidden MinimapCluster from EditMode (no more empty frame)
- Minimap: Default position changed to X=-30, Y=-40

### Fixed
- Fixed "attempt to call method 'Layout' (a nil value)" error on UPDATE_PENDING_MAIL
- Added Layout stub to Minimap for Blizzard MailFrame compatibility

## [2.0.0-alpha5] - 2026-01-31
### Fixed
- Fixed border appearing on action bar 2-3 after /reload
- Root cause: bar:Hide() was called before button creation, causing styling issues on reload
- Moved bar:Hide() to after button creation for SecondaryActionBar and ThirdActionBar
- Applied SetNormalTexture/SetHighlightTexture/SetCheckedTexture hooks for all WoW versions (was only Classic)
- Added NormalTexture hiding to OnButtonUpdate callback for extra safety

## [2.0.0-alpha4] - 2026-01-30
### Fixed
- Fixed SmallActionBar1,4 duplicating buttons with ThirdActionBar
- Moved SmallActionBar1,4 from page 5 (BOTTOMRIGHT) to page 2 (free page)
- Side panels now use independent action bar page without conflicts

### Technical
- SmallActionBar1 (left side, bottom) now uses barID 2 instead of BOTTOMRIGHT_ACTIONBAR_PAGE
- SmallActionBar4 (right side, bottom) now uses barID 2 instead of BOTTOMRIGHT_ACTIONBAR_PAGE
- Page 5 is now exclusively used by ThirdActionBar

## [2.0.0-alpha3] - 2026-01-29
### Added
- Added independent target frame scale setting (0.5-2.0, default 1.0)
- Target frame scale now completely independent from "Bottom UI Scale" setting
- New "Target Frame Scale" slider in Core settings section (next to "Bottom UI Scale")
- Real-time target frame scaling without UI reload
- Full localization support for new setting (12 languages)

### Changed
- Target frame moved to separate scaling system (TargetFrameScaled)
- Target frame no longer affected by unitframesRelativeScale changes
- Unified scaling architecture - all scales work through UpdateObjectScales()

### Technical
- Added global.core.targetFrameScale database setting (default: 1.0)
- Created TargetFrameScaled[] cache in Scale.lua for independent target scaling
- Added API.SetTargetFrameObjectScale() method for target frame registration
- Added ns.UpdateTargetFrameScale() for real-time updates
- Target frame uses base UI scale (GetScale()) instead of unitframes scale (GetUnitFramesScale())
- Updated UpdateObjectScales() to handle both UnitFramesScaled and TargetFrameScaled arrays

## [2.0.0-alpha2] - 2026-01-29
### Added
- Added custom orb colors feature with per-character settings
- Color picker for Health orb color (ColorPickerFrame integration)
- Color picker for Power orb color (ColorPickerFrame integration)
- "Use Custom Orb Colors" checkbox (per-character, disabled by default)
- Full localization support for color settings (12 languages)
- Real-time color updates without UI reload

### Fixed
- Fixed custom orb colors being overridden by PostUpdate functions
- Fixed color picker cancelFunc to properly restore colors on cancel
- Fixed custom colors not applying on addon load
- Fixed ForceUpdate() errors when disabling custom colors (method doesn't exist on orbs)
- Fixed Settings API integration (CreateSettingsButtonInitializer)

### Technical
- Added char.orbs.useCustomColors, healthColor, powerColor to database
- Created UpdateOrbColors() callback for real-time updates
- Added early returns in Health_PostUpdateColor and Power_PostUpdate to preserve custom colors
- Used closure pattern in cancelFunc for proper color restoration
- Custom colors override automatic coloring (colorHealth/colorPower flags)

## [2.0.0-alpha1] - 2026-01-29
### Added
- Added Diablo 2 Resurrected orb style setting with full localization (12 languages)
- Added D2R style orb textures (orb-art1-d2r.tga, orb-art2-d2r.tga)
- D2R orb style is now enabled by default (can be disabled in settings)
- Added UI reload confirmation dialog when changing orb style

### Fixed
- Fixed ADDON_ACTION_BLOCKED error when hiding player aura buttons during combat
- Fixed ADDON_ACTION_BLOCKED error when EditMode tries to change frame parent during combat
- Fixed ADDON_ACTION_BLOCKED error when making protected frames movable during combat

### Technical
- Added global.orbs.useD2RStyle setting to database (default: true)
- Added conditional texture loading in Player.lua based on orb style setting
- Added InCombatLockdown checks to prevent taint in three critical locations

## [1.9.7.1] - 2026-01-27
### Fixed
- Fixed achievement toasts, loot popups, and bonus rolls not showing
- Disabled custom AlertFrames positioning module to use Blizzard default behavior
- Alert notifications now appear at default Blizzard position (top center of screen)

### Technical
- Commented out AlertFrames.lua module in Components/Misc/Misc.xml
- Removed conflicts between Core/Blizzard.lua and Components/Misc/AlertFrames.lua

## [1.9.7-RC3] - 2026-01-26
### Added
- Added "Main Button Size" setting for MinimapButtons (24-64 pixels, default: 40)
- Full localization for main button size setting (12 languages)
- Dynamic button size update - changes apply immediately without reload

### Changed
- MinimapButtons main button border now scales proportionally with button size (135% of button size)

### Fixed
- Fixed achievement toasts, loot popups, and bonus roll windows not showing
- Disabled AlertFrame killing to restore Blizzard popup notifications

### Removed
- Removed unused "Main Button Scale" setting that had no effect

## [1.9.7-alpha3] - 2026-01-26
### Fixed
- Fixed achievement toasts, loot popups, and bonus roll windows not showing
- Disabled AlertFrame killing to restore Blizzard popup notifications

## [1.9.7-alpha2] - 2026-01-26
### Added
- Added "Aura Icon Size" setting to control buff icon size near minimap (20-64 pixels, default: 36)
- Added full localization for aura icon size setting (12 languages)

### Changed
- Aura icon size now dynamically adjusts based on settings
- Disabled Reset/Import/Export section in settings (commented out, may be restored later)

## [1.9.7-alpha1] - 2026-01-25
### Added
- Added "Show Buffs Near Health Orb" setting (default: enabled) to toggle player buffs display
- Added "Disable DiabolicUI Minimap" setting (default: disabled) to completely disable custom minimap
- Added custom Arial Narrow font for aura cooldown timers (size 9 with outline)
- Added full localization for new settings (12 languages: en, de, es, fr, it, ko, pt, ru, zh)
- Added localization guidelines to project documentation

### Changed
- Reduced aura cooldown timer font size for better text fitting (45 мин now fits properly)
- Changed "Class Color for Power Orb" setting from global to per-character
- Each character can now have different power orb color preference
- Aura timer font changed to Arial Narrow for Cyrillic support

### Fixed
- Fixed Buffs frame nil error when showPlayerBuffs setting is disabled
- Fixed Cyrillic characters displaying as squares in aura timers

### Development
- Added .psd files in Assets folder to .gitignore
- Removed tracked .psd file from repository (kept on disk for local use)

## [1.9.6] - 2026-01-25
### Fixed
- Fixed player unit frame buffs/debuffs not updating count in combat
- Fixed action buttons becoming grayed out in combat
- Fixed aura filters using incorrect field (expiration instead of expirationTime)
- Fixed arithmetic on secret value errors when calculating aura time remaining
- Fixed target/nameplate auras not showing in combat

### Changed
- Player buffs/debuffs now use non-secure buttons to allow combat updates
- Target/Focus/Nameplate auras remain secure (updates deferred until combat ends)
- All aura filters now use data.expirationTime with secret value protection
- Removed stack count condition from player buff filter
- In combat, auras show if expirationTime exists (temporary auras only)

### Known Issues
- Target frame auras do not update count during combat (secure button limitation)
- Some permanent buffs may show in combat if their values become secret

## [1.9.6-alpha3] - 2026-01-25
### Fixed
- Fixed action buttons becoming grayed out after entering combat caused by taint propagation
- Prevented C_UnitAuras.GetAuraDuration calls during combat to avoid tainting action buttons

### Changed
- Secret value aura cooldowns now only update outside of combat to prevent taint
- Regular (non-secret) aura cooldowns continue to work normally in and out of combat

### Known Issues
- Auras with secret values (duration/expiration) will not show cooldown spirals during combat
- Cooldown display will resume after leaving combat

## [1.9.6-alpha2] - 2026-01-25
### Fixed
- Fixed aura cooldowns not displaying in combat for unit frames (near orbs)
- Fixed aura cooldowns not displaying in combat for standalone auras (near minimap)
- Implemented proper secret values handling for aura duration and expirationTime
- Added missing EnableThird locale translations for third action bar option

### Changed
- Updated aura system to use C_UnitAuras.GetAuraDuration() for secret values
- Updated aura buttons to use SetCooldownFromDurationObject() method
- Added countdown numbers display on aura cooldowns

## [1.9.5-RC1] - 2026-01-24
### Fixed
- Fixed action bar cooldowns not working in combat for WoW 12.0.0 Midnight
- Fixed cooldown spiral animation not showing in combat
- Fixed cooldown countdown numbers not displaying in combat
- Fixed action bars not updating when dismounting in combat
- Implemented support for WoW 12.0.0 secret values system in LibActionButton-1.0-GE

### Changed
- Switched to Blizzard's built-in cooldown countdown (native WoW API)
- Updated LibActionButton to use ActionButton_ApplyCooldown when available
- Updated LibActionButton to use C_ActionBar.GetActionCooldown API for WoW 12.0+
- Added fallback support for older WoW versions without C_ActionBar API
- Dropped support for WoW 11.x (The War Within) - addon now requires WoW 12.x Midnight

### Known Issues
- Buffs and debuffs may not display correctly in combat due to WoW 12.0 secret values system
- Unit auras require additional work to handle secret values properly

## [1.9.4] - 2026-01-17
### Changed
- Updated Interface version to 120001 for WoW 12.0.1 compatibility
- Changed addon description from "WoW 11.x" to "WoW 12.x"

### Fixed
- Fixed pet bar tooltips not showing on hover
- Preserved original PetActionButtonTemplate tooltip handlers to maintain proper tooltip functionality

## [1.9.3] - 2026-01-06
### Changed
- Renamed "Hide Target Name on Cast" setting to "Show Target Castbar?" in all 12 locales
- Inverted setting logic: checkbox enabled = show castbar overlay and replace name with spell name
- Default changed to disabled (false) - castbar overlay now hidden by default

### Fixed
- Fixed spell name remaining visible after cast completion
- Fixed castbar progress overlay showing when setting is disabled
- Fixed cast time "0.0" remaining visible after cast completion

### Removed
- Removed unused Settings_Modern.lua file (603 lines of dead code)

## [1.9.2] - 2026-01-06
### Added
- Added full localization support for all WoW-supported languages:
  - German (deDE)
  - Spanish EU (esES)
  - Spanish Mexico (esMX)
  - French (frFR)
  - Italian (itIT)
  - Portuguese Brazil (ptBR)
  - Portuguese Portugal (ptPT)
  - Korean (koKR)
  - Chinese Simplified (zhCN)
  - Chinese Traditional (zhTW)
- All 110+ settings strings now translated for each locale

### Changed
- Action bar settings are now per-character instead of shared across all characters
- Disabled AceDB profile system to ensure independent action bar configuration for each character
- Hidden stance bar settings from UI (settings remain in code for future use)
- Stance bar now disabled by default

### Fixed
- Fixed issue where enabling secondary/third action bars on one character would enable them on all characters
- Fixed action bar count being shared via "Default" profile across all characters

## [1.9.1] - 2026-01-06
### Fixed
- Fixed empty buff/debuff slots appearing during combat (alpha not properly restored)
- Fixed buff/debuff position jumping when mounting/dismounting vehicles or quest mounts (preserves normal offset during temporary bars)
- Fixed PetBar and StanceBar positioning to use action bar settings instead of visibility state
- Fixed PetBar appearing above second bar instead of third when 3 bars are enabled (removed db.positionY override)
- Adjusted PetBar vertical position (lowered by 15 pixels when 3 bars enabled, no offset for 2 bars)

### Performance
- Optimized ActionButton usability updates: reduced from 100+ to 2 updates per second (50-150x improvement)
- Optimized StatusBars overlay animation: reduced from 60 to ~3 updates per second (20x improvement)
- Optimized cooldown timer updates with adaptive throttling based on remaining time:
  - Short cooldowns (<5s): 10 updates/sec for accuracy
  - Medium cooldowns (5-30s): 5 updates/sec
  - Long cooldowns (>30s): 2 updates/sec
- Overall UI performance improvement: 10-30x reduction in CPU usage during combat

## [1.9.0] - 2026-01-05
### Fixed
- Fixed buff/debuff icon duplication and texture mask exhaustion during combat
- Fixed empty buff/debuff icons appearing during combat
- Fixed incorrect buff/debuff positioning after exiting combat (second row starting mid-way)
- Optimized texture updates to only call SetTexture() when icon fileID actually changes
- Improved combat lockdown handling for aura buttons - new buttons are positioned immediately, existing buttons repositioned when safe

### Changed
- Minor player buff/debuff horizontal position adjustment for better alignment (-320→-316, 320→316)

## [1.8.2] - 2026-01-02
### Fixed
- Fixed ADDON_ACTION_BLOCKED when EditMode tries to reposition frames during combat (blizzard.lua)
- Fixed ADDON_ACTION_BLOCKED when making protected frames movable during combat (QualityOfLife.lua)
- Added InCombatLockdown() checks in resetParent function and MakeFrameMovable function

## [1.8.1] - 2026-01-02
### Fixed
- Fixed ADDON_ACTION_BLOCKED errors when hiding buff and debuff buttons during combat
- Added InCombatLockdown() checks in auras.lua for both buffs (line 746) and debuffs (line 879)

## [1.8.0] - 2025-12-25
### Changed
- Hidden Blizzard's default minimap zone name background and text
- Updated default minimap position to (-20, -20) for better screen alignment
- Minimap now displays only DiabolicUI's custom zone text without Blizzard overlay

## [1.7.7] - 2025-12-24
### Fixed
- Fixed ADDON_ACTION_BLOCKED errors in aura positioning during combat
- Fixed nil comparison error in target health prediction
- Improved combat lockdown handling for protected frames

## [1.7.6] - 2025-12-22
### Changed
- Removed archive files from repository

## [1.7.5] - 2025-12-22
### Changed
- Cleaned repository structure
- Updated gitignore patterns

## [1.7.4] - 2025-12-22
### Changed
- Cleaned commit history for consistency
- Repository history rewritten

## [1.7.3] - 2025-12-22
### Changed
- Updated version number to match release tags for better version tracking

## [1.7.2] - 2025-12-22
### Added
- **NamePlates Toggle Setting** - Optional setting to enable/disable DiabolicUI nameplates
  - New "Enable DiabolicUI NamePlates" checkbox in Unit Frames settings
  - Default: disabled (uses standard Blizzard nameplates)
  - Allows users to choose between custom and standard nameplates
  - English and Russian localization

## [1.7.1] - 2025-12-21
### Fixed
- Fixed action bar page navigation buttons visibility

## [1.7.0] - 2025-12-21
### Added
- **MinimapButtons Module** - Collect addon minimap buttons into single container
  - Automatically gathers all addon buttons around minimap
  - Styled container matching DiabolicUI aesthetic
  - Toggle visibility with minimap button
  - Reduces minimap clutter

## [1.6.0] - 2025-12-21
### Added
- **MapCoords Module** - Display coordinates on map and minimap
  - Player coordinates on world map
  - Cursor coordinates on hover
  - Minimap coordinates display
  - Styled to match DiabolicUI design

## [1.5.0] - 2025-01-20
### Added
- **Movable Interface Frames** - Hold SHIFT and drag to move Blizzard interface windows
  - Supports: Character, Bags, Map, Friends, Settings, Merchant, Professions, Talents, Spellbook
  - Automatically disabled if BlizzMove addon is detected
  - New Quality of Life settings section
  - Feature enabled by default

### Technical
- Created MakeFrameMovable() function with SHIFT+drag requirement
- Added EnableMovableFrames() with standard and dynamic frame lists
- Added defaults for tooltips and qol sections in Core.lua
- Added QoL settings callback handling
- Added English and Russian localization

## [1.4.3] - 2025-01-20
### Removed
- Removed all Wrath Classic support files (DiabolicUI3_Wrath.toc, Libs_Wrath.xml, oUF.old)
- Cleaned up 10,763 lines of unused code
- CurseForge no longer shows incorrect Wrath 3.4.0 compatibility

## [1.4.2] - 2025-01-20
### Changed
- Updated README with complete addon description from CurseForge
- Added comprehensive list of features and improvements
- Added Quality of Life features section
- Added .pkgmeta for CurseForge automatic packaging
- Updated .gitignore to exclude DiabolicUI3_Wrath.toc

## [1.4.1] - 2025-01-19
### Added
- GitHub Actions workflow for automated releases
- Automatic DiabolicUI3.zip archive creation on tag push
- Archive always contains DiabolicUI3 folder regardless of tag name

### Fixed
- Fixed GitHub Actions permissions for release creation

## [1.4.0] - 2025-01-19
### Added
- **Auto-Fill Delete Confirmation** - No need to type "DELETE" manually when destroying items
  - Automatically fills confirmation text
  - Works with all localizations (uses Blizzard's DELETE_ITEM_CONFIRM_STRING)
  - Created new QualityOfLife module

## [1.3.0] - 2025-01-19
### Added
- **Tooltips Follow Mouse Cursor** - Integrated TTOM functionality
  - Adjustable X and Y offset settings (-100 to 100 pixels)
  - Feature enabled by default
  - All DiabolicUI3 visual styles preserved
  - Settings in Tooltips section

## [1.2.0] - 2025-01-18
### Fixed
- **Action Bar Switching in Quests** - Properly switches when entering vehicles/dragons
- **Buff Cancellation** - Right-click buffs to cancel them (works on player and target frames)
- Quest abilities display properly
- Secondary bar automatically hides when vehicle/override/possess modes activate

### Technical
- Added handling for UPDATE_VEHICLE_ACTIONBAR, UPDATE_OVERRIDE_ACTIONBAR, UPDATE_POSSESS_BAR events
- Switched to CancelUnitBuff() API for buff cancellation
- Optimized state driver switching logic

## [1.0.0] - 2025-01-17
### Added
- **Threat Indicator Setting** - Toggle threat-based HP coloring on/off
- **Improved "Hide target name on cast"** - Now hides cast bar, cast time, and spell text
- **Settings Export/Import** - Share configurations or backup settings
- **Target Frame Scale Control** - Adjust target frame size independently (0.5x - 1.5x)

### Fixed
- **EditMode Position Saving** - Minimap, TalkingHead, ExtraButtons properly save positions
- **Pet Bar Duplication** - Reworked Blizzard pet bar hiding using safe methods
- **Multiple ADDON_ACTION_BLOCKED Errors** - Added InCombatLockdown() protection
- **Action Bar Toggle** - Works as proper toggle (left click shows/hides all 3 extra bars)
- **HealPredict Nil Comparison** - Added nil checks
- **Addon Metadata** - Added icon, updated author info, removed outdated links

### Technical
- Disabled Blizzard frames hiding for party/boss/arena (compatibility)
- Removed all taint-causing methods
- Added RegisterAttributeDriver for safe pet bar hiding
- Improved combat lockdown protection across all components

## [Alpha 2] - 2025-01-16
### Initial Release
- Complete API migration to WoW 11.x standards
- Migrated to C_AddOns namespace
- Updated Aura system to use C_UnitAuras API
- Updated Reputation system to use C_Reputation API
- Fixed MainMenuBar → MainActionBar transition
- Replaced LibActionButton-1.0 with LibActionButton-1.0-GE
- Updated oUF to version 12.1.0
- Settings panel in Interface Options
- Addon Compartment support

This mod has no related projects