v0.4.0
What's new
VocWarbank
v0.4.0 (2026-10-05)
Full Changelog Previous Releases
- chore: tag workflow to cut releases from anywhere
Actions > tag > Run workflow creates the version tag on main and
dispatches the release workflow at it, for places that cannot push
tags directly. release.yml accepts the dispatch; the push trigger is
unchanged.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_019atPxjwbdGxYef6zgN2yxG - docs: adopt FAMILY.md, the Voc family conventions
FAMILY.md is the contract every Voc addon follows: principles, naming,
slash grammar, chat voice, settings, layout, tests, releases, docs.
README, AGENTS.md, and SPEC.md follow it and link the siblings.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_019atPxjwbdGxYef6zgN2yxG - chore: luacheck config and test workflow
Lint declares the addon's own globals and the WoW API it reads; CI
runs the headless tests on Lua 5.1 plus luacheck on every push.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_019atPxjwbdGxYef6zgN2yxG - feat: /vw help, /vw tsmkey, and the family chat voice
/vw help lists every subcommand one per line, /vw tsmkey sets the TSM
price key without opening SavedVariables, and the Settings panel is
retried at PLAYER_LOGIN if the API was not up at ADDON_LOADED. Every
chat line goes through ns.say with the family's colored prefix. Tests
cover the panel, the new subcommands, and the prefix.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_019atPxjwbdGxYef6zgN2yxG - feat: native Settings panel with scope and auction threshold
Settings > AddOns > VocWarbank is now a Blizzard vertical-layout
category, the same API and shape as VocGear: dropdowns for price
source, warbank source, scope (new in the panel), and auction
threshold (gold presets, plus the live value when set elsewhere), and
checkboxes for the two auto-opens, all bound to the SavedVariables so
panel and slash line always agree. Free-text options stay on the slash
line and the panel points there.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_019atPxjwbdGxYef6zgN2yxG - test: cover config, scanner, slash, and quest-refresh behavior
20 new headless checks: config defaults/copy/repair/migration/pre-load safety, modern bank-bag numbering, quest-cache invalidation, and slash arg handling with window refresh. Suite is 46 passed, 0 failed; the new checks fail against v0.3.0. - fix: guard tooltip, theme, and slash edge cases
Slash source/inventory/scope args are case-insensitive. Icon tooltips fall back to a plain label when a slot has no item link instead of erroring. EllesmereUI facade calls on fresh widgets and per-paint refreshes degrade to stock on failure (loud once) instead of breaking the render. - fix: apply settings and slash changes to the open window
The options panel and /vw set commands re-rank the open window (selection preserved) instead of leaving stale scope, prices, and verdicts on screen until reopen. - fix: re-rank as item data and quest completions land
Uncached items request their data (guarded) and the open window re-ranks once it arrives, coalesced to one delayed rescan per burst instead of one per item. Turning in a quest drops the cached completed-title set so dead quest items trash without a reload. - fix: scan the right bank bags on modern clients
Bag 5 is the reagent bag (already covered by the bags scope), not a bank bag: on clients with Enum.BagIndex the numeric fallback now uses the modern 6-12 bank-bag range so the reagent bag is no longer double-scanned under scope=all. Enum-less clients keep the legacy 5-11 range. The bags scan also pcall-guards its slot-count read like the bank scan already did. - fix: validate SavedVariables and harden addon boot
config.init repairs corrupt values (wrong-typed lists, thresholds, enums) back to defaults, fills table defaults by copy instead of sharing the module table, and get/set stay safe before ADDON_LOADED. Boot resets a non-table SavedVariable instead of erroring on first access.
This mod has no additional files

