File Details
v3.3.0
- R
- Jan 24, 2026
- 1.76 MB
- 1.0K
- 12.0.0
- Retail
File Name
KeyUI-v3.3.0.zip
Supported Versions
- 12.0.0
KeyUI
v3.3.0 (2026-01-24)
Full Changelog Previous Releases
- Synchronize settings defaults and fix Settings panel refresh
- Synchronize default values between Variables.lua and Settings.lua:
- show_keyboard: false (was inconsistent: false vs True)
- show_mouse: false (was inconsistent: false vs True)
- stay_open_in_combat: false (was inconsistent: true vs False)
- close_on_esc: true (was inconsistent: false vs True)
- Fix Settings panel not refreshing after Full Reset
- Add Settings.SetValue() calls to update UI in ResetAddonSettings()
- All checkboxes now reflect correct values immediately after reset
- Fix VSCode Lua Language Server warnings
- Add "undefined-field" to disabled diagnostics in .luarc.json
- Add Blizzard_APIDocumentation to workspace library
- Eliminates false-positive warnings for string.format, string.find, etc.
The native "Defaults" button now correctly resets settings to these
synchronized default values. The "Full Reset" button additionally
refreshes the Settings panel UI to reflect the changes.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
- Synchronize default values between Variables.lua and Settings.lua:
- Fix ESC close functionality and rename setting variable
- Rename prevent_esc_close → close_on_esc for clarity
- Fix inverted logic in frame registration (Keyboard, Mouse, Controller, Controls)
- Fix Settings.lua SetEscValue to not use inverted logic
- Add migration code for existing user settings
- Update all references across codebase
- Rename "Reset All Settings" → "Full Reset" for clarity
Fixes the issue where ESC key behavior was inconsistent regardless of setting.
The new variable name and corrected logic ensure frames properly respond to
ESC key based on user preference.
The old prevent_esc_close variable had inverted semantics compared to the
"Enable ESC" checkbox label, causing confusion. With close_on_esc, the logic
is now consistent: true = frames close with ESC, false = frames don't close.
Additionally cleaned up refactoring documentation files that are no longer needed.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
- Migrate from AceConfig to native Midnight Settings API
Complete migration from deprecated AceConfig-3.0 library to the native
WoW 12.0 (Midnight) Settings API for better integration and future-proofing.
Major Changes:- NEW: Settings.lua with full Midnight Settings API implementation
- 9 settings (checkboxes): minimap button, combat behavior, frame visibility
- 3 action buttons: Export Profile, Import Profile, Reset Settings
- Custom handlers for minimap integration and ESC key behavior
- Proper StaticPopup dialog for reset confirmation
- REMOVED: All AceConfig-3.0 dependencies
- Removed AceConfig and AceConfigDialog library imports from Core.lua
- Removed entire options table definition (191 lines)
- Removed set_esc_close_enabled helper (moved to Settings.lua)
- UPDATED: Core.lua Settings integration
- Added OpenSettings() helper with error handling
- Updated minimap right-click to use new Settings panel
- Added InitializeSettingsPanel() call during addon load
- UPDATED: Frame files for consistency
- Keyboard.lua, Mouse.lua, Controller.lua now use addon:OpenSettings()
- Improved code comments for clarity
- CLEANED: Removed unused library dependencies
- embeds.xml: Removed TaintLess, AceGUI, AceAddon, AceConfig, AceDB
- .pkgmeta: Removed corresponding external library references
- Kept essential libs: LibStub, CallbackHandler, LibDataBroker, LibDBIcon
- UPDATED: Project configuration
- KeyUI.toc: Added Settings.lua, updated Interface to 120000
- .luarc.json: Added 40+ WoW API globals for better LSP support
- .gitignore: Added /zwischenablage and /Blizzard_APIDocumentation
Technical Details:
- Uses Settings.RegisterProxySetting for computed values (minimap, ESC)
- Uses Settings.RegisterAddOnSetting for direct keyui_settings values
- Proper category registration with Settings.RegisterAddOnCategory
- All settings callbacks tested and working
- ESC key behavior properly migrated with frame management
Net Result: -133 lines of code (212 deleted, 79 added)
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
- NEW: Settings.lua with full Midnight Settings API implementation
- Add refactoring completion summary
Document all completed refactoring work:- Sprint 1: Critical API compatibility fixes
- Sprint 2a: Code duplication elimination
- Sprint 2b: Naming standardization
Total: 3 sprints completed, ~135 lines of duplicate code removed,
performance improved, Patch 12.0.0 ready
- Standardize naming: isMoving -> is_moving
- Rename addon.isMoving to addon.is_moving for consistency
- All variables now use snake_case convention
- Updated in Core.lua, Mouse.lua, and Controller.lua
Improves code consistency and readability
- Eliminate checkbox visibility duplication in Controls.lua
- Create set_controls_visibility() helper function
- Replace 3 blocks of identical Show/Hide calls (~50 lines each)
- Reduces code from ~150 lines to ~15 lines
- Improves maintainability - changes only need to be made in one place
Savings: ~135 lines of duplicated code eliminated
- Sprint 1: Critical API compatibility fixes
- Add nil-checks for GetActionTexture() to prevent crashes
- Add error handling (pcall) for all addon integrations (ElvUI, Bartender, Dominos, OPie, BindPad)
- Cache keybind patterns globally instead of recreating on every button (performance improvement)
- Initialize pattern cache once on PLAYER_LOGIN
- Add TODO comment for UIDropDownMenu migration (deprecated but still works)
This ensures Patch 12.0.0 compatibility and prevents crashes from external addon errors.
- Centralize UI helpers