v1.5.0
What's new
Changelog
Release notes for Warband.pro Companion. The packager sends the section matching the tag to CurseForge, Wago, and WoWInterface verbatim, so this is what players read — not the commit log.
The release workflow looks for ## [1.0.1] exactly. A tag without a matching heading here fails the release before anything is published. Write the section first, then tag.
It also reads the section for machine-written marketing voice and fails on that — same check, so run it yourself before you tag:
node tools/slop.mjs 1.0.2
CI runs it against ## [Unreleased] on every push, so notes written as you go are already clean at tag time. The rules are in tools/slop.mjs and they only flag borrowed phrasing, keynote voice, and adjectives standing in for numbers — the terse fragments and em dashes here are the house style and stay.
Format follows Keep a Changelog. Versions follow semver, with the wire format as the thing being versioned:
- MAJOR —
wb1!→wb2!. The website rejects old strings with "update your addon". - MINOR — a new optional field or capture. The website still reads older bundles.
- PATCH — a fix. Payload shape unchanged.
The wire contract itself is specified in docs/CONTRACT.md.
Unreleased
1.5.0 — 2026-08-25 — one window, and three ways into it
Everything this addon does now lives behind one panel, and there is finally
an icon to open it with. 1.4.0 added the clear-out list as a second frame, so
there were two windows and no way from one to the other. This is one window
with tabs along the bottom the way the game's own panels do it, built from
Blizzard's frame templates so it follows your UI scale and fonts with no
setting of its own. Open it from the minimap, a key, the addon compartment or
/warband.
Added
- A minimap button. Click it for the export string, right-click it for the
options, drag it anywhere round the ring. Hovering says how many characters
are stored and how fresh the freshest one is, which is usually the whole
question.
/warband minimap offtakes it away and the addon compartment still opens the window. - A keybinding. Key Bindings > Warband.pro Companion > Open the export window, so the four to ten exports a play night cost one key instead of typing into chat. It ships unbound — picking a key for you would take one you had already spent.
- An Options tab. Gear capture and item links were slash-and-SavedVariables
toggles before; they are checkboxes now, and
/warband gear on|offstill works. - Open the clear-out list at merchants — off by default. When a merchant window opens and the list has something in your bags, the Import tab opens by itself and closes when you leave the merchant.
/warband optionsopens the window on that tab.- The panel says
copiedwhen you press Ctrl+C, and/warband statusreports when you actually copied rather than when you last opened the window. - One line on your first login after installing, naming the command. Nothing else this addon does prints anything, which is right every night except the first.
- The clear-out list says what to do with each item, not only why it is on the list. An item warband.pro says to delete by hand no longer shows a Sell button — the game would not let that button work anyway.
- A paste into the clear-out box now says what it read, and says so when it replaced a list you already had.
Changed
- One window instead of two.
/warband junkgoes to the Import tab; the clear-out list, its paste box, Sell and Disenchant all live there and work as before. Esc still closes, the export string still selects itself. - One icon everywhere. The addon compartment, the window's portrait and the minimap button are the same purple crystal. It used to be a bag, which is hard to pick out of a ring of other brown icons.
- The tabs are named by direction:
To warband.proandFrom warband.pro. They read Export and Import, which is backwards from the site's own words: the site calls receiving this string an import, so a player who had just clicked import in the browser opened the tab called Import and was on the wrong one. - Step 2 of the copy instructions says what the site actually does: press
i, paste, Enter. It said "warband.pro > Import", a destination that never existed. - Combat now closes only the Import tab (its buttons cannot be rewritten mid-fight). An export string left open through a ready-check stays open.
Fixed
- Three warnings on every login, from
Bindings.xmlbeing listed in the.tocas well as loaded by the client. The keybinding also sat under a heading called WARBANDPRO as a row called WARBANDPRO_TOGGLE; it reads as words now. - Pasting a cleanup string into the clear-out panel errored before the
decoder ever ran: the
wbc1!prefix was defined in the test fixture but not in the addon. - Junk lists now clear when their character is gone — even from a manual SavedVariables edit. Matches the warbank orphan guard that already ran on every optimize.
1.4.0 — 2026-08-23 — the clear-out panel
The first thing warband.pro has ever sent back. Until now this addon only
talked outward: you pasted a string into the site and that was the end of the
conversation. /warband junk is the other half. Copy the cleanup list off
warband.pro's gear page, paste it here, and you get a list of what to get rid
of — with a Sell button that works at any merchant and, if you are an
enchanter, a Disenchant button beside it.
Added
/warband junk— the clear-out panel. Paste box at the top, one row per item, an age line so you can see how old the list is.- Sell at a merchant. The button is dark until a merchant window is open, and the item it sells is the one on that row.
- Disenchant, for enchanters. This is your click, not the addon's — the game does not allow an addon to cast for you, and this addon does not try. Your profession is checked when the panel draws, not when the list was made, so dropping enchanting does not leave a button that casts nothing.
- Grey vendor trash is listed too, and it never came from the website. Your bags right now are the only honest source for that, and the site's copy is as old as your last paste.
wbc1!, the return format. Its own prefix rather than the reservedwb2!, which is still for a breaking change to the export string.
How it finds your items
Not by bag position. The list is made from an export you took earlier, and by the time it comes back you have looted, sold, sorted and run a dungeon — bag slot 14 is not what it was. Selling by remembered position would eventually sell the wrong thing, so the panel matches items by their full item string and takes the position from the bags as they are at that moment.
A consequence worth knowing: items you have already got rid of, or moved to the bank, simply drop off the list, and the header counts them as no longer in your bags. Two copies of the same item both get listed from one entry.
Safety
- The panel closes when you enter combat and comes back when you leave. Nothing is rewritten mid-fight, which is also why nothing goes stale behind you.
- Pasting your export string into the paste box says so, rather than calling it invalid — it is a perfectly good string, just the wrong direction.
- The decoder is hand-written and reads exactly one shape. It does not run anything it reads, and 49 tests run against it on every push, including the real string the website produces.
- Nothing is ever deleted. The panel can say an item is worth deleting; the keystrokes are yours.
1.3.0 — 2026-08-23 — bag gear actually reaches the wire, and it has a name
Every bag, bank and warband-tab gear entry was being dropped before it
reached the wire — since 1.1.0. The classifier read GetItemInfoInstant's
icon (return 5) where it meant the equip location (return 4). The lookup that
sorts an item into its slot is keyed by INVTYPE_* strings, an icon file id
matches none of them, and every owned item fell through. Equipped gear walks
fixed slot numbers and never consults the equip location, so the export looked
populated the whole time — warband.pro's best-in-bags, upgrade column and
cleanup list have been reading an empty array for two minor versions. Found
from a user's real export: 16 gear[] entries, all where:"equipped", beside
a bag holding seven items another tool could see.
Fixed
- Bag, bank and warband-bank gear entries are captured again. One destructuring
read
equipLocat the wrong position;tools/gear-test.luanow stands a fake client in front of the classifier — with a validINVTYPE_*string planted in the icon position — so this exact drift sorts items into the wrong slot and fails CI loudly instead of dropping them and passing as an empty bag. - A ding is noticed when it happens.
Scan.Identity— the pass that reads your level, XP, rested XP, zone and item level — only ran at login and on a loading screen. Level in the open world, type/warband copy, and the string carried the level you were an hour ago; it corrected itself the next time you zoned or logged out.PLAYER_LEVEL_UPandPLAYER_LEVEL_CHANGEDnow run the same pass, one second later soUnitLevelhas caught up.
Added
Owned gear entries carry five new optional fields, so warband.pro's cleanup view can name what it judges:
n(display name, from the item's own hyperlink — the website has no item-id-to-name lookup),q(numeric quality),b(soulbound, sent only when true — absence means not bound),clsandsub(item class and subclass ids, which is what lets the website call plate on a mage unwearable). Equipped entries never carry them: the Profile API already answers all five for what is worn. All additive onwb1!; older bundles keep decoding.Measured on the six-character sample: +0.85KB of JSON and +0.15KB of wire per character, or about +3KB of wire at the 20-character cap. Names repeat their words across a warband and deflate folds the repeats. Update and paste again; nothing about your stored data needs clearing.
1.2.0 — 2026-08-21 — every vault slot, not only the summary
The Great Vault has two axes and this addon was sending one. A raid slot
has a threshold and a difficulty it will pay at, and the difficulty is not
chosen — the game pays each slot at the difficulty of the kill sitting at that
slot's threshold, so slot 1 pays your second best kill and slot 2 your fourth.
What went on the wire was one collapsed summary per row: the furthest any slot
had got, and the next threshold still reachable. The thresholds of slots
already earned were gone with it, so warband.pro could not say the most useful
sentence there is about a raid night — that the slot you already own goes up a
difficulty if you kill one more boss — and told a live camp 2 more for vault slot 2 when slot 1 was already theirs at normal, one heroic kill from paying
heroic.
weeklyVault.rows[], per bucket. One entry per slot: its own threshold, its own progress, the client's rawlevel, and — on the raid row — the difficulty that level resolves to. About 90 bytes per bucket before deflate folds the repeated keys; the newv1-vaultcontract vector round-trips 705 bytes of JSON to 476 on the wire.The difficulty is resolved here rather than guessed at by the website.
levelmeans a different thing on every row — a keystone level on mythic+, a difficulty id on raid — so it is looked up against the client's own difficulty table, on the raid row only, and left out entirely when that lookup declines to answer.GetDifficultyInfo(14)returns "Normal" whether the 14 arrived as a raid difficulty or as a +14 key, and a plausible wrong answer is worse than none at all.levelis no longer sent on the raid bucket. It was a max across slots, which is fine for a keystone level and wrong for a difficulty id: raid ids sort LFR (17) above Mythic (16), so the "best" slot it named could be the worst one. Nothing ever read it, androws[].dis what it was reaching for.Wire stays
wb1!.rowsis additive and optional. A site that ignores it reads this bundle exactly as it read the last one, and warband.pro still reads bundles from every earlier version.Fixed — a bag move rebuilt
gear[]from a fresh walk of every container, closed bank and warband tabs included. A closed bank reports no slots, so bank and warband-tab gear could vanish from the next bundle until you stood at a banker again. Bag, bank, and warband-tab gear are now tracked separately and only replaced when that scope is actually rescanned.Added
/warband perf— scan timing per section, container and slot counts, item-info cache hit rate, and addon memory.Moving one item no longer walks the bank and every warband tab checking for gear and consumables — each scope now walks only its own containers.
Container, gear, and talent scans hold off during combat and run the moment it ends, the same way the export panel already does.
/warband statusand a repeat/warband copyno longer rebuild and recompress the whole bundle when nothing has changed since the last call.
1.1.0 — 2026-08-20 — gear and talents on the wire
warband.pro's gear profile and SimC exporter shipped reading only the Blizzard API, which already covers everything equipped. What it cannot see is inventory — a bag or bank holding a better piece than what you're wearing — and that is what this release sends.
gear[], per character. Every equipped item, plus anything in a bag, personal bank, or warband bank that could be equipped. Each entry carries the item string verbatim — the same substring SimulationCraft's own addon exports, and the same one the in-game item link uses between|Hand|h— so bonus IDs, enchant, gems, and crafted-stat choices all make the trip losslessly, along with the item level Blizzard's API cannot see for anything you are not wearing. Shirt and tabard are skipped everywhere, same as the website's own gear model.talents, per character. The active spec's talent loadout string, plus every other spec you have played on that character — only the spec you are standing in is readable at any moment, so the list fills in over time rather than replacing itself.race, per character. The last field the SimC exporter needed that this addon was not already sending./warband gear on/off. Gear capture is on by default. Turning it off leaves what was already captured in place and just leaves it out of the next copied string — turn it back on and it is there again, no rescan required./warband statusnow reports gear piece count and known specs.- Wire stays
wb1!. Both fields are additive and optional; warband.pro reads bundles from every earlier version exactly as before, and a bundle from this version still imports on a site that has not added support for the new fields yet.
No breaking change, no migration. docs/CONTRACT.md documents the item-string
parse rules for anyone building against this.
1.0.2 — 2026-08-20 — fix the empty export box
If /warband gave you an empty box on 1.0.0 or 1.0.1, this is the fix. Update and it works.
- Empty export box fixed. The panel would say "Could not build the bundle" and hand you nothing, no matter how many characters were stored. The addon vendors LibDeflate to compress your bundle, and on any client where another addon had already registered LibDeflate first, ours never reached the addon and compression could not run. That is the common case, not the rare one — LibDeflate ships inside a lot of addons. We now fall back to the copy already loaded.
/warband statussays why a build failed. The panel points atstatusfor the detail, andstatuswas not showing it. A failed bundle now prints its reason on its own line.- WoWInterface placeholder removed from the
.toc. It was set to00000. Harmless while no WoWInterface token exists, but the moment one was added the packager would have attempted an upload to a project that does not exist and failed the release instead of skipping the site. - Docs.
/warband dumpwas documented in the README and wiki but has never existed. Removed. Wiki troubleshooting also gave the wrong cause for an empty string and now leads with/warband status.
No wire format change. Still wb1!, still v: 1, and warband.pro reads 1.0.0 and 1.0.1 bundles exactly as before.
One correction to the 1.0.0 notes: this addon still ships no LibStub and registers nothing with it, but it will now read one that another addon provides, which is what the fix above does.
1.0.1 — 2026-08-19 — wire CurseForge auto packaging
- Set
## X-Curse-Project-ID: 1660174so BigWigs packager targets the real CurseForge project instead of placeholder 000000. Enables CurseForge automatic packaging via org secretCF_API_KEY. - No code changes, no wire format change, still
wb1!.
1.0.0 — 2026-08-19 — Warband.pro Companion launch
First CurseForge release.
Warband.pro Companion — companion addon for warband.pro (https://warband.pro). You play normally, log alts 2..6 through the week with zero extra steps — account-wide WarbandProDB GUID-keyed updates silently on login, bag move (.5s throttle), bank open, vault open, mail.
Any char: /warband → auto-highlighted box → Ctrl+C copies wb1!aH... (multi-char bundle default, 4-7KB for 6 chars, ~26KB with full bag contents). Paste on warband.pro Import (hotkey i) → preview 🟢🟡🔴 → Confirm. Missing chars stay ⚪ never, stale just lowers confidence.
What it captures — Altoholic + SavedInstances superset, pruned Midnight 12.1:
- Bags, bank+bags, reagentBank, warbandBank with seenByGuid/tabs
- Gold, currencies with weeklyMax/isAccountWide — Crests, Flightstones, Tender
- Professions skill/max, mail count+goldPending, auctions count+goldHeld
- Lockouts LFR/N/H/M with bosses killed + resetTime, worldBosses
- Keystone level/dungeonID, M+ runs timed/chest, score, weeklyVault raid/mplus/world thresholds
- Consumables rollup for Tonight Plan, per-section seenAt for staleness dots
Trust: no network ever, <200KB for 6 chars, no OnUpdate scanner, copy-only, vanilla Lua no Ace3/LibStub, zero deps except vendored LibDeflate MIT zlib (license in Vendor/LibDeflate.lua header).
Retail Midnight 12.1 only. Works with whatever UI you run.
Then future tags auto-upload via BigWigs packager once Project IDs are set.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

