Skip to content

midnight-rearchitecture-v1

Latest

Choose a tag to compare

@jdtoppin jdtoppin released this 19 Mar 18:51
· 15 commits to master since this release

Midnight Rearchitecture v1

A complete rearchitecture of Cell's WoW 12.0.0 (Midnight) secret value handling, replacing the previous sanitize-then-recover approach with a pass-through design. Secret values flow directly to C-level APIs that accept them natively. Built on top of enderneko/Cell r275.

Addresses all architectural feedback from Krealle and ljosberinn on PRs 462/463.

Core Architecture

  • SanitizeAura replaced by AnnotateAura — read-only _hasSecrets tag, no aura field mutation
  • Secret values pass through to C-level APIs (SetTexture, SetText, SetCooldownFromDurationObject, SetVertexColor, etc.)
  • Single utility layer in Utils.luaF.IsValueNonSecret(), F.HasAnySecretValues()
  • Zero pcall for secret value handling
  • No rawequal, no bare issecretvalue outside Utils.lua

Indicator Display (Midnight)

  • BorderIcon for debuffs, defensives, externals (CooldownFrame clock swipe) since EvaluateElapsedPercent errors in tainted contexts
  • Blizzard countdown text via SetHideCountdownNumbers(false) + SetCountdownAbbrevThreshold(60) — shows duration on indicators with user-configurable font
  • Simplified settings — Always/Never duration visibility (no thresholds), font-noOffset for duration font (no anchor/offset)
  • Dispel type colors as border base with black swipe fill; red for Physical; yellow for buff cooldowns
  • Green border for player's own casts, yellow for others (via |PLAYER server filter suffix)
  • Private aura borderScale fix for properly sized borders
  • Big debuff sizing preserved on Midnight path
  • Preview pane matches in-game appearance

Buff Cooldown Detection (Secret Auras)

  • Tiered server-side filter fallback:
    1. HELPFUL|EXTERNAL_DEFENSIVE — externals like Ironbark, Pain Suppression
    2. HELPFUL|BIG_DEFENSIVE — big defensives like Divine Shield
    3. HELPFUL|RAID — spec-relevant buffs like Power Infusion

Raid Debuff Detection

  • Tiered fallback: Lua lookup → HARMFUL|RAID server filter → encounter fallback
  • Midnight expansion dungeon and raid debuff data included

New Built-in Spells

  • Power Infusion (Priest externals), Blessing of Freedom (Paladin externals)
  • Rewind + Verdant Embrace (Evoker externals), Strength of the Black Ox (Monk defensives)

Fixes

  • Overshield glow: uses healPredictionCalculator:GetDamageAbsorbs() isClamped + SetAlphaFromBoolean
  • Raid target markers: SecureActionButtonTemplate with type="raidtarget" (SetRaidTarget protected in 12.0)
  • DeathReport shared handlers no longer short-circuit on Midnight
  • BuffTracker InCombatLockdown guard before SendChatMessage
  • UnitIsUnit secret boolean guard in HandleUnitButton (spotlight frames)
  • Secret GUID comparison guard in UnitButton_OnTick
  • Secret string guard in F.UpdateTextWidth (utf8len crash on secret NPC names)
  • Private aura AddPrivateAuraAnchor deferred in combat (12.0.1 hotfix)
  • Non-secret auras get real start/duration even on Midnight
  • Dead code removed: QueueComm, durationVisibilitySimple (restored for Midnight), skeleton file

Known Limitations

  • Per-spell raid debuff glow config doesn't work in combat (spellId secret, enemy cast spellIds also secret)
  • Tank active mitigation not tracked in combat (spellId not whitelisted)
  • Fade (Priest) not detected as defensive in combat (no server filter classification)
  • Duration visibility toggle takes effect on next aura update, not immediately

Install

Extract Cell-midnight-rearchitecture-v1.zip into your Interface/AddOns/ folder (includes all required libraries). Remove any existing Cell folder first.