Repository navigation
v2.5.24
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[2.5.24] - 2026-10-10
Added (2.5.24)
- A new options window, drawn in AHOS's own keycap art: a rail of pages with their own icons, one search box across every setting, a mark on every setting that differs from its default with a one-click revert, and four themes (Keycap, Keycap Gold, Class Color, Light) with opacity and scale.
- A live preview at the top of the Display and Keybinds pages: four action buttons labelled exactly as AHOS would label them, with your own bindings for action buttons 1-4.
- The Abbreviations page is a keyboard instead of 104 text boxes. Keys bound to an action button light up and show the text AHOS draws for them; Shift, Ctrl and Alt latch to show that layer. Clicking a key opens a card with its abbreviation, the command the game runs, any override an addon has put over it, and every action button (with its bar addon, spell and icon) that answers to the key, with a warning when two bar addons claim the same key.
- Every key can now carry an abbreviation of its own, not only the 104 with a built-in default.
- ESC > Options > AddOns > Advanced Hotkey Overlay System is now a landing page, as in AzeriteUI JuNNeZ Edition: the logo, the version, what AHOS is drawing on, and buttons into the options window or the classic one. Clients without the canvas Settings API keep the embedded Ace3 page.
/ahos classicopens the previous Ace3 window, which stays available and shows the same settings.Tools/TestPanel.luadrives the options window against a mock client for every client TOC, and runs in CI.
Changed (2.5.24)
- The Status page is now an overview: the quick switches and the minimap icon moved onto it, Debug Mode moved to Debugging, and Support joined About.
Fixed (2.5.24)
- AHOS now ships AceDBOptions-3.0 itself. The Profiles page relied on another addon having loaded it, and the whole options table failed to build without one.
- The minimap icon setting no longer counts as changed on a fresh profile.
- Fonts shared through LibSharedMedia are only offered when their file actually loads, and a saved font that no longer loads falls back to the game's font instead of leaving the hotkey text blank.
- Importing a profile string (Profiles > Import Profile Data) and a debug string works again. Both were called with a colon, so they read the addon itself as the text to import and always reported that no string was given.
[2.5.23] - 2026-10-10
Added (2.5.23)
- WoW Forever support: new
AdvancedHotkeyOverlaySystem_Camelot.toc(interface16001). Works with the Forever builds of Dominos and AzeriteUI JuNNeZ Edition, which keep their Retail folder and button names.
Fixed (2.5.23)
- Display and keybind modules no longer treat WoW Forever as a Classic client; client detection now honours the TOC flavor and
WOW_PROJECT_IDbefore the interface number.
[2.5.22] - 2026-08-27
Fixed (2.5.22)
- Updated Retail action-slot checks from the removed global
HasActionfallback toC_ActionBar.HasAction. - Replaced the removed
ActionButton_UpdateHotkeysglobal hook with hooks on the liveUpdateHotkeys/SetHotkeysbutton methods used by Retail 12.1. - Added secret-value access guards for action attributes, frame visibility, names, text, hierarchy, anchors, and frame levels used by overlay discovery and diagnostics.
- Handled
ACTIONBAR_SLOT_CHANGEDslot0as a full action-bar invalidation, matching Blizzard's current event contract. - Replaced deprecated specialization and raid-warning calls with
C_SpecializationInfoandRaidWarningUtil. - Fixed hotkeys disappearing when toggling Mirror Native Hotkey Style by restyling active overlays in place and isolating per-button native-style failures.
- Made full refreshes reconcile in place, preserving the last known-good overlay across transient empty scans and protected-button errors.
- Restored native hotkey labels reliably on disable, cleanup, ElvUI suppression, profile changes, and slash-command toggles.
- Prevented delayed visibility, fallback, and throttled update callbacks from recreating overlays after disable or cleanup.
- Prevented options-panel initialization and appearance-only controls from triggering destructive overlay rebuilds.
- Added a dedicated Abbreviations tab with profile-specific editors for modifiers, mouse buttons, numpad, function keys, special keys, and gamepad inputs.
- Added live abbreviation previews, per-entry default restoration, and a reset-all action without requiring
/reload. - Fixed bindings on the hyphen key losing their base key, which rendered
-as a blank overlay andCTRL--as justC. - Added abbreviations for the named gamepad tokens (d-pad, shoulders, triggers, stick clicks and directions, paddles, system buttons) so controller binds no longer show truncated raw tokens such as
CSPA. - Stopped recapturing AHOS's own overlay label as the "original" Blizzard hotkey text, which could make an abbreviation stick permanently to a button.
- Cleared pooled overlay labels on release so a recycled overlay can never show the previous button's keybind.
Changed (2.5.22)
- Migrated add-on enumeration and metadata diagnostics to
C_AddOns, with Classic-compatible fallbacks. - Updated Retail TOC compatibility through Midnight 12.1.0 (
120100). - Bumped all TOC version metadata and README highlights to
2.5.22.
2.5.21 - 2026-05-03
Fixed (2.5.21)
- Fixed AzeriteUI dragonflying dismount transitions where several keybind overlays could disappear until combat or another bar-state refresh.
- Added AzeriteUI
:Keybindclick-route binding resolution so overlays follow AzeriteUI's dynamic dragon/bonus action bar routing. - Made keybind caching state-aware for reused action button names during action, page, and binding-route swaps.
- Prevented transient empty action-slot reads from removing AzeriteUI overlays when a stable keybind still resolves.
Changed (2.5.21)
- Added
UPDATE_BONUS_ACTIONBARrefresh handling for dragonflying and bonus-bar state changes. - Bumped all TOC version metadata to
2.5.21. - Updated README version highlights for
2.5.21.
2.5.20 - 2026-04-26
Fixed (2.5.20)
- Fixed Bartender4 detection and binding resolution so AHOS can discover all Retail Bartender action bars instead of only bar 1.
- Added LibActionButton binding target support for action bar addons that expose
GetBindingAction,keyBoundTarget, or configured click-binding buttons. - Added Retail extra-bar binding mappings for Blizzard/Dominos-style bars 5, 6, and 7.
Changed (2.5.20)
- Expanded local compatibility coverage for Dominos Retail native-style buttons, AzeriteUI5 JuNNeZ Edition bars 1-8 plus pet/stance bars, DiabolicUI2/3 aliases, and GW2_UI-style native Blizzard bars.
- Bumped all TOC version metadata to
2.5.20. - Updated README and CurseForge compatibility notes for
2.5.20.
2.5.19 - 2026-03-26
Fixed (2.5.19)
- Removed invalid
PLAYER_BINDING_CHANGED,PLAYER_ENTERING_VEHICLE, andPLAYER_EXITING_VEHICLEregistrations that now error on WoW12.0.1. - Fixed
LibKeyBound-1.0callback registration inmodules/Core.luaby using the correctRegisterCallbackcall form.
Changed (2.5.19)
- Standardized binding and vehicle refresh logic on valid modern client events already supported by the addon.
- Bumped all TOC version metadata to
2.5.19. - Updated README version highlights for
2.5.19.
2.5.18 - 2026-03-21
Fixed (2.5.18)
- Fixed remaining missing keybind overlays when exiting DynamicCam mount camera mode directly into combat by retrying button recovery until the buttons become effectively visible again.
Changed (2.5.18)
- Extended delayed combat and bar-state refresh passes to cover longer asynchronous mount-to-combat UI restores.
- Bumped all TOC version metadata to
2.5.18. - Updated README version highlights for
2.5.18.
2.5.17 - 2026-03-07
Fixed (2.5.17)
- Fixed intermittent missing overlay text after mount/combat transitions (with or without DynamicCam) by hooking action-button
OnShowand reapplying overlays when buttons become visible again.
Changed (2.5.17)
- Added per-button visibility recovery logic in
modules/Display.luawith queued and delayed update passes afterOnShow. - Bumped all TOC version metadata to
2.5.17. - Updated README version highlights for
2.5.17.
2.5.16 - 2026-03-07
Fixed (2.5.16)
- Fixed a mount-to-combat refresh gap where overlays could miss some keys after DynamicCam-style UI hiding by triggering bar-state refresh passes on combat and mount display transitions.
Changed (2.5.16)
- Extended
modules/Core.luabar-state event coverage withPLAYER_REGEN_DISABLED,PLAYER_REGEN_ENABLED, andPLAYER_MOUNT_DISPLAY_CHANGED. - Bumped all TOC version metadata to
2.5.16. - Updated README version highlights for
2.5.16.
2.5.15 - 2026-03-07
Fixed (2.5.15)
- Fixed overlays not returning automatically after possess/vehicle/override bar transitions by adding robust bar-state refresh handling with delayed passes.
Changed (2.5.15)
- Added a consolidated
HandleBarStateChangedrefresh path inmodules/Core.lua. - Expanded event coverage for action-bar state swaps (
UPDATE_OVERRIDE_ACTIONBAR,UPDATE_VEHICLE_ACTIONBAR, vehicle enter/exit events, and possess-related updates). - Bumped all TOC version metadata to
2.5.15. - Updated README version highlights for
2.5.15.
2.5.14 - 2026-03-07
Fixed (2.5.14)
- Reworked overlay frame layering so Dominos/native-style overlays no longer force
TOOLTIPstrata or extreme frame-level bumps that could cover other addons (e.g., BetterBags).
Changed (2.5.14)
- Added a new Display option:
Smart Frame Layering. - Made Smart Frame Layering opt-in (disabled by default) and treated unset legacy profiles as disabled.
- When Smart Frame Layering is enabled, overlays inherit parent-button strata and use a minimal frame-level offset to stay scoped to action bars.
- Manual strata/frame-level controls are now clearly marked as manual overrides and are disabled while Smart Frame Layering is enabled.
- Bumped all TOC version metadata to
2.5.14. - Updated README version highlights for
2.5.14.
2.5.13 - 2026-03-07
Added (2.5.13)
- Added provider-registry based integrations for Bartender4 and DiabolicUI, including button discovery and provider-aware diagnostics.
- Added a
verify-toc-targetsvalidation step to the GitHub release workflow.
Fixed (2.5.13)
- Fixed a secure/secret string comparison taint error in
modules/Display.luahotkey-region anchor checks by guarding anchor comparisons. - Fixed provider hotkey-refresh hooks to use each provider's configured update method instead of a Dominos-only path.
Changed (2.5.13)
- Refactored UI detection, button scanning, keybind resolution, and options diagnostics around a shared provider model.
- Updated support messaging and settings visibility rules for provider-specific options.
- Bumped all TOC version metadata to
2.5.13. - Refreshed README and CurseForge release notes for the provider/taint-fix release.
2.5.12 - 2026-03-02
Fixed (2.5.12)
- Fixed Dominos keybind resolution by preferring the button
commandNameand explicit Dominos hotkey bindings before generic Blizzard action remaps. - Hooked Dominos button
UpdateHotkeysrefreshes so overlays reapply when Dominos rewrites native labels. - Replaced another taint-prone top-right anchor heuristic in keybind label discovery with a protected-safe point check.
Changed (2.5.12)
- Modernized the in-game options panel with new Status, Compatibility, Support, and Debugging sections and removed stale compatibility claims.
- Narrowed direct support messaging to Blizzard, AzeriteUI, and Dominos, with ElvUI kept as conflict-aware handling only.
- Updated package ignores to exclude development-only templates, tests, and library docs from release archives.
- Updated Retail TOCs to
110107, 110200, 120000, 120001, Mists TOC to50500, 50501, 50503, and Vanilla TOC to11508. - Bumped all TOC version metadata to
2.5.12. - Refreshed README and CurseForge release notes for the Dominos/options/TOC-target release.
2.5.11 - 2026-03-01
Fixed (2.5.11)
- Added a taint-safe anchor helper in
modules/Display.luahotkey region heuristics. - Replaced direct
GetPoint(1)anchor string comparisons with protected-safe checks to prevent taint compare errors on secure buttons (e.g.,ExtraActionButton1).
Changed (2.5.11)
- Bumped all TOC version metadata to
2.5.11. - Refreshed README and CurseForge release notes for the taint-fix release.
2.5.10 - 2026-02-27
Fixed (2.5.10)
- Corrected the GitHub release workflow PowerShell invocation so tag builds no longer fail on startup.
- Added the missing
verify-version.ps1andverify-changelog.ps1scripts expected by the release workflow.
Changed (2.5.10)
- Bumped all TOC version metadata to
2.5.10. - Refreshed README and CurseForge release notes for the packaging hotfix release.
2.5.9 - 2026-02-27
Fixed (2.5.9)
- Restored the Retail and Mainline TOCs to WoW 12 compatibility by setting their interface target to
120000. - Preserved the explicit
CallbackHandler-1.0,LibDataBroker-1.1, and realLibDBIcon-1.0load order required for packaged builds.
Changed (2.5.9)
- Bumped all TOC version metadata to
2.5.9. - Refreshed README and CurseForge release notes for the WoW 12 compatibility package.
2.5.8 - 2026-02-27
Fixed (2.5.8)
- Loaded
CallbackHandler-1.0before AceConfig, AceEvent, and LibSharedMedia to stop startup failures in packaged builds. - Loaded
LibDataBroker-1.1and the realLibDBIcon-1.0implementation explicitly instead of relying on a later embed entrypoint. - Restored addon initialization so Config, Options, and Core no longer fault after Ace library startup errors.
Changed (2.5.8)
- Bumped all Retail, Mists, and Vanilla TOC versions to
2.5.8. - Refreshed release notes in README and CurseForge docs to match the current release contents.
2.5.3 - 2025-09-14
Fixed (2.5.3)
- Locales: Prevent "attempt to index local 'addon' (a nil value)" by decoupling locale files from addon scope and using a shared global table consumed by the addon at init.
- Retail (AzeriteUI): Filter placeholder square/bullet glyphs on unbound buttons; strengthen native hotkey suppression safeguards.
Changed (2.5.3)
- Tooling: Replaced failing
lua -pVS Code task with a robust PowerShell-based sweep usingluac -porassert(loadfile(...))fallback. Set as default build lint task. - Documentation: README highlights updated for 2.5.3.
2.5.2 - 2025-09-14
Added (2.5.2)
- Options: Font outline styles (NONE/OUTLINE/THICKOUTLINE/MONOCHROME combos) with legacy fallback retained.
Fixed (2.5.2)
- Classic: Avoid registering PLAYER_BINDING_CHANGED; gate the event to Retail only using WOW_PROJECT_ID with build fallback.
Added
- Retail + Classic compatibility in one build; Classic-safe keybinding resolution for ActionButton, BonusActionButton, MultiBars, Stance, Pet, and Possess.
- Hooks to ActionButton_UpdateHotkeys and MultiActionBar_Update to keep native labels hidden while overlays are active.
Changed
- Multiple delayed overlay refreshes after binding changes (Dominos/LibKeyBound) to avoid reload requirements.
- Simplified in-game settings UI by removing unused modules; retained single JUI module.
Fixed
- Dominos keybinding mode no longer causes native hotkey text to reappear until reload on Classic.
2.5.1 - 2025-09-14
Added (2.5.1)
- Deep scan for nested hotkey FontStrings (e.g., AzeriteUI TextOverlayContainer) to ensure reliable detection and suppression.
- New debug commands:
/ahos dumphotkeyand/ahos dumplayersfor targeted troubleshooting.
Changed (2.5.1)
- Overlay frame level bump to render above nested overlay containers and Masque/AzeriteUI skins.
- Refined native hotkey suppression hooks with safer Show/SetText guards.
Fixed (2.5.1)
- Classic: Register
PLAYER_BINDING_CHANGEDon Retail only to prevent errors on Classic. - Retail (AzeriteUI): Removed placeholder square/bullet glyphs on unbound buttons by disabling visual fallback on Retail and filtering fallback glyphs in the visual reader.
- Dominos: Improved overlay visibility without requiring reload; ensured native labels stay hidden when Dominos keybinding mode ends.
2.4.2 - 2025-09-03
Fixed (2.4.2)
- Prevent duplicate Blizzard options category registration by stabilizing app name and checking existing entries.
- Avoid hard errors if AceConfigDialog loads late; /ahos always registers.
Added (2.4.2)
- Embedded AceGUI-3.0 and wired AceConfig-3.0 Dialog when embedded libs are present.
- /ahos version command.
Changed (2.4.2)
- Options/About panels now read Version from TOC metadata; removed hardcoded version strings.
- Clarified IconTexture path to media/logo.tga.
2.4.1 - 2025-06-24
Added (2.4.1)
- Debug log window and
/ahoslogcommand for viewing/copying all debug output. /ahos inspect <ButtonName>command to print debug info for any action button.- Advanced profile management: export/import, auto-switch by spec, copy/reset, and print profile tools in the Profiles Management tab.
Changed (2.4.1)
- Updated documentation and versioning for 2.4.1.
- Polished options panel and help sections for new features.
2.4.0 - 2025-06-24
Added (2.4.0)
- In-game changelog and version info tab
- Debug export window and /ahos debugexport command
- LibSerialize/LibDeflate support for profile export
- Help & Debugging tab in options
Changed (2.4.0)
- Updated documentation and versioning for 2.4.0
- Many bugfixes and polish
2.3.0 - 2025-06-23
Modernization & Polish
- Modernized and cleaned up all options panel registration and naming logic
- No more color codes or icons in the options panel or .toc metadata
- Only one options panel is registered, with robust error handling
- Minimap/DataBroker icon and Blizzard options panel now always show the correct, user-friendly name
- ElvUI compatibility and user prompt logic improved
- Legacy and duplicate code removed for reliability
- All overlays and minimap icon logic now robust and error-free
2.2.0 - 2025-06-22
Added (2.2.0)
- Full Ace3 profile management UI (copy, delete, switch, robust handling).
- Overlay settings (font, color, etc.) now update instantly on profile or option changes.
- Lock/unlock feature:
/ahos lockgreys out all options and prevents changes; attempting to change settings while locked shows a high-strata popup with unlock prompt. - StaticPopup dialog for unlocking settings, with Yes/No options.
- Debug-only button to delete all profiles except the current one.
Changed (2.2.0)
- Only Ace3 profile management UI is used (custom profile UI removed).
- Improved error handling for profile changes and minimap icon registration.
- Versioning and documentation updated for 2.2.0.
Fixed (2.2.0)
- No more duplicate options panel errors.
- Profile deletion and switching is now robust and bug-free.
- Minimap icon unregister errors resolved.
- Settings lock now actually prevents changes in the options panel.
2.1.0 - 2025-06-22
Added (2.1.0)
- Themed enable message with color-coded branding and version.
- Debug messages now only appear when debug mode is enabled.
- Improved overlay removal and Blizzard hotkey text restoration logic.
- Consistent debug/info/error print handling across all modules.
Changed (2.1.0)
- Minimap icon logic and event handling improved for reliability.
- Codebase refactored for maintainability and extensibility.
Fixed (2.1.0)
- Debug messages no longer spam chat in normal mode.
- Overlay and hotkey text restoration now works as expected on disable and minimap toggle.
2.0.0-alpha - 2025-06-22
Major Overhaul
- Complete rewrite and modularization of the codebase for maintainability and extensibility.
- Robust event-driven overlay update logic restored and improved.
- ConsolePort-style keybind abbreviation logic: condensed, customizable separator, gamepad/mouse support.
- Overlay frame strata control and improved minimap icon handling.
- Options panel fully revamped: professional About/Credits, version display, and live UI detection.
- All taint, nil, and registration errors eliminated.
- Standardized AceConfig registration and config panel references.
- Added user option for modifier separator in abbreviations.
- Improved debug output and troubleshooting tools.
- Full support for Blizzard, AzeriteUI, and custom action bars.
- Titan Panel integration removed for simplicity; minimap icon is now the sole launcher.
Fixed (2.0.0-alpha)
- Modifier parsing and abbreviation bugs.
- Overlay update and taint issues.
- Nil and registration errors.
- Keybinding detection for all supported UIs.
1.0.0 - 2024-06-17
Added (1.0.0)
- Initial release of Advanced Hotkey Overlay System (AHOS).
- Basic overlay system for Blizzard action bars.
- Simple keybind abbreviation logic.
- Minimap icon and options panel access.