·
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
SanitizeAurareplaced byAnnotateAura— read-only_hasSecretstag, no aura field mutation- Secret values pass through to C-level APIs (
SetTexture,SetText,SetCooldownFromDurationObject,SetVertexColor, etc.) - Single utility layer in
Utils.lua—F.IsValueNonSecret(),F.HasAnySecretValues() - Zero
pcallfor secret value handling - No
rawequal, no bareissecretvalueoutside Utils.lua
Indicator Display (Midnight)
- BorderIcon for debuffs, defensives, externals (CooldownFrame clock swipe) since
EvaluateElapsedPercenterrors 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
|PLAYERserver filter suffix) - Private aura
borderScalefix 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:
HELPFUL|EXTERNAL_DEFENSIVE— externals like Ironbark, Pain SuppressionHELPFUL|BIG_DEFENSIVE— big defensives like Divine ShieldHELPFUL|RAID— spec-relevant buffs like Power Infusion
Raid Debuff Detection
- Tiered fallback: Lua lookup →
HARMFUL|RAIDserver 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:
SecureActionButtonTemplatewithtype="raidtarget"(SetRaidTarget protected in 12.0) - DeathReport shared handlers no longer short-circuit on Midnight
- BuffTracker
InCombatLockdownguard beforeSendChatMessage UnitIsUnitsecret boolean guard inHandleUnitButton(spotlight frames)- Secret GUID comparison guard in
UnitButton_OnTick - Secret string guard in
F.UpdateTextWidth(utf8len crash on secret NPC names) - Private aura
AddPrivateAuraAnchordeferred 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.