Repository navigation
Releases: kiforsbe/UnitFramesImproved
Release list
4.1.0-universal
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog.
[4.1.0-universal] - 2026-09-28
Added
- WoW Forever support:
UnitFramesImproved_Camelot.toc(## Interface: 16001). Forever's game
type is "Camelot" in Blizzard's UI code, and_Camelot.tocis the suffix both the client and the
CurseForge packager pick up for it. Forever runs Retail's Mainline unit frame templates (plus small
Camelot-only overrides that don't touch anything styled here), so it loads the Retail styler
unchanged. - Options page (Options -> AddOns -> UnitFramesImproved, also opened by
/ufi) built on Blizzard's
native Settings API, with a Status Text dropdown (Numeric Value / Percentage / Both / None) -
WoW Forever has no visible setting for showing health/mana numbers on the unit frames. It's backed
by the samestatusText/statusTextDisplayCVars as Blizzard's own Status Text option, so the two
stay in sync on every client. Switching between two shown modes (e.g. Numeric to Both) turns
statusTextoff and back on within the same frame, since Blizzard's status bars only redraw their
labels when that changes - so the new mode shows right away. Changes picked in combat or under an
addon restriction (encounter, Mythic+, PvP match, restricted map) are held until it ends, since
the change runs Blizzard's status bar updates synchronously from addon code. build.ps1deploys to_classic_beta_(the WoW Forever beta install) too.tests/: offline regression tests (Python +lupa, a real Lua 5.1 runtime) that load the addon
into a stubbed WoW client once per TOC and check loading, events, styling, the options page, and
packaging. Never loaded in game or packaged.
Changed
- Removed the Ace3/LibStub dependency (AceAddon, AceEvent, AceConsole, CallbackHandler). Events now
go through one private event frame and slash commands throughSlashCmdList- Blizzard's own APIs,
identical on every client. No more.pkgmetaexternals,Libs/folder,LICENSE-ACE3.txt, or
library fetching inbuild.ps1(which still recognizes the oldLibs//LICENSE-ACE3.txtwhen
replacing a previous deploy). /ufiand/unitframesimprovednow open the options page instead of printing a message.- The "Initializing... / Initialized." chat lines on every login are gone (they came from the Ace3
OnInitializehook).
Fixed
- Retail: stopped writing
forceShow/textLockableontoPlayerFrame/TargetFrame/FocusFrame.
Nothing reads those on the unit frame (Blizzard's text logic reads them on the status bar), so they
never forced the text visible - they only wrote addon fields onto Blizzard's secure frames.
Full Changelog: 4.0.2-universal...4.1.0-universal
4.0.2-universal
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog.
[4.0.2-universal] - 2026-09-05
Fixed
- PlayerFrame health bar no longer misaligns against the vehicle frame art - Blizzard resizes/
re-anchors the same health bar for vehicle state (PlayerFrame_ToVehicleArt), and our own
styling re-runs on everyPLAYER_ENTERING_WORLD/PLAYER_REGEN_ENABLED(e.g. combat ending
while seated), so it was clobbering Blizzard's vehicle-art dimensions with our player-art ones.
Our styling is now skipped whilePlayerFrame.state == "vehicle"and reapplied immediately via
aPlayerFrame_ToPlayerArthook the moment Blizzard returns the frame to player state.
Full Changelog: 4.0.1-universal...4.0.2-universal
4.0.1-universal
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[4.0.1-universal] - 2026-09-01
Fixed
- Classic-family TOC files (
_Vanilla,_Mists,_TBC) failed to load at all - each started
with a plain#comment line before## Interface:, which the client silently treats as an
unparseable TOC (confirmed by comparing against ~200 real installed addons: only Questie's
deliberately-broken placeholder TOC shared that pattern, used intentionally to produce this
exact effect).## Interface:is now always the first line. UnitFramesImproved_Classic.tocrenamed toUnitFramesImproved_Mists.toc- Mists of Pandaria
Classic has its own dedicated TOC suffix (confirmed via other installed addons, e.g.
TomTom_Mists.toc,BetterBags_Mists.toc); the generic_Classiccatch-all suffix wasn't being
reliably matched for it.- MoP Classic
Interfacedeclaration corrected and broadened to50500, 50501, 50502, 50504-
50504is this client's actual running interface (/dump select(4, GetBuildInfo())), which has
to be present in the list since "out of date" triggers whenever the declared Interface is lower
than the client's, not merely different from it. - Removed
## AllowLoadGameTypefrom all TOC files - redundant with, and murkier than, the
per-flavor TOC suffix split already in place. ADDON_ACTION_BLOCKEDerror callingMultiBarBottomLeft:ClearAllPointsBase()during combat -
UpdateTextStringWithValues(hooked onto the shared, game-wideTextStatusBar_UpdateTextStringWithValues)
redundantly re-ran Blizzard's own "hide when inactive" logic from insecure code, including
statusFrame:Hide(), on every status bar update in the game. Blizzard's own call already handles
that case securely just before the hook fires, so the branch was both dead weight and a taint risk
to whatever secure frame-position pass runs next. Removed.
Added
UnitFramesImproved_TBC.tocfor the Burning Crusade Classic Anniversary client (_anniversary_,
productwow_anniversary) - a separate product from Classic Era, not a continuation of it.build.ps1now auto-detects and deploys to a_anniversary_install alongside the existing
_retail_/_classic_/_classic_era_flavors, and shipsCHANGELOG.mdin the built addon
folder/zip.
Full Changelog: 4.0.0-universal...4.0.1-universal
4.0.0-universal
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[4.0.0-universal] - 2026-09-01
Fixed
- Classic: player frame health bar not showing the player's class color -
Style_PlayerFramewas
silently erroring onhooksecurefunc("TextStatusBar_UpdateTextStringWithValues", ...)on clients
that have migrated to Blizzard's mixin-basedTextStatusBarMixinsystem, aborting the rest of the
function (including the class-color update) before it ever ran. - Classic: player frame health bar reverting to Blizzard's default green shortly after showing the
correct class color -lockColorwasn't set, so Blizzard's own native health-bar update kept
repainting over it on every health change. - Classic: Player/Target frame health bar X/Y position drift and hardcoded offsets - position is now
derived from Blizzard's own live anchor plus a fixed, named addon-specific delta, instead of
hardcoded absolute values or a full copy of Blizzard's live position. - Classic: Target frame
Backgroundtexture anchored to the wrong corner with stale offsets. - Retail: Secret Values taint crash in
Style_PlayerFramewhen health/mana is a secret value at the
moment of a forced text update. - Potential crash in
UpdateStatusBarColorwhenframe/frame.healthbaris nil (e.g.
target-of-target frames that may not exist, or lack a.healthbaralias, on every client). - Target frame ending up with a mix of addon and Blizzard styling when switching targets in combat -
InCombatLockdown()guards were narrowed to only the genuinely combat-restricted operation
(creating new regions); repositioning/recoloring already-existing regions isn't restricted.
Added
PLAYER_REGEN_ENABLEDcatch-up that re-applies styling on leaving combat, so anything actually
skipped by a combat-lockdown guard gets retried instead of staying unstyled for the rest of the
session.- Local
build.ps1script that fetches the same Ace3/LibStub externals.pkgmetadeclares and
stages a build for testing without going through the CurseForge packager - defaults to
deploy/UnitFramesImprovedonly, with-DeployToWow(or-WowInstallPath/-TargetPath) to also
copy that build into a local WoW install. .github/workflows/release.yml: manually-triggerable (Actions tab -> Run workflow) packaging and
CurseForge publishing via theBigWigsMods/packageraction, which also attaches the built zip to
a matching GitHub release using this changelog as the release notes.IconTexturemetadata in all three TOC files, so the addon shows an icon in the in-game AddOns
list instead of the default blank/placeholder icon.build.ps1now also zips the staged build intodeploy\UnitFramesImproved-<version>.zip.
Changed
- Debug "Loading config... / Config loaded." messages now only print on the very first load, not on
every zone transition or post-combat re-application. UnitFramesImproved_UpdateTextStringWithValuesmoved off the global namespace onto
UnitFramesImproved.UpdateTextStringWithValues.README.mdrewritten for players only, in the style of the CurseForge listing description;
build/release instructions moved to the newDEVELOPMENT.md.- Addon author metadata updated to kiforsbe / KawF.
Full Changelog: 3.0.0-universal...4.0.0-universal
3.0.0-universal
So, some major changes coming up with release 3.0.0 of UnitFramesImproved.
- The addon now works for Classic, Cata, and retail in one universal package.
Known issues (Classic & Cata):
- The functionality to scale the frames has not been re-implemented (yet?)
- The functionality to anchor the frames to each other has not been re-implemented (yet?)
If you have any issues, please report them on the GitHub.
2.2.0-retail
- Updated for 11.0.2-retail
- Fixed broken status bar coloring
- Fixed broken status bar updates
To get the status bar text to show, please remember to select an option other than "None" in Wow Options Menu > Interface > Display > Status Text.
2.1.0-retail
- Updated TOC, Readme and added license
- Moved sources to root
- Transition to Ace3
- Fixed (maybe?) all remaining taint issues
2.0.1-retail
Updated version to 2.0.1 for some bug fixes relating to InCombatLockdown missing in some cases leading to error popups.
There is no guarantee this fixes all cases, due to the way the addon integrates.
2.0.0-retail
Initial support for WoW Retail 10.0 added.
Support removed for Classic & WotLK for now. Use old releases for these until further.