Skip to content

Releases: VengeanceStudio/AbstractUI

AbstractUI v12.0.1.17

29 Mar 20:31

Choose a tag to compare

AbstractUI v12.0.1.17

New Features

  • Tweaks: Added separate color setting for Bountiful Delves
    • Bountiful delves (weekly bonus delves) now display in a distinct color (default: gold)
    • Regular delves use the existing delve pin color (default: cyan/turquoise)
    • Detection works on both world map and minimap using multiple methods:
      • Widget data presence (most reliable)
      • Description text containing "bountiful"
      • Atlas name patterns indicating availability
    • New "Bountiful Delve Pin Color" option in Tweaks settings

Bug Fixes

  • MinimapButtons: Fixed attempt to call field '_abstractOriginalClearAllPoints' (a nil value) error by properly saving original SetPoint and ClearAllPoints function references before overriding them
  • BrokerBar: Fixed attempt to perform arithmetic on local 'tW' (a secret number value tainted by 'AbstractUI') error by using tonumber() to cleanse tainted values from GetWidth() and GetCenter() calls
  • BrokerBar: Fixed bad argument #2 to 'tonumber' (base out of range) error by capturing GetCenter() x-coordinate separately before passing to tonumber()
  • Tweaks: Fixed color pickers not displaying current colors in options panel (showing white instead of actual colors) by updating get/set functions to use table format expected by AbstractOptionsPanel

AbstractUI v12.0.1.16

29 Mar 18:01

Choose a tag to compare

AbstractUI v12.0.1.16

Bug Fixes

  • MinimapButtons: Fixed attempt to call field '_abstractOriginalClearAllPoints' (a nil value) error by properly saving original SetPoint and ClearAllPoints function references before overriding them
  • BrokerBar: Fixed attempt to perform arithmetic on local 'tW' (a secret number value tainted by 'AbstractUI') error by using tonumber() to cleanse tainted values from GetWidth() and GetCenter() calls
  • BrokerBar: Fixed bad argument #2 to 'tonumber' (base out of range) error by capturing GetCenter() x-coordinate separately before passing to tonumber()

AbstractUI v12.0.1.15

23 Mar 03:28

Choose a tag to compare

AbstractUI v12.0.1.15 Release Notes

New Features

Minimap Button Bar Module

  • Separated minimap button bar into dedicated module (MinimapButtons.lua)
    • Extracted ~500 lines of button bar code from Maps.lua for better maintainability
    • Full options integration with position, layout, and appearance controls
    • Module can be independently enabled/disabled in General > Modules settings

Button Collection & Management

  • MBB-proven collection approach - checks for actual interaction scripts (OnClick/OnMouseUp/OnMouseDown)
  • Smart timing system - 2-second delayed collection after setup to catch late-loading addon buttons
  • Manual collection command - /mbb or /collectbuttons for user-triggered re-collection
  • Comprehensive ignore list - 25+ known Blizzard frames properly filtered
  • Smart parent/child detection - handles wrapped buttons correctly

Button Bar Features

  • Adjustable icon scale (0.25-1.5x, default 0.5x) - control button size independently
  • Growth directions - expand right, left, up, or down from collapsed tab
  • Configurable layout - buttons per row, spacing, button size
  • Auto-collapse with hover delay - 0.3-second hover grace period
  • Aggressive position locking - buttons stay in place without CPU-wasting tickers
  • Custom button skinning - 1% edge crop, transparent grey background, black border
  • Class color or custom color support for button bar tab

Bug Fixes

  • Fixed button collection missing late-loading addon buttons (e.g., Danders Frames)
  • Fixed initialization timing issues (moved to OnDBReady instead of OnEnable)
  • Fixed Movable.lua reference to button bar color updates
  • Fixed duplicate "Enable Button Bar" toggle
  • Fixed button bar tab visibility when collapsed
  • Removed all debug print statements for cleaner chat output

Technical Changes

  • Added Modules\MinimapButtons.lua to addon manifest
  • Updated Core.lua module registration (dbKey "minimapButtons", order 7.5)
  • Scans Minimap, MinimapBackdrop, and MinimapCluster for buttons
  • Function overrides for position/size enforcement (SetPoint, ClearAllPoints, SetAllPoints, SetSize, SetWidth, SetHeight, SetMovable, StartMoving)
  • Icon texture cropping via SetTexCoord(0.01, 0.99, 0.01, 0.99)
  • LibDBIcon texture removal (IDs: 136430, 136467, 136477, 136468, 130924, 982840)

Known Compatibility

Successfully collects and manages buttons from:

  • All LibDBIcon-based addon buttons

AbstractUI v12.0.1.14

16 Mar 01:00

Choose a tag to compare

AbstractUI v12.0.1.14

Bug Fixes

Tooltips

  • Fixed critical taint error when hovering over world quest tooltips on the map
    • Error: "attempt to perform arithmetic on local 'itemWidth' (a secret number value tainted by 'AbstractUI')"
    • Added early detection for world map tooltips to prevent any modifications
    • Quest reward tooltip repositioning now only applies to actual quest frames (QuestFrame, QuestInfo, GossipFrame)
    • Added WorldMapFrame, TaskPOI, and Pin pattern detection to immediately bail on world map elements

Guild Colors

  • Fixed guild color picker showing white/blank colors instead of defaults
    • Issue was format mismatch: AbstractOptionsPanel color picker expects array format {r, g, b, a} but Tooltips was using named key format {r = value, g = value, b = value}
    • Color picker get functions now return proper array format for display
    • Color picker set functions now correctly convert from array to named key format for internal storage
    • Default guild colors (#6259E6 purple for your guild, #12C109 green for other guilds) now display correctly

Brokers

  • Fixed Guild broker taint error during combat
    • Error: "[ADDON_ACTION_BLOCKED] AddOn 'AbstractUI' tried to call the protected function 'GetGuildRosterMOTD()'"
    • Added combat protection to prevent opening guild roster frame during combat
    • Guild broker OnEnter now checks InCombatLockdown() before calling protected guild functions
    • UpdateGuildList() displays red message if somehow called during combat instead of erroring

Technical Notes

  • Improved world map tooltip detection with multiple layers of protection
  • Enhanced quest tooltip detection to be more specific and avoid world quest elements
  • Added depth limiting to parent chain traversal to prevent performance issues

AbstractUI v12.0.1.13

15 Mar 21:15

Choose a tag to compare

AbstractUI v12.0.1.13 Release Notes

New Features

  • Abstract Crests Broker: New datatext to track seasonal Dawncrest currencies
    • Displays your highest tier crest count on the broker bar
    • Tooltip shows all 5 crest types: Adventurer, Veteran, Champion, Hero, and Myth
    • Icon dynamically updates to match your highest tier crest
    • Color-coded tooltip display matching quality tiers

Custom Whisper Sounds Improvements

  • Added preset sound dropdown with 8 built-in options (Default Whisper, Bell Toll, Auction House Click, Quest Complete, UI Button Click, Raid Warning, War Horn, Gong)
  • Custom Sound ID input now only appears when "Custom (Enter Sound ID)" is selected
  • Converted all sounds to File Data IDs for consistency with wowhead.com/sounds
  • Custom Sound ID and Test Sound button now use inline width for better layout
  • Default whisper sounds are now muted when custom sounds are enabled
  • Increased dropdown delay from 0.5s to 1.5s for better usability

Framework Enhancements

  • AbstractOptionsPanel: Added hidden property support for dynamic widget visibility
    • Supports both boolean values and functions that return boolean
    • Works across all widget types (checkboxes, dropdowns, inputs, buttons)
    • Panel automatically refreshes when settings change

Bug Fixes

  • Tooltip Taint Errors: Resolved critical taint issues affecting world quest tooltips
    • Fixed UnitGUID taint by using UnitTokenFromGUID() API with pcall wrappers
    • Excluded GameTooltip from styling to prevent ItemTooltip dimension taint spreading
    • Added WorldMapFrame detection to skip tooltip modifications when world map is open
    • Disabled quest tooltip repositioning hook that caused taint in dimension calculations
    • Protected GameTooltip geometric modifications with ItemTooltip:IsShown() checks
    • Wrapped all tooltip geometric operations in pcall for taint containment

Known Limitations

  • Circular artifact on square minimap in quest areas is a Blizzard UI limitation and cannot be fixed by addons (appears even with all addons disabled)

AbstractUI v12.0.1.12

13 Mar 22:40

Choose a tag to compare

AbstractUI v12.0.1.12

Features

  • Custom Whisper Sound Improvements
    • Standardized Audio: Converted all preset sounds to use File Data IDs from Wowhead for better consistency and reliability.
    • Verification: All preset and custom sounds are now fully searchable and verifiable via the Wowhead sounds database.
    • Refined UI: The Custom Sound ID input now only appears when "Custom (Enter Sound ID)" is selected in the dropdown.
    • Compact Layout: Resized the Custom Sound ID input and Test Sound buttons to display inline, saving vertical space.
    • Better Documentation: Updated the feature description with clear instructions on how to locate specific IDs on Wowhead.

Bug Fixes

  • Audio & Customization
    • Mute Logic: The default game whisper sound is now correctly suppressed when a custom sound is enabled.
    • Visibility Logic: Fixed a bug where the Custom Sound ID input field remained visible regardless of the dropdown selection.
  • Options Panel
    • Widget Visibility: Added framework support for the hidden property on option widgets (supports both boolean and functional triggers).
    • Dynamic Refresh: The panel now automatically refreshes the UI state when toggling whisper sounds or switching presets.
    • UX Tweak: Increased the dropdown menu auto-close delay from 0.5s to 1.5s to improve navigation and prevent accidental closing.

Technical Changes

  • Integrated hidden property evaluation into four core render functions within the AbstractOptionsPanel framework.
  • Migrated audio execution from PlaySound() (Sound Kit IDs) to PlaySoundFile() (File Data IDs) for all whisper-related triggers.
  • Implemented MuteSoundFile() and UnmuteSoundFile() hooks to effectively manage default sound suppression.
  • Added AbstractUI_OptionsPanel:Refresh() calls to handle real-time UI updates during setting transitions.

Preset Sound IDs (File Data IDs from wowhead.com/sounds)

  • Default: 567482 (TellMessage)
  • Bell: 566121 (Bell Toll Inn)
  • Click: 567451 (UI Click)
  • Quest: 567439 (Quest Complete)
  • Interface: 567499 (Interface Sound)
  • Raid: 567397 (Raid Warning)
  • Horn: 566094 (War Horn)
  • Gong: 566076 (Gong)

v12.0.1.11: Remove SetParent/UnregisterAllEvents on party frames

13 Mar 03:55

Choose a tag to compare

AbstractUI v12.0.1.11 Release Notes

🎉 Major Features

Group Manager - Complete Redesign

  • Completely rewritten to use Blizzard's CompactRaidFrameManager with full AbstractUI styling
  • Compact toggle icon that can be positioned anywhere via Move Mode
  • World markers now work in combat - leverages Blizzard's secure implementation
  • Comprehensive reskinning applies AbstractUI colors, fonts, and styling to all elements
  • Smart positioning - automatically places the expanded frame left/right of the toggle icon
  • Cleaner integration - removed conflicting "Hide Compact Party/Raid Manager" tweak

Custom Whisper Sound

  • New tweak: Replace the default whisper notification sound
  • 9 preset sounds to choose from (Bell, Gong, Quest Complete, etc.)
  • Custom sound ID option for advanced users
  • Test Sound button to preview your selection
  • Smart UI - options only appear when feature is enabled

✨ Improvements

Tweaks Module

  • Quest/Dialogue Horizontal Position slider range increased from ±800 to ±1200 pixels
  • Better support for ultra-wide monitors and custom layouts

Group Manager

  • Toggle icon integrates with Move Mode system (shows "GM" label when moving)
  • Prevents Blizzard frame from auto-showing when not expanded
  • Maintains all Blizzard functionality (role checks, ready checks, world markers, etc.)
  • Styled checkboxes, buttons, and text to match AbstractUI theme

🐛 Bug Fixes

  • Fixed IsAddOnLoaded and LoadAddOn API compatibility for modern WoW versions (C_AddOns namespace)
  • Fixed SetTextColor calls to properly use ColorPalette:GetColor() return values
  • Cleaned up 555+ lines of orphaned code from Group Manager refactoring
  • Fixed syntax errors from incomplete code cleanup during major refactoring
  • Removed GROUP_ROSTER_UPDATE event registration from Tweaks (no longer needed)

📝 Notes

  • The "Hide Compact Party/Raid Manager" tweak has been removed as it conflicted with the new Group Manager
  • Custom whisper sounds use event-based detection (CHAT_MSG_WHISPER, CHAT_MSG_BN_WHISPER)
  • All reskinning is applied recursively to handle dynamic UI elements

AbstractUI v12.0.1.10

11 Mar 05:42

Choose a tag to compare

AbstractUI v12.0.1.10 Release Notes

New Features

Group Manager Module

Added a comprehensive group management interface with compact design and intelligent positioning.

Core Features:

  • Compact Toggle Button: 30×30 icon button that expands to show full controls panel
  • Smart Panel Positioning: Automatically positions panel to the right, left, down, or up based on available screen space
  • Movable Integration: Full integration with AbstractUI's Movable system
    • Green highlight border in Move Mode (shows "GM" label)
    • Drag to reposition anywhere on screen
    • Nudge arrows (< ^ v >) for precise placement
    • Position saved to profile

Raid Markers Section:

  • 8 marker buttons (Skull → Star order): Skull, Cross, Square, Moon, Triangle, Diamond, Circle, Star
  • Left-click to mark current target
  • Right-click to clear marker from any unit
  • Hover shows marker name and usage instructions

World Markers Section:

  • 8 world marker buttons (Skull → Star order)
  • Click to place marker on ground at cursor location
  • Desaturated appearance to distinguish from raid markers
  • Hover shows placement instructions

Actions Section:

  • Leave Party: Leave current group or raid
  • Ready Check: Initiate ready check (requires leader/assistant)
  • Convert to Raid: Convert party to raid (requires party leader)

Difficulty Settings:

  • Dungeon Difficulty Dropdown: Normal, Heroic, Mythic (shows only when in dungeons)
  • Raid Difficulty Dropdown: Normal, Heroic, Mythic (shows only when in raids)
  • Context-aware visibility based on instance type
  • Uses AbstractUI framework dropdown component

Integration:

  • Themed using active theme's color palette
  • Automatic show/hide based on group status
  • Event-driven updates (GROUP_ROSTER_UPDATE, ZONE_CHANGED_NEW_AREA, PLAYER_DIFFICULTY_CHANGED)
  • Configuration options for compact/expanded sizes

Improvements

Tweaks Module

  • Hide Party Frame Option: Added toggle to hide Blizzard's CompactRaidFrameManager (recommended when using Group Manager)

Bug Fixes

  • Fixed panel positioning to open beside toggle button instead of below
  • Fixed "Actions:" label positioning to prevent overlap with World Markers
  • Fixed color consistency between Group Manager and settings panel
  • Corrected marker display order (reversed to Skull → Star)

Configuration

Enable in: AbstractUI Settings → Modules → Group Manager

Related setting: Tweaks → Hide Compact Party/Raid Manager (hides Blizzard's default)


Note: Group Manager requires being in a party or raid to display. The toggle button appears automatically when grouped.

AbstractUI v12.0.1.9

10 Mar 07:56

Choose a tag to compare

AbstractUI v12.0.1.9

Bug Fixes

  • Tooltips: Fixed taint error when mousing over world quests on the map that caused "attempt to perform arithmetic on local 'itemWidth' (a secret number value tainted by 'AbstractUI')" error.
  • Added proper protection checks to prevent tooltip modifications during protected UI contexts (world map, etc.).
  • Added "WorldMap" to protected frame detection list.
  • TOC File: Moved Modules\MacroIconData.lua from ACE3 FRAMEWORK section to MODULES section where it belongs with related files.

Features

  • Movable Frames: Added support for moving the Prey icon (UIWidgetPowerBarContainerFrame).
  • The Prey tracker icon can now be repositioned by clicking and dragging.
  • Position is saved and persists across sessions.
  • Automatically restores position when the frame is shown.

AbstractUI v12.0.1.8

09 Mar 10:07

Choose a tag to compare

AbstractUI v12.0.1.8 Release Notes

Bug Fixes

Taint Error Fixes

  • Fixed 118x recurring taint error with AFK status checks during combat movement
  • Fixed Tooltip taint errors when hovering over world quests, mail items, and trade windows
  • Fixed Money frame taint error ("attempt to perform arithmetic on secret number value")
  • Fixed Multiple "secret boolean" taint errors from UnitIsAFK, UnitIsDead, and IsResting checks

UnitFrames

  • Changed Combat behavior: All AFK/Resting/Dead status checks now skip during combat (previously attempted to check during movement)
  • Added Automatic clearing of AFK/Resting/Dead icons when entering combat
  • Added Double-layered pcall protection for secret boolean values to prevent taint propagation
  • Improved Performance by eliminating unnecessary API calls during combat

Tooltips

  • Added IsProtectedTooltipContext() function to detect and skip tooltip modifications in sensitive UI contexts
  • Added Protection for tooltip modifications in: Mail frames, Trade windows, Bank, Merchant, Auction House, Containers, Loot windows, and Store
  • Fixed GetItem(), GetUnit(), GetOwner(), and GetCenter() calls now wrapped in pcall to prevent secret value taint
  • Fixed AFK/DND status display in tooltips now using double-pcall pattern for secret boolean protection

UI Improvements

Cursor Animate Module

  • Improved Settings panel now uses horizontal layout with 2-3 items per row instead of single column
  • Changed All toggles, sliders, and dropdowns now use width = "half" for better space utilization
  • Improved Less scrolling required in Cursor Animate settings tab

Miscellaneous

  • Removed TileExtractor startup chat spam (help text now commented out, commands still functional)