Healer's Serenity

Healer's Serenity is designed to streamline your healing experience in World of Warcraft. Featuring an intuitive bar positioned conveniently near the player's interface, this addon allows quick access to all your essential healing spells.

File Details

HealersSerenity - V2.4.1

  • R
  • Nov 28, 2025
  • 643.04 KB
  • 173
  • 11.2.7+2
  • Retail

File Name

HealersSerenity-V2.4.1.zip

Supported Versions

  • 11.2.7
  • 11.2.5
  • 11.2.0

Healer's Serenity

We are proud to release version 2.4.1 of Healer's Serenity, featuring critical stability fixes and enhanced frame sorting for raid groups!

Bug Fixes

  • Fixed Unit Frame Reassignment Issue
    Resolved a critical bug where unit frames would stop responding to clicks after party/raid members left and unit IDs were reassigned (e.g., when party1 leaves, party2 becomes party1). Frames now correctly update their internal state drivers when unit IDs change, ensuring continuous healing functionality even during roster changes.

  • Enhanced Combat Lockdown Handling
    StateDriver updates are now properly deferred until out of combat to prevent potential taint issues. Button unit attributes update immediately for instant targeting, while state driver re-registration safely waits for combat to end.

  • Prevented Permanent Frame Update Lockup
    Implemented error protection using pcall wrapper around UpdateFrames to guarantee the concurrency guard flag is always reset, even if errors occur during frame updates. This prevents the addon from becoming permanently locked and requiring /reload to recover.

What's New

  • Automatic Button Unit Repair System
    Added self-healing mechanism that continuously monitors and repairs button unit mismatches:

    • Periodic validation runs every 1 second during normal gameplay
    • Automatically detects when button units don't match player data IDs
    • Repairs mismatches immediately when out of combat
    • Provides user notification when repairs occur (e.g., "Auto-repaired 10 button unit mismatches")
    • Ensures healing buttons remain functional even after complex roster changes
    • Zero maintenance required - runs silently in the background
  • Smart Frame Sorting
    Frames are now intelligently sorted for easier visual tracking during raids:

    • Grouped by role: NONE → DAMAGER → TANK → HEALER
    • Within each role, sorted by unit ID (party1, party2, raid1, raid2, etc.)
    • Player frame always appears last regardless of role
    • Makes it significantly easier to locate specific players during testing and gameplay
  • Enhanced Debug Commands
    Added comprehensive debug commands to the README for troubleshooting player data and frame issues:

    • List all player IDs and names
    • Show GUID-to-ID mappings
    • Verify frame existence for specific units
    • Check WoW's unit ID against addon data
    • Validate group composition

Updated Files

  • HealersSerenityUtils.lua - Added ValidateAndRepairButtonUnits() function to PlayerStatusUpdate for periodic button validation and automatic repair
  • HealersSerenityPlayersHooks.lua - Enhanced UpdatePlayerID hook with combat-safe StateDriver updates and improved button attribute handling
  • HealersSerenityPlayersUpdateFrames.lua - Added pcall error protection wrapper, implemented role-based frame sorting with unit ID ordering
  • HealersSerenityPlayersUpdateGroupRoster.lua - Removed redundant validation logic in favor of centralized periodic repair system
  • HealersSerenityUICastButton.lua - Added UpdateStateDriver method for dynamic state driver re-registration (from v2.4.0)
  • HealersSerenityUIRezButton.lua - Added UpdateStateDriver method for resurrection button state management (from v2.4.0)
  • README.md - Added debug commands section and automatic repair system documentation
  • HealersSerenity.toc - Updated version to 2.4.1

Technical Details

Frame Reassignment Fix: When a player leaves a group, WoW automatically reassigns unit IDs (party2 becomes party1, raid25 becomes raid24, etc.). The addon now properly handles this by:

  1. Immediately updating button unit attributes for correct spell targeting
  2. Deferring StateDriver re-registration until out of combat to avoid taint
  3. Re-registering state drivers with the new unit ID to monitor correct player states

Concurrency Protection: The UpdateFrames function is now wrapped in pcall to ensure the _updatingFrames flag is always reset:

  • Prevents permanent lockup if any error occurs during frame updates
  • Logs errors to chat for visibility and debugging
  • Maintains addon functionality even after unexpected errors

Frame Sorting Logic: Frames are sorted using a multi-tier comparison function:

  1. Player frame always goes last (highest priority)
  2. Group by role with priority: NONE (1) → DAMAGER (2) → TANK (3) → HEALER (4)
  3. Within same role, sort by unit type (party before raid)
  4. Within same unit type, sort numerically (party1, party2, raid1, raid2, etc.)

Testing

Verify the fix works:

  1. Form a party or raid group
  2. Have a member leave (unit ID reassignment occurs)
  3. Confirm you can still heal the reassigned player
  4. Test during combat - buttons should work immediately, state updates after combat

Test frame sorting:

/run for guid, data in pairs(HealersSerenity.PLAYERS) do print(data.ID, data.NAME, data.ROLE) end

Check for button unit mismatches:

Use the built-in debug command:

/hs group-debug

This will show all player data IDs, button units, and highlight any mismatches.

Compatibility

  • Compatible with WoW versions 110205, 110207 (The War Within - 11.0.7)
  • Currently supports English locales (enUS, enGB)
  • Full backward compatibility with existing configurations

Thank you for your support! 💖

ko-fi