File Details
Vamoose's Dye Studio v2.1.3
- R
- May 25, 2026
- 909.06 KB
- 611
- 12.0.5
- Retail
File Name
VamoosesDyeStudio-2.1.3.zip
Supported Versions
- 12.0.5
**Canvas tab reliability**
- Canvas now opens with your last-session decor list instantly, instead of "Loading..." while the housing catalog primes. The catalog is snapshotted to SavedVariables on every successful fetch and re-hydrated on /reload before the live searcher returns. First-ever Canvas open on a new install still waits for the live fetch; every session after that is instant.
- When the live catalog search fails to return data, VDS now auto-retries up to 3 times (5 seconds each) with a fresh searcher each attempt, instead of getting stuck on "Loading..." forever. Visible status during the retry: "Loading dyeable decor..." -> "Catalog stuck, retrying... (N/3)" -> "Catalog unavailable" if all attempts fail. Addresses the "stuck on Loading..." case reported on Reddit.
- After a hard "Catalog unavailable" failure, switching tabs and back into Canvas triggers a fresh retry attempt -- no need to /reload unless that also fails. Recovers transient failures (network blips, slow Blizzard backend, addon-priming races) automatically.
- Live catalog fetch is now deferred until you open VDS and view the Canvas tab (mirrors Blizzard's own Housing Dashboard, which lazy-loads its catalog when you click it). Previously VDS would kick the searcher at login for users whose saved view was Canvas -- that's the window where the housing backend is least likely to be ready on fresh chars / cold machines. Combined with snapshot rehydrate, the user-visible cost of the deferral is zero: you still see your last-session decor list the moment Canvas opens. Should make the retry / failure path much rarer in practice.
**Live Customize mode**
- New **Snapshot** button next to Cancel/Apply -- saves the currently-displayed dye scheme as a variant without applying. Useful for capturing a palette you've found on existing decor before experimenting. Dedup is automatic; identical palettes are bumped to the top of the variants list instead of duplicating.
- **Apply** button now greys out when there are no pending dye changes, instead of being clickable but a no-op.
- Footer layout tightened: "Auto-save applied" -> "Auto-save" so the action buttons (Snapshot/Cancel/Apply) fit without clipping at narrow widths.
**Config sidebar**
- New **Open Debug Log** button under the Debug Mode checkbox. Opens the same popup window as /vds log. Useful for grabbing logs for bug reports without remembering the slash command.
**Debug log window**
- Every line now has a `[HH:MM:SS]` timestamp prefix for correlating events to chat / Blizzard event timing.
- New Discord invite footer in the log popup -- one click to copy the invite URL when grabbing logs for a bug report.
- Hint text + footer message now use readable text colors (previously dim grey, easily missed).
**Internal**
- Every tooltip in VDS now lives in a central `VDS.TooltipRecipes` registry. Widget specs reference recipes by name (`tooltip = { recipe = "..." }`) instead of inline strings/tables/functions. Boot validator enforces declaration on every widget. Sets up the seam for future localization and consistent tooltip styling.
- Catalog hydration (snapshot rehydrate + live searcher Init) consolidated under a single `Hydrate()` entry point on the DecorInfoResolver. Previously the two phases ran at different lifecycle points (rehydrate at module-enable, Init at canvas-shown); now both fire from the same canvas-shown wake event in the correct snapshot-then-live order. Easier to reason about, easier to log, removes a class of "why did rehydrate fire but Init didn't" debugging puzzles.
- Herb item-name pre-warm moved out of `Init.lua` into `ItemNameResolver`'s own `onEnable`. Init.lua no longer pokes into module-specific bootstrap code; each module owns its own hydration lifecycle.

