# v1.5.22 - 2026-04-29

## Bug Fixes

- **IconTexture path corrected**: Added explicit `.tga` extension to the
  `IconTexture` TOC entry. The path `Interface\AddOns\RGX-Framework\media\logo`
  is now `Interface\AddOns\RGX-Framework\media\logo.tga` to match the actual
  file and WoW addon conventions.
- **Combat:OnComboPoints implemented**: Added the missing implementation for
  `Combat:OnComboPoints(fn)` which was documented in the header but not
  implemented. Registers callbacks for combo point changes via `UNIT_POWER_UPDATE`
  and `PLAYER_TARGET_CHANGED` events. Fires with signature `fn(current, max, unit)`.
- **Replaced direct C_Timer.After with RGX:After**: Updated
  `modules/reputation/reputation.lua`, `modules/sharedmedia/sharedmedia.lua`,
  and `modules/ui/options.lua` to prefer `RGX:After()` over direct
  `C_Timer.After()`. This ensures framework timer budgeting and diagnostics are
  applied consistently. Falls back to `C_Timer.After` only if RGX timer is
  unavailable. Added timer labels for diagnostics: "Reputation:_QueueCheck",
  "SharedMedia:QueueScan", "Options:RunSoon", "Options:DeferOptionsOpen".
- **Module access standardised (Issue 6A)**: Removed stale file-top
  `_G.RGXDropdowns` capture in `modules/fonts/fonts.lua` (replaced with lazy
  `RGX:GetDropdowns()` at the single call site). Replaced `_G.RGXDropdowns`
  fallback chain in `modules/textures/textures.lua` with `RGX:GetDropdowns()`.
  Replaced three `_G.RGXDesign` direct reads in `modules/ui/controls.lua` with
  `RGX:GetDesign()`. Added a clarifying comment in `modules/ui/options.lua`
  explaining why `GetUI()`/`GetDesign()` read `_G` directly (bootstrap timing).
  No behaviour change.

## Documentation

- **TryInit dormant calls documented (Issue 7A)**: Added comments in
  `core/initialization.lua` above the three `TryInit` calls for
  `RGXSharedMedia`, `RGXCombat`, and `RGXReputation` explaining that they are
  currently no-ops (modules not in XML) but are retained so re-adding a module
  to the XML loader automatically wires its `Init()` without requiring a
  parallel change here. No runtime change.
- **Optional module status documented (Issue 7)**: Corrected `README.md` to
  reflect that `PetBattles`, `SharedMedia`, `Combat`, and `Reputation` are not
  loaded in the default build (removed from `RGX-Framework.xml` at v1.5.18).
  Module table now marks these four with a `†` footnote explaining they return
  `nil` until re-added to the XML loader. Quick Start example updated to note
  the distinction between always-loaded and optional modules. No runtime change.
- **Font availability documentation corrected**: Updated `media/fonts/README.md`,
  `docs/description.html`, and `docs/FONT-SOURCES.md` to accurately reflect that
  10 bundled fonts are currently unavailable due to corrupted asset files.
  - Affected fonts: Audiowide-Regular, Cinzel-Regular, Merriweather-Regular,
    Merriweather-Bold, Montserrat-Regular, Montserrat-Bold, Orbitron-Regular,
    Oswald-Regular, PlayfairDisplay-Regular, PlayfairDisplay-Bold
  - These fonts are correctly blocked by `unavailableFonts` in
    `modules/fonts/definitions.lua` and will be re-enabled once valid font files are
    obtained from upstream sources.
  - The Google Fonts upstream repository now distributes these families as
    variable fonts (e.g., `Cinzel[wght].ttf`), requiring a separate asset
    replacement task to restore functionality.
- **README.md font count language cleaned up**: Removed "30+ bundled fonts"
  claims from overview, module table, and Font Coverage section. Replaced with
  neutral language that acknowledges some fonts are temporarily unavailable
  without implying a specific count of valid fonts.
