promotional bannermobile promotional banner

VersionCheck

This is a library for use in WoW Classic addons to do version checks

File Details

VersionCheck-v1.2.3

  • R
  • Mar 4, 2026
  • 7.81 KB
  • 1.7K
  • 3.4.3+2
  • Classic + 1

File Name

VersionCheck-1.0-VersionCheck-v1.2.3.zip

Supported Versions

  • 3.4.3
  • 2.5.5
  • 1.15.8

VersionCheck-1.0

VersionCheck-v1.2.3 (2026-03-04)

Full Changelog Previous Releases

  • chore: update workspace config
    • Remove stale fastguildinvite folder reference
    • Update WoW API extension to ketho.wow-api-0.22.3
  • fix: restore Enable() fallback for non-object callers (MINOR 6)
    Regression introduced in MINOR 4: Enable() was rewritten to require
    hostAddon to have a GetName() method, with a silent early return if not.
    The old API accepted plain strings and bare tables without GetName.
    Addons calling Enable() as:
    VC:Enable("MyAddonName") -- string name
    VC:Enable(self) -- table with no GetName method
    ...were silently skipped, causing only the first registered addon
    to appear as active and all others to be excluded from the batch.
    Fix: Enable() now accepts either a table with GetName() or a plain
    string. The host reference is stored as nil for string-based callers
    (Version falls back to "unknown", which is already handled everywhere).
  • fix: replace C_Timer batch trigger with PLAYER_ENTERING_WORLD (MINOR 5)
    Root cause of init freeze and missing addon results:
    • C_Timer.After(10) was a guess at when all addons had loaded.
      If the batch fired before an addon called Enable(), that addon was
      silently excluded (batchFired=true blocked any new scheduling).
    • RegisterComm + SendCommMessage firing at an arbitrary t+10s during
      the loading screen transition could still hit a busy frame.
      Fix: use a PLAYER_ENTERING_WORLD event frame instead.
    • Guaranteed to fire AFTER every addon has loaded and called Enable()
    • Guild channel is fully available at that point
    • Frame is idempotent (UnregisterAllEvents guards repeated loads via
      LibStub from multiple embedded copies)
    • Removed batchTimer field; scheduling is now event-driven not timer-driven
      Also:
    • Restored non-debug print for "no responses received" so users can
      see the outcome without enabling debug mode
    • TriggerVersionCheck legacy shim now correctly re-fires FireBatch
      after PLAYER_ENTERING_WORLD has already occurred
  • refactor!: redesign protocol to use 2 shared library prefixes (MINOR 4)
    Fixes critical bug: Blizzard caps registered addon msg prefixes at 8.
    The old design used 2 prefixes per host addon, causing silent failure
    beyond 4 addons. This redesign uses exactly 2 fixed prefixes for the
    entire library regardless of how many addons embed it.
    Protocol changes:
    • Replace per-addon prefixes (e.g. GUILDSHOPPINGLIST_VC) with two
      fixed library-wide prefixes: VC10_REQ and VC10_RSP
    • Addon identity moves from the channel into the serialized payload
    • RegisterComm now called once at library level, not once per addon
      Batch broadcast:
    • All Enable() calls within 10s are coalesced into a single GUILD
      broadcast:
    • Recipients reply with only the addons they also have installed in
      one whisper instead of N separate whispers
    • Reduces worst-case traffic from (N addons * M members) whispers
      to M whispers total
      Other improvements:
    • FireBatch() replaces per-host C_Timer.After spam; one library timer
      handles all hosts with a single 12s collection window
    • Removed dead lowestSender/lowestVersion variables
    • Removed GuildShoppingList_Config coupling from slash commands
    • Legacy shims kept for TriggerVersionCheck/SendVersionCheck/
      TriggerVersionCheckForHost; they re-arm the batch mechanism
    • Enable() API is unchanged; host addons need no modification