PitBull Unit Frames 4.0
PitBull Unit Frames 4.0
Woof. Arf. Yip.
Getting Started:
You can help translate PitBull for your language with the localization tool.
Classic
PitBull works with WoW Classic! Classic Era/Vanilla is supported in
v4.3.x-vanilla releases. Other Classic versions are supported in v4.2.x releases
(the same releases retail use).
Download
CurseForge: https://www.curseforge.com/wow/addons/pitbull-unit-frames-4-0
Wago: https://addons.wago.io/addons/pitbull4
WoWInterface: https://www.wowinterface.com/downloads/info20021
-
View User Profile
-
Send Message
Posted Jul 31, 2026Hey Rumor and Nebula! Super encouraged by how far the addon has come. I know it has to be an insane amount of work.
I am curious as to the functionality of the 3-d portrait. I know it's resource heavy, but I like to use it. It seems to work sporadically in the open world and not at all in instances. Is this recoverable? Or another casualty of combat addon restrictions. Thanks!
-
View User Profile
-
Send Message
Posted Jul 31, 2026@nottle_ I can't speak for what they'll do with Pitbull but other unit frame addons which have been updated and work in Midnight currently have 3D portraits that don't glitch out. I suspect any glitching on Pitbulls unit frames currently is just because it's not making use of the correct API for them.
-
View User Profile
-
Send Message
Posted Aug 1, 2026@nottle_ noticed it myself: i tried som fixes but im not 100% happy with it - do you use the head models or the full 3d models?
-
View User Profile
-
Send Message
Posted Aug 1, 2026@Rumorix Just the head models. It mostly works in the open world, but when in a dungeon it's like it can't refresh properly to grab the model. Which I suspected might be due to the new restrictions. Sometimes, if all the fighting stops or I die in the dungeon, then it will populate.
-
View User Profile
-
Send Message
Posted Aug 1, 2026@nottle_ Thanks, this is very helpful. I reviewed the current 3D portrait refresh path, and this looks more like a missed model refresh after zoning than a definite hard combat restriction.
The model can initially be created while the unit or model data is not fully ready. Later UNIT_MODEL_CHANGED or UNIT_PORTRAIT_UPDATE events currently update the frame, but they do not always force SetUnit() to run again when GUID data is restricted.
This would explain why the head portrait sometimes appears after combat ends or after the character dies.
I am preparing a targeted fix with forced event-based refreshes and a small number of delayed retries after entering an instance. It will avoid continuous polling because 3D portraits are already relatively resource-heavy.
Could you also let me know which frames are affected — player, target, focus, party members, or all of them?
-
View User Profile
-
Send Message
Posted Aug 1, 2026@Rumorix also: just updated to 107 - give it a try pls =)
-
View User Profile
-
Send Message
Posted Aug 1, 2026@nottle_ do not wonder: i also updated again - i moved the debugpart from beeing standalone in a extra window into the pitbull config menu - i assume that will help in the future - by default all debug is disabled - you can enabled it via chat or ingame menu
-
View User Profile
-
Send Message
Posted Aug 1, 2026@Rumorix First of all, you are incredible. Thank you so much for all this effort today (and previously) Config pane is working. Portraits are now refreshing correctly for party, pet and player in dungeons!
The only other items I have noticed is the target isn't populating in a dungeon. Also, any buffs/debuffs on the unit frames in dungeons are just showing the default pitbull config tool tip.
Here is a scan from inside the dungeon with the target protrait not populating.
[PB4-P108] portrait snapshot reason=window-scan frame=PitBull4_Groups_PartyUnitButton4 unit=party4 ready=true pending=nil lastReason=unit-event-retry
[PB4-P108] portrait snapshot reason=window-scan frame=PitBull4_Groups_PartyUnitButton3 unit=party3 ready=true pending=nil lastReason=unit-event-retry
[PB4-P108] portrait snapshot reason=window-scan frame=PitBull4_Groups_PartyUnitButton2 unit=party2 ready=true pending=nil lastReason=unit-event-retry
[PB4-P108] portrait snapshot reason=window-scan frame=PitBull4_Frames_Target unit=target ready=nil pending=nil lastReason=nil
[PB4-P108] portrait snapshot reason=window-scan frame=PitBull4_Frames_Party unit=target ready=nil pending=nil lastReason=nil
[PB4-P108] portrait snapshot reason=window-scan frame=PitBull4_Groups_PartyUnitButton1 unit=party1 ready=true pending=nil lastReason=unit-event-retry
[PB4-P108] portrait snapshot reason=window-scan frame=PitBull4_Frames_Player's pet unit=pet ready=true pending=nil lastReason=unit-event-retry
[PB4-P108] portrait snapshot reason=window-scan frame=PitBull4_Frames_Player unit=player ready=true pending=nil lastReason=unit-event-retry
[PB4-P108] portrait snapshot-summary reason=window-scan models=8
[PB4-P108] background-portrait snapshot-summary reason=window-scan models=0
[PB4-P108] scan-summary reason=window-scan tracked=0 playerPrinted=0 candidates=0 directZeros=0 treeZeros=0 onlyCandidates=true. Use /pitbull debugon, then /pitbull debug scanall to dump registered player aura texts.
Here are screens of what I am talking about:
https://imgur.com/a/k0CXShd
-
View User Profile
-
Send Message
Posted Aug 1, 2026@nottle_ thanks for that log! i just uploaded v112 - please give it a try and i am waiting for your feedback =)
-
View User Profile
-
Send Message
Posted Aug 1, 2026@Rumorix This last patch looks like it applied a little oddly.
1. The party frames aren't populating at all anymore
2.The target pane portrait is populating right away, but it is populating with two portraits:
[PB4-P112] portrait snapshot reason=window-scan frame=PitBull4_Groups_PartyUnitButton4 unit=party4 ready=true pending=nil lastReason=enter-world+5s
[PB4-P112] portrait snapshot reason=window-scan frame=PitBull4_Groups_PartyUnitButton2 unit=party2 ready=true pending=nil lastReason=enter-world+5s
[PB4-P112] portrait snapshot reason=window-scan frame=PitBull4_Groups_PartyUnitButton3 unit=party3 ready=true pending=nil lastReason=enter-world+5s
[PB4-P112] portrait snapshot reason=window-scan frame=PitBull4_Groups_PartyUnitButton1 unit=party1 ready=true pending=nil lastReason=enter-world+5s
[PB4-P112] portrait snapshot reason=window-scan frame=PitBull4_Frames_Party unit=target ready=true pending=nil lastReason=unit-event-retry
[PB4-P112] portrait snapshot reason=window-scan frame=PitBull4_Frames_Target unit=target ready=true pending=nil lastReason=unit-event-retry
[PB4-P112] portrait snapshot reason=window-scan frame=PitBull4_Frames_Player unit=player ready=true pending=nil lastReason=enter-world+5s
[PB4-P112] portrait snapshot-summary reason=window-scan models=7
[PB4-P112] background-portrait snapshot-summary reason=window-scan models=0
[PB4-P112] scan-summary reason=window-scan tracked=0 playerPrinted=0 candidates=0 directZeros=0 treeZeros=0 onlyCandidates=true. Use /pitbull debugon, then /pitbull debug scanall to dump registered player aura texts.
[PB4-P112] debug disabled. Automatic diagnostic collection is now inactive.
The following is an image of the double population.
https://imgur.com/a/xCSHfE2
I will just go back a patch in the mean time! Apologies this is such a fuss.
-
View User Profile
-
Send Message
Posted Aug 2, 2026@nottle_ Thank you, the screenshots and debug output are very helpful. The duplicate portrait appears to be two separate PitBull frames currently assigned to the target unit, rather than one model being rendered twice inside a single frame.
I do not need a BugSack report unless an actual Lua error is being generated. For the missing party frames, the current portrait scan confirms that the party models were created, but it does not yet include frame visibility, alpha, position, or group-header state. I will extend the debug output for those values in the next test build.
In the meantime, could you please let me know whether the party frames return after an out-of-combat /reload, and provide a screenshot with PitBull Config Mode enabled?
-
View User Profile
-
Send Message
Posted Aug 2, 2026@nottle_ Patch 113 is now available. It limits the forced target portrait refresh to the actual Target frame, preventing other custom frames assigned to target from being refreshed at the same time. It also adds expanded party/group-frame diagnostics. Please run a Debug Scan if the party frames are still missing
-
View User Profile
-
Send Message
Posted Jul 28, 2026I used Grok to fix the Era/hardcore client. This is what Grok had me do. If you know your way around the files, just generate the error and talk to the AI, it'll walk you through fixing it.
PitBull4 temporary compatibility fixes for Classic Era / Hardcore (post-July 21 2026 UI overhaul)
These changes got PitBull fully functional (frames load, Blizzard frames hide, profiles work, no Lua errors) on the current Classic Era client.
TOC files
Change every ## Interface: line to 11509.
HideBlizzard module
Replacing the entire Modules/HideBlizzard/HideBlizzard.lua with the version from the current TBC Anniversary release of PitBull resolved the majority of the frame-hiding crashes (PartyMemberFrame nil errors and CompactPartyFrame:HookScript errors).
ReputationBar.lua
Guard the obsolete function:Luaif MainMenuBar_UpdateExperienceBars then
hooksecurefunc("MainMenuBar_UpdateExperienceBars", ...)
end(or simply disable the ReputationBar module)
Main.lua – LoadModules / IterateLoadOnDemandModules
The call to LoadModules() during profile changes was erroring (attempt to call a nil value). Temporarily commenting it out stopped the error. The modules that are already present still load normally.
Options/General.lua
Guard or comment out the old Broker2FuBar-related call that was producing a nil function error.
With these changes the addon is stable and usable on Classic Era + Hardcore.
-
View User Profile
-
Send Message
Posted Jul 22, 2026Hi @all: i have been recievied a message from Nebula169!
He will update it again - in the meantime its okay for him that i distribute my version - but not on CF/Wago etc. but on GitHub or as i do - onedrive. He is aiming to finish his redoing of the aura module now - blizzard just released their aura container system.
I just created an project page here on curseforge - but its hidden again as requestet from Nebula - i would kindly ask you to download my version in the meantime via Onedrive - i will stay in contact with Nebula and he will take a look into my version.
Sorry that i cant give you an easy to update version - but thats the rules and i am, because the work has done by others before, will play after them!
fyi: curseforge has checked my projectpage and i dont know if they also validatet my sourcecode - but atleast they dont think im doing some kind of shady stuff :D
kind regards
Rumori
-
View User Profile
-
Send Message
Posted Jul 22, 2026@Rumorix You've had it tough too, you've worked hard.
-
View User Profile
-
Send Message
Posted Jul 22, 2026@aess123 If possible, please also adapt it to Simplified Chinese.
-
View User Profile
-
Send Message
Posted Jul 28, 2026@aess123 so you need a version with simplified chinese? i can look into it
-
View User Profile
-
Send Message
Posted Jul 21, 2026Is this game update the final nail in the coffin for Pitbull? I guess I can accept it if that's the case. Are y'all finding a different addon or are there plans to fix this?
-
View User Profile
-
Send Message
Posted Jul 21, 2026@Noshelter2k hi noshelter2k - as far as i know the only maintainer for pitbull is nebula169 - he/she/they did an betaversion for midnight and some fixes for classic versions.
you can try the somewhat stable midnight tree or give my version a try - i vibecoded a stable midnight version and will release it via curseforge in the next week as a fanmade PitBull Midnight version.
as i wrote just below your comment here :D
-
View User Profile
-
Send Message
Posted Jul 21, 2026Another Update from me :D
i will be on a festival until next Monday - after that i have time to upload a "fan version" of PitBull - im still open to any hints on bugs etc. or suggestions.
the current Version 105 seems to be "bugfree" and with some tweaks - i added a new debug feature - that can be enabled and disabled as you wish - furthermore i am currently working on some performance enhancements. feel free to check the inclueded Changelog!
https://1drv.ms/f/c/25688cb7a16be526/IgDvr810POcETbKR5MaoqZTgARoMWi3misaF8nw5m6yD2iU?e=ybXQGg
and i am still 110% open to any author from pitbull contacting me
Kind Regards