NuttUI Tweaks

Light skinning & tweaks to the base game

File Details

v0.18.0

  • R
  • Jun 22, 2026
  • 54.86 KB
  • 23
  • 12.0.7+1
  • Retail

File Name

NuttUI-v0.18.0.zip

Supported Versions

  • 12.0.7
  • 12.0.5

NuttUI

v0.18.0 (2026-06-22)

Full Changelog Previous Releases

  • Merge pull request #8 from anthonyiles/develop
    Integrate PRs #3, #5, #6 into develop (#7)
  • Integrate PRs #3, #5, #6 into develop (#7)
    • fix: resolve statusBar global leak and broken lock toggle
      B1: declare statusBar as local in Tooltip.lua to prevent global namespace pollution
      B2: call UpdateLayout after toggling databar lock so the bar's drag state updates immediately
    • perf: eliminate unnecessary per-frame and per-loop work
      P1: register MapCoordinates OnUpdate only while WorldMap is open — zero cost when closed
      P2: skip bar width recalculation in GenericUpdateSlot when text has not changed
      P3: move force-update pass to after the slot setup loop to avoid N^2 width recalculations
      P5: cache UnitClass at module level instead of calling it per bag slot during scans
      P6: move UnitLevel call above the ApplyHighlights loop instead of calling it per frame
    • refactor: eliminate duplicated logic across databar slots and utils
      D2: Friends slot reuses Update cache in OnClick instead of re-iterating the API
      D3: Guild slot reuses Update cache in OnClick instead of re-iterating GetGuildRosterInfo
      D4: AutoRoleAccept uses shared NuttUI:IsModifierActive instead of duplicating modifier checks
    • refactor: lift closures to module level to reduce GC pressure
      G1: IsValidUpgrade moved to module scope so it is allocated once, not on every bag update
      G2: SellJunkTick moved to module scope with module-level state, not recreated on each merchant visit
    • refactor: structural improvements to init system, settings, and API naming
      S1: modules self-register via NuttUI.modules table — ADDON_LOADED now iterates one list instead of 12 manual guards
      S2: CreateOptions moved into ADDON_LOADED so NuttUIDB is always initialized when settings panel is built
      S3: Databar:Create renamed to GetOrCreate to reflect its actual behaviour
      S4: remove 27 redundant NuttUIDB nil guards from settings setters
      S5: merge two duplicate GameTooltip OnShow hooks into one
    • chore: minor cleanup and noise reduction
      N1: remove duplicate preferredIndex keys in Notes StaticPopupDialogs
      N2: remove dead local defaults table in BagUpgrade that contradicted main defaults
      N3: remove global slider frame names, capture child references as locals instead
      N4: correct misleading comment about UpdateAddOnMemoryUsage vs collectgarbage
    • fix: address CodeRabbit review findings from PR #3
    • Restore unique names on Databar width/height/slots sliders so
      OptionsSliderTemplate globals (Low/High/Text) can be resolved;
      nil names caused a Lua error opening the Databar settings panel
    • Fix Guild isSelf cross-realm comparison: use baseName (pre-hyphen)
      vs UnitName("player") so players on connected realms are correctly
      excluded from their own invite/whisper context menu
    • Add CLAUDE.md and REVIEW.md to .pkgmeta ignore list so they are
      excluded from CurseForge/Wago/WoWInterface release packages
    • Update CLAUDE.md: add lua fence tag to SavedVariables block, update
      "Adding a new module" step 3 to use NuttUI.modules registry, clarify
      DeleteMessage is intentionally outside the module system
    • fix(time-slot): call UpdateSlot instead of undefined UpdateInternal
      Right-click toggle to switch server/local time silently did nothing
      because UpdateInternal is never assigned; UpdateSlot is the correct
      method wired by Core.lua as GenericUpdateSlot.
    • refactor: rename short and ambiguous variables for readability
      Replace 1-2 letter variable names with descriptive alternatives across all
      modules. Covers loop variables (f, m, k, b/s), parameter names (table, p),
      function names (CreateFontString local), and abbreviations (fs, origOnShow,
      region_pct, d, sortedKeys).
    • fix(time-slot): persist local/server time toggle across reloads
      Saves showLocal to NuttUIDB.TimeShowLocal on toggle and restores it on
      first Update call. Also fixes broken UpdateInternal call — replaced with
      UpdateSlot for immediate redraw after toggle.