Skip to content

Releases: Mapkov2/MidnightSimpleUnitFrames

4.0b7

19 Apr 18:21

Choose a tag to compare

4.0b7 Pre-release
Pre-release

Full Changelog: 4.0b6...4.0b7

4.0b6

18 Apr 16:06

Choose a tag to compare

4.0b6 Pre-release
Pre-release

MSUF 4.0 Beta 6 — Bugfix Patch

Absorb Overflow Bar (Mode 4 "Follow HP bar (overflow)")

Fixed overflow bars getting stuck at zero or stale width on player, target, focus and group frames. The anchor apply is now correctly re-run whenever the HP bar resizes (frame layout, first show, power-row toggle), not only on config changes.

HP Text Sticking on Player / Target / Focus

Fixed HP number lagging behind or freezing at a stale value once HP stabilized after a damage burst. The HP bar now updates the number on every UNIT_HEALTH event without getting stranded by the internal frame-serial throttle.

Options → Bars → "Override shared settings" Click Crash

Fixed Lua error attempt to call global '_BumpBorderSerial' (a nil value) when toggling the HP/Power text override checkbox on a unit (Player, Target, Focus, etc.).

Power Text Trailing Edge on Target/Focus

Fixed power text occasionally sticking at a stale value once the resource stopped changing, same class of bug as the HP text fix.

Fixes for 12.05 changes

  • Dropdown menus: fixed styling loss after login and taint from leftover globals.
  • Private Aura: combat-safe Add/Remove, secret-safe anchor IDs, no more leaks across zones.

3.65

18 Apr 00:58

Choose a tag to compare

MSUF 3.65 — 12.0.5 Update

New

  • Boss Layout direction dropdown — pick between Vertical ↓, Vertical ↑, Horizontal →, Horizontal ←. Replaces the old "Invert boss order" checkbox (old profiles migrate automatically).
  • Boss spacing slider range extended to -400.

Fixes for 12.05 changes

  • Dropdown menus: fixed styling loss after login and taint from leftover globals.
  • Private Aura: combat-safe Add/Remove, secret-safe anchor IDs, no more leaks across zones.

Supports WoW 12.0.5.

4.0b4

15 Apr 22:05

Choose a tag to compare

4.0b4 Pre-release
Pre-release

Midnight Simple Unit Frames — v4.0 Beta 4

Bug Fixes

  • Border test mode no longer fills the health bar — activating the dispel border test in the Bars menu would flood the entire HP bar with the overlay color and persist until reload. Fixed by fully decoupling the Highlight Border and Dispel Overlay into independent systems
  • Border test mode cleanup — disabling test mode now properly clears all border and glow state without requiring a reload

Changes

  • Dispel Colors moved to Colors panel — the color mode dropdown (Single Color / Per Debuff Type) has been relocated from Bars > Highlight Borders to its own Colors > Dispel section
  • Per-type dispel colors are now configurable — Magic, Curse, Disease, Poison and Bleed each have their own color swatch. Previously these were hardcoded and not adjustable
  • Dispel colors are shared between the Highlight Border and the Group Frame Dispel Overlay

New Feature: Debuff Stripe

A thin colored stripe on Group Frames that appears when any debuff is active — including non-dispellable ones like bleeds, stuns or boss mechanics. Fills the gap where the Dispel Overlay only reacts to debuffs you can actually remove.

  • Edge position: Bottom or Top
  • Height: 1–8px
  • Adjustable opacity
  • Off by default — enable under Group Frames > Health > Debuff Stripe

4.0b2

13 Apr 23:05

Choose a tag to compare

4.0b2 Pre-release
Pre-release

MSUF 4.0 Beta 2

New: Dispel Overlay (Group Frames)

  • Color wash on the health bar when a dispellable debuff is active — works alongside the existing highlight border
  • Style: Full Frame, Bottom Edge, Top Edge, Left Edge, Right Edge
  • Show On Current Health Only — overlay clips to the filled health portion so you can see health dropping through the tint
  • Opacity slider (5–100%, default 35%)
  • Colors inherited from Global Style → Colors → Dispel
  • Found in Group Frames → Effects → Dispel Overlay
  • Fully Midnight 12.0 secret-safe, zero hot-path overhead when disabled

Bugfixes

Unit Auras: Filter toggles not applying until /reload

  • structureChanged fast-path cached filtered results and never invalidated on config changes — toggling Important, Only Mine, Only Boss, Ignore List etc. had no visible effect
  • Invalidate/InvalidateAll now clear _lastFilterGen/_lastNB/_lastND, forcing a full re-filter on next render

Unit Auras: Aura classification failing in instances

  • ClassifyPlayer/ClassifyHelpful compared IsAuraFilteredOutByInstanceID returns with == false without issecretvalue guard — silent hard stop in Midnight instances
  • Both functions now guard with issecretvalue before comparing

Unit Auras: Frame lookup skipping rendering on certain load orders

  • FindUnitFrame used a truthy check instead of type(uf) == "table" — could silently skip aura rendering during load or instance transitions
  • Added explicit type guard

4.0b5

16 Apr 21:21

Choose a tag to compare

4.0b5 Pre-release
Pre-release

MSUF v4.0 Beta 5

Boss Frame Layout
The old "Invert boss order" checkbox has been replaced with a four-way layout dropdown: vertical top-to-bottom, vertical bottom-to-top, horizontal left-to-right, horizontal right-to-left. Spacing slider extended to -400 so horizontal layouts have enough room. Preview, Edit Mode dragging and castbars all follow the chosen layout. Existing setups migrate automatically.

GF Aura Preview
A full overhaul of how you see what you are configuring.

  • Real spell icons via C_Spell.GetSpellTexture instead of solid color blocks. Buff, debuff and externals each have their own icon set.
  • Preview now mirrors the canonical renderer formula. Icons flow from your configured anchor in your configured growth direction (RIGHTDOWN, LEFTUP, CENTER_H and so on) instead of always TOPLEFT to BR.
  • Aspect-faithful mock frame. Narrow frames no longer get stretched horizontally. The preview box reflects the actual live frame proportions.
  • Icon size clamp at 80 percent of frame height so externals do not go oversized on small frames.
  • Realistic defaults. 3 icons per group instead of 6 when config is missing, matching typical setups.
  • Sidebar auto-resizes with button count. No more clipped bottom buttons.

Preview Sidebar Toggles

  • CD/Stack (default on) shows cooldown and stack count text on all mock aura icons. The primary feedback tool for offset sliders.
  • Text (default off) shows name, HP and power text on the mock frame. Persistent across every GF Options tab, so once you enable it, text stays visible as you navigate between sections.
  • Solo-Highlight via Shift+Click on any layer button. Selected layer stays at full alpha while all others dim to 15 percent. Shift+Click again to exit.

GF Aura Cooldown Text Positioning
X/Y offset sliders for cooldown text, per buff, debuff and externals group.

GF Aura Stack Count Customization
Font size slider (6 to 24), anchor point (9 positions), X/Y offsets. Per buff, debuff and externals group.

Fixes

  • Power text no longer shows on pet and target-of-target frames when hidden in settings.
  • Portraits load correctly at login without needing to open the menu first.
  • Profile init fills in pet and ToT defaults when swapping from older versions.
  • GF aura live-apply now reacts to icon size, spacing and per-row changes without a reload.
  • GF preview no longer vanishes when opening Edit Mode with Options still open.
  • No more "Font not set" error when toggling Text preview on power-less configs.

4.0b3

14 Apr 21:39

Choose a tag to compare

4.0b3 Pre-release
Pre-release

MSUF 4.0 Beta 3

Group Frames Menu

  • Effects split into standalone sections: Heal Prediction, Cutaway Health, Dispel Overlay, Range Fade — easier to find and toggle
  • Auto-height accordions — all sections auto-measure content, no more clipping or wasted space
  • Raid Layout Situation hidden in Party scope (only relevant for Raid)
  • Background Color added to Health Colors section for quick access
  • Preview now correctly reflects GF bar color mode (was always green due to wrong API call)

Bug Fixes

  • Dispel Overlay "Full Frame" now covers the entire frame including power bar (was only health bar). Style switching no longer leaves stale gradient state
  • Copy Party ↔ Raid — 7 dead keys fixed (bgColorRbgR, powerBarHeightpowerHeight, etc.), 31 missing keys added (scaling, group number, icon style, tooltip, smooth fill, power per-role, bar opacity...)
  • Spell Indicator editbox ghosts — value boxes no longer stay visible when their slider is hidden (Frame Effect = None)
  • Spell Indicator panel integrates seamlessly instead of floating as a separate box; section height adjusts dynamically
  • Private Auras checkbox clipping fixed (Show Countdown / Show Dispel Type overlapped Layer slider)
  • Slider editbox sync — all compact sliders sync their value display on section expand

Bars Menu (Global Style)

  • 3-way split: "Outline & Highlight Border" (740px) → Frame Outline, Highlight Borders, Highlight Priority
  • Dispel Glow settings hidden when glow is disabled (~200px saved)
  • Highlight Borders cleaned up: linear flow, no redundant headers, no x-offset jumps
  • Title clipping with GF hint text fixed

Indicators & Raid Debuffs

  • Proper anchor chains throughout (fixes clipping from hardcoded y-offsets and FontString→Slider gaps)
  • Redundant sub-headers removed

Media

  • 38 unused files removed (border variants, mask files, portrait PNGs, dead UI elements)

4.0b1

12 Apr 22:38

Choose a tag to compare

4.0b1 Pre-release
Pre-release

Midnight Simple UnitFrames v4.0 Beta 1

Codebase: 89k → 105k lines | 24 new files | 100+ new TGA assets


⭐ NEW: Group Frames (Party & Raid)

The biggest feature MSUF has ever gotten. Full party and raid frame support built on Blizzard's SecureGroupHeaderTemplate — no hacks, fully combat-safe.

  • Grid layout with independent party/raid configuration (separate sizing, spacing, growth direction)
  • Health bars with class color, reaction color, dark tint and unified color modes — same color engine as the main unit frames
  • Power bars with per-role visibility (show mana for healers, hide for DPS)
  • Health text with the same format modes as the main unit frames (percent, current, max, combined, deficit, etc.)
  • Name text with class coloring and custom color options
  • Range fade using SetAlphaFromBoolean — 1:1 EQoL-style, fully secret-safe. 4-step fallback chain: UnitInRange → IsSpellInRange (per-class friendly spell table) → CheckInteractDistance → safe default. AFK/DND detection via PLAYER_FLAGS_CHANGED (no polling)
  • Highlight borders with priority pipeline: Dispel > Aggro > Target. Per-type dispel colors, Bleed detection (empty dispelName in HARMFUL|RAID_PLAYER_DISPELLABLE = Bleed), configurable border size/offset/layer/texture
  • Corner indicators — 5 configurable dots (TL/TR/BL/BR/Center) with C-side dispel ColorCurve, 5Hz rate-limit + diff-gate for zero combat overhead
  • Spell indicators — 8 status icon slots with X/Y/Anchor/Size, 10 icon styles + Blizzard + Midnight toggle, 90 custom TGA icons, spec-driven layout
  • Buffs & Debuffs with blacklist/whitelist filter, per-spell duration thresholds, 5-category spell catalogue
  • Raid debuffs with priority display, pre-allocated slot buffer (zero GC pressure)
  • Healer buff tracking with in-game editor for custom buff lists
  • Private auras via AddPrivateAuraAnchor — fully combat-safe
  • Masque support — separate skin group for GF aura icons. Icon + Cooldown only (never Count — prevents Masque from overwriting MSUF stack anchoring)
  • Health fade — curve-based HP threshold dimming. Frames above a configurable HP% fade out so low-health targets stand out. Uses C_CurveUtil — fully secret-safe
  • Cutaway — health loss visualization with reusable callback (not per-event closure)
  • Edit Mode integration — full mover registration, auto-preview with class-colored frames, scaled preview (1.4–2.8×)
  • Role presets — 10 ready-to-use presets: DPS (ultra-compact), Tank (full awareness), and 8 healer specs (Holy Priest, Disc Priest, Resto Druid, Resto Shaman, Holy Paladin, Mistweaver, Preservation Evoker, Augmentation Evoker)
  • Selective copy — copy button with 10 category toggles (General, Health, Text, Font, Border, Range, Indicators, Auras, Highlight, Features). Copy exactly what you need between party and raid settings

Group Frames Options

New sidebar tab (positioned after Unit Frames) with 4 sub-pages: Layout, Health & Text, Buffs & Debuffs, Indicators. Radio-section UX (only one section open at a time), compact RowCheck/RowSlider/RowDropdown layout, live color preview.


🏗️ Internal Restructure

Major file consolidation — fewer files, same or better functionality, easier to maintain.

  • Auras2 consolidated from 15 files → 6 files (same line count, cleaner architecture)
  • ClassPower consolidated from 14 files → 5 files (7 mode files merged into one, core builders merged)
  • EditMode2 consolidated from 16 files → 5 files (popup factories, state management, grid/snap/anchors merged)
  • BlizzKill extracted from main addon file into its own module — Blizzard frame kill + compat anchors, combat-deferred RegisterStateDriver, zero per-frame overhead
  • 3D Portraits merged into the main Portraits module
  • Indicators merged into StatusIndicators

⚡ Performance

  • SetBarValue / SetBarMinMax inlined to direct widget calls — removed PixelSnap overhead, smooth-fill branching, and pcall wrapping
  • Health color hot path now reads file-scope locals instead of cache table fields (unified color + NPC type color cached at file scope in UnitframeCore)
  • ColorsCore reduced by 49% (1,164 → 588 lines) — removed dead color resolution paths and unused gradient helpers
  • EventBus reduced by 58% (362 → 151 lines) — streamlined dispatch, added UnregisterAll(keyPrefix) for clean subsystem teardown
  • UnitframeCore reduced by 14% — removed Lua-side power snapshot diff-gating (now delegates to C-side SetValue), issecretvalue guard scoped to only UnitThreatSituation
  • Main addon file reduced by 13% — BlizzKill extraction, transaction system cleanup
  • Options_Player reduced by 49% — deduplicated accordion builders, extracted GF options
  • FocusKickIcon reduced by 29% — streamlined interrupt state checking
  • StatusIndicators — removed 23 redundant type(_G.X) == "function" guards (functions are always defined by load order)

🔒 Secret Safety (12.0 Midnight)

  • Range fade rewrite — new 4-step fallback chain for non-party friendly targets with issecretvalue guard on every return value. Per-class friendly spell table for IsSpellInRange. CheckInteractDistance secret-guarded (OOC only)
  • Dispel glow on unit frame borders — 3 LibCustomGlow styles (AutoCast / Proc / Pixel), zero-alloc color table reuse, diff-gated start/stop
  • Group Frames fully secret-safe throughout: SetAlphaFromBoolean for range, issecretvalue guard on GetAlpha before arithmetic, type(inRange)~="nil" guard pattern, HARMFUL|RAID_PLAYER_DISPELLABLE filter for dispel detection
  • Auras 2.0 ownership filter — added issecretvalue guard to ClassifyPlayer, fixing "Only My Buffs/Debuffs" filter broken by 12.0 secret returns from IsAuraFilteredOutByInstanceID

🎨 UI / Options

  • Sidebar — Group Frames tab added, color scheme refined (darker backgrounds, subtler active/hover borders)
  • Options Toolkit — new declarative UI.DBCheck / UI.DBSlider / UI.DBDropdown builders for zero-boilerplate DB-bound controls
  • Highlight borders — GF scope override system with per-scope party/raid configuration, hlOverride flag with auto-seeding from global settings
  • Alpha build banner — Discord link with StaticPopup + copy link support
  • Slider UX — hover/leave visual feedback hooks

4.0a11

12 Apr 11:39

Choose a tag to compare

4.0a11 Pre-release
Pre-release

Full Changelog: 4.0a10...4.0a11

3.64

12 Apr 21:48

Choose a tag to compare

MSUF v3.64 — Patch Notes

Bugfixes

  • Fixed an issue where alpha out of combat could sometimes not apply correctly after login, reload, or loading screens.
  • Fixed a Fonts scope bug where changing text sizes in unit-specific tabs could incorrectly behave like a shared/global setting.
  • Fixed unitframe Name / HP / Power font sizes so they now save and apply to the correct scope.
  • Fixed Castbar font sizing to behave correctly for supported unit scopes.