Skip to content

Releases: VengeanceStudio/AbstractUI

AbstractUI v12.0.1.22

09 Apr 01:06

Choose a tag to compare

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

09 Apr 00:43

Choose a tag to compare

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

06 Apr 22:30

Choose a tag to compare

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

05 Apr 06:36

Choose a tag to compare

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_WORLD event 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

04 Apr 07:01

Choose a tag to compare

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_LOGIN to PLAYER_ENTERING_WORLD for 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 /reload instead of waiting for next zone change

Technical Changes

  • Delves broker: Added isInDungeonOrRaid flag updated once per zone change
  • BrokerBar: Stored brokerAlign property on widgets for consistent tooltip positioning
  • Core: Implemented namespaceExclusions table for filtering character data during export
  • TimePlayed: Module-level broker reference for event-driven updates

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)