Skip to content

4.0.0-universal

Pre-release
Pre-release

Choose a tag to compare

@kiforsbe kiforsbe released this 01 Sep 19:13
· 29 commits to master since this release

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_PlayerFrame was
    silently erroring on hooksecurefunc("TextStatusBar_UpdateTextStringWithValues", ...) on clients
    that have migrated to Blizzard's mixin-based TextStatusBarMixin system, 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 - lockColor wasn'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 Background texture anchored to the wrong corner with stale offsets.
  • Retail: Secret Values taint crash in Style_PlayerFrame when health/mana is a secret value at the
    moment of a forced text update.
  • Potential crash in UpdateStatusBarColor when frame/frame.healthbar is nil (e.g.
    target-of-target frames that may not exist, or lack a .healthbar alias, 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_ENABLED catch-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.ps1 script that fetches the same Ace3/LibStub externals .pkgmeta declares and
    stages a build for testing without going through the CurseForge packager - defaults to
    deploy/UnitFramesImproved only, 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 the BigWigsMods/packager action, which also attaches the built zip to
    a matching GitHub release using this changelog as the release notes.
  • IconTexture metadata 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.ps1 now also zips the staged build into deploy\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_UpdateTextStringWithValues moved off the global namespace onto
    UnitFramesImproved.UpdateTextStringWithValues.
  • README.md rewritten for players only, in the style of the CurseForge listing description;
    build/release instructions moved to the new DEVELOPMENT.md.
  • Addon author metadata updated to kiforsbe / KawF.

Full Changelog: 3.0.0-universal...4.0.0-universal