## Version 2.1.2 (Released May 2026)

**Canvas tab**
- Loadout chips now support right-click to rename and shift+right-click to delete. Previously the only way to remove a saved loadout was to enter Live Customize mode on the actual decor and use the gallery tile -- a Canvas-tab cleanup loop is now possible without leaving the tab.
- The "+" save tile pulses through a rainbow color cycle (the same spectrum used by the title bar) whenever the current channel colors are not saved as a loadout for the selected decor. It quiets the moment the combo matches a saved loadout or you save it. Tooltip switches to "Loadout not saved -- click to save" while pulsing.
- The "+" tile is now hidden when you're at the 10/10 cap for a decor instead of misleadingly inviting another save that would silently fail.
- The "+" tile is now a hollow bordered icon in keeping with the rest of the chip wall, instead of a brassy gold block.

**Fixes**
- Item names that read as "Loading..." on first paint of a cold session now resolve reliably. The async name resolver now uses Blizzard's canonical ItemEventListener primitive (the same one AllTheThings uses) which wraps the kick + listen wiring around C_Item.RequestLoadItemDataByID and ITEM_DATA_LOAD_RESULT. Replaces the previous interim fix which was listening for the wrong event. Affects herb names in Stock tab, Canvas decor picker, Warehouse rows, and anywhere else item names appear.

## Version 2.1.1 (Released May 2026)

**UX**
- ESC now closes the main window, matching the journal/collections/character panel behaviour. (Boggle, Discord)

**Fixes**
- Herb names that read as "Herb <itemID>" on first paint now resolve and re-paint when the item info arrives, instead of staying stuck for the rest of the session. The async name resolver was kicking C_Item.GetItemNameByID, which warms a name-only cache but does NOT fire GET_ITEM_INFO_RECEIVED -- so the re-paint trigger never arrived for cold items. Now also calls C_Item.RequestLoadItemDataByID in the miss path to force the full-info fetch that the event actually listens to.
- Canvas decor picker no longer renders empty on the first open of a cold session (especially noticeable on slower machines where the housing catalog populates after VDS's initial searcher pass). DecorInfoResolver now listens for HOUSING_CATALOG_CATEGORY_UPDATED / HOUSING_CATALOG_SUBCATEGORY_UPDATED and re-runs the catalog search if the prior pass returned zero. Previously the only fix was /reload. (Boggle, Discord)

## Version 2.1.0 (Released May 2026)

**Canvas tab**
- The Canvas decor picker now has a Category dropdown above the list to narrow decor by Housing category.
- A new Scope filter at the top of the Canvas tab narrows the available dyes to a curated theme or one of your custom palettes. Default is "All Dyes".
- Saved loadouts for the selected decor appear as color chips below the channel pickers in the preview panel. Click a chip to apply.
- Each row in the Canvas decor picker now shows droplet icons for the decor's dye channels, plus a count badge for how many saved loadouts you have for that decor.
- Picker lists every available dyeable decor, including decor you don't own.

**Fixes**
- Saving the same color combination twice for one decor no longer creates a duplicate entry.
- Clear button now resets all three channel pickers.
- Category dropdown no longer flashes "All Categories (0)" on first open.

## Version 2.0.0 (Released May 2026)

Complete rewrite. The colored vials look the same; everything underneath is new.

**New: Stock tab**
- Set per-color-group target counts (e.g. "3 of every red"), with per-dye
  overrides for the specific dyes you want more of.
- Deficit roll-up across bags, bank, reagent bank, and warband bank.
- One-click Restock-and-Send-to-AH: Buy mode ships missing dyes to an
  Auctionator shopping list; Craft mode ships the cheapest herbs needed to
  craft them. Auctionator is a soft dependency.
- Master +/- bumps every group target at once (shift-click for x10).
- Per-dye reset button reverts an override back to the group default.

**New defaults**
- "Replace Blizzard's dye picker" is on by default for new installs.
- Custom palette and Canvas loadout creation pre-fills "Palette N" /
  "Loadout N" with an auto-incrementing number; press Enter to accept.

**Live dye mode polish**
- Focused slot now has a gold border matching the Canvas channel picker.
- Cost preview tracks Blizzard's dye-bottle spend as you preview changes.

**Tabs:** Colors / Custom / Theme / Stock / Herbs / Canvas.

**Migration**
- Your custom palettes carry forward from v1.x.
- Other state (cart, loadouts, dyeable-item cache, minimap/panel position)
  resets to defaults on first launch.

**Slash commands:** `/vds` / `/dyes` (toggle), `/vds debug`, `/vds minimap`,
`/vds hardreset`.
