Releases: VengeanceStudio/AbstractUI
Releases · VengeanceStudio/AbstractUI
AbstractUI v12.0.1.17
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 originalSetPointandClearAllPointsfunction references before overriding them - BrokerBar: Fixed
attempt to perform arithmetic on local 'tW' (a secret number value tainted by 'AbstractUI')error by usingtonumber()to cleanse tainted values fromGetWidth()andGetCenter()calls - BrokerBar: Fixed
bad argument #2 to 'tonumber' (base out of range)error by capturingGetCenter()x-coordinate separately before passing totonumber() - 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
AbstractUI v12.0.1.16
Bug Fixes
- MinimapButtons: Fixed
attempt to call field '_abstractOriginalClearAllPoints' (a nil value)error by properly saving originalSetPointandClearAllPointsfunction references before overriding them - BrokerBar: Fixed
attempt to perform arithmetic on local 'tW' (a secret number value tainted by 'AbstractUI')error by usingtonumber()to cleanse tainted values fromGetWidth()andGetCenter()calls - BrokerBar: Fixed
bad argument #2 to 'tonumber' (base out of range)error by capturingGetCenter()x-coordinate separately before passing totonumber()
AbstractUI v12.0.1.15
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.luafor better maintainability - Full options integration with position, layout, and appearance controls
- Module can be independently enabled/disabled in General > Modules settings
- Extracted ~500 lines of button bar code from
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 -
/mbbor/collectbuttonsfor 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.luato 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
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
getfunctions now return proper array format for display - Color picker
setfunctions 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
- Issue was format mismatch: AbstractOptionsPanel color picker expects array format
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
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
hiddenproperty 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
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
hiddenproperty 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.
- Widget Visibility: Added framework support for the
Technical Changes
- Integrated
hiddenproperty evaluation into four core render functions within theAbstractOptionsPanelframework. - Migrated audio execution from
PlaySound()(Sound Kit IDs) toPlaySoundFile()(File Data IDs) for all whisper-related triggers. - Implemented
MuteSoundFile()andUnmuteSoundFile()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
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
IsAddOnLoadedandLoadAddOnAPI compatibility for modern WoW versions (C_AddOns namespace) - Fixed
SetTextColorcalls 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
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
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.luafrom 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
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, andIsRestingchecks
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(), andGetCenter()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)