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:- 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. - 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
- Item-mixin pre-warm before sort. ExecuteSortPlan now invokes a new