Guild Bank Ledger

*BETA* - Persistent guild bank transaction logging with automatic multi-player sync.

File Details

v0.32.5

  • R
  • May 20, 2026
  • 361.39 KB
  • 11
  • 12.0.5
  • Retail

File Name

GuildBankLedger-v0.32.5.zip

Supported Versions

  • 12.0.5

GuildBankLedger

v0.32.5 (2026-05-20)

Full Changelog Previous Releases

  • Merge pull request #26 from RussellFeinstein/hotfix/sort-crafted-quality-prewarm
    Pre-warm crafted-quality items before sort to avoid client crash (v0.32.5)
  • Stamp v0.32.5
    Bump VERSION, .toc, Core.lua VERSION constant, CLAUDE.md "Current:"
    line, CHANGELOG.md, and UI/ChangelogView.lua CHANGELOG_DATA for the
    hotfix landing on hotfix/sort-crafted-quality-prewarm. DEV_BUILD stays
    nil. Per the project's bundle-and-PR carve-out, the implementation
    commit on this branch left these untouched and they land in one
    stamp at PR-open.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • Pre-warm crafted-quality items before sort to avoid client crash
    A 2026-05-20 in-game session crashed Wow.exe during a guild bank sort.
    The Lua stack bottomed out in Blizzard's SetItemCraftingQualityOverlay
    calling GetItemReagentQualityInfo with qualityInfo=nil on a Flawless
    Deadly Garnet (itemID 240904, TWW crafted-quality reagent) — an
    ACCESS_VIOLATION, not a Lua error, so pcall cannot catch it. The crash
    fires during the tab redraw that follows PickupGuildBankItem, on any
    resident slot in the tab whose item link carries the
    Professions-ChatIcon-Quality- atlas marker. The item we pick up is
    irrelevant; merely sorting any tab containing such reagents is unsafe
    until Blizzard fixes the underlying C function.
    Two layered protections:
    1. Item-mixin pre-warm before sort. ExecuteSortPlan now invokes a new
      preWarmForPlan helper that walks the unique item links in the plan
      and calls Item:CreateFromItemLink(link):ContinueOnItemLoad(cb). This
      is Blizzard's own pattern for ensuring an item link is fully
      resolved including bonus IDs (TWW crafted-quality items carry their
      quality as a bonus ID). All callbacks must fire OR a 3.0s cap
      elapses before step() is called. Cancel and bank-close during
      pre-warm route through the existing finish() path.
    2. User-facing warning banner in the Sort tab preview. When the plan
      touches any slot whose live item link carries the crafted-quality
      atlas marker, a color-coded banner renders in the header above the
      move list. Pre-warm is best-effort against C-side cache state we
      cannot directly populate; the banner manages user expectations
      honestly.
      Detection helper GBL._sortExecutor_PlanHasCraftedQualityItems is
      exported so the SortView preview can call it without touching
      executor internals.
      In-game verification on Tichondrius (502 occupied slots across 7 tabs
      including the full Flawless gem set in tab 6): pre-warm fired with
      "Sort pre-warm: 49 items, 49 loaded in 0.0s (complete)" and the
      106-op sort ran to completion without an access violation. Banner
      appeared as expected. Full session log saved to
      docs/sort-logs/2026-05-20-prewarm-success-late-poll-recurrence.md,
      which also captures fresh data on the late-poll storm and singleton-
      chain emit patterns first documented on 2026-05-14 — those are the
      Phase B follow-up and intentionally out of scope here.
      Tests: new pre-warm phase describe block in spec/sortexecutor_spec.lua
      (sync load, cap timer, bank-close mid-prewarm, cancel mid-prewarm,
      skipPreWarm bypass, atlas detection — positive, plain-quality
      negative, empty/nil, multi-op). New spec/ui/sortview_spec.lua pins
      the export seam SortView depends on. Synchronous _G.Item mock in
      spec/mock_wow.lua means the existing 14 ExecuteSortPlan call sites
      bypass the wait naturally without per-site changes. 1237 tests pass,
      luacheck clean.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com