# Nem: Healer Alerts — Changelog

---

## v12.0.24 — May 9, 2026

### Restoration Druid, Mistweaver Monk, Discipline Priest — Alert Layout Standardized

Every alert across the three fully-supported specs now sits on a uniform 25-pixel grid, anchored to the same top position. Previously each spec had its own spacing — Druid ran 20-46 px between rows because slots were reserved for countdown numbers, while Monk and Disc used 30 px. Now the suite is consistent: alerts stack tightly and predictably, and adding or removing an alert from any spec slides the rest cleanly into place.

As part of this, the Lifebloom Expiring and Soul of the Forest countdown numbers have been removed from Restoration Druid. Neither the other Druid alerts nor any alert on Mistweaver or Discipline shipped a countdown, so the two timer rows were the only thing breaking the visual rhythm of the stack. If you'd previously toggled the LB or SOTF timer off in the saved variables, that setting is quietly cleared on first load — the timers no longer exist either way.

Discipline Priest's three alerts have also been reordered top-to-bottom: Spread Atonement, Cast Void Shield, Power Word: Shield Ready. Atonement coverage is the moment-to-moment decision a Disc priest makes most often, so it now occupies the top slot with the other specs' top-priority alerts (Tree of Life, Renewing Mist).

### Discipline Priest — Phantom Alerts on Combat Re-entry Fixed

The "Power Word: Shield Ready" and "Cast Void Shield" alerts no longer fire spuriously when you re-enter combat with PWS or VS already established. Previously, if PWS was on cooldown when combat ended and the cooldown expired during the downtime, the alert would replay the moment combat started again — even though nothing had actually changed in your rotation. Same problem if a Void Shield proc was sitting up across a combat boundary. The alerts now only fire when the readiness or proc state genuinely transitions *during* a fight; opener alerts on a fresh pull (PWS never cast, no carry-over state) still play normally.

### Sounds — Spec-Specific Voice Sounds Added

The bundled sound library has been overhauled with new spec-specific voice cues. Restoration Druid, Mistweaver Monk, and Discipline Priest now ship with dedicated sounds for each of their alerts — for example, the Lifebloom Expiring alert plays a "Lifebloom Expiring" cue by default instead of a generic chime. Defaults for all three specs have been updated to use these new sounds out of the box. **On first load after this update, your saved sound choices for Restoration Druid, Mistweaver Monk, and Discipline Priest will be reset once** so you pick up the new spec-specific defaults — if you'd customized any of those alerts to a different sound previously, you'll need to set it again from the dropdown.

The sound dropdown now groups the new cues under their class, e.g. **Druid: Lifebloom Expiring**, **Monk: Renewing Mist**, **Priest: Void Shield**. Several extra sounds (Druid: Swiftmend, Druid: Tree of Life, Priest: Atonement, etc.) are registered and available to pick even though no alert defaults to them yet — you can wire them up to any alert via the Sound dropdown.

The four generic sounds (Bell, Lamp, Ping, Redfox) remain available for any spec that hasn't yet had voice cues added (Holy Paladin, Holy Priest, Restoration Shaman, Preservation Evoker).

**What changed under the hood:**

- **BUNDLED_SOUNDS table cleaned up.** Eleven orphan registrations that pointed to .ogg files which never shipped (Bleeper, Drums, HeartbeatSingle, MetalGearSpotted, OhNo, RobotBlip, SharpPunch, Shotgun, Sonar, Sonarr, WaterDrop) have been removed.
- **GetSoundPath fallback fixed.** Previously fell back to `RobotBlip` which wasn't an actual file on disk — meaning any unresolved sound name silently played nothing. Now falls back to `Bell`, which always exists.

### All Specs — Alerts Now Suppressed When Solo

Healer alerts and raid-frame glows are now silent unless you're in a party or raid. Fighting a few mobs solo as a healer no longer triggers any alert, glow, or sound — the addon stays out of your way until there's actually someone to heal. The instant you join (or leave) a group, alerts pick up (or clear) automatically. Test mode still works while solo so you can preview alerts and position the frame as before.

### Options Panel — Layout & Theming Polish

A pass over the options panel cleaning up alignment, spacing, and theming inconsistencies. Pure visual polish — no behavior changes.

- **Display section reorganized.** The **Alert Font** dropdown has moved from Alert Options up to the Display section, sitting directly beneath Font Size and lining up with the Sound dropdowns. The redundant **Alert Text Scale** slider has been removed entirely — Font Size already does the same job. Existing font choices are preserved; any saved Scale value is quietly cleared on first load.
- **Class-colored text inputs.** Every text input on the panel now renders in your active spec's class color, matching the slider value field, section borders, and scrollbar thumb. Spec-helper numeric inputs and the alert text override boxes were previously plain white — they now retint with the rest of the panel on spec change.
- **Bottom button alignment.** The four buttons (Test, Unlock Frame, Center Position, Restore Defaults) are now uniform width and remain perfectly centered as a group.
- **Scrollbar flush with section bottom.** When scrolled all the way down, the bottom of the Alert Options box now lines up exactly with the scrollbar track — the previous ~20px gap is gone.
- **Right-column alignment.** Font Size slider and Alert Font label/dropdown now line up cleanly with the right-column alert checkboxes below them.
- **Numeric input centering.** Labels and edit boxes on every numeric input in Alert Options now share a vertical center line, matching the Nem: Pet Alerts look.
- **Tighter Alert Options spacing.** The oversized gap between numeric inputs and alert text fields has been tightened, controlled by a single shared value so all current and future specs space consistently.

### Discipline Priest — Full Rewrite (Event-Driven, CUF Glows)

Discipline Priest has been rebuilt from the ground up to match the architecture of Mistweaver Monk and Restoration Druid. All polling and background tickers are gone. Every alert reacts to in-game events as they happen.

**Raid frame glows:**

- **Void Shield (highest priority).** Any group member with an active Void Shield absorb gets a purple glow. Suppresses the Atonement glow while present.
- **Atonement.** Any group member with your Atonement gets a glow. Coverage threshold is configurable per-mode (dungeons vs. raids), same system as Mistweaver's Renewing Mist counter.

**Text alerts:**

- **Atonement coverage low.** Fires when your active Atonement count drops below your configured threshold.
- **Cast Void Shield.** Fires when Master the Darkness procs, signalling your next PW:S will become a Void Shield. Won't appear while PW:S is on cooldown — VS requires a castable PW:S, so showing it during the CD serves no purpose.
- **Power Word: Shield ready.** Fires when PW:S is off cooldown. Suppressed while Cast Void Shield is active — the two alerts are mutually exclusive.

When either VS or PW:S is cast, the PW:S ready alert holds off for the full haste-modified cooldown before returning. Works correctly for both self and group-target casts.

**All alerts are combat-only.**

### Discipline Priest — Performance

Added `/nha perf on`, `/nha perf off`, and `/nha perf` (mid-fight peek), matching Mistweaver Monk and Restoration Druid. Block breakdown: ATON / VS / PWS / END. CUF glow attribution: vs / aton / none / disabled.

### Discipline Priest — Bug Fixes

- **Crash on cooldown field access in M+.** WoW's cooldown API returns secret values in M+ and rated PvP, causing a Lua error that fired 160 times per pull and broke all alerts. Cooldown detection is now fully event-driven.
- **Crash on haste read in M+.** `UnitSpellHaste()` returns a secret value in tainted contexts. Now pcall-protected with a 7.5s baseline fallback.
- **PW:S alert not clearing after cast.** The ready alert was persisting because the crash above prevented the cooldown timer from starting. Both VS and PW:S casts now clear the alert and start the timer immediately.
- **PW:S alert firing immediately after casting Void Shield on a group member.** VS on yourself cleared correctly; VS on a group member did not. VS consumption is now detected via the PW:S texture reverting, which works for both cast targets.
- **PW:S alert firing while the spell was still on cooldown.** Talents like Borrowed Time weren't reflected in the haste-calculated timer, so it could expire early. The cooldown duration is now read directly from the game API, which includes all talent and set-bonus modifiers.
- **Lua error comparing a protected cooldown value in M+.** A `> 0` check on a protected API value threw in competitive content. The comparison is now taint-safe.
- **Cast Void Shield alert missing procs in raid.** Talent or set-bonus changes that shortened PW:S's cooldown between casts weren't always picked up, causing silent proc suppression. The cooldown now self-corrects against the live API on every cast, matching Druid's Wild Growth tracker. Falls back to the event-driven tracker in tainted contexts (M+ / rated PvP).

### All Specs — Source Cleanup

Repo-wide pass through every Lua file to strip narrative comments, restated-obvious notes, and design-essay blocks. Section dividers, file headers, and concise inline ID/hex tags are preserved; everything else moved to the shared knowledge file with proper context. No behavior changes — comment-only.

### Discipline Priest — PW:S Cooldown Prediction

The "Power Word: Shield Ready" alert now fires accurately for Oracle Disc Priests in Mythic+. Two things were wrong before: the addon assumed the base 7.5s cooldown for everyone and ignored the **Waste No Time** talent's 1.5s reduction, and in M+ the WoW haste API returns a tainted "secret value" while in combat — making the addon's haste calculation fall through to 0%. With ~10% haste and Waste No Time taken, the alert was firing roughly half a second late on every PW:S cast. Both are fixed.

Talent state is detected on login, spec change, and any talent edit, with a deferred re-check to cover zone-transition timing where the talent API hasn't finished populating when `PLAYER_ENTERING_WORLD` fires. Haste is cached from a clean read and falls back to the cache when the live read is tainted, so the prediction stays correct throughout an M+ run. Non-Oracle Disc players see no change.

A second fix in the same area: Cast Void Shield could pop briefly while PW:S was still on cooldown right after a cast — the live cooldown read sometimes reports "ready" before WoW's internal cooldown registers. The cooldown sweep now defers to an active timer instead of overriding it.

Trade-off on the cached haste: mid-combat haste changes (Bloodlust, trinket procs) won't be reflected until the next clean read. The error window is bounded to roughly the difference between equipped and buffed haste, and is the same staleness most Disc CD trackers accept.

**What changed under the hood:**

- **`CheckWasteNoTimeTalent()`** uses `IsPlayerSpell(440681)` as the primary detection path, with `C_ClassTalents.GetActiveConfigID()` → `C_Traits.GetNodeInfo(...)` walk (verified via `activeEntry.entryID` with `definitionID → spellID` fallback) retained as a fallback. Re-runs on `PLAYER_ENTERING_WORLD`, `PLAYER_TALENT_UPDATE`, `PLAYER_SPECIALIZATION_CHANGED`, and `TRAIT_CONFIG_UPDATED`, with a 0.5s deferred re-check on each to cover late-arriving talent data.
- **`hasWasteNoTimeTalent` and `lastKnownHastePct` survive `ClearAllState`.** These are player metadata, not runtime state — they were being wiped every time the solo gate fired, which broke prediction the moment the player left a dungeon. They now persist the same way Druid's Early Spring and set-bonus flags do.
- **`ComputePWSCooldown`** computes `effectiveBase = 7.5 - (hasWNT and 1.5 or 0)` and divides by `1 + haste/100`. Haste read is pcall + secret-value guarded on `UnitSpellHaste`, with `GetHaste()` fallthrough and the cached value as a last resort.
- **`GetPWSCooldownDuration` priority:** live `C_Spell.GetSpellCooldown` (real countdown when on CD) → `ComputePWSCooldown` (talent + current haste) → `pwsKnownCD` cache as last-resort defensive fallback.
- **`/nha debug`** now prints `hasWasteNoTimeTalent`, `lastKnownHastePct`, and the current `instanceType` so all three are verifiable in-game.

---

## v12.0.23 — May 3, 2026

### Restoration Druid — Full Ticker Elimination

Restoration Druid is now fully event-driven, matching the architecture improvements made to Mistweaver Monk in v12.0.22. The 0.25s background polling ticker has been removed entirely.

### Restoration Druid — Soul of the Forest Raid Frame Glows Reworked

The SOTF boosted Rejuvenation and Germination raid frame glows have been rebuilt from scratch. In practice, the previous implementation only glowed one target at a time — if you spent three SOTF procs on different group members, only the most recent one would show a glow. All three frames now glow simultaneously and independently for the full duration of each buff.

**What's fixed:**

- **Multiple targets now glow at the same time.** Spending SOTF on several group members in a row correctly lights up all of their frames at once.
- **False glows eliminated.** Frames could glow immediately on a SOTF proc, before casting a Rejuv or Germination. Fixed.
- **Glows clear properly between combat encounters.** When you leave combat, all SOTF glows clear immediately. If you re-enter combat and the empowered Rejuv or Germination is still ticking on a target, the glow comes back automatically.
- **Fixed a crash that was breaking all alerts.** A code ordering issue in the Lifebloom glow system was causing a startup error that silently disabled the entire Druid module. No alerts or sounds would fire at all until a `/reload`. This is fixed.

### Restoration Druid — Lifebloom Raid Frame Glow Improvements

The Lifebloom pandemic glow (the border that lights up when your Lifebloom is about to expire) now correctly finds the right raid frame even when the target is also your current target or focus. Previously it could silently fail to glow in those situations.

### Restoration Druid — Performance

Swiftmend casts now trigger one alert check instead of three. The two extra checks fired at 0.1s and 0.3s after every Swiftmend and were redundant — WoW's own buff events already handle the same job. No visible change to alert timing.

**What changed under the hood:**

- **Lifebloom pandemic detection** no longer polls every 0.25s. Instead, when Lifebloom is applied or refreshed, the addon calculates exactly when it will enter the pandemic window and sets a precise one-shot timer for that moment. The glow fires at the right time with no wasted work between casts.
- **Abundance (Rejuv/Germination count)** is now tracked in real time via buff events — the same approach Mistweaver uses for Renewing Mist coverage. No group scanning happens during Evaluate; the counter updates the instant a Rejuv or Germination is applied or expires on any group member.
- **Raid frame glows** now update on the next game frame after a buff change, via the same frame-boundary one-shot system introduced for Monk. No polling.
- **SOTF buff detection** moved to a live event cache. Previously a WoW API call on every Evaluate tick — ~0.175ms per call, over 500ms across a full encounter. Now reads from a buff-event cache, near-zero per tick.

### Restoration Druid — Bug Fixes

- **Abundance alert firing too early.** The Rejuv/Germination counter was inflated if your target or focus was also a party member — the same player counted twice. Fixed by tracking canonical group tokens only.
- **Wild Growth alert missing at combat start.** The alert appeared correctly once WG had been used at least once, but was silent on the combat opener when WG was already off cooldown. The sound now plays correctly at pull when WG is ready to use.

---

## v12.0.22 — May 2, 2026

### Mistweaver Monk — Major Performance Improvements

Removed background polling entirely from the Mistweaver module. The addon no longer runs a repeating check every 0.25 seconds — every detection now reacts to in-game events as they happen. In practical terms: zero idle CPU cost between pulls, and noticeably less CPU impact during heavy combat.

**Soothing Mist changes:**
- The addon now detects your Soothing Mist channel target the moment you start casting, via WoW's spell cast events. Mouseover macro target switches are handled correctly — if you retarget mid-channel, the old target is released and the new one is picked up after a brief delay.
- The Enveloping Mist alert clears the instant EM lands on your target, rather than waiting for the next evaluation cycle.

**Raid frame glows:**
- Raid frame glow updates no longer run on a timer. Buff changes trigger a deferred update that fires on the next game frame instead. Multiple buff changes on the same frame within one render frame are collapsed into a single update pass — same visual result, less CPU work.

**Other removals:**
- Removed a background Renewing Mist tracking system that was carrying dead code since v12.0.20 and doing work with no visible effect.

**Measured CPU results (20-person raid):**

| | Before | After |
|---|---|---|
| Average CPU | 3.48% | **0.40%** |
| Encounter CPU | 6.07% | **5.33%** |
| Peak CPU | 21.45% | **13.92%** |

### New: `/nha env` command

Snapshot diagnostic for the Enveloping Mist alert. If the alert is misbehaving, run this command and check the output — it shows your active SM target, whether the EM check passed, and current alert state.

---

## v12.0.21 — May 1, 2026

### Mistweaver Monk — Enveloping Mist Raid Frame Glow

Enveloping Mist now lights up raid frames the same way Renewing Mist already did. Priority stacking: if a unit has both EM and RM, the frame shows the EM color. Let EM expire and it falls back to the RM color.

| Priority | Buff | Color |
|---|---|---|
| 1 | Enveloping Mist | Pale yellow |
| 2 | Renewing Mist | Mint green |

### Mistweaver Monk — Enveloping Mist Alert Noise Reduction

The "missing EM on Soothing Mist target" alert used to fire during quick half-second spot heals, which created unnecessary noise in raid. It now requires you to be on the same target for **3 seconds** before the alert fires. Quick taps stay silent. Switching targets mid-channel resets the timer cleanly.

### Mistweaver Monk — Performance

Several CPU improvements that compound into a meaningful reduction in Mistweaver's footprint:

- **Soothing Mist target caching** — instead of scanning all group members every tick to find your channel target, the addon remembers the target and validates it cheaply. Cache clears automatically on channel end or retarget.
- **Renewing Mist scan rate reduced** — the RM coverage check runs 20% less often. Alert latency stays well under a second, so you won't notice.
- **Batched raid frame refreshes** — multiple buff changes for the same frame now batch into one update per 0.25 seconds, eliminating the CPU spikes that could occur during heavy pulls.
- **Out-of-combat scanning disabled** — the addon no longer processes food, flasks, and world buffs applied while sitting in the raid lobby waiting for a pull. Scanning resumes on combat enter with a fresh sweep, so pre-applied auras still light up the moment the pull starts.

### New: `/nha perf` command (Mistweaver)

Performance measurement tool, previously only available for Resto Druid. Same usage: `/nha perf on` to start, `/nha perf` to peek mid-fight, `/nha perf off` to stop and print the report.

---

## v12.0.20 — April 28, 2026

### All Specs — Individual Buff Icon Glows Removed

A WoW 12.0.5 patch broke the ability to glow individual buff icons on default raid and party frames. Since that patch, per-icon glows were only working on your Target and Focus frames — not where you're actually watching during a pull. This update removes the broken per-icon glow system entirely.

The **"Glow Raid Frames"** toggle in the options panel replaces the old "Icon Glow" checkbox, and points to the whole-frame border glow that actually works on default Blizzard raid frames. If you had icon glows disabled before this update, the new setting carries that preference forward automatically.

**Removed per-spec icon glows:**
- Mistweaver Monk — Soothing Mist icon glow, Enveloping Mist icon glow
- Resto Druid — Empowered Regrowth icon glow (and the `/nha trace` debug command)
- Disc Priest — Atonement icon glow, Void Shield icon glow

**What stays:**
- Resto Druid — Lifebloom pandemic glow + Soul of the Forest boosted Rejuv/Germination glow on raid frames
- Mistweaver Monk — Renewing Mist full-duration glow on raid frames

### Restoration Druid — Bug Fix

Fixed a Lua error that was spamming ~13,000 times during M+ runs. Caused by WoW's secret value restrictions in dungeons — certain aura data looks readable but crashes when accessed. No gameplay impact; the error spam is gone.

### Restoration Druid — Brighter Alert Colors

All six Druid alert colors updated to brighter neon variants for better screen visibility.

| Alert | Old Color | New Color |
|---|---|---|
| Lifebloom Expiring | `#24A148` | `#00FF66` |
| Cast Lifebloom | `#24A148` | `#00FF66` |
| Soul of the Forest | `#00E5C0` | `#00FFE5` |
| Wild Growth Ready | `#A6E22E` | `#B6FF00` |
| Reforestation | `#3498DB` | `#00BFFF` |
| Abundance | `#FFD100` | `#FFF200` |

### Mistweaver Monk — Performance

Same performance improvements from the Resto Druid update now applied to Mistweaver. The Renewing Mist coverage check previously scanned every group member every tick regardless of result. It now stops early once it has enough RMs to clear the threshold, and caches the result between checks. CPU cost in raid drops significantly.

---

## v12.0.19 — April 26, 2026

### Restoration Druid — Raid Frame Glows Return

Lifebloom and Soul of the Forest glows now show up on **default Blizzard raid and party frames**. Since patch 12.0.5 these glows only worked on Target and Focus frames. Two conditions are supported:

- **Lifebloom in its pandemic window** — green border glow
- **Rejuvenation or Germination boosted by Soul of the Forest** — cyan border glow

If both conditions apply to the same unit, Lifebloom takes priority.

The glow is a thick, animated border around the entire raid frame — different from the per-icon glow that used to appear on Target/Focus, but this is the only option that works on default raid frames after Blizzard's 12.0.5 changes. If you were using the `LifebloomGlow` addon to fill this gap, you can remove it — this update covers the same case and adds SOTF detection on top.

**New: `/nha cufglow`** — diagnostic command if a glow doesn't appear when expected. Prints hook status, tracked frames, and what auras the addon can see on each unit.

**Bug fixes:**
- Fixed the first Lifebloom cast after a `/reload` not glowing at pandemic. Subsequent casts worked fine, but the very first one of a session would silently miss.
- Fixed Soul of the Forest boosted Rejuv/Germination never glowing any raid frames.
- Fixed a Lua error burst (~23 errors) after Wild Growth casts in M+.

### Restoration Druid — Performance

Major CPU reduction for Resto Druid. The addon was using significantly more CPU than necessary in raid, enough to cause visible stutter on heavy pulls. After this update it uses roughly **8× less CPU** and the stutter is gone.

**Bug fixes:**
- Fixed a Lua error when running `/nha debug` while in a chat window, M+, or arena.
- Fixed a Lua error that could fire repeatedly while targeting a boss in raid.

**New: `/nha perf`** — measures how much work the addon is doing in combat. Run `/nha perf on` at pull, then `/nha perf off` after the fight to see a report.

---

## v12.0.18 — April 25, 2026

### Internal Cleanup — No Gameplay Changes

Behind-the-scenes refactor to bring Nem: Healer Alerts and its sister addon Nem: Pet Alerts into alignment. Same alerts, same triggers, same sounds, same display. This makes future maintenance and bug fixes cheaper across both addons.

**Small visible changes:**
- The login greeting message ("Loaded. Type /nha for options.") has been removed — the addon loads silently. Use `/nha status` to check state.
- Spec-switch chat messages ("Alerts paused" / "Alerts active") removed, for consistency with Nem: Pet Alerts.
- `/nha debug` now prints class, active spec, enabled state, group status, and glow hook state.
- If a sound is enabled but the requested sound file is missing, the addon now falls back to playing the bundled RobotBlip sound instead of playing nothing.

---

## v12.0.17 — April 21, 2026

### Bug Fix — All Specs Broken in 12.0.5

A WoW 12.0.5 patch removed an internal Blizzard function the addon was hooking into at login. This caused a crash at startup that left the addon in a broken state for **all specs**, showing "Spec Not Supported" in the options panel even on supported healers. Fixed.

---

## v12.0.16 — April 19, 2026

### Mistweaver Monk — Jade Statue Alerts Removed

After extensive live testing, the two Jade Serpent Statue alerts ("Place Jade Statue" and "Statue Idle") have been removed. WoW's API restrictions in M+ combat made both alerts unreliable — the game blocks access to the data needed to detect statue placement and statue activity in M+, causing false positives even when the statue was working correctly. The alerts were producing more noise than signal and have been cut.

The remaining Mistweaver module is now focused entirely on what works reliably: Spread Renewing Mist and Enveloping Mist alerts, with raid-frame and icon glows for RM, EM, and your active Soothing Mist channel.

### Mistweaver Monk — Soothing Mist Icon Glow (New)

A new icon glow appears on buff frames while your Soothing Mist channel is active on a target — a clean visual indicator of your current SM target for the full duration of the channel.

### Mistweaver Monk — Renewing Mist Threshold Options

Two new inputs in the options panel let you set how many Renewing Mists you want active before the "low coverage" alert clears:

- **Target (Party)** — for dungeons, default 2
- **Target (Raid)** — for raid, default 4

Changes take effect immediately without a reload.

---

## v12.0.15 — April 18, 2026

### Options Panel — Alert Options Section (New)

A new fourth section in the options panel — **Alert Options** — consolidates spec-specific settings in one place:

- **Font picker** moved here from the Display section.
- **Spec-specific options** now live here with a proper layout (previously crammed into the right column of the Display section).
- **Alert text editors** — every alert has an editable text box. Changes apply live. Clearing a box resets it to the built-in default text. Saved per character.
- **Restore Defaults button** — resets all alert colors, texts, font, scale, and frame position back to built-in defaults.

**Reset Position** renamed to **Center Position**.

### Restoration Druid — Alert Options

- Lifebloom timer and SOTF timer checkboxes now sit on a single row.
- **Abundance Count** is now user-configurable (range 7–12, default 7). Controls how many Rejuvs + Germinations are required before the Abundance alert fires.
- Alert text editors available for all six Druid alerts.

### Restoration Druid — Sound Changes

- Wild Growth Ready: Lamp → **Redfox**
- Abundance (Cast Regrowth): Ping → **Lamp**
- Lifebloom Expiring (Bell) and Soul of the Forest (Ping) unchanged

---

## v12.0.14 — April 18, 2026

### Mistweaver Monk — Cleanup

Removed two early-development alerts that weren't working well in practice:

- **Zen Spheres** alert removed
- **Shielun's Appeal** stack counter removed

Default sounds adjusted: Enveloping Mist → Bell; all Jade Statue sounds irrelevant (alerts removed in v12.0.16).

---

## v12.0.13 — April 18, 2026

### Mistweaver Monk — Bug Fixes

- **Fixed chat spam** — the addon was printing debug messages to chat on every evaluation tick during combat. Removed.
- **Fixed false "Place Jade Statue" alert in M+** — WoW's M+ API restrictions were causing the addon to lose track of a correctly-placed statue, then re-alert incorrectly. Fixed by preserving the known placement state set by the cast event rather than overriding it with a tainted scan result.

---

## v12.0.12 — April 18, 2026

### Restoration Druid — New Alerts

**Cast Lifebloom** — fires in combat when no group member has your Lifebloom active. Companions the existing Lifebloom Expiring alert: Expiring tells you it's about to fall off, Cast Lifebloom tells you it's already gone. The two alerts share the same screen position and are mutually exclusive — only one shows at a time.

**Abundance: Cast Regrowth** — fires when you have the Abundance talent and your combined Rejuvenation + Germination count across the group reaches 7 or more. At that point, Abundance makes Regrowth cheaper and more likely to crit. Won't appear if you haven't specced Abundance.

**Wild Growth — Smart Cooldown Tracking** — the Wild Growth Ready alert now accounts for your actual talent build and gear:
- **Early Spring** hero talent shortens the cooldown and is detected automatically.
- **Sprouts of the Luminous Bloom 4-piece tier set** shortens it further in PvE, or by a lesser amount in arenas.
- When cooldown data is directly available (outside M+/rated content), the addon uses the real value.

Gear and talent changes are picked up in real time — no reload needed.

### Restoration Druid — Minor Text Changes

- Reforestation alert: `* TREE OF LIFE NEXT SWIFTMEND *` → `* TREE: NEXT SWIFTMEND *`
- Abundance alert: `* ABUNDANCE - CAST REGROWTH *` → `* ABUNDANCE: CAST REGROWTH *`
- Cast Lifebloom no longer plays a sound by default.

### Options Panel — Layout Fixes

- Fixed the right-side panel being clipped off-screen in the WoW Settings UI.
- Removed redundant slider labels and tightened up spacing throughout.

---

## v12.0.11 — April 14, 2026

### Mistweaver Monk — Jade Serpent Statue Alerts (New)

Two new alerts for Mistweaver Monks with the Jade Serpent Statue talent:

- **Place Jade Statue** — fires in combat when no statue is placed. Catches forgotten placements after dying, rezoning, or the 15-minute duration expiring.
- **Statue Out of Range** — fires when you're channeling Soothing Mist but the statue isn't healing your target, indicating a line-of-sight or range issue. Includes a 0.5s grace period at channel start.

Both alerts only appear if you have the Jade Serpent Statue talent selected. Won't fire if you've chosen Jade Infusion instead.

> **Note:** These alerts were removed in v12.0.16 due to unreliable detection in M+ combat.

### Spec Availability

Holy Priest, Holy Paladin, Preservation Evoker, and Restoration Shaman have been temporarily disabled until their implementation is complete. Previously these spec files loaded but did nothing, causing user confusion.

---

## v12.0.10 — April 12, 2026

### Options Panel

- Non-healer specs (Windwalker, Shadow Priest, etc.) now show a clean "Spec Not Supported" message instead of a blank or broken panel.
- All unsupported specs show the same unified message regardless of class.

---

## v12.0.9 — April 10, 2026

### Rename: Nem: HoT Alerts → Nem: Healer Alerts

The addon has been renamed to better reflect what it actually does — it tracks far more than just Heal over Time effects (beacons, procs, cooldowns, shields, and more). No gameplay changes.

**Your saved settings carry over automatically.** No action needed.

New slash command: `/healeralerts` (old `/hotalerts` still works as a legacy alias).

### All Healer Specs Now Supported

**Discipline Priest (new)**
- Atonement Expiring — alerts when your soonest Atonement is about to fall off, with countdown timer
- Cast Void Shield — alerts when Master the Darkness procs

**Holy Priest (new)**
- Prayer of Mending — alerts when you have no Prayer of Mending bouncing on any group member

**Preservation Evoker (new)**
- Reversion Low — alerts when your Reversion coverage drops below threshold (configurable for dungeons vs. raids)

**Mistweaver Monk (new)**
- Renewing Mist Low — alerts when RM coverage drops below threshold (configurable for dungeons vs. raids)
- Enveloping Mist — alerts when you're channeling Soothing Mist on a target that doesn't have Enveloping Mist

**Holy Paladin (new)**
- Beacon Missing — alerts when no Beacon variant is active on any group member
- Eternal Flame — optional low-coverage alert (off by default)

**Restoration Shaman (new)**
- Earth Shield Missing — alerts when Earth Shield isn't active on anyone
- Riptide Low — alerts when Riptide coverage drops below threshold

**Architecture:** each healer spec is now a fully independent file. Adding or changing one spec can never affect another. Druid players will notice no difference from v12.0.8.

---

## v12.0.8 — April 6, 2026

### Bug Fixes

- Alerts no longer fire when playing non-Restoration Druid specs (Balance, Feral, Guardian)
- Switching away from Restoration now immediately clears all alerts and glows
- Zone transitions in an off-spec no longer cause stale alerts to appear

---

## v12.0.7 — April 5, 2026

### Options Panel

- Panel now themes dynamically per healer class (Druid orange, Priest white, Evoker teal, Shaman blue, Monk green, Paladin pink)
- Non-healer classes see a clear "Class Not Supported" overlay listing what is supported

---

## v12.0.6 — April 5, 2026

### Bug Fix

Fixed a crash in M+ and rated content caused by a WoW API change in patch 12.0.5.

---

## v12.0.5 — April 4, 2026

### New Features

**Wild Growth Ready alert** — shows when Wild Growth is off cooldown (combat only). Falls back to cast tracking in M+ and rated content where cooldown data is restricted.

**Reforestation / Tree of Life alert** — shows after your 3rd Swiftmend, reminding you the next one will proc Tree of Life. Hides automatically if you unspec the talent.

**Empowered Regrowth glow** — Regrowth icons on party frames glow when cast with Soul of the Forest active. Clears when overwritten by a normal Regrowth.

Alert display order updated: Tree of Life (top) → Wild Growth → Soul of the Forest → Lifebloom (bottom).

SOTF alert text changed from "CAST REJUV" to "SOUL OF THE FOREST."

Two new bundled sounds: Lamp and Redfox (15 total). All four alerts now have individual color pickers.

### Bug Fixes

- Numerous fixes for Wild Growth cooldown tracking, Reforestation talent detection, and Empowered Regrowth glow reliability
- Death now properly clears all alert state
- Test mode now shows all four alerts

---

## v12.0.4 — April 2, 2026

### Bug Fixes

- Test mode countdown timers now display correctly
- Options panel spacing fixed to match Nem: Pet Alerts layout

---

## v12.0.3 — April 2, 2026

### Performance

Major CPU reduction for raids and battlegrounds. Most noticeable when joining a 40-player group.

### Bug Fixes

- SOTF alert no longer gets stuck when the proc expires without casting
- Lifebloom icon glow now fires correctly when targeting an enemy
- Background ticker no longer runs after disabling the addon
- SOTF alert state clears properly when the alert is toggled off mid-session
- Fixed a crash during startup if glow cleanup ran before glow tables were created
- Alerts clear on death and re-evaluate on resurrect
- SOTF alert clears immediately on Rejuv cast
- Bell and Ping sounds now work without LibSharedMedia installed

---

## v12.0.2 — April 1, 2026

### Bug Fixes

- All alerts and sounds now work reliably in M+ and rated combat
- SOTF detection falls back to cast tracking when the aura API is restricted in combat
- SOTF timer starts immediately on Swiftmend cast
- SOTF alert persists when entering combat with the proc already active

### Slash Commands

Added: `/nha on`, `/nha off`, `/nha toggle`, `/nha status`, `/nha version`, `/nha reset`, `/nha unlock`

All commands also available via `/healeralerts` (and `/hotalerts` as a legacy alias).

---

## v12.0.1 — March 31, 2026

**Initial release** of Nem: Healer Alerts (originally Nem: HoT Alerts).

Restoration Druid support: Lifebloom pandemic tracking and Soul of the Forest proc alerts, with countdown timers, icon glows, configurable sounds, and a full options panel. Part of the Nem addon suite.
