[Draft] Midnight 12.1 continuation (Krysio → NeRgY fork) — not for merge as-is - #501
Draft
NeeRgY wants to merge 62 commits into
Draft
[Draft] Midnight 12.1 continuation (Krysio → NeRgY fork) — not for merge as-is#501NeeRgY wants to merge 62 commits into
NeeRgY wants to merge 62 commits into
Conversation
…omAura Replace SanitizeAura (sanitize-then-recover) with AnnotateAura (read-only _hasSecrets tag). Secret values flow directly to C-level APIs which accept them natively. Core changes: - Utils.lua: Add F.HasAnySecretValues(), remove F.IsSecretValue(), remove unjustified pcalls from range checks and FindAuraById - UnitButton.lua: AnnotateAura replaces SanitizeAura, remove all _raw* shadow fields, merge caches, secret cooldown infrastructure. New Midnight display path via SetCooldownFromAura. Dispel detection via bracket curves with pass-through color rendering. Health calculator path. CLEU removal. - Base.lua: Add SetCooldownFromAura to BorderIcon (DurationObject) and BarIcon (EvaluateElapsedPercent with linear curve) Mechanical cleanup across 12 files: - Migrate F.IsSecretValue callers to not F.IsValueNonSecret() - Replace bare issecretvalue with F.IsValueNonSecret - Replace rawequal(x, nil) with x == nil - Remove local issecretvalue/hasanysecretvalues polyfills - Replace hasanysecretvalues with F.HasAnySecretValues Addresses all feedback from Krealle and ljosberinn on PRs 462/463. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Health text: BuildSecretSegment pre-builds C-level format strings for secret values. UnitHealthPercent (C-level) for percentage display. AbbreviateNumbers for numeric display. Remove unjustified pcall around UnitHealthPercent. Power text: F.HasAnySecretValues guard, UnitPowerPercent with ScaleTo100 curve, AbbreviateNumbers for short format. Shield/absorb display: rawequal → == nil cleanup. hideIfEmptyOrFull: stays removed on Midnight (no C-level path for health == maxHealth check). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tiered fallback for secret auras: - Tier 1: Non-secret (whitelisted) auras use standard spellId/name lookup - Tier 2: Secret auras use IsAuraFilteredOutByInstanceID with HARMFUL|RAID - Tier 3: Encounter fallback for unidentified secret debuffs during bosses RaidDebuffs module: FillMissingInstances for EJ gaps, dual name+id indexing. RaidDebuffs_Midnight.lua: Complete Midnight expansion dungeon/raid debuff data (The Voidspire, March on Quel'Danas, 4 dungeons). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Complete rewrite for Midnight secret value compatibility: - Remove pcall wrappers around UnitIsUnit, C_Spell.GetSpellTexture, C_Spell.IsSpellImportant (C-level APIs accept secrets natively) - Secret-safe target resolution via SafeUnitIsUnit + server filter fallback - Display mode system (Icons/Border/Both) with settings UI - sourceUnit string as tracking key instead of UnitGUID (GUIDs can be secret) - Spell list and showAllSpells hidden on Midnight clients Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
DeathReport: Fix shared handlers (PLAYER_ENTERING_WORLD, GROUP_ROSTER_UPDATE) that short-circuited on Midnight, breaking instance tracking and priority. Simplified death detection via UNIT_HEALTH + UnitIsDeadOrGhost on Midnight. Comm: Remove unused QueueComm/FlushPendingComms dead code. Add IsCommRestricted() guards for encounter/M+/PvP contexts. Simplify Nicknames.lua redundant F.IsCommRestricted existence checks. StatusIcon: F.IsValueNonSecret for GUID checks, CLEU conditional unregister. Request_Show: CombatLogGetCurrentEventInfo nil guards. BuffTracker: F.IsAuraNonSecret guard for sourceUnit comparison. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Appearance: Preview button Midnight StatusBar API compatibility, Flash animation removal (Smooth only on Midnight), shield preview rework. Settings: Remove unused durationVisibilitySimple widget. Add TargetedSpells display mode dropdown. Update indicator setting lists. Cleanup: - Delete RaidDebuffs_Midnight_skeleton.lua (development artifact) - Fix stale F.IsSecretValue() references in changelog - Revise.lua: Flash → Smooth migration - Cell.toc: version bump - ClickCasting: updated Midnight spell list Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SetCooldownFromDurationObject drives a CooldownFrame that supports built-in countdown numbers. Enable them with SetHideCountdownNumbers(false) and size the FontString to match Cell's duration font settings. Limitations: anchor point, offset, and color are controlled by Blizzard's C-level rendering and cannot be customized via Cell settings. TODO: Fix preview pane to show countdown text. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Preview pane now shows Blizzard countdown numbers matching in-game display. Uses same font sizing as the frame countdown text. TODO: Live-update preview countdown font when settings change. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Re-add durationVisibility and durationFont settings to debuffs and raidDebuffs - Shared_SetFont live-updates countdown FontString when font settings change - Shared_ShowDuration toggles SetHideCountdownNumbers for Midnight - ApplyCountdownFont guards for CooldownFrame vs StatusBar (BarIcon) - SetCountdownAbbrevThreshold(60) abbreviates above 60s (shows "1m", "2m") - Preview: hide Cell duration text, show Blizzard countdown, no swipe override - Raid debuffs: colored border base + black swipe (matches regular debuffs) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use font-noOffset widget for Midnight indicators (no anchor/offset/color since Blizzard's countdown text doesn't support them) - Pre-Midnight retains full font2 widget with all positioning options - New font-noOffset:durationFont parser in widget builder and settings handler - Center countdown FontString on iconFrame for proper alignment - SetCountdownAbbrevThreshold(60) abbreviates above 60s Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Green border for player's own externals/defensives, yellow for others Uses |PLAYER server filter suffix for secret auras, sourceUnit check for non-secret - New built-in spells: Power Infusion (Priest), Blessing of Freedom (Paladin), Rewind + Verdant Embrace (Evoker), Strength of the Black Ox (Monk) - builtInExternals/Defensives always store by ID for consistent lookup - BuffTracker: InCombatLockdown guard before SendChatMessage - Removed all fingerprinting code (widget, file, stale comments) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
BorderIcon_ShowDuration now toggles SetHideCountdownNumbers when the user changes Duration Visibility (Always/Never). Without this, the countdown text only responded after a reload. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Debuffs, raid debuffs, externals, defensives, all cooldowns, and crowd controls use Always/Never dropdown on Midnight instead of percentage/time thresholds (Blizzard's countdown text doesn't support thresholds). Custom indicators retain full threshold options. Restores CreateSetting_DurationVisibilitySimple widget with coercion of existing threshold values to Always. Known limitation: toggling Always/Never only takes effect on the next aura update, not immediately on active cooldowns. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
I1: Move SetCountdownAbbrevThreshold to frame creation, cache
ApplyCountdownFont via _countdownFontApplied flag
I2: Reset font cache on settings change in Shared_SetFont
I3: Remove dead Midnight toggle from Shared_ShowDuration
S1: Preview alternates green (first icon = player cast) / yellow
S2: Clearer comments on always-by-ID storage
S3: Threshold coercion comment clarified
Fix: BorderIcon_ShowDuration hides Cell's duration text on Midnight
(only toggles Blizzard countdown, prevents dual text display)
Fix: Hide custom spell field and showAnimation on Midnight for
externals/defensives (custom spells can't be tracked with secrets)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tooltip: CellSpellTooltip registered TOOLTIP_DATA_UPDATE at creation and never unregistered, causing RefreshData to crash with tainted color data in combat even when the tooltip wasn't visible. Fix: only register while tooltip is shown, plus InCombatLockdown guard. UpdateTextWidth: utf8len crashes on secret NPC name strings. Guard with F.IsValueNonSecret — pass secrets directly to SetText (C-level). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Updated README to reflect the new fork and its features.
Pushed the latest r277.7.3 that has been developed locally
Updated README to reflect the fork's focus and features.
This is a community fork. Donations support my maintenance, not the original Cell authors.
This is a community fork. Donations support my maintenance, not the original Cell authors.
This is a community fork. Donations support my maintenance, not the original Cell authors.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi enderneko,
This is a draft so you can see that Cell is still being worked on for Midnight / 12.1. It is not a request to merge this branch as-is.
What this is
A public fork continued from your Cell, then Skyking / jdtoppin, then Krysio (
r277.7.5.3-krysio), now NeRgY (r277.9.7.1).That version number is our fork numbering, not a claim that this is ahead of your
r279-beta. The histories have diverged (GitHub reports this cannot be merged automatically).What this is not
masterIf any of this is useful, I would rather split it into small, reviewable PRs against your current
masterthan ask you to take the whole tree.Focus of this fork
Retail Midnight (12.0 / 12.1) raid frames: secret values, aura display, Edit Mode / Blizzard frame taint, healer QoL, and keeping Classic / TBC usable.
Recent NeRgY-side fixes include:
Krysio and Skyking did the earlier Midnight foundation this fork still stands on.
Happy to close this and follow up with smaller PRs if you want that instead. Thanks for Cell.