3.0.1
What's new
Changelog
All notable changes to BattleForAzerothUI are documented here.
[3.0.1] - 2026-07-30
Fixed
- Classic Era / TBC Anniversary: Action bars no longer drift out of position during combat. The
IsInDefaultPositionoverrides onMultiBarBottomLeftandMultiBarBottomRight— which stopUpdateBottomActionBarPositionsfrom clearing and resetting their anchors via the secureFramePositionDelegate— were lost when the retail support rebuild reorganized the action bar files, reintroducing the drift originally fixed in 2.4.1. They are restored inactionbars_classic.lua.
[3.0.0] - 2026-07-23
Changed
- Consolidated Classic Era and TBC Anniversary into single
_classic.luafiles. Classic Era 1.15.9 now shares the same UI engine as TBC Anniversary 2.5.6, so all five*_anniversary.luafiles are removed and their logic merged into the*_classic.luacounterparts with dual guards (WOW_PROJECT_CLASSIC+WOW_PROJECT_BURNING_CRUSADE_CLASSIC). - Removed Pixel Perfect option. The scaling option has been removed from the options panel and saved variables — modern WoW clients handle scaling natively.
- XP bar text toggle no longer requires a reload. The "Experience Bar Text" option now applies immediately.
Fixed
- Classic Era: XP/reputation bar now works on Classic Era —
StatusTrackingBarManagerwas previously hidden incore.lua, preventing the bar from displaying. It is now preserved and repositioned/resized to match the BfA art. - Classic Era:
/bfaslash command fixed —Settings.OpenToCategorynow receives the numeric category ID fromcategory:GetID()instead of a string. - Classic Era: Secondary status bar (reputation) hidden when not at max level to prevent it from stacking behind the action bar art.
- Classic Era: XP bar repositions correctly after exiting Edit Mode via
EDIT_MODE_LAYOUTS_UPDATEDevent.
[2.4.2] - 2026-06-12
Fixed
- Classic Era: Fixed hunter pet bar overlapping
MultiBarBottomLeft— anchoredPetActionBarFrameabove its reference bar (petBOTTOMLEFT→ referenceTOPLEFT) instead of below it, switching the reference betweenMultiBarBottomLeftwhen Bar 2 is shown andMainMenuBarwhen it is hidden so the pet bar drops to fill the gap - Retail engine: Fixed
MultiBarBottomLeftcombat drift — overrodeIsInDefaultPositionto returnfalseon managed bars soUpdateBottomActionBarPositionsskips them entirely during combat, preventingClearAllPoints()+SetToLayoutAnchor()from resetting anchors that insecure addon code cannot override until combat ends
[2.5.0] - 2026-05-19
Added
- Modern retail / Midnight support (interface 120005,
WOW_PROJECT_MAINLINE). New*_retail.luacode path ported to the rebuilt Midnight 12.0 UI: main barMainActionBar(buttons nested inMainActionBarButtonContainer1..12), gryphons viaMainActionBar.EndCaps.LeftEndCap/RightEndCap, default bar art (MainActionBar.BorderArt, atlasUI-HUD-ActionBar-Frame) hidden and replaced with the BfA art, micro menu viaMicroMenuContainer, bags viaBagsBar(incl. the reagent bag), XP/rep anchored+sized viaStatusTrackingBarManagerwith the BfA backdrop. Forces the BfA layout over Edit Mode (skipAutomaticPositioning+SetPointhooks +EDIT_MODE_LAYOUTS_UPDATED+C_Timer.After(0)deferral, combat-guarded).
Changed
- Three-way engine split. The old
*_retail.luafiles actually targeted the TBC Classic Anniversary engine (interface 20505), not modern retail. They are renamed*_anniversary.luawith logic untouched (still known-good on 20505) and a precise positive guardWOW_PROJECT_ID ~= WOW_PROJECT_BURNING_CRUSADE_CLASSIC. The*_retail.luanamespace now holds the genuine modern-retail (Midnight) port. All guards are now positive per-engine. core.luamade nil-safe forMainMenuBar(does not exist on Midnight) and no longer hidesStatusTrackingBarManageron Mainline (the Midnight XP/rep path repurposes it).- TOC interface updated
120001→120005; all*_anniversary.lua/*_retail.luafiles registered.
Known limitations
- Midnight XP/rep reskin covers position/size + BfA backdrop only; Blizzard's default status-bar textures are not yet stripped (the Midnight
StatusTrackingBarManagerinternal structure differs from 20505 and needs a deeper pass). - Midnight bar pixel offsets are ported from the Anniversary layout and may need visual tuning (Midnight's default bar width differs).
[2.4.1] - 2026-03-11
Fixed
- Retail engine: Fixed
MultiBarBottomLeftshifting left during combat — setskipAutomaticPositioning = trueon managed bars to preventUIParentManageBottomFrameContainerfrom resetting their anchors to UIParent on bar visibility changes during combat - Retail engine: Fixed
StanceBaranchor point fromBOTTOMRIGHT/TOPRIGHTtoBOTTOMLEFT/TOPLEFTto matchPetActionBarpositioning logic
[2.4] - 2026-03-04
Fixed
Retail engine: Action bar, MultiBarBottomLeft/Right, pet bar, and stance bar now position correctly
Retail engine: Added
ClearAllPoints()before allSetPoint()calls on Edit Mode-managed bars, preventing conflicting anchorsRetail engine: MultiBarBottomRight 2-row wrap now targets
MultiBarBottomRightButtonContainerframes (correct retail API) instead of individual buttonsRetail engine: Repositioning is now reactive —
hooksecurefuncon barSetPointand theEDIT_MODE_LAYOUTS_UPDATEDevent reapply layout whenever Edit Mode or the game engine moves barsRetail engine: Combat handling improved via
PLAYER_REGEN_ENABLEDevent to apply deferred layout changes after leaving combatRetail engine: Stance bar global corrected to
StanceBar(retail) vsStanceBarFrame(Classic Era)Classic Era: Adjusted micro button and backpack button vertical positions (
y: 4→0andy: 47→43) for better alignment in the bottom-right cornerRetail engine: Fixed
MultiBarBottomRightanchor point fromLEFT/RIGHTtoTOPLEFT/TOPRIGHT— incorrect anchor caused the frame to drift lower than expected after each hide/reshow cycleRetail engine: Fixed Lua error (
abs(nil)) when toggling Bottom Left Bar —PetActionBarwas left without any anchor afterClearAllPoints(), causing Edit Mode's layout calculation to fail; it now always receives aSetPoint
Known Issues
- Retail engine: XP/reputation bar positioning is not yet functional (in progress)
[2.3] - 2026-03-04
Added
- Retail engine support (interface 20505). The addon now loads and functions on both Classic Era and retail engine servers.
xpbar_retail.lua: UsesC_Reputation.GetWatchedFactionData()for reputation tracking (retail engine API). Max level defaults to 70.micromenu_retail.lua:C_Timer.After(0)deferral on all micro button hooks to prevent taint when Edit Mode exits. Loop skipsSocialsMicroButton(hidden in BFAUI on retail).actionbars_retail.lua:C_Timer.After(0)deferral onPLAYER_ENTERING_WORLDto counteract Edit Mode overriding bar positions. Explicit anchoring ofMultiBarBottomLeft,MultiBarBottomRight, andPetActionBar(retail engine does not auto-position these).MultiBarBottomRightButton7wrapped below button 1 to produce a 2×6 layout (TOPLEFTrelative toMultiBarBottomRightButton1.BOTTOMLEFT).- Bag buttons (
MainMenuBarBackpackButton,CharacterBag0-3Slot) raised toHIGHframe strata so they render above action bar art frames on retail.
Changed
- Codebase refactor:
core.luais now a lean entry point (version detection, saved variables, UIHider/HideFrame, texture cleanup). All feature logic has been split into separate files following Bartender4's self-guarding file pattern — each file returns immediately if the wrong client is detected.options_classic.lua/options_retail.lua— slash commands, Settings API, static popups, pixel perfect scaling, gryphon hidingxpbar_classic.lua/xpbar_retail.lua— XP/reputation bar positioning and display logicmicromenu_classic.lua/micromenu_retail.lua— micro menu repositioning, latency bar, bag layoutactionbars_classic.lua/actionbars_retail.lua— all action bar, pet bar, and stance bar positioningbags_classic.lua/bags_retail.lua— bag space indicator
- Classic Era uses
PetActionBarFrame(correct global name for 1.x); retail usesPetActionBar. micromenu_classic.lua: Micro button loop changed to#MICRO_BUTTONS-1and skipsGuildMicroButton(hidden in BFAUI on Classic Era).actionbars_classic.lua:InitializeBarsanchorsMultiBarBottomLeftButton1explicitly toMultiBarBottomLeftat offset(0, -6). This fixes a misalignment that occurred when Warriors switch stances — the game resetsMultiBarBottomLeftto{'BOTTOMLEFT', 'ActionButton1', 'TOPLEFT', 0, 17}on each stance change.actionbars_classic.lua:MultiBarBottomRightpositioned at("LEFT", MultiBarBottomLeft, "RIGHT", 43, -6). Page arrow and page number anchors moved outside theInCombatLockdown()guard so they are always set inActivateLongBar.
Fixed
core.lua:StaticPopup_Show(WELCOME_POPUP)corrected toStaticPopup_Show("WELCOME_POPUP")— the variable was nil, causing a Lua error on the first login of a new character.core.lua:BottomRightBarAlphawas incorrectly set from theBottomLeftBarsaved variable (copy-paste bug).MultiBarBottomRightButtonkeybind visibility was always driven by the BottomLeft setting instead of BottomRight.
[2.2] - 2026-02-10
- Fixed an issue where the options panel was not properly loaded.
- Fixed the button linking to Blizzard action bar settings.
[2.1] - 2026-01-26
- Fixed XP bar not hiding at level 60 (max level).
- Migrated options panel to WoW's Settings API (
Settings.RegisterCanvasLayoutCategory). Options accessible via/bfaor Game Menu > Options > AddOns. - Fixed reputation bar display — can now show reputation progress when a faction is tracked.
[1.12] - 2025-10-24
- Fixed errors to make the addon work on WoW Classic Anniversary servers (client 1.15.8).
[1.11]
- Added free bag space count on the backpack button.
- Potential fix for XP bar visibility.
[1.10]
- Updated art assets to match current BfA artwork.
- Added option to hide gryphons on the main action bar.
[1.09]
- Fixed frame strata being too low for the XP bar.
[1.08]
- Changed MicroMenuArt texture to a shorter width (three slots removed).
- Fixed QuestLogMicroButton placement/sizing for characters below level 10.
- Small fix to pixel perfect scaling for a bug present in 8.1/Classic.
- Cleanup and refactoring.
[1.07]
- Modified to restore the BfA UI to WoW Classic. Removed retail-only code.
[1.06]
- Objective Tracker now positions correctly beneath Blizzard Arena Frames.
- Vehicle Seat Indicator positions correctly when Objective Tracker or Arena Frames are visible.
- Pixel Perfect Mode fixed.
- Refactored code.
[1.05]
- Enabling Right Bar while Right Bar 2 is disabled now enlarges and repositions the Right Bar.
- Fixed visual issue where the Artifact bar moved randomly during battlegrounds.
- Fixed stance bar positioning for single stance when Bottom Left Bar is hidden.
- Fixed Exhaustion Tick not repositioning correctly on XP bar resize.
- Fixed Vehicle Seat Indicator appearing over the Objective/Quest frame.
- Refactored code.
[1.04]
- Fixed visual issue when unequipping artifact weapon at max level.
- Fixed visual issue when logging in at max level with no artifact weapon equipped.
[1.03]
- Fixed Pet ActionBar positioning and art when Bottom Left ActionBar is hidden.
- Fixed
[ADDON_ACTION_BLOCKED]errors — addon now only calls protected functions outside of combat.
[1.02]
- Recreated Pixel Perfect Mode; now works on resolutions above 1080p.
[1.01]
- Fixed issue where the artifact bar appeared on
UPDATE_EXHAUSTIONevent for levels 98–109.
This mod has no additional files

