Housing Decor Guide

All 1,690 housing decorations in one addon. Browse every acquirable item, plan vendor shopping routes with built-in waypoints, queue crafting recipes with material tracking, and monitor profit margins — all with account-wide alt awareness.

File Details

Housing Decor Guide v2.34.0

  • R
  • Apr 24, 2026
  • 1.66 MB
  • 6.7K
  • 12.0.5+2
  • Retail

File Name

HousingDecorGuide-2.34.0.zip

Supported Versions

  • 12.0.5
  • 12.0.1
  • 12.0.0

### Added
- Preview tab: new filter layout. The "All" category now has sub-tags
  (mutually exclusive radio) -- All Decor, Crafted, House XP. Default is
  "All Decor" (full catalog). "Crafted" restricts to craftable items from
  the recipe database. "House XP" shows only unowned items that will
  grant house XP on first acquisition (uses entryInfo.firstAcquisitionBonus
  > 0 and auto-hides unreleased items). Unknown and Stored remain on the
  header row as INDEPENDENT toggles so they compose with categories and
  tags (e.g. Unknown + Crafted + Alchemy = uncollected Alchemy recipes).
- Preview tab: new "Only Unreleased" toggle alongside "Hide Unreleased"
  for a sneak-peek view of upcoming decor items (items with a patch ver
  higher than the current client build). The two toggles are mutually
  exclusive.
- House Editor tab (injected inside Blizzard's HouseEditorStorageFrame):
  unique trophy items now show the trophy icon (house-chest-trophy-icon
  atlas) instead of a "1" quantity badge. Matches Blizzard's own catalog
  behaviour.
- Collection state now persists across /reload. The owned decor set is
  saved to SavedVariables after each update and restored on login, so
  tabs paint with last-known collected markers immediately instead of
  empty state for ~0.5s. A fresh sweep runs in parallel if stale. The
  Refresh button wipes the persisted store and rebuilds from scratch;
  all other SavedVariables (crafting/farming history, known recipes,
  custom styles, shopping lists, user notes, config) are untouched.
- HDG_ENTRY_UPDATED EventBus event (payload: decorID, itemID, isOwned,
  wasOwned, stored, placed, redeemable) fires on each per-entry change
  for future per-row UI consumers. Existing tabs continue to use the
  coalesced HDG_COLLECTION_READY broadcast.

### Changed
- Recipes tab: "Known" filter is now ACCOUNT-WIDE instead of current-
  character only. Shows recipes learned by any character on the account.
  Narrow to a single character via the profession tag. Thanks to Jack
  for the feedback -- this matches the workflow he outlined: Known +
  Expansion + Profession filters to quickly thin down the list for
  shopping queue planning.
- Collection detection rewritten to match Blizzard's canonical pattern
  (Blizzard_HousingDashboardCatalog.lua). HOUSING_STORAGE_UPDATED (bulk)
  runs a full arithmetic sweep; HOUSING_STORAGE_ENTRY_UPDATED (per-entry)
  patches a single decor via GetCatalogEntryInfo(entryID). Replaces the
  previous debounce / shrink-guard / retry machinery with an O(1)
  per-event path. Coalesced HDG_COLLECTION_READY (0.3s) keeps tab
  refreshes batched during 100-item acquisition bursts.

### Fixed
- CRITICAL: collection arithmetic was reading nonexistent fields. The
  sweep used info.totalNumStored / info.totalNumPlaced, but the real
  runtime fields (in-game verified and confirmed in
  Blizzard_HousingCatalogEntry.lua:437-438) are info.quantity /
  info.numPlaced. Items with no remainingRedeemable were silently
  invisible to the sweep -- most of a mature player's collection.
  Fixed in both the bulk sweep and per-entry paths.
- CatalogSearcher configured with correct method names. Previous code
  called SetStoredOnly(false) and SetBaseVariantOnly(true) -- neither
  method exists in Blizzard's searcher API; both silently no-op'd.
  Replaced with the canonical SetOwnedOnly(false) and
  SetDistinctPerRecordID(true). Similarly removed phantom
  SetIncludeMarketEntries calls from the Preview tab's own searcher.
- Preview tab "Loading catalog..." stuck state on cold login. The tab's
  persistent searcher kicked at window-open time before Blizzard's
  catalog had synced from the server; the callback never fired, the
  in-progress flag latched true, and subsequent HOUSING_STORAGE_UPDATED
  events couldn't retry. Fix: the storage event handler now re-kicks
  the searcher AND clears the stale in-progress flag, so when Blizzard
  reports storage ready the next RunSearch produces fresh results and
  the callback fires. After /reload the catalog was already cached so
  the bug only showed on cold login.
- Preview tab's variant-discovery searcher now uses
  SetDistinctPerRecordID(false) to return each dyed copy as a separate
  entry (matches Blizzard_HouseEditorStorageFrame storage-mode config).
- Lumber tracker in Recipes tab: "In Stock" column sometimes rendered
  the "have/needed" form instead of the collapsed single-count form
  on first window open, even for lumber types whose decor was fully
  collected. Fix: HDG_COLLECTION_READY handler also refreshes the
  embedded in-window tracker, not just the pinned widget.
- Eliminated 17 false positives from the firstAcquisitionBonus
  heuristic used in previous versions (Spring Blossom Pond, Lunar
  Celebrant's tea set items, Brown Paper Sack, and similar items that
  incorrectly showed as collected when they weren't).

### Removed
- HDG_Data.MarkDecorCollected and the HOUSE_DECOR_ADDED_TO_CHEST
  optimistic-write kludge. The shopping list now refreshes via the
  normal HDG_COLLECTION_READY chain (~300ms after the acquisition event
  fires). LumberTracker's event wiring already did the right thing.