File Details
VersionCheck-v1.2.7
- R
- May 23, 2026
- 15.48 KB
- 667
- 12.0.1+10
- Classic + 4
File Name
VersionCheck-1.0-VersionCheck-v1.2.7.zip
Supported Versions
- 12.0.1
- 12.0.0
- 11.2.7
- 5.5.3
- 5.5.2
- 4.4.2
- 3.80.0
- 3.4.5
- 2.5.5
- 1.15.8
- 1.15.7
VersionCheck-1.0
[v1.2.7] (2026-05-23) — GreenWall transport, popup hardening, debug-state SV fix (MINOR 10)
Bundles a long-paused feature branch with three bug fixes in the popup and debug-state paths. First release on MINOR 10.
GreenWall optional confederation transport
Version checks now reach every linked co-guild in a GreenWall confederation, not just the player's literal <guild>. AceComm GUILD remains the sole transport for users without GreenWall installed.
Implementation rides hooksecurefunc("ChatEdit_ParseText") to issue GreenWallAPI.SendMessage from inside the user's chat-keystroke scope. An echo of our own segment re-arms a fresh 12s collection window so confederation peers' RSPs land in round 2 of ProcessAllHosts. A 20s REQ dedup window suppresses the same sender arriving on both transports (which happens for peers in the user's own guild AND the confederation).
Same-realm-cluster reach is unchanged. Confederation peers on a different server cluster will receive the REQ but their WHISPER reply won't reach back — an acknowledged design limitation of AceComm WHISPER, not a bug.
Popup bug 1 — lastShown now persists across batches
Pre-2.2.7 the in-progress popup-dedup work wiped hostEntry.lastShown = nil at the top of every FireBatch. Hosts that re-trigger FireBatch periodically (TOGProfessionMaster's scanner does this every ~10 minutes for its own user-count refresh) were re-popping the same outdated-version popup on every cycle. The lastShown reset is gone; the field persists across batches and a strictly-newer version still surfaces via the strict-greater check in ProcessVersionResponsesForHost. UI reload clears the field naturally (in-memory only, no SavedVariable).
Popup bug 2 — popups defer in combat
ShowUpdatePopup now checks InCombatLockdown() and stashes pending args on hostEntry._pendingPopup. A single library-scoped frame registers PLAYER_REGEN_ENABLED and drains all hosts' pending entries in one pass when combat ends. Per-host (not library-scoped) stash matters: simultaneous hosts queued in the same combat would otherwise clobber each other.
Debug-state SavedVariable fix
The debug flag now reads VersionCheck10_DebugEnabled lazily on every access (isDebug() helper) instead of caching a VC.debugEnabled field at chunk-load. When both standalone and embedded copies of the library coexist at the same MINOR, and the embedded copy wins LibStub registration first, the standalone chunk that owns the SV declaration never runs past its if not VC then return end guard — so a cached read at the embedded chunk's load time saw the SV as nil and /vcdon silently reverted to off on every /reload. Lazy reads sidestep the race entirely: whichever code path eventually populates the global takes effect immediately for all subsequent prints and toggles.
Other
Debug-state migrated from _G.VC_DebugEnabled (bare global) to the VersionCheck10_DebugEnabled SavedVariable, with a proper SetDebug() helper. Standalone TOC declares the SV; embedded hosts that want /vcdon to survive /reload need to declare it in their own TOC (documented in README.md).
Removed leftover [VersionCheck-DIAG] chunk-load prints from the earlier SV-load-order investigation that produced the lazy-read fix.
Repo maintenance: added CLAUDE.md, .claude/, LICENSE (MIT), CHANGELOG.md, docs/Curseforge_Description.html. Renamed read.me → README.md. Updated .pkgmeta ignores accordingly.
[v1.2.6] (2026-04-02)
TOC interface-version line refresh — adds support for the then-current WoW Classic and retail Interface numbers.
[v1.2.5] (2026-03-30) — fix VersionCheck-v1.2.7 detection when :Enable is called with a string
When VC:Enable was called with a plain string name (instead of an addon object), hostEntry.host was nil and myVersion fell back to "unknown", bypassing the VersionCheck-v1.2.7 dev-build suppression check. Now both FireBatch and ProcessVersionResponsesForHost fall back to GetAddOnMetadata(addonName, "Version") so dev builds are detected correctly regardless of which :Enable form the host used.
[v1.2.4] (2026-03-04) — split RegisterComm from FireBatch, add 5s broadcast delay (MINOR 9)
Two bugs causing "no responses received" when both clients had the newer code:
RegisterCommwas insideFireBatch, called at the same time as the broadcast. If another player'sVC10_REQarrived during the startup window (beforeFireBatchran), we were not yet registered to receive it and silently missed it. Fix:RegisterCommnow happens immediately atPLAYER_ENTERING_WORLDso incoming broadcasts are never missed.FireBatchwas called directly fromPLAYER_ENTERING_WORLDwith no delay. The GUILD addon-message channel is not guaranteed to be fully available at that exact moment in Classic Era — the broadcast was going out into nothing. Fix: 5sC_Timer.Afterdelay before the broadcast only;RegisterCommstill happens immediately.
[v1.2.3] (2026-03-03)
Workspace config cleanup — removed stale folder reference, updated WoW API extension to ketho.wow-api-0.22.3.
[v1.2.2] (2026-03-03) — performance: stuttering, thundering herd, init freeze
- Defer
RegisterCommcalls intoC_Timer.After(10)to preventC_ChatInfo.RegisterAddonMessagePrefixfrom causing a 2–5s freeze during the post-login addon-load phase. - Add random 0–8s jitter before each client sends its
VCRESPwhisper to spread responses over time (thundering-herd fix). - Move collection timer to the broadcast site (12s window = 8s jitter + 4s buffer);
OnCommReceivednow just accumulates responses. - Extract
ProcessVersionResponsesForHosthelper to clean up result logic. - Guard
debugstack()behindVC_DebugEnabledto avoid unnecessary call-stack walking in production.
[v1.2.1] (2026-03-03)
Packaging metadata fixes — .pkgmeta, workspace, and TOC adjustments to align with the standalone-addon release flow.
[v1.2.0] (2026-03-02) — Ace3 dependency, not embedded
Removed embedded Ace3 from the library. VersionCheck-1.0 now uses the global Ace3 libraries provided by users' standalone Ace3 install. Reduces zip size and avoids version conflicts when other addons embed Ace3 at a different version.
Pre-history (v1.1.0 and earlier)
Initial public releases of the batched cross-guild version-check library. See git tag history for commit-level detail.

