3.0.0
What's new
Changelog
All notable changes to BattleForAzerothUI are documented here.
[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.
Added
- GitHub Actions workflow for automatic CurseForge packaging via BigWigs Packager on tag push.
[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

