# SpellSmasher changelog

All notable addon releases. Newest first.

Public / CurseForge copy: player-facing only — no internal tools, scripts, or
dev paths.

## 4.3.97 - 2026-08-18

- CurseForge and Wago apps can find this project for updates.

## 4.3.96 - 2026-08-17

- Classic Era / TBC / MoP Set me up, Rebuild, and Import only keep spells
  you can train or talent at your level. Names that do not exist on that
  version (e.g. Sunfire on Era) are dropped. Midnight lists are unchanged.
- Learning a spell no longer rebuilds Method packs for your other classes
  on this account.

## 4.3.73 - 2026-08-15

- Same build as 4.3.72. New file number for CurseForge (avoids a duplicate
  upload).

## 4.3.72 - 2026-08-15

- **Modes do what the names say.** In order = 1 2 3 4. Priority = 1 12
  123 1234. Reverse = 1 21 321. Once = once this fight. 4x = that row
  four times in the click list. If a row is on cooldown, mash still
  fires a ready spell from the same pack.

## 4.3.71 - 2026-08-15

- **4x on a spell means it.** Priority / Reverse: higher number is tried
  first and fires when ready. In order: that many presses in a row.

## 4.3.70 - 2026-08-15

- **Priority** = first ready spell from the top of that block (skips what
  is on cooldown). **Reverse Priority** = first ready from the bottom.
  **In order** = one spell per press, top to bottom, no skip.

## 4.3.69 - 2026-08-15

- **Infernal Strike** hops at your feet (`@player`). It no longer waits for a
  mouse click.

## 4.3.68 - 2026-08-15

- **Per-version Tutorial:** Midnight stays the 10-step Match path. Classic Era,
  TBC Anniversary, and MoP Classic each have their own Set me up tour (no Match).


## 4.3.67 - 2026-08-15

- **TBC Anniversary lists:** 27 distinct ST + AoE trees (same 9 classes as Era).
  Separate lists from Era / MoP. Detects TBC Anniversary automatically.
  Gold from Icy Veins TBC Classic Anniversary (Steady Shot / Kill Command,
  Mangle (Cat), Crusader Strike, Stormstrike, Shadow Word: Death). No Match.


## 4.3.66 - 2026-08-15

- **Era + MoP gold pass:** every tree checked against Icy Veins Classic / MoP
  Classic rotations. Talent-only buttons stay on that spec (Hunter-style).
  Era: Tranq Shot on Hunters, Shadow no Holy Nova, Arms Slam, Fury Sunder,
  Demo Demonic Sacrifice, Assassination Backstab. MoP: BM Murder of Crows /
  Focus Fire order, Shadow Mind Spike + Void Shift, Enh Stormlash, MM/Surv
  talent shots.


## 4.3.65 - 2026-08-15

- **MoP Classic lists:** 34 distinct ST + AoE trees (11 classes, including Monk,
  DK, and Guardian). Separate file from Era — Era 27 trees unchanged. No Match
  (MoP is 6-tier talents, no CUk). Known-only + trainer-learn still apply.


## 4.3.64 - 2026-08-14

- **Classic trainer learn:** Method packs refresh when you train a spell, not
  only on ding. No chat spam unless the list actually changed.


## 4.3.63 - 2026-08-14

- **Classic empty list + tour:** Set me up is the first step (ST + AoE, known
  spells only). Match talents still Midnight-only. Footer stays
  Export selected / Export all / Set me up / New pack.


## 4.3.62 - 2026-08-14

- **Classic lists, no shared tables:** every Era talent tree has its own ST + AoE.
  Hunter BM / MM / Survival no longer share one list. Rogue Assassination /
  Subtlety no longer carry Combat Blade Flurry. Talent-only buttons stay on
  that tree; known-filter still drops what you have not trained.


## 4.3.61 - 2026-08-14

- **Classic known-only lists:** Set me up / Create / Rebuild keep only spells in
  your spellbook (not grey "learn later" rows). Dings refresh Method packs.
  Midnight full starters unchanged (site still does 70-90 level-legal).


## 4.3.60 - 2026-08-14

- **Classic Era lists:** Set me up / Create Method pack now build ST + AoE mash lists
  for all 9 Era classes (27 talent trees). Sources: Icy Veins Classic + Wowhead Classic.
  No Match talents (Era has no CUk loadouts). Midnight Method.gg files unchanged.


## 4.3.59 - 2026-08-14

- **Classic reduced mode:** same mash engine on MoP / TBC Anniversary / Classic Era.
  Midnight Set me up, Match talents, hero pills, and Method gold stay Midnight-only.
  Classic: Import or create an empty pack, then mash. DH / Evoker packs will not Import.
- **New-pack layout:** class chips pack with no holes, tab bar (Tutorial / Lost sequence? / Recompile) stays on the right and shrinks when the window is small, Create sits under LIST instead of sliding into the form.


## 4.3.58 - 2026-08-13

- **Lost sequence?:** Help button next to Tutorial (also `/ssm lost`). Steps to
  find a hidden pack, restore the last logout `.bak`, or Import a backup.
  Does not change saved packs.


## 4.3.57 - 2026-08-13

- **Tutorial rewrite (v3):** 10 live steps with green highlights - Set me up,
  ST/AoE pills, Match talents, keybind only. Matches the website Tutorial.


## 4.3.56 - 2026-08-13

- **Status bar spacing:** more room between helper chips and the green status
  line so the bottom box is not crammed.


## 4.3.55 - 2026-08-13

- **Status bar readable:** bottom helper box uses brand green, wraps two lines,
  and stays inside the card at any window size (no more clipped gray text).


## 4.3.54 - 2026-08-13

- **AoE targeting research:** all 322 Method/Engine aoeSteps names classified.
  Only true ground reticles get @cursor (DPS) or @player (tank/healer).
  Frozen Orb is directional (not @player/@cursor). Meteor/Blizzard/Flamestrike/
  Rain of Fire/Volley/Summon Infernal/Force of Nature included. Rebuild packs.


## 4.3.53 - 2026-08-13

- **Meteor and other DPS ground spells @cursor on ST too:** Fire Meteor lives on
  both ST and AoE Method lists. Cursor is no longer AoE-pack-only. Tanks/healers
  still @player. Rebuild both packs to refresh macros.


## 4.3.52 - 2026-08-13

- **DPS AoE ground spells use @cursor:** AoE packs on damage dealers compile
  ground-placed buttons as /cast [nochanneling,@cursor] Spell. Tanks and
  healers keep @player. Not every AoE spell (Blade Dance / Felblade stay
  normal). Rebuild the AoE pack to refresh existing lists.


## 4.3.51 - 2026-08-13

- **Set me up matches talents:** after creating the ST + AoE Method packs, runs
  the same Match talents path as the Edit button (deferred off the click).
  Out of combat only. Shared Method gold still confirms first. One tree, so
  Match runs once on the Active pack.


## 4.3.50 - 2026-08-13

- **Set me up creates two packs:** Method ST and Method AoE as separate list
  rows (not Shift, not two lists on one pack). Active follows the ST/AoE pill
  (default AoE). New pack still creates one list.


## 4.3.49 - 2026-08-13

- **Set me up:** one List-tab button creates a Method pack for this character
  (class / spec / hero / ST-AoE pill) and opens Edit. Does not spend talents.
- **Import sets Active** on the first new pack (still appends; never wipes).
- **Hide talent code:** Edit shows package ready (N chars). Copy still opens
  the Ctrl+C popup. Match + Copy unchanged.
- **Method-first Create.** Engine is labeled advanced. Pack names keep ST/AoE.
  Shift is not the ST/AoE switch (pills only).


## 4.3.48 - 2026-08-12

- **Create pack honors chips:** New pack no longer overwrites your class/spec/ST-AoE
  pick with the logged-in character. ST and AoE now load different Method lists
  on specs that have them. Edit ST/AoE rebuild prints the first spells so you
  can see the swap.


## 4.3.47 - 2026-08-12

- **ST vs AoE lists:** New pack and Edit ST/AoE chips load the matching Method
  (or Engine) order. ST = `steps`, AoE = `aoeSteps`. 15 specs share one list;
  the other 25 differ. Rebuild honors the pack's role.


## 4.3.46 - 2026-08-12

- **12.1 talent/hero verify:** all 40 specs, both hero paths, and 120 Method
  CUk keys match live 12.1 pairings. Stripped **Flamefang Pitch** from Survival
  Method + Engine mash lists (removed from the 12.1 Survival tree). Other
  deleted tree names were passives and were never mash steps. Rend stays on
  Arms (still on that spec tree). HeroPaths stamp Midnight 12.1.


## 4.3.45 - 2026-08-12

- **12.1 castable rematch:** every Method/Engine mash step checked as a
  pressable button (not a talent). Stripped **Engulf** (not in 12.1 Wowhead)
  and **Invoke Xuen** from Shado-Pan Windwalker. Void Torrent kept on
  Voidweaver only (live channel). CastGuard 0 / hero-honest 0.


## 4.3.44 - 2026-08-12

- **Method ORDERS 12.1 gold:** all 40 specs + both hero keys restamped and
  rebuilt from Method.gg playstyle pages (2026-08-12). M+ lean. Hero-honest
  (verify-hero-honest TOTAL BLEED 0). Theme `priority-orders.js` synced.
  Engine lists unchanged (still 12.0.7 solver gold).


## 4.3.43 - 2026-08-12

- **MethodLoadouts re-gold for Midnight 12.1:** scraped Method.gg `/talents`
  pages (2026-08-12). Class|Spec gold prefers Mythic+ when Method publishes it.
  **30 / 40** specs now have a distinct hero CUk (`heroExact`); the other 10 stay
  shared Class|Spec gold (`method-proxy`) until Method posts a second hero export.
  Theme `method-loadouts.js` kept in sync. Spell lists / ORDERS unchanged.


## 4.3.40 - 2026-08-11

- **ASCII-only UI text:** tooltips/status no longer use Unicode arrows/dashes
  (e.g. Copy tip ``Ctrl+C > N > Import``; WoW fonts showed tofu boxes after Ctrl+C).
  Match/Tour status strings cleaned the same way.


## 4.3.39 - 2026-08-11

- **Talent row simplified:** **Match talents** + **Copy** only. Removed More and
  advanced Best / Method / Mine / Apply buttons (handlers retired; Match covers
  package + spend + verify). Tour step 10 updated (tour v2).
- Multi-button freeze still available:
  `addon/_backup-talent-ui-multi-button-20260811-114536/`.

## 4.3.38 - 2026-08-11

- **Match talents (one button):** Edit talent row defaults to **Match talents** —
  Method package for the pack → spend on tree (existing Apply path) → **verify**
  intended package nodes via `GetNodeInfo` ranks (not raw CUk string equality).
  Status includes `Verify: N/M (pct)`. Fail → Copy popup for N → Import.
- **More:** toggles Advanced Best / Method / Mine / Apply (old multi-button row).
  Copy stays on the main row. Multi-button freeze:
  `addon/_backup-talent-ui-multi-button-20260811-114536/`.
- Research: `docs/TALENT-MATCH-ONE-BUTTON-API-RESEARCH-2026-08-11.md`.

## 4.3.37 - 2026-08-11

- **Retail 12.1 (Curse of Ula'tek) TOC:** `## Interface: 120100` (was 120007 /
  12.0.7). Compatibility bump only — no gameplay or ORDERS changes. No UnitAura
  path in this addon (12.1 aura API lockdown does not apply to mash/list flow).

## 4.3.36 - 2026-08-10

- **+ Spell inserts under the selected step** (not always at the bottom of the
  list). Selection moves to the new row. Status: `Added X under Y`.

## 4.3.35 - 2026-08-09

- **FULL castable audit (all 240 Method+Engine keys):** every step + recommended
  entry rematched against (1) 12.0 full removals, (2) confirmed passive/non-button
  redesigns, (3) high-confidence hero-exclusive gates. Not removal-list-only.
- **New strips this pass:** Clawing Shadows (Unholy — now passive); Reaper’s Mark
  off non-Deathbringer DK; Templar Strike/Slash off Herald Ret; plus any remaining
  prior-list ghosts. BM already clean of Dire Beast + Bloodshed from 4.3.34.
- **Rematch after apply: 0 illegal hits.** Report:
  `docs/FULL-CASTABLE-AUDIT-2026-08-09.md`

## 4.3.34 - 2026-08-09

- **BM pack castables: drop Dire Beast + Bloodshed.** Midnight BM no longer uses
  Dire Beast as a rotation press (talent/summon package; Rank 0 on your tree if
  not taken). Bloodshed is passive on Bestial Wrath, not a sequential cast.
  Removed from Method + Engine Beast Mastery base / Pack Leader / Dark Ranger
  `steps`, `aoeSteps`, and recommended. Prior illegal purge only hit full-spec
  removals (CotW / Kill Shot) and missed these.

## 4.3.33 - 2026-08-09

- **Static floating-button icon (stop mid-cast taint):** no more 0.4s live poll
  that chased the next mash step with `GetAttribute` + `C_Spell` while you played.
  That path was still hitting “Interface action failed because of an AddOn” /
  cast-bar secret taint ~a minute into casting even after a clean Apply.
  Floating button now shows the **list opener** only, painted on safe OOC events
  (recompile, leave combat / Once reset, bind/show, post-Apply resume). Mash
  sequence is unchanged — only the icon art is static until Blizzard’s secure
  story settles.

## 4.3.32 - 2026-08-09

- **Cast-bar taint on empty tree → starter Apply:** wiping talent loadout names then
  Apply could leave SpellSmasher on the same execution stack as
  `OverlayPlayerCastingBarFrame` (`GetTypeInfo` / secret `barType`). Fix: pause
  floating-icon poll during talent Apply; open Talents (N) and load named
  loadouts on a later frame; defer UI Refresh after Apply; pcall all `C_Spell`
  icon lookups.

## 4.3.31 - 2026-08-09

- **Spec-illegal pack purge (Method + Engine):** removed Midnight-removed castables
  still sitting in ORDERS (Blood Bonestorm/Tombstone, Balance Stellar Flare/Warrior
  of Elune, Guardian Pulverize, Resto Cenarion Ward, BM Call of the Wild/Kill Shot,
  SV Butchery/Fury of the Eagle/Kill Shot, MW Jadefire Stomp, BrM Chi Burst, Shadow
  Void Torrent, Ele Icefury/Liquid Magma/Primordial Wave, Enh Elemental Blast/Ice
  Strike, Resto Sham Cloudburst/Earthen Wall/Healing Surge, Demo Bilescourge Bombers,
  Arms Skullsplitter/Warbreaker, Fury Onslaught).
- **Hero honesty:** WW Invoke Xuen only on Conduit keys; Shadow Mind Flay: Insanity
  kept on Archon only (stripped Voidweaver + Voidweaver-primary base); Destro Immolate
  stripped from Hellcaller + Hellcaller-primary base (Wither path); Ret Hammer of Wrath
  and Arms Apex Heroic Strike dropped as always-on rotation buttons.
- Full audit: `docs/SPEC-ILLEGAL-SPELLS-AUDIT-2026-08-09.md`.

## 4.3.30 - 2026-08-09

- **Midnight hardening pass:** bar placement of the mash macro stays disabled
  (keybind only); compile reports when the list hits the click cap, helpers do not
  fit the 255-char cast, or non-cast steps are dropped.
- **Apply honesty:** shared Method talent packages ask for confirm; Partial Apply
  wording is clearer; **Mine** no longer mis-labels as Method proxy after save.
- **Spell icons / IDs:** castable spell IDs preferred for common name collisions
  (e.g. Execute, Revenge, Multi-Shot); Kill Shot / Ascendance / Metamorphosis and
  more stay class|spec aware where duals matter; Shadow Word: Madness mapped.
- **Locale mash pilot:** when possible, baked `/cast` lines use the client’s
  spellbook name (looked up from spell ID) so non-English clients cast more
  reliably. English play is unchanged.
- **Once / mash model:** list still always advances on press; Once marks used on
  the press that arms it (not only if the cast lands) — tips and guide text say so.

## 4.3.29 - 2026-08-09

- **Pack list index fix:** deleting or duplicating a pack no longer leaves
  **Active** / Edit pointing at the wrong list when other packs shift. (Example:
  Active was pack #4, delete pack #2 → Active correctly becomes #3, same pack.)
- **Mash key chat:** after binding 1–0, messages match keybind-only behavior
  (next spell on the floating button — not “icon on the bar / floating hidden”).

## 4.3.28 - 2026-08-08

- **Move the floating button easily:** green **⋮ drag** tab above the icon.
  Drag that tab (not the spell icon itself). `/ssm unlock` if locked; `/ssm show` if hidden.

## 4.3.27 - 2026-08-08

- **Stop action-bar taint at the source:** Mash key 1–0 is **keybind only** (CLICK
  secure button). No more putting a SpellSmasher macro on the action bar
  (`PlaceAction`), which was causing MultiBar `SetShown` / `SetAttribute` blocks.
  Floating button shows next spell. Silent on blocked-action events (no chat flood).
  Login clears any old bar-slot macro from earlier versions.

## 4.3.26 - 2026-08-08

- **MultiBar SetShown spam fix:** stop calling `EditMacro` on every recompile
  (only when the mash macro body actually changes). Stop walking/painting Blizzard
  action buttons on recompile. Rate-limit blocked chat to once/minute for SetShown.

## 4.3.25 - 2026-08-08

- **Apply actually spends talents again:** no longer resets the tree for a
  points-valid prep that could leave N empty. Apply purchases the package on the
  active tree first (you see nodes fill), then clones to a new named loadout when
  slots allow. Chat reports buys / new name / or “current loadout”.

## 4.3.24 - 2026-08-08

- **Cast-bar taint lockdown:** no icon polling in combat, no bar live-icon markers,
  no CooldownFrame on the mash button, no drag/enter scripts on the SecureActionButton.
  Fixes `CastingBarFrame:GetTypeInfo` tainted by SpellSmasher (including Opening casts).

## 4.3.23 - 2026-08-08

- **Bar SetShown taint fix:** next-spell bar art is no longer a child of Blizzard
  MultiBar/ActionButton frames (that blocked `MultiBarLeftButtonN:SetShown()`).
  Markers parent to UIParent and only anchor over the mash slot. Blocked-action
  chat spam is rate-limited.

## 4.3.22 - 2026-08-08

- **Apply creates a new named loadout:** each Apply makes a unique loadout in N
  (SSM Pack, SSM Pack 2, …) via ImportLoadout. Under max level uses a points-valid
  tree. If slots are full, falls back to overwriting the current tree (with a clear
  message). Copy remains for manual paste.

## 4.3.21 - 2026-08-08

- **Move ^/v fixed:** row hover layer no longer covers the reorder buttons.
- **+ Spell opens a picker:** choose from your known castable spells (searchable).
  **Pick** next to Name sets the selected row the same way. Custom typing still works.

## 4.3.20 - 2026-08-08

- **Bar icon follows sequence again:** next-spell art on the mash bar slot via a
  private overlay, updated only by the poll ticker (not on cast click). Still no
  cooldown APIs and no Blizzard icon overwrite.

## 4.3.19 - 2026-08-08

- **Hard taint lockdown (Midnight):** mash secure button has **no** click/attribute
  icon hooks, **no** cooldown API calls, **no** painting on Blizzard action buttons.
  Live next-spell icon is poll-only on the floating SSM button. Fixes cast-bar
  `GetTypeInfo` secret taint and spellbook place blocks at the source.

## 4.3.18 - 2026-08-08

- **Cast bar taint fix (Midnight):** mash no longer refreshes icons/cooldowns on the
  same frame as the cast. That was tainting `OverlayPlayerCastingBarFrame` when it
  read secret cast-bar types. Icon/CD updates are next-frame only; action-bar mixin
  hooks removed (ticker + deferred paint only).

## 4.3.17 - 2026-08-08

- **Spellbook / action-bar place no longer blocked:** mash bar icon uses a private
  overlay (does not overwrite Blizzard action-button icons). Placing a spell from
  the spellbook onto your bars no longer fights SpellSmasher for the cursor.
- Mash macro is only re-placed on an **empty** saved slot after recompile — your
  real spells on that slot stay put.

## 4.3.16 - 2026-08-08

- **SpellSmasher Engine (all specs):** Engine mash lists for every class/spec/hero
  are built for the raid full-buffs model (DPS / HPS / tank by role). Method packs
  are unchanged. Hero-honest exclusives preserved.
## 4.3.15 — 2026-08-08

- **SpellSmasher Engine (Beast Mastery pilot):** Engine BM mash lists are tuned
  for a raid full-buffs DPS model (Method packs unchanged). Other specs still
  use prior Engine gold until rolled out.
## 4.3.14 — 2026-08-08

- **Hero talent honesty labels:** Method CUk is marked **shared Class|Spec gold**
  when the hero key reuses the primary scrape (current Method data). Spell lists
  stay hero-honest; UI/tour warn to verify hero nodes in N after Apply.
- When Method publishes a distinct hero loadout string, it is treated as
  hero-exact automatically (no code change needed).

## 4.3.13 — 2026-08-08

- **Castable spell IDs preferred:** map no longer stamps passive/proc ranks onto
  steps when a castable ID is known (e.g. Chaos Strike, Blade Dance, Eye Beam).
- **CastGuard hardened:** pure passive spell IDs are not sequence steps; dual
  names (Kill Shot, Ascendance, Metamorphosis) resolve by class/spec.
- **Icons/export keep spell IDs:** pack export/import and step save stamp
  castable IDs so tooltips stay correct across classes.

## 4.3.12 — 2026-08-08

- **Safer mash cooldown swipe (Midnight):** floating button uses only the
  DurationObject cooldown path — no secret number SetCooldown fallback.
- **Shift-AoE icon matches the cast:** holding Shift in AoE shift-mode shows the
  next AoE-list spell (and its CD), not the ST list.
- **Bar mash matches key-down:** with ActionButtonUseKeyDown on, the bar macro
  clicks the same key-down relay as keybinds.

## 4.3.11 — 2026-08-08

- **Apply overwrites your current loadout** (active talent tree) at any level —
  no more new “SSM …” named loadouts from Apply. Use **Copy** for a new name
  via Blizzard Import.
- **Apply keeps your pack talent string:** auto Best/Method only when the pack
  has no talent package yet (manual/Mine strings are not overwritten).
- **Honest Apply status:** green only when talents fully committed; partial
  progress is yellow and tells you to finish in N if needed.

## 4.3.10 — 2026-08-08

- **Saved lists stay intact on recompile:** filtering passives for mash no longer
  removes those rows from your stored pack.
- **Export keeps Method talent strings on the pack:** live talents can still go
  into the export string for this character; they no longer overwrite the
  Method package saved on your list.

## 4.3.9 — 2026-08-07

- **Fix action-bar cooldown Lua error** (Midnight “Secret values… SetCooldown”):
  mash icon no longer writes raw cooldown times onto Blizzard action buttons.
  Floating mash button uses the safe cooldown path so swipe still works without
  tainting bar buttons.

## 4.3.8 — 2026-08-07

- **Hero-honest packs (all classes):** Method and Engine lists no longer mix the
  other hero tree’s signature casts onto your chosen path. Examples: Pack Leader
  has no Black Arrow; Slayer has no Demolish; Lightsmith has no Hammer of Light;
  Shado-Pan has no Celestial Conduit. Pick a hero chip → only that path’s castables.

## 4.3.7 — 2026-08-07

- **Hero-honest Pack Leader BM:** removed **Black Arrow** / **Wailing Arrow** from
  Pack Leader Method + Engine packs (those are **Dark Ranger** only — not on the
  Pack Leader hero tree). Dark Ranger BM/MM packs keep them. Sentinel MM no longer
  inherits DR arrows from the clone. Matches product rule: hero chip = that path’s
  castables, not dual-path bleed.

## 4.3.6 — 2026-08-07

- **No passives on mash lists (hardened CastGuard):**
  - Exact-name passive blocklist (Feed the Demon, Fiery Demise, hero talent passives, …).
  - Live client check `C_Spell.IsSpellPassive` / `IsPassiveSpell` when stamping IDs.
  - Rebuild/compile drop pure passives; clear wrong passive spellId stamps on castable names.
- **SpellIDMap pack-step fixes:** bulk map preferred higher IDs that were often
  passive/proc ranks sharing English names (e.g. Arcane Blast, Bear Form, Blackout Kick,
  Fiery Brand, Holy Shock). Castable player-button IDs restored for Method/Engine steps.
- Stripped passive talent names from Method `recommended` checklists (not cast steps).

## 4.3.5 — 2026-08-06

- **Kill Shot tooltip correct by spec:** BM/MM use spell **53351** (ranged weapon);
  Survival uses **320976** (main-hand / 2H melee). Map was picking the higher ID
  (Survival), so BM/MM packs showed a 2H weapon requirement. Spec-aware SpellIDMap.

## 4.3.4 — 2026-08-06

- **Fix question-mark spell icons:** name-only `C_Spell` lookup fails for most
  other-class pack spells. Added `SpellIDMap.lua` (~10k English name→spellID from
  site `spell-ids.js` + full Method/Engine step coverage). Resolve by **spell ID**
  first (always works), stamp `spellId` on new/rebuild steps, slug path fallback.
  Hover tooltips use `SetSpellByID` when ID known.

## 4.3.3 — 2026-08-06

- Fix tour crash: `ThemeishBtn` shadowed color arg `b` with the button frame, so
  `SetBackdropColor` received a Button (Blizzard Backdrop.lua SetVertexColor error).

## 4.3.2 — 2026-08-06

- **Spell icons + hover tooltips on sequence rows:** Edit list shows ability icons
  and mouseover uses Blizzard `GameTooltip:SetSpellByID` (full spell text) when the
  client knows the spell; otherwise name + macro. Subline shows cast/range when known.
- Fix: some installs still had an older folder — fully replace the SpellSmasher
  AddOns folder and `/reload` if icons/tooltips don’t appear.

## 4.3.1 — 2026-08-06

- **Spell icons on sequence rows** (Edit list): each step shows the game ability
  icon next to the name, same resolution path as the live mash-button icon
  (`C_Spell.GetSpellTexture` / `C_Spell.GetSpellInfo`, name from label or macro).
  Unknown spells fall back to the question-mark icon.

## 4.3.0 — 2026-08-06

- **Theme-parity spotlight tour** (`SSM_Tour.lua`): dim cutout + green glow on real
  controls, 12-step full happy path (List > New > Import > sample pack > Edit >
  modes > rows > helpers > Apply talents > bind/mash > done).
- Help tab = **Tutorial** (flashes until finish/skip) then quiet **Replay**; versioned
  `coachTourVersion` re-flashes when tour content bumps (like site tour-v20).
- Auto sample Method pack when list empty (out of combat) so Edit is never blank mid-tour.
- `/ssm help` and Help button open the spotlight tour. Esc / Skip / Finish mark done.

## 4.2.4 — 2026-08-06

- **Cast-only lists:** pure talent passives cannot be added, rebuilt, exported, or mashed.
  Shared `SSM_CastGuard.lua` (mirrors site `cast-guard.js`) blocks passive names, refuses to
  invent `/cast` for them, and strips them on compile/create/export. Sequences keep real
  `/cast` and `/use` abilities only.

## 4.2.3 — 2026-08-06

- **Read-only level honesty (no pack mutation):** Export status/chat notes when a matching
  pack’s stamped `characterLevel` differs from your live level — spell list and pack level
  stay as stored; level-legal lists remain on spellsmasher.com.
- New pack panel, Create/Export tooltips, Apply/Copy tips, and coach Steps 3 / 9 / 10 spell out:
  level from this character on Create; full Method/Engine starters (not auto-trimmed); talent
  Apply/Copy scale points only.

## 4.2.2 — 2026-08-05

- **Copy talents under max level (e.g. 76):** no longer pastes the full Method CUk.
  That left free points after Talents → Import. Copy now stages Method ranks + fills
  leftover free points, builds a points-valid string, then rolls back so your tree is
  unchanged. Paste that string in N → Import. Prefer **Apply** for one-click still.
- Level 90 / **Mine** (live) Copy still uses the pack/live string as before.

## 4.2.1 — 2026-08-04

- Mash key **1–0** and bottom helpers (**AA / RT / DEF / Shift**) clearly show
  the chosen / On state (green border + green-tinted button face).

## 4.2.0 — 2026-08-04 (CurseForge UI refresh)

**Extensive in-game UI update** — window chrome, art, and Edit layout overhauled
while product rules stay the same (one mash list, Apply overwrites current N
loadout, SpellSmasher brand only in public text).

### Look & feel
- **Dialog metal shell** with SpellSmasher green edge (not flat web panels)
- **Panel background art** from brand S logo (`Media/panel-bg`)
- **Header logo** (`Media/logo`) top-left; title + version + tagline **centered**
- **Classic Blizzard buttons** (`UIPanelButtonTemplate` / close button)
- Brand colors on labels (green / blue / gold), not neon web fills
- Esc closes the main window (`UISpecialFrames`)

### Edit tab — spell list
- **Parchment sequence rows** (`Media/seqbar`) with worn dark edges
- Readable black ink on paper; selected row soft green wash
- Step **numbers colored by mode** (Once = gold, In order / Rev Pri = blue,
  Priority = green) — no left accent lines
- SPELL LIST header fits width (count + selected name, truncates cleanly)
- Shorter mode legend line under the list header

### Edit tab — talents
- Full-width **loadout string** under the Method loadout hint
- Action buttons **under** the string: Best · Method · **Mine** · Apply · Copy
- “From me” renamed to **Mine**

### Media (shipped)
- `Media/logo` — header brand mark  
- `Media/panel-bg` — main window wallpaper  
- `Media/seqbar` — spell-row parchment  

### Unchanged product
- One mash list; Priority triangle / Rev Pri / Once / In order  
- Apply overwrites the loadout already selected in N (no new name)  
- Copy → Import still creates a new loadout name  
- Pack format `!SpellSmasher!` site parity  

---

## 4.1.x — 2026-08-04 (UI iteration)

Incremental UI work leading to 4.2.0 (parchment rows, logo, Mine, layout).

## 4.0.89 — 2026-08-04

- Sequence bars: early parchment experiments (superseded by 4.2.0 `seqbar`).

## 4.0.88 — 2026-08-04

- Sequence rows use a **real parchment page image** (`Media/seq-page.png`)
  matched to Adventure Guide paper pages (not flat gold achievement bars).
- Black ink text kept for readability; selected row soft green wash on paper.

## 4.0.87 — 2026-08-04

- Sequence rows: back to **4.0.85 light parchment/leather** look.
- Text only fix: pure **black ink** + light halo shadow (was muddy brown).

## 4.0.86 — 2026-08-04

- Dark leather experiment (reverted look in 4.0.87; kept as reference only).

## 4.0.85 — 2026-08-04

- **Edit sequence blocks:** first leather pass (replaced readability in 4.0.86).

## 4.0.84 — 2026-08-04

- **Classic WoW buttons:** every themed control uses `UIPanelButtonTemplate`
  (old stone Options/OK look). Close uses `UIPanelCloseButton`.
  Brand colors only on label text (green / blue / red), not custom fills.

## 4.0.83 — 2026-08-04

- **Real image panel background:** uses `Media/panel-bg.png` (your S logo art)
  stretched inside the dialog — no more color-blob “swirl” layers.
- Header still uses `Media/brand-mark.png`.

## 4.0.82 — 2026-08-04

- (Replaced in 4.0.83) Experimental multi-layer color washes — looked bad.

## 4.0.81 — 2026-08-04

- **Real WoW backdrops on everything:** no more solid SoftFill covering textures.
  Cards, buttons, tabs, rows, bars, edit wells, coach, and popups use
  `UI-Tooltip-*` / `UI-DialogBox-*` backdrops (same family as game UI).
- Brand colors only **tint** the real textures (green/blue borders, navy wash).

## 4.0.80 — 2026-08-04

- **UI chrome overhaul (branded WoW look):** outer dialog metal frame, tooltip-edge
  panels/cards/buttons, header strip with **S** mark, Esc-to-close.
- Structure uses Blizzard edge textures; **colors stay SpellSmasher** navy / green
  `#3dd68c` / blue `#6c8cff` (not generic gold shell).
- Click feedback sound on themed buttons; mash button chrome uses panel edge.
- Developed in Desktop `SpellSmasherUpdate` working tree.

## 4.0.79 — 2026-08-03

- Docs only: coach, Apply tip, and create-pack messages state clearly that
  **Apply overwrites the loadout already selected in N** and does not create a new named loadout.
  Copy → Import remains the path for a new loadout name.

## 4.0.78 — 2026-08-03

- Screen recording fix: after 60 buys Blizzard shows red **"spend all talent points"**
  with grey **Apply Changes** even when headers show 0/0. We no longer claim "committed"
  unless staged work is actually clear; use currency free budget + CanChangeTalents.
- If purchase stages but cannot commit: **Rollback** → **ImportLoadout(entries)** fallback.
- CommitConfig tries both no-arg and configID forms.

## 4.0.77 — 2026-08-03

- After Method buys: aggressively spend **leftover free points** (last choice nodes)
  and re-Commit until clean. Fixes stuck yellow **Apply Changes** when Spec shows 1 free.
- Clearer chat if N still needs a final Apply Changes click.

## 4.0.76 — 2026-08-03

- Fix Apply **0 buys** (level 70 screenshot): `CanPurchaseRank` needs
  `(configID, nodeID, nodeEntryID)` — 2-arg call always failed and blocked every
  PurchaseRank. Now passes entryID; if gate unknown, tries purchase directly.
- If multipass still buys 0: fallback to proven **ImportLoadout(entries)** path.

## 4.0.75 — 2026-08-02

- **Apply restored (purchase path).** One click: auto Best/Method if needed, then
  ResetTree + multipass CanPurchaseRank/SetSelection along Method entries for **your**
  point budget. Leftover free points spent so Commit is not blocked. No unique-name
  ImportLoadout spam under max level.
- Level max / From me: full ImportLoadout path unchanged.
- Copy remains fallback if 0 purchases.

## 4.0.74 — 2026-08-02

- **Removed talent Apply button.** Auto ImportLoadout was too brittle across levels and wasted time.
  Talents are **Copy only**: Best/Method/From me  >  **Copy**  >  **Ctrl+C**  >  press **N**  >  Import  >  paste.
- Coach Step 9 and talent button tips updated to match. No more auto-apply thrashing.

## 4.0.71 — 2026-08-02

- Fix List after Delete: deleted packs stayed visible until toggling This class / All packs.
  Cause: list rows are sparse under class filter; hide used `ipairs` which stops at the first hole. Now uses `pairs` and drops orphan row indices.

## 4.0.73 — 2026-08-02

- Re-Apply under 90: same **ImportLoadout entries** path that worked once (75/75 at 70), but with a
  **unique loadout name every click** (`SSM Pack 1`, `SSM Pack 2`, …) so re-Apply is not blocked by
  an existing name/config. Requires 0 free points. Delete old SSM loadouts in N if at max.

## 4.0.72 — 2026-08-02

- TLM ResetTree purchase attempt (superseded if ImportLoadout unique-name is more reliable).

## 4.0.70 — 2026-08-02

- First working Level 70 Apply via ImportLoadout 75/75 (Blizzard entry decode).

## 4.0.69 — 2026-08-02

- Temporary honest stub under 90 (superseded by 4.0.70 Blizzard-path import).

## 4.0.67 — 2026-08-02

- Refund/commit experiments (superseded by 4.0.69 honest under-90 behavior).

## 4.0.66 — 2026-08-02

- Tried spend-before-reset; ResetTree still hit Blizzard spend-all popup for some players.

## 4.0.64 — 2026-08-02

- Apply under 90 **never calls ImportLoadout**.
- Under 90: reset → buy Method ranks → spend leftovers → CommitConfig only.

## 4.0.63 — 2026-08-02

- Attempted spend-all before ImportLoadout; still blocked by Blizzard unspent-point rule on import.

## 4.0.62 — 2026-08-02

- Apply under 90 uses **From me proof**: snapshot live tree → fill Method only via CanPurchaseRank →
  **GenerateImportString** (points-valid) → ImportLoadout that string (same as paste worked at 70).
- Never imports full Method CUk under 90. On Method-fill failure, restores snapshot.
- Apply button enabled from level 10+ (not grey until 80).

## 4.0.61 — 2026-08-02

- Apply greyed under 80 (superseded by 4.0.62 From-me-style path for all talent-tree levels).

## 4.0.60 — 2026-08-02

- Restored **level 80 Apply path** (4.0.56): decode Method CUk → reset → multi-pass **CanPurchaseRank only** → commit → name loadout.
- Still **off**: ImportLoadout(entries) + binary-search (crash-prone 4.0.57).
- **80–89** Method Apply = partial purchase. **90** = full import. **Under 80** = message (From me / hand pick).

## 4.0.59 — 2026-08-02

- **Emergency:** disabled under-90 auto talent spend after ACCESS_VIOLATION report.
- Superseded by 4.0.60 restore of the quieter level-80 purchase path only.

## 4.0.58 — 2026-08-02

- Apply under 90 auto-runs Best/Method first (no need to remember Best), then spends your level's points.
- Coach + button tips document: under 90 → Apply (Best optional); 90 → full Apply; From me = live tree only.

## 4.0.57 — 2026-08-02

- Apply uses **your live talent point budget at any level** (70, 80, 89…), not a fixed 80–90 assumption.
- Reads free points from Blizzard currency APIs, greedily keeps Method nodes that fit, one named ImportLoadout of only those entries.
- Screenshot fix: level 70 was detected but 0 nodes spent — now spends what level 70 actually has.

## 4.0.56 — 2026-08-02

- Partial Apply quieter: only PurchaseRank when CanPurchaseRank (stops "Unable to learn talent" spam).
- Partial Apply names the loadout (e.g. SSM YourPack) via points-valid export of what you actually got.

## 4.0.55 — 2026-08-02

- Fix: under level 90, Apply never calls Blizzard ImportLoadout with the full Method CUk (that was the "must have enough talent points" error).
- Under 90: multi-pass partial purchase only; no Copy/paste of full Method string.
- Level 90 / From me: full import unchanged.

## 4.0.54 — 2026-08-02

- Apply talents is level-aware (Midnight 80-90):
  - Level 90 / From me: full Blizzard loadout import (unchanged).
  - Level 80-89 Method/Best: same Method package, spend only the talent points you have; level up and Apply again for more.
- New SSM_TalentLevel.lua (decode CUk + live purchase). Does not change mash/compile/lists.

## 4.0.53 — 2026-08-02

- Full step-by-step in-game tour (10 steps) walks List, New pack, Import, Edit, modes, tools, helpers, talents, bind/mash.
- Tour docks beside the UI and switches tabs as you go.
- Skip / Off / Finish stop auto-show; Help or `/ssm help` restarts anytime.

## 4.0.52 — 2026-08-02

- Once mode: once per combat (fires, then skipped until leave combat).
- Secure mash stability: do not call unit APIs inside restricted wrap scripts.
- Hero talent paths: two paths per spec; Method + Engine hero keys; pack field `heroTalent`.
- Edit UI: mode group headers and spacing (Once / In order / Priority).
- ASCII-only UI strings; list labels `* ACTIVE` / `* export`.
- Coach + help: Once explained as once per combat; `/reload` after updates is enough.
- Personal License shipped in package; listing metadata (website, email, license).

## 4.0.51 — 2026-08-02

- ASCII-only UI strings (remove Unicode tofu boxes in WoW fonts: middots, arrows, bullets).
- List pack labels use `* ACTIVE` / `* export` instead of broken glyphs.
- Full Personal License + listing package files.

## 4.0.50 — 2026-08-02

- Fix empty-box bullets next to ACTIVE / export on List tab.

## 4.0.49 — 2026-08-02

- In-game coach: Once = per combat explained on Welcome + Modes pages.
- Note that `/reload` is enough after updates (no full game exit required).

## 4.0.48 — 2026-08-02

- **Once mode = once per combat engagement** (skip after fire).
- Resets on leave combat, retarget (new enemy GUID), and recompile.
- Secure skip logic; works in combat for retarget reset.

## 4.0.47 — 2026-08-02

- Theme-style mode group headers + spacing between Once / In order / Priority blocks in Edit.

## 4.0.46 — 2026-08-02

- Coach guide text ASCII-only (fix Welcome empty squares).

## 4.0.45 — 2026-08-02

- Hero talent paths: 2 heroes per spec, Method + Engine packs.
- New pack hero chips; `heroTalent` on pack import/export.
- HeroPaths registry (research-backed Midnight paths).

## 4.0.44 and earlier

- Clean 4.x rewrite: sequence-only mash, priority triangle, reverse priority.
- Method + SpellSmasher Engine rebuild, Method CUk loadouts.
- Import/export `!SpellSmasher!1!…` packs (site parity).
- Easy helpers AA / RT / DEF (default Off).
- In-game multi-page coach (Help / `/ssm help`).
- Talent Apply / Copy, Best for list, From me.
- Loadout-honest product model; one pack from aoeSteps default.
