HealReforged (HR)

HealReforged (HR)

File Details

HealReforged-Beta-1.2.1.zip

  • R
  • Jun 24, 2026
  • 16.60 MB
  • 31
  • 12.0.7+2
  • Retail

File Name

HealReforged-Beta-1.2.1.zip

Supported Versions

  • 12.0.7
  • 12.0.5
  • 12.0.1

Change Log

Version: 1.2.1

2026-06-23

Added

  • Added full NewUI pages for Click Casting, Profiles, Tank Tools, and Help, replacing the remaining placeholder routes with real GH3-styled pages.
  • Added NewUI profile management for account and character slots, specialization profile assignment, visual presets, profile import/export, and active setup summaries.
  • Added NewUI Tank Tools controls for visibility, display, MDT dungeon imports, priority-list editing, and priority import/export while keeping protected marker behavior in the Tank Tools module.
  • Added a NewUI Help page with setup guidance, recovery actions, page topics, and diagnostics.
  • Added a Reload UI tab to the NewUI shell.
  • Added /hr legacy, /hr old, and /hr oldui as temporary access paths for the legacy settings UI.

Changed

  • The NewUI is now the default settings launcher: left-clicking the minimap button, using the addon compartment normally, or running /hr opens the NewUI.
  • The legacy settings window is now available from the minimap right-click menu and the new legacy slash commands.
  • Migrated General and Frames controls to shared GH3-style NewUI dropdowns, compact action buttons, checkboxes, and row components instead of old Blizzard-style controls.
  • Preserved NewUI scroll position when changing settings so pages no longer jump back to the top after each change.
  • Updated addon-compartment metadata to use the documented hover handler fields.

Fixed

  • Fixed NewUI scrollbar thumbs not visually tracking the page scroll position.
  • Fixed General and Frames page controls that were duplicated, stale, or not wired to live settings refreshes.
  • Fixed missing Frames functionality in NewUI, including the Copy From section.
  • Fixed a NewUI text input runtime error caused by calling an unavailable single-line edit-box method.
  • Fixed Binding Presets controls so command buttons use the shared compact NewUI style and no longer overlap row status text.
  • Enlarged the Tank Tools priority import/export text area to fit its panel.
  • Fixed the NewUI shell size setting so it persists in saved settings and maps the monitor-size choices to GH3-style window dimensions instead of treating monitor resolutions as direct UI scale multipliers.

Version: 1.1.30

2026-06-21

Fixed

  • Fixed non-player roster range borders failing to turn bright blue when some WoW range APIs return numeric 1 / 0 values instead of plain Lua booleans. The range normalizer now accepts those numeric returns safely, so nearby party and raid members can resolve to in like the local player row.
  • Raised and reasserted the health-bar range border layer above the row overlay stack so the in-range border cannot be hidden under health, absorb, or row chrome overlays.
  • Added range state details to /hr inspect <unit> for faster in-game verification of snapshot, render, and live-frame range-border state.

Version: 1.1.29

2026-06-21

Fixed

  • Fixed the blue range border on roster health bars being suppressed by the legacy OOR text-tag setting. Range polling and in/out border coloring now stay active whenever encounter utility range borders are enabled, even if compact range tags are hidden or an older profile saved showRangeTag = false.

Version: 1.1.28

2026-06-19

Fixed

  • Removed the duplicate in-frame HoT/aura badge that appeared to the right of the unit status tag, while keeping the newer right-side aura strip outside the frame UI intact.

Version: 1.1.27

2026-06-18

Fixed

  • Fixed live mana, rage, power, and other resource bars not filling or moving correctly when modern WoW 12.x unit power APIs return display-backed values. The renderer now passes captured display-backed current and max values through the supported StatusBar:SetMinMaxValues / StatusBar:SetValue path instead of requiring plain numeric normalization first.
  • Fixed live unit refreshes dropping powerMaxDisplayValue and manaMaxDisplayValue, which could leave rows with correct text values but no matching colored resource fill during power updates.

Version: 1.1.26

2026-06-09

Fixed

  • Fixed the right-side HoT row not rendering visibly beside the unit frame by raising the HoT badge frame levels above the row chrome.
  • Raised the HoT display cap so Restoration Druid tracking can show multiple active HoTs instead of collapsing to a single visible badge.

Fixed

  • Restored click-casting buttons to the bottom footer row on unit frames.
  • Added a dedicated right-side HoT stack row outside the frame edge and a separate countdown row beneath it.
  • Sized the right-side HoT and countdown rows from the same action-bar button size settings so they stay aligned.
  • Re-enabled visible cooldown countdown numbers on click-casting and dispel spell badges.
  • Fixed the right-side row anchors so the HoT and countdown badges render next to the frame instead of behind it.
  • Reverted the main UI title and header banner changes back to the original GH3-style layout after the crest-style pass proved too intrusive.
  • Fixed the new PvP/War Mode avatar indicator so it no longer throws a nil-call during live snapshot refreshes, and the avatar now keeps its red glow / badge state working on supported unit rows.
  • Fixed the FrameRenderer main chunk local-variable warning by moving the new refresh helpers out of the file-scope local budget.
  • Fixed startup profile application when the settings window frame is not yet available by guarding the profile sync hooks and window-theme calls.
  • Fixed the Tank Tools BigWigs pull countdown fallback so it now starts the actual pull timer instead of opening the BigWigs options UI.
  • Fixed Vivify proc highlighting for monk Vivacious Vivification so the free/instant cast now glows visually on mirrored action buttons.
  • Fixed mirrored spell cooldown timers so they continue updating in combat instead of only refreshing after combat ends.

Version: 1.1.21

2026-06-02

Fixed

  • Fixed mirrored action-button cooldowns and charge cooldowns so they resolve spell tokens to numeric spell IDs before querying Blizzard's modern C_Spell APIs. This keeps the buttons behaving like native action bars on WoW 12.0.5 and newer clients, including combat usage.

Added

  • Added a "Save This Toon's Settings" button to the Copy From Toon card on the Frames pane. Click it on any character to immediately write that character's settings snapshot to the account database without waiting for a logout. The saved toon will then appear in the dropdown on other characters.
  • Added /hr sync slash command that does the same thing from the chat box.

Fixed

  • Fixed the Copy From Toon dropdown showing no toons: snapshots were only written on PLAYER_LOGIN and PLAYER_LOGOUT, so any character that had never logged out since the feature was added would not appear. The new Save button and /hr sync command provide an on-demand alternative.

Version: 1.1.19

2026-05-31

Added

  • Click-cast action buttons now dim to grey when a spell cannot be cast due to insufficient resources (Holy Power, combo points, mana, etc.), matching native Blizzard action bar behaviour. The icon brightens automatically once the player has enough resources. Uses C_Spell.IsSpellUsable (The War Within) with IsSpellUsable as a legacy fallback, driven by the SPELL_UPDATE_USABLE event.

Fixed

  • Fixed LUA_WARNING: function has more than 200 local variables in both FrameRenderer.lua (main chunk) and SettingsWindow.lua (buildFramesPanel), which caused FrameRenderer to fail registration on load. The usability check was extracted from a separate forward-declared upvalue into an inline block inside the existing do scope. The toon copy card construction was extracted into a dedicated file-scope function (buildToonCopyCard) so it has its own local variable budget.

Version: 1.1.18

2026-05-31

Fixed

  • Fixed Paladin (and other class) proc glows still not firing after the v1.1.16 event-driven fix: SPELL_ACTIVATION_OVERLAY_GLOW_SHOW fires with a base spell ID while C_Spell.GetSpellInfo resolves the click-cast button's binding to a current-rank variant ID — they differ even for the same spell. Bootstrap now also resolves the spell name at event time and stores it in addon.activeOverlaySpellNames; the overlay check adds a name-based fallback so variant IDs still match. Bootstrap also pre-initialises both tables to {} at ADDON_LOADED so the polling-API fallback (C_SpellActivationOverlay.IsSpellOverlayed / IsSpellOverlayed) is never reached — those APIs were causing Beacon of Hope and similar always-active spells to glow permanently.

Changed

  • Moved the "Copy From Toon" feature from the Profiles pane to the Frames pane where it belongs. The dropdown is populated with all previously logged-in characters whose settings snapshot was saved (snapshots are written on every login and logout). The Profiles pane retains its Export / Import section unchanged.

Version: 1.1.17

2026-05-31

Fixed

  • Fixed charge counts displaying as 0 on click-cast action buttons for spells with multiple charges (e.g. Frenzied Regeneration): C_Spell.GetSpellCharges in The War Within requires a numeric spell ID, but the function was passing the raw spell token (a string name such as "Frenzied Regeneration"), which caused it to return nil. Also changed the legacy GetSpellCharges fallback from elseif to if not chargeInfo so it fires even when the modern API exists but resolves nothing. Charge counts and charge-based cooldown swipes on click-cast buttons now work correctly.

Version: 1.1.16

2026-05-31

Fixed

  • Fixed proc glows (e.g. Word of Glory on Paladin) still not lighting up on click-cast action buttons in The War Within (Interface 120005): the SPELL_ACTIVATION_OVERLAY_GLOW_SHOW event passes the proc'd spell ID as an argument, but the Bootstrap handlers had no parameters so the ID was silently dropped, and getSpellActivationOverlayState fell through to C_SpellActivationOverlay.IsSpellOverlayed / global IsSpellOverlayed — neither of which exists in this client version — so every overlay check returned false. Bootstrap now captures the spell ID from each event and stores it in addon.activeOverlaySpells; getSpellActivationOverlayState checks that table first, making proc glows event-driven and reliable without any dependency on missing polling APIs.

Version: 1.1.15

2026-05-31

Fixed

  • Fixed proc glows never visually firing on click-cast action buttons: ActionButton_ShowOverlayGlow was being called on HealReforged's custom SecureActionButtonTemplate buttons (which have no OverlayGlow child frame), the pcall succeeded silently, and the native-glow flag blocked the custom glow frame from ever running. The native call is now bypassed entirely and the custom animated edge-glow is always used.

Version: 1.1.13

2026-05-31

Fixed

  • Fixed a proc-glow startup/runtime error in UI/FrameRenderer.lua caused by the new action-button glow helper calling createEdgeBorder before that local helper existed in scope.

Version: 1.1.11

2026-05-31

Added

  • Added optional per-specialization full profile switching in the Profiles pane, including a toggle and live assignment summary so each spec can auto-load its own Character or Account profile slot on the same toon.

Fixed

  • Fixed embedded row action-button proc glows not lighting for normal spell bindings saved in the addon's name-based S: format; the overlay query now resolves those bindings back to real spell IDs before checking Blizzard's spell-activation state.

Version: 1.1.9

2026-05-31

Added

  • Added a Profiles pane dropdown that lets the current character copy live frame and settings data from another toon that has logged in on this version.

Improved

  • Improved embedded row action buttons so proc-ready spells now light up from Blizzard's spell-activation overlay state, matching the normal action-bar glow behavior more closely.

Fixed

  • Fixed healer low-mana alerts on tank-facing roster rows when Blizzard leaves live group roles as NONE or UNASSIGNED; healer-capable mana users now still trigger the row flash and local chat warning.
  • Fixed the new proc-glow and mana-alert updates pushing UI/FrameRenderer.lua past Lua 5.1's top-level local-variable limit, which prevented FrameRenderer from registering and broke addon startup.

Version: 1.1.8

2026-05-25

Added

  • Added the new Tank Tools panel as a major feature release for tank characters, with a movable compact shell, group/instance visibility rules, tank-spec defaults, lock, scale, opacity, and reset-position controls.
  • Added secure Tank Tools target-marker buttons for Skull through Star using protected /tm macro clicks, with hostile mouseover priority, current-target fallback, active marker highlights, and a secure clear-marker button.
  • Added a preferred-marker helper: right-click any target marker to save it as the preferred marker, with a distinct selected ring and panel/settings summary state. Target-by-icon remains user-guided to avoid unsafe background targeting.
  • Added M+ priority macro generation to Tank Tools: paste priority mobs or import MDT dungeon mobs, then use Mark to run the active target-and-mark priority macro from the Tank Tools UI.
  • Added a curated Skyreach priority macro list so the generated macro targets priority casters instead of noisy or stale MDT rows such as duplicate trash names from previous imports.
  • Added an editable per-dungeon priority mob list in the Tank Tools pane, showing imported mobs with controls to change markers, move entries up or down, add mobs, and remove mobs before generating the M buttons.
  • Added an MDT dungeon selector and current-season import path for Tank Tools priority lists, with imported MDT mobs sorted by likely priority and assigned rotating suggested markers instead of defaulting every mob to Skull.
  • Added MDT import modes for Priority, Casters, and All non-boss mobs, with Priority focused on cast-capable adds and row type labels so unwanted mobs are easier to remove.
  • Added Tank Tools priority list export/import codes, including single-list and all-list export paths for sharing season priority lists.
  • Added default Square/Moon reservations for generated M-button priority marks so tank/healer player markers are not reused by imported add lists.
  • Changed generated M-button behavior back to maintaining one full target-and-mark macro instead of the earlier multi-button targeting experiments.
  • Clarified Tank Tools marker help text: panel clicks should be used on your current target, while mouseover marking requires a keybind or hardware click with the cursor still on the enemy/nameplate.
  • Added functional Tank Tools pull timer buttons for 3, 5, 10, and 20 seconds, using Blizzard native countdown first, optional DBM/BigWigs hooks when available, and grouped chat fallback when countdown APIs are unavailable.
  • Added compact Tank Tools ready-check and role-check buttons, plus an opt-in secure world marker row with left-click placement and right-click clearing.
  • Added a Frames pane control to set the current character's live frame positions and sizes as the all-toon default while keeping export/import available for player-to-player sharing.
  • Added live-frame alerts for healer low mana, healer mana recovery, and deaths, including frame flashes, local chat messages, and a persistent red death X that stays below battle-rez/action controls.
  • Added a Frames pane checkbox to hide Blizzard's Talking Head pop-up while HealReforged is active.
  • Added a Frames pane checkbox to hide Blizzard's boss and scenario banner pop-ups while HealReforged is active.
  • Added /hr testui, which opens a visual test popup with buttons to preview healer-row alerts, death state, dispel state, cooldown, and aggro styling without needing live dungeon pulls.
  • Reduced combat CPU by routing high-frequency health and power unit events through narrower snapshot fast paths instead of the full per-unit capture path.

Improved

  • Refreshed the Tank Tools settings pane with new toggles, a visible priority list editor, priority mob import controls, MDT integration buttons, updated tooltips, and clearer in-addon Help text.
  • Fixed the settings sidebar sizing so the Help button stays inside the navigation frame and moved Tank Tools below Click Casting in the settings navigation.
  • Improved mirrored click-casting action buttons with action-bar-style cooldown countdown text and charge counts while leaving secure click behavior unchanged.
  • Improved cooldown visuals on small embedded action buttons by using HealReforged-controlled countdown text instead of relying on Blizzard's native cooldown-number layer.
  • Improved the active dispel button cue so removable debuffs flash the whole button blue and add a stronger orange glow around the slot.
  • Reduced the new-user Group Seed Height default to 96px so detached subgroup panels no longer start oversized.
  • Lowered the empty Target live frame to 20% opacity while no target is selected, restoring normal opacity as soon as a target exists.

Fixed

  • Fixed overlapping text in the Tank Tools priority mark settings card by moving list metadata below the checkbox description and giving the editor more vertical spacing.
  • Fixed MDT priority mob import by reading MDT's actual saved current dungeon index through MDT:GetDB().currentDungeonIdx and importing from MDT.dungeonEnemies[currentDungeonIdx].
  • Fixed the MDT dungeon selector so moving between dungeons switches the editable priority list instead of leaving the editor pinned to the previous dungeon list.
  • Fixed healer low-mana alerts so the transition check no longer requires a plain numeric mana max before using the display-backed or visual mana fallback.
  • Fixed live-frame alert messages by removing the protected automatic party/raid/instance chat send from the unit-refresh path, leaving the local chat-frame alert in place so Blizzard no longer blocks the healer alert flow.
  • Reduced and clipped the death X overlay so it stays on the health/power lane instead of covering the row action buttons.

Version: 1.0.36

2026-05-23

Fixed

  • Fixed an ADDON_ACTION_BLOCKED error where the missing-target/player reset path could call Hide() on the protected auto-dispel action button during combat lockdown. The reset now clears visual state immediately but defers protected visibility changes until combat ends.
  • Fixed large-pull CPU spikes caused by player and target unit-event storms bypassing the per-unit refresh throttle and forcing full render-state rebuilds. Player/target updates now coalesce through the core snapshot queue and refresh their live buttons directly when unit keys have not changed.
  • Fixed threat-only refreshes doing full health, power, aura, utility, and healing-awareness snapshot work. Threat events now use an aggro-only snapshot path so add-heavy pulls do not repeatedly scan expensive unit state.
  • Fixed utility-only refreshes doing avoidable health and power capture before reaching the range/ready-check fast path.

Improved

  • Improved combat refresh behavior by merging queued core refresh flags, preventing same-frame player/target events from overwriting broader pending aura, healing, utility, or threat updates.
  • Improved player and target live-frame updates so roster rows for the same unit are still refreshed without triggering a full roster rebuild.

Version: 1.0.35

2026-05-21

Added

  • Added Click Casting pane controls to increase or decrease the mirrored roster action button size, with live frame refresh after each adjustment.

Fixed

  • Fixed target clearing from normal world input: HealReforged now enables Blizzard's deselectOnClick terrain-click behavior and binds ESC to a secure /cleartarget action only while the replacement Target frame is visible and an active target exists.
  • Fixed the replacement Target frame keeping stale health/power bars, names, and status text after the target was cleared. Missing targets now reset the entire row to the blank Target / 0% / MISS state instead of only hiding the avatar.
  • Fixed clearing a self-target leaving the replacement Target frame populated with the player snapshot. Self-targets share the player's unit key, so clearing now explicitly removes the runtime target key and the target frame rejects any stale entry when Blizzard has no active target.

Version: 1.0.33

2026-05-21

Fixed

  • Fixed the replacement Target frame swallowing background clicks without clearing the active target. The target frame now has a secure /cleartarget click layer behind its normal unit controls, while leaving ESC keyboard handling to Blizzard's normal target-clear path.

Improved

  • Improved the Frames health color controls by moving the custom color picker to the right of the class-color target button and renaming it to Color Picker for a cleaner layout.

Version: 1.0.32

2026-05-20

Added

  • Added Frames settings that let players choose whether the health text or the health bar uses class color, with a Blizzard color picker for the other side so the two colors flip cleanly.

Fixed

  • Fixed three crashes caused by WoW's secret-value restrictions on C_UnitAuras aura data fields:
    • normalizeBooleanValue threw "attempt to perform boolean test on local 'value' (a secret boolean value)" because and/or operators fail on secret booleans just like comparison operators do. Fixed by guarding with type(value) == "boolean" first, then wrapping the boolean test in pcall so the restriction error is caught rather than propagated.
    • getAuraBooleanField (used to read canActivePlayerDispel) was returning false for secret boolean fields, which silently suppressed the per-debuff canPlayerDispelType fallback. It now returns nil on failure so the fallback fires correctly.
    • normalizeAuraType threw "attempted to index a table that cannot be indexed with secret keys" because dispelName/auraType aura fields can surface as secret strings, and using a secret value as a table key is restricted. Fixed by replacing the inline lookup with pcall(rawget, debuffPriority, auraType), which catches the error and returns nil, 0 so debuff-type detection falls back to the class/spell-capability tables.
  • Fixed the dispel button staying dim when Blizzard marked a unit aura as player-dispellable but the debuff type remained secret or unavailable. Harmful aura scanning now includes the Retail 12.0.5 RAID_PLAYER_DISPELLABLE filter pass and marks those auras as dispellable directly, so the DSP button can light up even when dispelName / auraType cannot be safely read.
  • Fixed throttled UNIT_AURA updates being lost behind earlier health/power refreshes. Pending per-unit refresh flags are now merged, so high-frequency health events remain capped while debuff, HoT, and utility changes still make it through the delayed refresh.
  • Fixed the dispel pulse requiring a known debuff type/color. If the row has an active auto-dispel entry but the debuff type is unknown because of Retail secret-value restrictions, the button now pulses with the default debuff color instead of staying visually inactive.
  • Fixed action-button and dispel cooldown checks to guard C_Spell.GetSpellCooldown / GetSpellCooldown with pcall and safe boolean handling, preventing restricted cooldown fields from crashing or suppressing cooldown visuals.

Improved

  • Improved main unit-frame threat border colors so no/low threat is green, medium threat is yellow, and high threat remains red.
  • Improved live-raid performance by caching resolved aura spell lookup tables and the player's HoT-awareness profile, reducing repeated spell resolution and table allocation during aura-heavy refreshes.
  • Improved auto-dispel row rendering performance by caching active dispel spell resolution briefly by override/class/spec/time bucket, avoiding repeated class/spec/spell-name/icon checks for every visible row during the same render window.
  • Improved row dirty-fingerprint behavior by removing the always-changing capture sequence from the visual-change check and tracking the actual debuff, buff, aura, healing-awareness, power, health, aggro, and range fields that affect rendering.
  • Improved modern aura scanning safety by avoiding string conversion of possibly secret aura types in duplicate-key fallback logic and by fail-closing unsupported aura filter passes without breaking the rest of the harmful aura scan.

Removed

  • Removed the redundant debuff-type secondary/status border from unit rows. Removable debuffs now rely on the flashing DSP button and aura indicators, while the secondary border remains reserved for healing maintenance warnings.

Version: 1.0.29

2026-05-19

Fixed

  • Fixed every per-row action button flashing its cooldown swipe at the same time whenever any spell was cast. SPELL_UPDATE_COOLDOWN fires for every spell during the global cooldown, so polling each button's C_Spell.GetSpellCooldown returned the GCD on all of them simultaneously. The polled refresh now filters out the global cooldown (both via the isOnGCD field and a duration <= 1.5s belt-and-braces check), and a PostClick hook on each action button triggers a one-shot GCD swipe on just the button that was actually pressed — matching how Blizzard's own action bar gives click feedback. Real (longer-than-GCD) cooldowns continue to render on every button as they tick down.

Version: 1.0.28

2026-05-19

Fixed

  • Fixed the per-row action buttons (Revive, Rebirth, TGT, click-cast macros, etc.) showing no cooldown swipe or click feedback when used. getActionBarEntryCooldown was filtering out any cooldown where isOnGCD == true and also short-circuiting on a mythical isActive field, so the global cooldown sweep — the very feedback Blizzard's own action bar shows after a click — was suppressed. The GCD swipe and longer real cooldowns now both render on the unit-row action buttons, matching the Blizzard action bar behavior.

Version: 1.0.27

2026-05-19

Fixed

  • Fixed all addon settings being shared across every character on the account instead of being saved per-character. The frame skin (bar widths, colors, badges, indicators, health/power text modes), layout (shown frames, group flow, opacity, strata, Blizzard suppression, manual assignments), click-cast bindings, profiles, and theme are now all stored in HealReforgedCharacterDB and load independently for each character. Previously only frame positions were per-character, and SyncCharacterFrameStateToAccount ran on every login — so whichever character logged in last overwrote everyone's shared HealReforgedDB.settings. The next time you log into each character after updating, its current settings are seeded one-time from your existing account-wide config, so nothing visible changes on first login; from that point on each toon keeps its own profile.

Version: 1.0.26

2026-05-18

Fixed

  • Fixed a Mistweaver Monk dispel-capability crash: getEffectiveSpellCapabilities referenced getPlayerClassFile / getPlayerSpecializationId before either local function was declared, so every call with Detox (spellId 115450) hit a nil global and aborted dispel-list construction. Spec helpers are now declared first.
  • Fixed the right-side dispel slot's cooldown sweep never appearing on retail. The cooldown lookup still used the deprecated global GetSpellCooldown, which Blizzard replaced in 11.0; it now uses C_Spell.GetSpellCooldown and reads the modern SpellCooldownInfo table (startTime, duration, isEnabled, plus 12.0's isOnGCD). The pulse animation now correctly stops while the cleanse spell is on its real cooldown instead of pulsing through it.
  • Fixed the dispel slot's cooldown frame not rendering a visible sweep, edge, or countdown numbers: the frame was created with edge drawing off and countdown numbers hidden. It now matches the per-row action buttons (swipe, edge, dark fill, visible countdown text).

Improved

  • Improved CPU usage dramatically in 25-player raids and other large groups. A profiling pass identified four hot paths that compounded under raid-event load:
    • getSkinSettings() and getLayoutSettings() are now memoized per render pass. Previously each call rebuilt a 40–50 field table from scratch, and they were invoked once per row inside updateUnitButton — so a single Refresh() of a 25-player raid produced 50+ rebuilds. They are now built once per render pass and reused.
    • The per-button aura countdown OnUpdate script is no longer always installed. Previously every unit button polled at 60 Hz just to early-return when no aura needed a visible countdown (~1500+ idle invocations/sec across a 25-player raid). The script is now installed only while at least one tracked aura is counting down and is removed automatically when none are.
    • The default per-unit render throttle (runtime.renderInterval) is now 0.05s (was 0, i.e. uncapped). UNIT_HEALTH / UNIT_POWER events fire continuously for every group member during raid combat; capping each individual unit at 20 visual updates per second is imperceptible to a healer but eliminates the worst of the storm. A floor of 0.05s is also enforced for players upgrading from older settings where the value was saved as 0.
    • The default range check frequency (skin.utilityIndicators.rangeCheckFrequency) is now 1.0s (was 0.4s). Each tick walks the full roster and rebuilds range visuals; cutting it to 1.0s removes ~60% of that load with no meaningful loss of UX for healing decisions. Players who want faster range updates can still lower it in Settings.

Version: 1.0.25

2026-05-15

Fixed

  • Fixed Blizzard's compact raid and party frames (CompactRaidFrameManager, PartyFrame, CompactPartyFrame) doubling up alongside HealReforged's own group frames in raid and party. These are now automatically suppressed whenever the HealReforged roster is active (showRosterFrame = true, the default), rather than only when the explicit Hide all Blizzard unit frames toggle is on.
  • Fixed setBlizzardUnitFrameSuppressed calling SetParent, Hide, and EnableMouse on Blizzard frames every render cycle regardless of whether suppression state had changed, causing WoW's per-frame script CPU limit to be exceeded. Frame manipulation now only runs once when suppression state actually changes.
  • Fixed !BugGrabber "insecure scripts exceeded execution limit" spam (10× per combat entry): the OnShow suppression hook on PartyFrame / CompactRaidFrameManager called Hide() unconditionally, including during combat lockdown where calling Hide() on a protected Blizzard frame from insecure addon code raises a Lua error. The hook now skips the Hide() call while InCombatLockdown() is true.

Version: 1.0.24

2026-05-15

Added

  • Added Render Interval (Update Rate) setting in the General panel allowing players to cap the UI refresh frequency to Reduced (100 ms), Low (200 ms), or Minimal (500 ms) to reduce CPU load during large raid pulls.

Improved

  • Improved rendering performance by skipping unit-button updates when no tracked state has changed, using per-button dirty fingerprints across health, power, aura, aggro, debuff, and range fields.
  • Improved RefreshUnitVisual with O(1) snapshot, roster entry, and row lookups using key-indexed caches (_snapshotKeyByToken, membersByKey, _rowsByKey) and per-key entry-table reuse to eliminate per-frame allocations during targeted refreshes.
  • Improved role badge (T/H/D) visibility by rendering indicators on top of the power bar and applying a bold thick-outline font (size 11) so they are clearly legible at all group sizes.
  • Improved party/raid group sort order to Tank → Healer → DPS within each group by activating the existing role-priority comparator.

Fixed

  • Fixed a Retail secret-value taint error in the dirty-fingerprint check caused by comparing the secret-backed healthDisplayPercent field with ~=; the field has been removed from the fingerprint (health changes remain tracked via healthPercent).
  • Fixed absorb/shield overlay not displaying on Retail: UnitGetTotalAbsorbs can return a secret number on tainted paths, causing the serialization path to produce 0. The absorb bar now uses the raw API value directly via StatusBar:SetValue (AllowedWhenTainted) anchored to the health bar fill texture, which correctly handles both plain and secret-number absorb values.
  • Fixed absorb/shield cap indicator not appearing at full health: when health is at 100% the absorb bar has no space to render, so a thin blue edge marker is now always drawn at the right edge of the health fill whenever an absorb value exists.
  • Fixed ready-check icons (?, ✗, ✓) not appearing at all: READY_CHECK, READY_CHECK_CONFIRM, and READY_CHECK_FINISHED events were never registered, so the utility snapshot never captured ready-check state. All three events are now handled and trigger targeted utility refreshes.
  • Fixed ready-check badge hidden behind health bar child frame; stateIndicatorAnchor now renders above all health bar children.
  • Fixed ready-check icon position: now overlays the avatar portrait frame (when avatar is visible), matching the Blizzard compact frame layout.
  • Added party leader crown badge rendered on the power bar left side using Interface\\GroupFrame\\UI-Group-LeaderIcon.
  • Fixed aggro red border not clearing after combat: UNIT_THREAT_SITUATION_UPDATE was never registered, so the aggroLevel snapshot was only refreshed by health/aura events or a full roster refresh. The event is now handled with a lightweight unit refresh so the border clears immediately when threat drops.

Version: 1.0.22

2026-05-14

Fixed

  • Fixed Hide all Blizzard unit frames toggle not suppressing frames because hideBlizzardGroupFrames was missing from the getLayoutSettings() copy passed to syncBlizzardUnitFrames.
  • Fixed dispel spell data so every healer spec uses the correct spell and debuff-type capabilities:
    • Added Nature's Cure (88423) for Restoration Druid (Magic + Curse + Poison); non-Resto Druid is correctly limited to Remove Corruption (Curse + Poison).
    • Added Purify Spirit (77130) for Restoration Shaman (Magic + Curse); non-Resto Shaman is correctly limited to Cleanse Spirit (Curse only).
    • Added Purify Disease (213634) for Shadow Priest (Disease only).
    • Fixed Naturalize (360823) capabilities from {Magic, Curse} to {Magic, Poison} (Preservation Evoker).
    • Fixed Expunge (365585) capabilities from {Magic, Curse, Poison} to {Poison} only (Devastation/Augmentation Evoker).
    • Fixed Detox (115450) baseline capabilities from {Magic, Poison, Disease} to {Poison, Disease}; Magic dispel is now correctly gated behind Mistweaver spec detection.
    • Fixed Druid fallback that incorrectly referenced Evoker spell 360823; now uses Nature's Cure (88423) and Remove Corruption (2782).
    • Fixed Shaman fallback that claimed Magic capability for Cleanse Spirit (51886) which only removes Curse.
  • Added full spec-aware fallback configs for Druid, Monk, Shaman, Priest, and Evoker so the dispel button and debuff highlights are accurate for every spec.

Version: 1.0.21

2026-05-14

Added

  • Added Hide all Blizzard unit frames toggle in the Frames panel. When enabled, suppresses Blizzard's PlayerFrame, TargetFrame, CompactRaidFrameManager, and CompactPartyFrame so they do not overlap HealReforged's live frames.

Improved

  • Improved Click-Casting editor by adding an inline note on the Right mouse button row warning that it overrides Blizzard's default right-click context menu.

Fixed

  • Fixed all five settings panel scrollbars not scrolling to the bottom by calling UpdateScrollChildRect after every content-height change in panel:UpdateLayout.
  • Fixed transfer-box and multi-line text entry scrollbars not updating their scroll range when the edit box grew taller as text was typed.
  • Fixed checkbox description labels in the Frames panel appearing at the wrong vertical position because they were anchored to the empty built-in UICheckButtonTemplate text fontstring instead of the visible _hbrLabel.
  • Fixed the Runtime Status label in the General panel slightly overlapping the Track Roster checkbox description when description text wrapped to a second line; it is now anchored relative to the description bottom instead of a hardcoded offset.
  • Fixed the row-height + button in the Frames skin card skipping sizes between 24 and 36 due to an incorrect minimum clamp of 36 (now 24, matching the button).

Version: 1.0.20

2026-05-13

Improved

  • Improved helpful-aura tracking so live healer buffs can match by the aura's actual unit-frame name when Blizzard surfaces a different buff spell ID than the token resolved from GetSpellInfo.
  • Improved non-mana power capture by keeping current and maximum values on the same display scale and by honoring UnitPowerDisplayMod when raw fallback values are needed.
  • Improved healing badge layout by moving the timed tracked-aura badge to the right-side state lane and hiding the extra HoT summary text badge that overlapped action buttons.

Fixed

  • Fixed Discipline priest Atonement and Power Word: Shield visibility on live rows by removing the player-only helpful-buff filter from tracked buff indicators and by broadening tracked-buff matching to handle live aura name and spell-ID alias differences.
  • Fixed broken rage and other non-mana power text cases where visibly filled bars could still print misleading zero-based values because modified and unmodified power scales were being mixed during capture.
  • Fixed a Lua parser warning in the badge layout helper caused by unsupported goto syntax in the WoW client runtime.

Version: 1.0.18

2026-05-13

Improved

  • Improved roster mana text rendering by preferring Blizzard-safe abbreviated display values and by limiting value/max composition to plain numeric fallbacks when Retail secret-value restrictions block safe addon-side string handling.
  • Improved healing-awareness tracking so shared healer buffs such as Atonement remain eligible for tracked HoT badges even when the local player is not the casting class or spec.

Fixed

  • Fixed priest Atonement hot-badge tracking for group members by treating HELPFUL|PLAYER aura results as player-owned at the capture boundary and by no longer requiring local-player ownership just to show tracked healer buffs.
  • Fixed /hr inspect and related mana diagnostics crashing when Retail returned secret-backed FontString text values.
  • Fixed additional secret-string taint errors in power-text formatting caused by comparing or composing restricted Blizzard display strings in Lua.

Version: 1.0.17

2026-05-13

Improved

  • Improved live-frame text controls by splitting Health Text and Power Text into separate settings so health can stay percent-focused without forcing the same mode onto power bars.
  • Improved range visibility on group rows with a dedicated outer health-bar border that uses blue range-state cues without covering the health text lane.

Fixed

  • Fixed health text settings so stale numeric health modes now collapse back to Percentage or Hidden instead of continuing to surface the removed number-based health display path.

Version: 1.0.16

2026-05-11

Improved

  • Improved live-frame power text settings so Health Text and Power Text modes are synchronized between account settings and per-character frame state before refreshing live frames.
  • Improved mana text handling for local-player frames by reading Blizzard's visible player mana text when Retail secret-value restrictions prevent safe addon-side mana percent or value calculations.
  • Added /hr manatext diagnostics to inspect the active Blizzard player mana bar and exposed font-string text paths when troubleshooting Retail mana display behavior.
  • Improved compact power text formatting with uppercase suffixes such as 129K/250K | 52%.

Fixed

  • Fixed repeated Retail secret-value taint errors caused by comparing, clamping, formatting, or string-sanitizing secret-backed UnitPower and Blizzard unit-frame text values.
  • Fixed Power Text mode changes not reliably affecting live player, target, and roster rows because text-mode settings were not being copied through the frame-state synchronization path.
  • Fixed local-player mana text falling back to misleading snapshot values such as 0/250K | 0% when only display-backed Blizzard mana values are available.
  • Fixed diagnostic /hr manatext crashes caused by comparing secret-backed Blizzard FontString:GetText() results to empty strings.

Version: 1.0.15

2026-05-11

Improved

  • Improved party and raid update responsiveness by switching frequent unit-event updates to targeted per-row live-frame refreshes instead of broad full-frame redraw pressure.

Fixed

  • Fixed roster row naming regressions where non-player units could be rendered with the local-player "YOU" visual-state treatment.
  • Fixed extra update churn during rapid UNIT_* event bursts by removing redundant runtime patch writes from per-unit snapshot capture.

Version: 1.0.14

2026-05-11

Fixed

  • Fixed layoutAuraIndicatorStrip nil-call runtime error by removing the shadowing forward declaration that prevented the global function from being used.
  • Fixed protected function StopMovingOrSizing taint errors by adding InCombatLockdown checks to all frame drag and resize handlers.
  • Fixed erroneous row-border coloring code in setTrackedAuraBadge that was referencing an undefined row variable.
  • Fixed opacity adjustment buttons becoming unresponsive by enabling mouse interaction on card content frames in the settings window.

Version: 1.0.13

2026-05-11

New

  • Added configurable health and power text display modes in the Frames settings pane, including percent, value, value/max, hidden, and auto power formatting.

Improved

  • Improved player and target replacement-frame presentation with an optional portrait avatar and a minimal tab-connected shell that better matches the detached group-frame treatment.
  • Improved live-frame replacement controls with a dedicated Frames-pane path for Blizzard player and target suppression, portrait visibility, and player or target shell style.
  • Improved modern retail unit rendering by preserving display-backed health, power, incoming-heal, and absorb values all the way through to the live bars.
  • Improved live debuff badge placement by moving aura icon lanes off avatar portraits and aligning them under the resource bar lane for player, target, and roster rows.
  • Improved harmful-aura collection for Retail by using packed-aura iteration compatibility paths aligned with Blizzard's modern unit-frame filtering behavior.

Fixed

  • Fixed player, target, and group live health rendering on modern clients where direct unit-value APIs can return restricted or secret-backed values.
  • Fixed player and group power-bar rendering so mana, rage, and other resources show reliably again instead of falling back to empty or misleading bars.
  • Fixed incoming-heal and absorb overlay handling so shield and heal prediction visuals use the same display-safe path as the main health bars.
  • Fixed live aura dispel emphasis so retail aura data prefers Blizzard's modern dispel-capability flags when available.
  • Fixed secure live-frame click configuration by explicitly using mouse-up click handling on the protected unit buttons.
  • Fixed minimal player and target tab anchoring so the tabs now connect directly to the live frame body instead of floating above it.
  • Fixed tracked-debuff selection so live aura badges are no longer limited to whitelist-only matches when broader debuff tracking rules qualify an aura for display.
  • Fixed aura badge cooldown rendering paths by wiring per-icon cooldown overlays and countdown refresh updates through the live-frame row update loop.

Version: 1.0.12

2026-05-10

New

  • Added an installed-version line to the in-addon Help pane so support checks can confirm the active build without leaving the UI.
  • Added /hr version and /hr ver so the current addon version can be printed directly in chat.

Improved

  • Improved health-bar feedback with capped overheal and absorb overflow markers on live unit bars.
  • Improved ready-check readability by replacing compact RDY/WAIT/NR text with the built-in ready-check badge icons.
  • Improved player-frame resource tracking with a dedicated mana bar path that stays visible on the player row.
  • Improved live frame sizing controls with a direct Player Width control in the Frames settings panel and a lower minimum player width.
  • Improved healer buff visibility by limiting the timed badge to short-duration healer buffs such as Atonement, Rejuvenation, Renew, Riptide, and similar maintenance heals.
  • Improved healer buff readability by removing overlapping helpful-buff text lanes and using the single cooldown badge as the primary timed-buff signal.
  • Improved minimap controls with a middle-click toggle that can hide the outer roster shell while leaving group cards and unit rows visible.

Fixed

  • Fixed dead-friendly secure spell handling so battle resurrection bindings keep using the macro path during combat instead of degrading into unusable raw spell actions.
  • Fixed auto-dispel spell choice so the dispel slot filters its active spell list by debuff type when multiple cleanse spells are available.
  • Fixed load-time metadata and frame sizing compatibility issues on clients that do not expose the older GetAddOnMetadata or SetMinResize APIs.
  • Fixed roster-shell toggle behavior so it targets the outer roster frame chrome and collapses empty shell space instead of hiding the inner group titles.
  • Fixed live-frame resize collapse cases by enforcing minimum resize bounds so frames no longer disappear after being resized in instances.
  • Fixed helpful aura rendering so generic buffs such as Mark of the Wild, shapeshift forms, and other long-duration non-healer buffs no longer appear in the healer timer badge or helpful aura icon lanes.
  • Fixed repeated UnitAdapter aura-taint regressions by normalizing live aura names, spell IDs, ownership flags, stack counts, durations, and expiration values at the capture boundary before later filtering or display logic touches them.

Version: 1.0.11

2026-05-10

Improved

  • Improved settings-window branding by surfacing the HR logo more clearly in the addon UI header treatment.
  • Improved addon-list icon metadata so external addon list UIs can resolve the packaged HealReforged icon path correctly.

Fixed

  • Fixed paladin auto-dispel suggestions so Retribution and Protection use Cleanse Toxins while Holy keeps the magic-capable cleanse path.
  • Fixed paladin dispel capability detection so debuff highlighting no longer treats every paladin like Holy.
  • Fixed a UnitAdapter Lua regression introduced during the dispel-capability update by restoring the corrupted spell-known helper block.

Version: 1.0.10

2026-05-10

Improved

  • Improved cleanse usability with a right-side dispel slot that stays visible for supported classes, dims when idle, and lights up when the row has a removable debuff type.
  • Improved in-addon help coverage by documenting the live debuff badge abbreviations for Magic, Curse, Disease, Poison, and generic debuffs.
  • Improved the Click Casting settings layout by extending the binding editor and preset sections so the full configuration block fits more cleanly.
  • Improved settings-pane presentation with GH3-style borders around the shared scrollable content area in each panel.
  • Improved Click Casting help formatting so debuff abbreviations display one per line for quicker scanning.

Fixed

  • Fixed auto-dispel slot behavior so class fallback capability can still surface a clickable cleanse target even when the exact dispel spell is talent-gated or currently unavailable.
  • Fixed settings-pane scroll ranges so long panels, including Click Casting, can reach the bottom of their content.

Version: 1.0.9

2026-05-09

Improved

  • Improved My Group ordering so mine-filtered views sort members by role priority: tank, healer, then damage.
  • Improved live frame readability by keeping health-bar names and percentages explicitly layered above the bar with cleaner contrast treatment.
  • Improved paladin class-color readability with a brighter pink treatment shared by both name and health percentage text.
  • Improved live frame combat feedback by separating aggro and debuff signaling with dual borders and a dedicated debuff-type badge.

Fixed

  • Fixed multiple live-frame taint and protected-call paths caused by secret unit names, GUIDs, booleans, raid markers, and hidden runtime summary updates.
  • Fixed tracked unit refresh handling so unsupported unit tokens such as targettarget no longer trigger unnecessary snapshot updates.
  • Fixed health-bar name rendering regressions while restoring class-colored names with simpler shadow-based readability.
  • Fixed several combat-lockdown blocked-action paths in the live frame renderer by deferring protected frame sizing, showing, hiding, strata, action-bar, and roster-row updates until combat ends.
  • Fixed My Group combat refresh behavior so existing party rows continue to show threat and debuff-state updates instead of disappearing while roster reflow is deferred.
  • Fixed queued roster-to-render follow-up updates so nested scheduler refreshes are not stranded until a later event or combat change.
  • Fixed an instance reload roster visibility issue where My Group could stay blank until the next fight or other roster-refreshing event.

Version: 1.0.7

2026-05-09

Fixed

  • Fixed several manual-grouping and roster interaction regressions discovered during the 1.0.6 live frame hardening pass.

Version: 1.0.6

2026-05-09

Improved

  • Improved roster frame resizing by removing the visible scrollbar and allowing the live roster panel to grow much taller when needed.
  • Improved manual grouping responsiveness so drag-and-drop row reassignment resolves more reliably when moving units between custom groups.

Fixed

  • Fixed raid and party roster scrolling issues that could trigger repeated errors while browsing large manual-group layouts.
  • Fixed party roster refresh timing so newly joined party members appear more reliably in manual Unassigned groups.
  • Fixed manual row drag-and-drop assignment handling so releasing over another manual group now commits the move instead of silently clearing the drag state.

Version: 1.0.5

2026-05-09

Improved

  • Improved frame-pane persistence so custom grouping mode, manual grouping, my-group filtering, group flow, live-frame toggles, opacity, and related layout controls survive reloads more reliably.
  • Improved manual grouping usability with a dedicated side control lane for row reassignment controls and a stronger per-character layout sync path.
  • Improved the Frames settings layout by extending the Live Frame Skin card so the full option list stays visually contained.

Fixed

  • Fixed party and roster frame layouts reverting to stale defaults when character frame-state data or active startup profiles were reapplied on reload.
  • Fixed manual My Group filtering in custom manual mode so it consistently shows only the intended bucket while keeping manual group targets available.
  • Fixed multiple taint-prone live-frame string conversion paths that could be triggered by addons such as Details, TankHelper, or other addons that taint unit or aura names.

Version: 1.0.4

2026-05-09

Improved

  • Improved live-frame position persistence so frames keep their saved placement when moving between solo and party while using automatic layout context.
  • Improved roster resizing so party and raid rows refresh immediately and follow the current roster frame width more reliably.
  • Improved manual custom grouping with a dedicated drag handle to make row assignment less sensitive and more deliberate.

Fixed

  • Fixed a live-frame utility tag error that could trigger when party target-of-target text was shown.
  • Fixed party snapshot data so nearby group members no longer fall back to broken 0/0 health state on clients exposing UnitHealthPercent.
  • Fixed roster row metadata so delayed class data no longer shows a literal UNKNOWN label.
  • Fixed custom manual grouping so all manual group cards remain visible as drag-and-drop targets.

Version: 1.0.3

2026-05-09

New

  • Added an optional mirrored action bar under friendly roster rows that surfaces up to 12 configured click-cast actions as clickable icons.

Improved

  • Improved click-casting accessibility by reusing the active friendly or emergency binding set on the on-screen action bar.
  • Improved roster row layout so mirrored action buttons expand cleanly without overlapping health, status, or footer text.

Fixed

  • Fixed mirrored secure action buttons so they keep the correct unit target when bindings are refreshed.

Version: 1.0.2

2026-05-09

New

  • Added direct aura and dispel indicators on live unit frames with configurable placement and priority handling.
  • Added encounter utility indicators for ready checks, summons, resurrection status, range warnings, raid target icons, and main-assist highlighting.
  • Added healing-awareness support with incoming-heal and absorb prediction cues, HoT awareness, and maintenance buff warnings.

Improved

  • Improved healer-specific HoT tracking with spec-aware maintenance priorities for supported healing specializations.
  • Improved live frame readability by moving HoT and prediction summaries into dedicated mini-badges instead of footer text.
  • Improved the Frames settings panel with controls for aura tracking, encounter utility indicators, prediction badges, and HoT awareness behavior.

Fixed

  • Fixed dispel highlighting so only debuffs your character can actually remove are emphasized.
  • Fixed predicted-healing visuals to better distinguish current health, incoming healing, and absorb coverage.
  • Fixed maintenance warning behavior so important missing buffs surface only when units are injured enough to matter.

Version: 1.01

2026-05-09

New

  • Added a full click-casting editor with support for spells, built-in actions, slash commands, and macros.
  • Added ready-made binding presets for raid, dungeon, and solo play.
  • Added account-wide and character-specific profile slots.
  • Added profile save, load, rename, duplicate, import, and export tools.
  • Added a new layout editor with drag-to-move headers, resize grips, snap guides, anchor presets, and spacing controls.
  • Added separate layouts for solo, party, raid, and battleground play.
  • Added layout import and export for faster setup sharing and backup.

Improved

  • Improved the settings window layout for Frames, Click Casting, and Profiles.
  • Improved binding setup with validation feedback and action previews.
  • Improved live frame customization with persistent sizing and better group spacing control.
  • Improved profile management with quick reset options for theme, layout, skin, and bindings.

Fixed

  • Fixed several settings-panel overlap and sizing issues.
  • Fixed import and export text boxes causing input problems.
  • Fixed status labels like YOU and MISS appearing inside the health bar area.
  • Fixed live frame size changes being lost after refresh.