Releases: VengeanceStudio/AbstractUI
Releases · VengeanceStudio/AbstractUI
AbstractUI v12.0.1.22
AbstractUI v12.0.1.22
Character Pane Improvements
Fixed
- Fixed shoulder enchants not being displayed in the character pane
- Shoulder slot now correctly shows enchant status
Changed
- Enchant stat names are now abbreviated for better readability:
- Agility → Agi
- Intellect → Int
- Strength → Str
- Stamina → Stam
AbstractUI v12.0.1.21
AbstractUI v12.0.1.21
CharacterPane Complete Overhaul
Sidebar Tab Improvements
- Repositioned sidebar tabs 15px to the right for better spacing
- Added tab click detection for proper stats overlay visibility
- Improved visual hierarchy and usability
Titles Panel Redesign
- Custom titles panel with optimized layout
- Title names truncated to 25 characters for cleaner display
- Alphabetical sorting for easier navigation
- Selection highlighting with gold text
- Fixed title selection bugs using IsTitleKnown() API
- Manual selectedTitleID tracking eliminates lag
Equipment Manager Complete Rebuild
- New button layout: Equip (48px) and Save (48px) buttons at top, plus compact "+" button for creating new sets
- Replaced Blizzard scrollbar with AbstractUI ScrollFrame for consistent theming
- Equipment sets display in scrollable list (150px wide, 24px tall buttons)
- Green checkmark texture indicates currently equipped set
- Gold text and border highlight selected set
- Auto-selects first equipped set on open (or first set if none equipped)
Equipment Set Features
- 8x8 specialization icon indicators overlay equipment set icons to show spec assignments
- Right-click context menu with options:
- Change Name/Icon (opens custom editor)
- Delete equipment set
- Assign to Specialization (one set per spec)
- Custom "Edit Equipment Set" dialog with:
- Name editing (31 character limit)
- Icon selector with 9 icons per row (32x32 size)
- Icon search functionality (100 icons default, 200 maximum with search)
- Real-time filtering by icon name via search box
- AbstractUI ScrollFrame integration for smooth scrolling
- Icon tooltips display icon names on hover
- Gold border selection indicator
- Removed "None" option from spec assignment (cleaner one-to-one relationship)
Scale Control
- Added scale control to CharacterFrame title bar (left of close button)
- "Scale:" input box allows manual scaling from 1.0 to 2.0
- Default scale set to 1.25 (125%) for improved readability
- Auto-selects text when clicked for quick value entry
- Press Enter to apply, Escape to cancel
- Matching font sizes throughout UI
Technical Improvements
- Integration with AbstractUI theme system (ColorPalette)
- Consistent backdrop styling across all custom panels
- Event handling: EQUIPMENT_SETS_CHANGED, EQUIPMENT_SWAP_FINISHED
- Proper timing delays for ScrollFrame initialization
- Theme-colored borders and backgrounds throughout
AbstractUI v12.0.1.20
AbstractUI v12.0.1.20 Release Notes
New Features
Character Panel Enhancements
Upgrade Track Display
- Equipment slots now display upgrade track information alongside item levels
- Shows upgrade tier and progress (e.g., "253 (Champion 1/6)", "259 (Hero 2/6)")
- Automatically parses tooltip data to extract upgrade information
- Strips unnecessary "Upgrade Level:" prefix for cleaner display
Dynamic Title Bar
- Title bar now adapts based on active tab
- Character Tab: Displays Name | Item Level | Level/Spec/Class layout
- Other Tabs (Reputation, Currency, Equipment Manager): Displays centered character info (Level/Spec/Class only)
- Tab changes trigger immediate title updates via efficient click hooks
Performance Improvements
- Replaced continuous polling with event-driven tab click detection
- Hooks individual tab buttons instead of checking every frame
- Significantly reduced unnecessary update cycles
Code Cleanup
- Removed debug frame hierarchy output
- Cleaned up temporary diagnostic functions
AbstractUI v12.0.1.19
AbstractUI v12.0.1.19
Bug Fixes
Guild Broker
- Fixed zone names wrapping to new lines by adding 16-character limit with truncation
- Fixed long guild notes wrapping to new lines by adding 30-character limit with truncation
- All text fields now have appropriate character limits to prevent display issues
Map Reveal
- Fixed "bad argument #1 to 'ipairs' (table expected, got nil)" error in RevealMap function
- Added validation checks for map canvas and zoom level data before attempting to refresh map overlays
- Added error protection with pcall to safely handle map refresh operations
Tooltips
- Critical Performance Fix: Resolved "script ran too long" error in mount detection
- Previously iterated through thousands of mounts for each player buff
- Now uses
C_MountJournal.GetMountFromSpell()for direct mount ID lookup - Reduces function complexity from O(n²) to O(n)
- Disabled mount lookups while in instances/dungeons to avoid Blizzard API restrictions
- Implemented cached instance state flag to prevent repeated
IsInInstance()calls that can cause taint - Added
PLAYER_ENTERING_WORLDevent handler to update instance state on zone changes
Technical Improvements
- Adopted consistent instance detection pattern across modules (Delves, Tooltips)
- Reduced API call overhead in tooltip system
- Improved error handling for map-related functions
AbstractUI v12.0.1.18
AbstractUI v12.0.1.18
New Features
- Delves broker: Added
- Catalyst broker: Added
Bug Fixes
Taint Error Resolution
- Fixed taint error after exiting instances: Replaced repeated
IsInInstance()calls with event-based instance tracking in Delves broker to prevent tainted values from causing arithmetic errors - Fixed tooltip positioning taint: Rewrote SmartAnchor tooltip positioning system to use alignment-based positioning (LEFT/CENTER/RIGHT) instead of
GetWidth()measurements, eliminating taint propagation from secure frames
Export Privacy Protection
- Removed character-specific data from exports: Profile exports no longer include personal data such as gold amounts, token history, or time played statistics
- Added namespace filtering: Export system now filters sensitive keys from Bar and TimePlayed namespaces before creating export strings
Time Played Broker Improvements
- Faster initial updates: Time Played broker now updates within seconds after login instead of taking 30+ seconds
- Improved event timing: Changed from
PLAYER_LOGINtoPLAYER_ENTERING_WORLDfor more reliable data requests - Immediate display refresh: Broker text updates instantly when time played data is received instead of waiting for the next 60-second ticker
- Added retry mechanism: Automatic retry after 11 seconds if WoW server doesn't respond immediately
- Fixed /reload behavior: Time Played now requests data immediately during
/reloadinstead of waiting for next zone change
Technical Changes
- Delves broker: Added
isInDungeonOrRaidflag updated once per zone change - BrokerBar: Stored
brokerAlignproperty on widgets for consistent tooltip positioning - Core: Implemented
namespaceExclusionstable for filtering character data during export - TimePlayed: Module-level broker reference for event-driven updates
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)