promotional bannermobile promotional banner

TomoMod

Tired of juggling 15 addons to get a clean UI? TomoMod replaces Blizzard's default interface with a dark, modern, teal-accented design. UnitFrames, Nameplates, Action Bars, Bags, Chat, Tooltips, Objective Tracker, 25+ quality-of-life modules.

File Details

TomoMod-2.9.13.zip

  • R
  • May 15, 2026
  • 8.24 MB
  • 50
  • 12.0.7+1
  • Retail

File Name

TomoMod-2.9.13.zip

Supported Versions

  • 12.0.7
  • 12.0.5

TomoMod 2.9.13

TomoMod-2.9.13 (2026-05-15)

Full Changelog


CHANGELOG 2.9.13 — M+ Boss Names Fix

 

MythicTracker — Boss Names
- Fix — Boss names in the M+ tracker now show correctly instead of "Boss 1", "Boss 2" etc.; in WoW 12.x (Midnight) `C_ScenarioInfo.GetCriteriaInfo` returns the boss name in the `description` field (renamed from `criteriaString`); TomoMod now reads `description` first and falls back to `criteriaString` for backward compatibility
- Fix — Blizzard's leading checkmark prefix (added to completed objectives in 12.x) is stripped from boss names before display, matching EllesmereUI's approach
- Fix — `EncounterJournal_OpenJournal` call inside `FetchEJBossNames` is now wrapped in `pcall` to prevent potential taint in 12.x; the EJ lookup continues to function as a localisation enhancement when available


CHANGELOG 2.9.12 — PartyFrame CD Tracking Fix · Healer Interrupt · Performance

 

PartyFrame — Interrupt & Battle-Rez CD Tracking Rewrite
- Fix — Replaced `COMBAT_LOG_EVENT_UNFILTERED` with `UNIT_SPELLCAST_SUCCEEDED`; registering CLEU from addon code causes taint in WoW 12.x, blocking protected-frame API calls
- Fix — Party spellIDs are tainted in 12.x and cannot be used as table indices; added taint-safe `ResolveSpellID()` using `string.format("%.0f", id)` → `tonumber` to launder the value — mirrors `BIT.Taint:ResolveNumber()` from BliZzi_Interrupts
- Fix — When spellID is fully unresolvable (tainted and strip failed), fall back to the class-default interrupt for that unit if it is not already tracked as on cooldown ("WilduTools" approach: trust the known spell rather than requiring a readable runtime ID)
- Fix — Interrupt tracker icon now hidden for healers; since patch 12.x healers no longer have an interrupt ability — `UnitGroupRolesAssigned(unit) ~= "HEALER"` guard added to `CD.UpdateFrame`

CooldownManager — UpdateButtonState API Cache
- Perf — `UpdateButtonState` now caches `GetCooldownTimes()`, `Scanner.GetCachedCooldownID()` and `pcall(C_CooldownViewer.GetCooldownViewerCooldownInfo)` once per button per tick; previously each was called twice (once for the pandemic/CD-text block, once for desaturation/range-check) — approximately 50% fewer API calls in the main 0.25 s update loop