__TOGT-v0.2.1
What's new
Changelog
[v0.2.1] (2026-07-17) - TBC Classic Compatibility
Bug Fixes
!!TOGT marked out-of-date on current TBC Classic —
!!TOGT_BCC.tocdeclared## Interface: 20505while the live TBC Classic client is on build20506. Clients on that build saw!!TOGTas incompatible and skipped it (unless "Load out of date AddOns" was ticked), which in turn broke TOG Tools (## Dependencies: Ace3, VersionCheck-1.0, !!TOGT) with8x LUA_WARNING: AddOn [TOGTools] Failed to load missing dependency [!!TOGT]— even for users who had!!TOGTinstalled. Fix: bumped both## Interface:and## X-Min-Interface:to20506to match the current TBC Classic build andTOGTools_BCC.toc. Same failure mode and fix as the Retail Midnight bump in v0.1.1. Location:!!TOGT_BCC.toc.BigWigs packager couldn't find the TOC (release failed) —
.pkgmetastill declaredpackage-as: !TOGT, the pre-rename name; after the v0.2.0!TOGT→!!TOGTrename the TOC files are!!TOGT.toc/!!TOGT_<flavor>.toc, so the packager searched for!TOGT.toc, found nothing, and aborted with "Could not find an addon TOC file." (The v0.2.0 CurseForge release failed the same way —package-aswas never updated after the rename.) Fix:package-as: !!TOGT. Location:.pkgmeta.
[v0.2.0] (2026-06-11) - Renamed to !!TOGT (loads first) + early diagnostics capture
New Features
Renamed
!TOGT→!!TOGTso it loads first. WoW loads addons alphabetically by folder name;!!TOGTsorts ahead of every other addon — crucially before!BugGrabber. That ordering is what lets it grab the realseterrorhandlerbefore BugGrabber neuters it, which makes the error capture below coexist with BugSack (see the wrap). Upgrading from!TOGT: the CurseForge app replaces the folder automatically; manual installers should delete any leftover old!TOGTfolder so a stale duplicate doesn't load alongside!!TOGT. No SavedVariables, so nothing to migrate.Diagnostics capture for TOG Tools — Alongside ADDON_LOADED timing,
!!TOGTnow captures from the very first moment of load: Lua errors, Lua warnings (LUA_WARNING), blocked/forbidden addon-action events (ADDON_ACTION_BLOCKED/_FORBIDDEN+ theMACRO_variants), andSAVED_VARIABLES_TOO_LARGE(silent saved-data loss). Acapture()function buffers records intoTOGToolsEarlyData.diagnostics(ring-capped at 250, with adroppedoverflow counter) until TOG Tools sets.cb, after which records stream straight over. A dedicated event frame (NOT unregistered atPLAYER_LOGIN, so it captures all session) handles the events; the action / SV records are pre-formatted (source= culprit,detail= the reason) and recorded by TOG Tools as errors — they are NOT "taint" (true taint propagation goes only to the unreadable on-disk taint.log). Lua errors/warnings keep the raw message so TOG Tools owns thepath:line: reasonparsing. New globalstime/geterrorhandler/seterrorhandlerin.luarc.json. Still no SavedVariables. Consumed by TOG Tools v0.7.0+ (Diagnostics tab).Good-citizen error-handler wrap (coexists with BugGrabber/BugSack) — BugGrabber loads after us, REPLACES the error handler without chaining, then neuters the global
seterrorhandlerso nothing else can register. Because!!TOGTloads first, it saves the realseterrorhandlerup front and re-asserts itself on top (on eachADDON_LOADEDand atPLAYER_LOGIN) whenever the active handler isn't ours. Our handler captures the error, then tail-calls the previous handler (return prev(msg)) — in Lua 5.1 a tail call drops our own frame, so the wrapped handler (BugGrabber's grabError, or Blizzard's default) sees a clean stack and runs exactly as if it were on top. Net result: TOG Tools and BugSack both capture every Lua error, with no breakage to either. (Aprev == ourHandlerguard prevents wrapping ourselves.)Retail: back-fill the pre-load error buffer — On Retail, Blizzard's modern pipeline (
Blizzard_ScriptErrors, loaded before any addon) buffers errors that fired before any handler registered intoScriptErrors.unhandledErrors.!!TOGTdrains that snapshot once at load to pick up errors from core UI load that happened before even!!TOGT. Read-only (not cleared, so Blizzard's own error frame still gets them); does NOT useAddLuaErrorHandler(it assertsissecure()and fails from addon code). Feature-detected via theScriptErrorsglobal → a no-op on Classic Era. New globalScriptErrorsin.luarc.json.Idempotent init —
TOGToolsEarlyDatais initialized with a guard (= or {}plus an__togtInitflag), so a stray duplicate copy of the addon can't clobber the table the first copy populated or double-register handlers.
[v0.1.1] (2026-05-23) - Retail Midnight Compatibility
Bug Fixes
- !TOGT marked out-of-date on current Retail (Midnight 12.0.x patches) —
!TOGT_Mainline.tocdeclared## Interface: 110207(the TWW-final build); live Retail is on Midnight 12.0.5 and 12.0.7. Clients on those builds saw !TOGT as incompatible, which in turn broke TOGTools (## Dependencies: Ace3, !TOGT) for any user without "Load out of date AddOns" ticked. Fix: expanded to## Interface: 110207, 120000, 120001, 120005, 120007to cover both the final TWW build and the entire current Midnight patch range. Verified against currently maintained Retail addons (RaiderIO120000-120005, !BugGrabber up to120007, Bagnon120005, Ace3120000-120001). Location:!TOGT_Mainline.toc.
Improvements
- Stripped non-standard TOC fields —
!TOGT_Mainline.toccarried## Interface-Retail:,## Interface-Classic:, and## Interface-BCC:lines that look like multi-flavor selectors but are not recognised TOC fields — the WoW client silently ignores them, and the BigWigs packager produces per-flavor TOCs from.pkgmetadirectives rather than from in-TOC selectors. Removed to avoid future confusion. Location:!TOGT_Mainline.toc.
[v0.1.0] (2026-05-04) - Sub-Millisecond Timing & CurseForge Wiring
Bug Fixes
- Per-addon load times collapsed to
0.000s—GetTime()is frame-locked, so everyADDON_LOADEDevent fired in the same loading-screen frame returned the same timestamp; the per-addon deltas TOG Tools computed from the offsets all came out as zero. Switched the capture in!TOGT.luatodebugprofilestop()(sub-millisecond precision); offsets are still stored in seconds (ms / 1000) so theTOGToolsEarlyDataconsumer contract is unchanged.
Improvements
- CurseForge project ID set —
1533953populated in all six TOC files (!TOGT.toc,!TOGT_BCC.toc,!TOGT_Wrath.toc,!TOGT_Cata.toc,!TOGT_Mists.toc,!TOGT_Mainline.toc) and.pkgmeta(replacing thePLACEHOLDERfrom initial release), so the BigWigs packager can publish to the correct CurseForge project. - CurseForge user-facing description — Added
docs/Curseforge_Description.htmldescribing what the companion does, why it's needed, and how to use it alongside TOG Tools. .luarc.jsonupdated — Addeddebugprofilestoptodiagnostics.globalsso the new timer call resolves cleanly under the Lua LSP.
[v0.0.1] (2026-05-04) - Initial Release
New Features
- Load timer companion — Registers for
ADDON_LOADEDfrom the very first frame of the loading screen. Records load order and time offset (seconds since first addon loaded) for every addon. Stores results in theTOGToolsEarlyDataglobal for TOG Tools to read and display in the Addon Load tab. - Login window tracking — Records total time from first
ADDON_LOADEDtoPLAYER_LOGINas the overall loading screen duration. - All WoW versions — TOC files for Vanilla (11508), TBC (20505), Wrath (30405), Cata (40402), Mists (50503), and Retail (110207).
This mod has no additional files

