promotional bannermobile promotional banner

gobignintterrupt

lightweight, fully self-contained Mythic+ utility addon designed for (Patch 12.0.5). It helps you and your group stay coordinated by tracking critical party cooldowns and interrupts, so you never miss a beat in high-key pushes.

File Details

v1.4.1

  • R
  • May 26, 2026
  • 312.57 KB
  • 55
  • 12.0.5
  • Retail

File Name

GOBIGnINTERRUPT-v1.4.1.zip

Supported Versions

  • 12.0.5

GOBIGnINTERRUPT

v1.4.1 (2026-05-26)

Full Changelog Previous Releases

  • v1.4.1 - taint hardening + lifecycle correctness
    Codex-reviewed pass over the 12.0.5-stressed paths. Two review rounds;
    real findings fixed, over-cautious false positives rejected with evidence.
    Taint safety:
    • Taint.SafeSpellID launders secrets (tostring->tonumber strips the
      marker) instead of early-rejecting them — recovers tagged-but-
      launderable IDs. laundered() fully pcall-wrapped (both steps).
    • Taint.SafeGUID rejects secret GUIDs (returns nil) so cache keys /
      equality are always safe; added SafeGUIDKey alias.
    • Inspect.onInspectReady rejects a secret INSPECT_READY guid before use;
      spec cache keyed only by SafeGUID (non-secret).
    • Evidence poll sanitizes aura.name via SafeString2 before using it as a
      table key / AuraMap lookup; skips unreadable slots, keeps scanning.
    • NativeFilters sanitizes aura.sourceUnit before ==/table-key; scanAll
      callers (poller + debounce) pcall-wrapped.
    • StackTracker laundered aura.spellId (SafeSpellID) + aura.applications
      (SafeNumber); skips private-aura slots instead of breaking the scan.
    • Log.fmt is secret-safe: issecretvalue + pcall(tostring) -> "<secret>",
      so a logged secret can never become an uncaught throw.
      Lifecycle / correctness:
    • Bar + UnitOverlay placeholder prune bails when class/spec is
      unresolved or SpellsForUnit is transiently empty — no longer wipes
      LIVE cooldown icons on an inspect/roster race.
    • UnitOverlay.Reset clears per-icon spellID/endsAt/placeholder/charge/
      glow + zeroes the swipe (was only hiding), so OnCDStart's reuse scan
      can't match stale state after /gbi reset.
    • KickCounter counts keyed by SHORT name (realm stripped) consistently.
    • Brain: ready timer extracted to scheduleReady(); OnCast bumps inFlight
      only on a fresh activation (re-cast no longer leaks inFlight);
      UpdateRemaining AND pollPlayerDynamic now reschedule via scheduleReady
      so dynamic-CDR (peer D delta + local SPELL_UPDATE_COOLDOWN) fires
      ready/inFlight/all-ready at the new time. Stale-timer boundary made
      consistent (>= 0.5) with the reschedule thresholds.
      Context gating:
    • StackTracker scan/poll gated on Bar.IsEngineEnabled (no 0.5s aura
      polling or Brain/UI writes outside the tracked context).
    • Interrupt alert (onStart_inner + fireIfStillValid) gated on
      Bar.IsEngineEnabled — no interrupt-halfway alerts in raids/world.
    • Constants: difficulty 23 (base Mythic, non-keystone) removed from
      M_PLUS_DIFFICULTIES; it's a party context now (use showAlways).
      Rejected as false positives (codex over-applied the taint model):
      boolean coercion of a secret NON-boolean (not spellID, X and rawId and)
      and secret == nil do NOT throw — only secret BOOLEANS throw on boolean
      test, and same-type equality throws, not nil-equality. Verified against
      InterruptTrack v3.2.1 production code which does if not okID or not spellID on secret-capable values and ships fine. Did not churn those
      lines into slower type()-checks.
      No COMBAT_LOG_EVENT_UNFILTERED anywhere.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com