## [2.23.0] - 2026-03-05 (March 2026)

### Added
- House Tab: Two-column layout -- Collection by Source (left) and Collection by
  Expansion (right) side-by-side with fluid-width progress bars
- House Tab: Hero panel with backdrop, XP bar, and collection summary line
  showing total collected count, percentage, and XP available
- House Tab: Hover highlights on stat rows, green completion tint on 100% rows
- House Tab: Accent bars beside section headers for visual hierarchy

### Fixed
- AllDecorDB: Corrected expansion tags for 265 items that were showing as
  "Unknown" -- categorized by vendor zone, currency cost, and item source
- AllDecorDB: Remapped 178 items incorrectly tagged as "The Burning Crusade"
  to "Midnight" (TBC zones reused in Midnight expansion)

## [2.22.0] - 2026-03-04 (March 2026)

### Added
- Styles Tab: Tier section headers are now collapsible with arrow indicators
  -- click to expand/collapse; state persists across sessions; all sections
  default to collapsed on first use
- Styles Tab: "Shopping" category chip to filter the landing page to only
  shopping list cards
- Styles Tab: Shopping list cards rendered as snapshot-style cards with mini
  icon preview strip, attribution row, and source-appropriate big icon
- Styles Tab: Clicking a shopping list card opens a gallery detail view with
  3D decor previews, quantity badges, and collected checkmarks

### Changed
- Tooltip hook: Simplified housing decor reagent tag (removed per-profession
  breakdown, now shows just recipe count)

## [2.21.0] - 2026-03-03 (March 2026)

### Added
- Arrow key navigation in Preview, Acquire By Item, and Acquire By Vendor lists
  -- Up/Down to move selection, auto-scrolls to keep selected row visible
- Preview Tab (Stored mode): Vendor cost now shown below the destroy button for
  vendor-sold items (gold, currency, or token cost with vendor name)
- Alts Tab: Hide individual characters from the list using the eye icon next to
  their name -- hidden characters are filtered from view and the account summary;
  a "Hidden (N)" button appears to temporarily reveal them dimmed; preference
  persists across sessions (data collection continues normally on hidden characters)

### Changed
- New minimap icon and title bar artwork
- Alts Tab: Find Lumber status now right-aligned with icon after text
- Memory optimization: FacetDB freed after StyleEngine cache build (~1.5 MB saved)
- Memory optimization: ProfessionsDB pruned to housing-relevant recipes at runtime
  (~6-12 MB saved, 8,396 entries reduced to ~1,500)
- ProfessionsDB data file: stripped 8,267 empty `variants={}` entries (~330 KB saved)

### Fixed
- Goblin Tab: AH scan no longer gets permanently stuck on "Scanning..." if
  Auctionator's callback fails to fire (60s safety timeout)

## [2.20.0] - 2026-03-01 (March 2026)

### Fixed
- Minimap button no longer overlaps the minimap on non-default minimap sizes
  (now uses dynamic radius based on actual minimap dimensions)
- DecorDB: Corrected reagents for 7 Midnight recipes verified against Wowhead
  - Alchemy: Entropic Illuminant (wrong mote type + quantities),
    Haranir Preserving Agents (wrong mote type + quantity)
  - Blacksmithing: All 5 recipes used wrong reagent (Core Alloy -> Refulgent
    Copper Ingot) with incorrect quantities on 3 of them
- ReagentsDB: Added 39 missing Midnight reagents (17 Gathering, 18 Crafted,
  4 Vendor) -- PowerCrafting source labels and cost calculations now work for
  all Midnight housing decor recipes

## [2.19.0] - 2026-02-28 (February 2026)

### Fixed
- Preview Tab: Catalog search no longer gets permanently stuck at "Loading catalog..."
  (held strong reference to async searcher to prevent GC before callback; added 10s watchdog)

### Added
- Preview Tab: "Stored" filter toggle to show items with stored copies you can destroy
- Preview Tab: Stored count overlay on item icons, sorted by quantity when filter active
- Preview Tab: +/- quantity selector and "Destroy" button with confirmation dialog
- Preview Tab: Storage stats line showing owned count and stored totals
- Preview Tab: Auto-refresh on HOUSING_STORAGE_UPDATED/HOUSING_STORAGE_ENTRY_UPDATED events

### Improved
- Preview Tab: Performance overhaul -- memoized category/subcategory API lookups, font string
  pooling in info pane, single GetScheme() per row render, cached color prefixes, O(1) tag
  category lookups, O(1) item-by-decorID index, cached decorToRecipe map, shallow-copy sort
  to avoid mutating cache, skip redundant IsDecorCollected/GetCachedItemInfo calls per row

## [2.18.0] - 2026-02-28 (February 2026)

### Added
- Materials List: "All My Mats" browse mode shows every housing reagent you own across
  bags, bank, and warband bank, with search filtering and sort cycling (Name / Count / Recipes).
- Materials List: location chips on each row -- bag, bank, and warband atlas icons show
  where your materials are stored at a glance. Tooltip breaks down counts per location.
- Materials List: recipe pop-out panel. Click any reagent to see every recipe that uses it,
  sorted by craft readiness (100% ready recipes at top with green highlight). Shows
  owned/total mats indicator per recipe with color coding.
- Materials List: Shift-click any recipe in the pop-out to add it to the crafting queue
  with teal flash feedback.
- Reverse reagent index in PowerCrafting: maps reagent -> recipes for instant lookup.
- Craft readiness calculator: checks inventory against recipe requirements.

### Changed
- Materials List button in the main title bar now matches the Shopping List button style
  (atlas button with icon + "Materials" label) instead of a standalone icon.

## [2.17.0] - 2026-02-27 (February 2026)

### Added
- Acquisition tab: alt source chips now display for gate types (Achievement, Quest,
  Drop, Treasure, Craft, Profession, Promotion), not just Achievement and Quest.
- Source filters (Achievement, Quest, Treasure, Drop, Promotion) now also match items
  where the alt source matches, not just the primary source type.
- Data pipeline: enriched 445+ items with secondary acquisition sources parsed from
  Blizzard catalog sourceText. World Quest sources merged into Quest.

### Changed
- Chip architecture: AllDecorDB alt field is now the primary chip source; VendorDB
  gates (Rep/Quest/Achievement IDs) provide met/unmet coloring only.
- Data pipeline: vendor items with gate prerequisites (Achievement, Quest, Treasure)
  now correctly store Vendor as primary source and the gate as alt. Previously the
  gate was stored as primary, causing items to appear under the wrong filter.
- Removed "Vend" chip label -- Vendor is an acquisition method, not a gate.

### Fixed
- Gundargaz Grand Keg: corrected source type from Drop to Quest per Blizzard catalog.
- Promotion false-positive collection: items with Promotion as alt source (e.g. Cuddly
  Grrgles) now use strict quantity/placed check instead of firstAcquisitionBonus.
- Endeavor filter: fixed crash when VendorDB item entry has a quest ID instead of a
  costs table in field 5.

## [2.16.0] - 2026-02-26 (February 2026)

### Added
- Materials List: standalone floating window for crafting queue reagents, toggled
  from the title bar. Shows direct or raw materials, tracked reagents, estimated
  cost, AH search integration, and persists position/size across sessions.
- Shopping List: vertical resize grip -- drag the bottom edge to make the panel
  taller (height persists across sessions).
- Shopping List: collapsible zone and wish list headers -- click zone/wish list
  headers to collapse or expand their sections.
- Shopping List: shift-click non-crafted wish list items to navigate to the
  Acquire tab By Item view with that item selected (crafted items still add to
  crafting queue as before).
- Styles Tab: new "Kafa Shop" themed style template for coffee-house builds.

### Fixed
- Styles Tab: fixed 5 style templates (Rustic Tavern, Cozy Cottage, Feast Hall,
  Workshop, Sacred Shrine) showing 0/0 items due to multi-facet query scoring.
  Secondary query facets moved to boost where appropriate.
- Styles Tab: subcategory item counts now match card totals -- all 22 decor
  categories are covered by subcategory queries (no items lost to uncategorized).
- Styles Tab: Alliance and Horde faction styles now correctly populate (lowered
  minScore to accommodate proportional culture matching).
- Materials List: fixed Auctionator MultiSearch error when auction house is not
  open -- shift-click now checks AH state before calling the API.
- Materials List: fixed "Tracked Reagents" header and separator duplicating on
  each panel refresh (leaked textures/fontstrings now cached and reused).

## [2.15.1] - 2026-02-26 (February 2026)

### Added
- Config: Font Size +/- buttons to adjust all addon text size (-4 to +4 offset).

### Changed
- Crafting queue: left-click now opens the recipe in the profession window instead
  of removing items. Shift+left-click removes one (prevents accidental removal).
- Shopping List: world quest items now show as "Q" (quest) badge instead of "WQ".

### Fixed
- ReagentsDB: Legion Inscription pigments had wrong names -- itemID 129032 was
  labeled "Yseralline Seeds" (should be Roseate Pigment) and 129034 was labeled
  "Felwort" (should be Sallow Pigment). This caused wrong material names, wrong
  tooltips, and missing pigments in the Required Materials panel.
- ReagentsDB: Ghost Iron Bar was truncated to "Ghost Iron", causing Auctionator
  exact-search failures.
- ReagentsDB: 18 Essence/Eternal/Primal reagents had descriptive suffixes
  (e.g. "Eternal Life (drops from nature elementals)") baked into the item name,
  breaking AH searches and display text. Names now match in-game item names.
- Materials panel and Auctionator list now use WoW API item names instead of
  ReagentsDB names for display and search, preventing mismatches from data errors.
- Shopping List import: non-vendor items (drops, quests, crafted) now correctly
  land in the Wish List instead of creating "Unknown" vendor sections.

## [2.15.0] - 2026-02-25 (February 2026)

### Added
- Tab bar: all tabs now use Blizzard atlas icons with hover/active state changes,
  replacing the old texture-based icons. Each tab has a themed atlas matching its
  purpose (housing icon for Acquire, spellbook for Recipes, wax seal for Styles, etc).
- Export/Import dialog: wood frame border overlay matching the main window style.
- Export dialog factory (`UIHelpers.CreateExportDialog`) for consistent themed dialogs
  across all export windows.

### Changed
- ReagentsDB migrated to v3 table format: entries now store item names inline
  (`{"Source", "Name"}`) instead of in comments, enabling O(1) name lookups.
- Item name resolution (materials panel, tooltips, Auctionator export) now checks
  ReagentsDB and ProfessionsDB locally before falling back to WoW API cache.
- Tab bar: removed backdrop borders from all tab buttons for a cleaner look.
- Shopping List: export/import dialog titles now read "Export Shopping List" and
  "Import Shopping List" instead of generic titles.
- Shopping List: import dialog auto-closes after successful import with chat
  confirmation message.

### Fixed
- Lumber Tracker: pinned widget now detects zone changes and refreshes lumber type
  automatically instead of staying frozen on the previous zone's lumber.
- Lumber Tracker: pinned widget no longer shows stale data on login -- the 3-second
  inventory sync now forces a full re-render.
- Lumber Tracker: elapsed time and per-hour rate now tick every second during active
  farming sessions (was only updating on lumber collection).
- Lumber Radar: E and W cardinal labels were swapped on the compass display.
- Removed redundant focus widget (~155 lines) -- the pinned widget's collapse mode
  already handles single-row display during farming sessions.
- Lumber Tracker: coordinate saves now go through Store (Dispatch) so the radar
  sees freshly gathered nodes immediately instead of after reload.
- Lumber Tracker: raw materials calculation now iterates reagents consistently with
  direct materials (pairs vs ipairs), preventing silently skipped reagents.
- Lumber Radar: removed debug global leak (`_G.HDG_LumberHUD`).
- Removed ~120 lines of dead code: duplicate `GetCachedLumberData`, orphaned
  `CreateProgressBar`, unreachable embedded `Refresh()`, unused `GetFrame()`,
  duplicate progress color function.
- VendorDB: Added missing currency costs (Wowhead-verified) for 43+ vendor items across
  Order Resources (c:1220), War Resources (c:1560), Dragon Isles Supplies (c:2003),
  and Resonance Crystals (c:2815). Corrected gold prices for affected items.
- Adamantite Bar and other legacy reagents no longer show as "Item #XXXXX (unknown)"
  in materials panel -- PowerCrafting.GetItemName now checks ReagentsDB and ProfessionsDB.
- Sundries Merchant (Suramar): corrected prices from gold to Ancient Mana currency
  (currency 1155) with proper Nightfallen reputation standing requirements.
- Removed ~9 redundant C_Item.RequestLoadItemData / GetItemInfo API calls in RecipesTab,
  GoblinTab, and PowerCrafting where local DB data was already available.
- Removed dead RequestItemInfo function and unused ITEM_DATA_LOAD_RESULT handler from
  GoblinTab.

## [2.14.0] - 2026-02-24 (February 2026)

### Added
- Race-gated vendors: vendors restricted by race (e.g. Dark Iron Dwarf, Dwarf/Gnome)
  now show a "Race:" line with headshot icons and colored text (green if met, yellow
  if not). Item rows display a gate icon for race-locked vendors.
- Built-in vendor notes: VendorDB entries can include a `note` field with directions
  or tips. Shown in dim text when no user note is set; user notes still take priority.
- Plugger Spazzring: added Mole Machine directions as built-in vendor note.
- Shopping List: "Link" button on attribution banner to copy the source URL of
  imported lists.
- Shopping List: Race badge shown on items from race-gated vendors (alongside
  existing Rep/Quest/Achieve badges).
- Shopping List & Snapshot export: "Use Decor IDs" checkbox converts itemIDs to
  decorIDs for external sharing. Adds `idtype=decor` header.
- Import auto-detects decorID strings (ID < 100,000 or `idtype=decor` header) and
  resolves them to itemIDs via HDG_AllDecorDB reverse lookup.

### Fixed
- Plugger Spazzring: corrected zone (Searing Gorge), mapID (BRD entrance), and coords.
- San Redscale: corrected mapID from continent (870) to zone (371, The Jade Forest).
- Innkeeper Belm: marked as Dwarf/Gnome race-gated vendor.
- Shopping List: Bottom action buttons inset to clear wood frame corner decorations.

### Changed
- Snapshot export now uses unified `HDGVL:1:` format with `source=snapshot` header
  instead of legacy `HDG:2:` -- snapshots get author/date/desc/cost metadata for free.
- Snapshot export no longer emits `cost` header field; import no longer reads
  `totalPlacementCost`.

### Removed
- Legacy `HDG:2:` snapshot format (import and export).

## [2.13.0] - 2026-02-23 (February 2026)

### Added
- Shopping List: Multiple named lists -- create, rename, delete, and switch
  between separate shopping lists via the new list selector bar.
- Shopping List: Complete visual redesign -- housing wood frame border, dark
  Solarized panels, and bottom action bar matching the main HDG window style.
- Shopping List: Attribution banner shown when a list was imported from an
  external source.
- Shopping List: Import can now create a new list instead of merging into the
  current one (checkbox in import dialog).
- Shopping List: Empty state now shows a centered icon with helper text.
- Shopping List: Export/import now includes item quantities (backward compatible
  with old strings that omit qty).
- Shopping List: List selector dropdown with expand/collapse arrow indicator
  and larger + / gear buttons for better usability.

### Changed
- Shopping List: Removed Mats mode tab (materials already shown in the lumber
  tracker pinned widget). Shopping list is now a single flat view with no mode
  selector bar.
- Shopping List: Panel widened from 320px to 380px for better readability.
- Shopping List: Export and Import buttons moved to bottom action bar alongside
  Map All and Clear.
- Shopping List: Existing single-list data automatically migrates to the new
  multi-list format on first load.
- Shopping List: Extracted zone mode to HDG_ZoneMode.lua (~470 lines), reducing
  VendorShoppingList from 2515 to ~2113 lines with flat render functions.
- Lumber Tracker: Simplified CheckLumberChanges from 6-level nesting to 3-level
  by extracting helpers (ApplyAutoShowBehavior, TriggerLumberQuote,
  TriggerCollectionAnimation, RefreshVisibleWidget, SPEAKER_COLORS table).
- Lumber Tracker: DRYed reagent accumulator pattern with EnsureLumberEntry,
  EnsureReagentEntry, and AccumulateDirectMaterials shared helpers.
- Lumber Tracker: Split 325-line RefreshPinned monolith into orchestrator +
  RefreshPinnedLumberRows, RefreshPinnedMaterials, RefreshPinnedFooter.

### Fixed
- Shopping List: Gold and currency cost totals now correctly multiply by item
  quantity (previously showed unit price regardless of qty).
- Shopping List: Import capped at 500 entries to prevent freeze from oversized
  payloads.
- Shopping List: Skips async item load when icon/name already cached, reducing
  redundant ItemMixin allocations on every refresh.
- Shopping List: Fixed stale closure in list selector popup hover highlight.
- Lumber Tracker: Fixed pinned widget freeze where elapsed timer and per-hour
  rate stopped updating between collections (snapshot now includes farming
  session state + 1-second ticker keeps display live during active farming).
- Shopping List: Import EditBox now accepts paste (was silently rejecting due to
  missing EnableKeyboard/EnableMouse).
- Shopping List: Removed 255-character EditBox limit that truncated large lists.
- Shopping List: Export now includes wish list items (items without a vendor).
- Zone Scanner: Extracted to standalone lightweight popup (no longer part of
  shopping list). Shows vendor list with expand/collapse, Map All and Open
  List buttons, and gear icon for scanner settings.
- Zone Scanner: No longer shows unreleased items or "Loading..." flash;
  item cache is pre-warmed before the popup appears.
- Zone Scanner: Now fires on /reload (not just zone changes).
- Zone Scanner: Brightened all text and increased font sizes for better
  readability. Vendor item count now inline with name to avoid coord overlap.

## [2.12.0] - 2026-02-23 (February 2026)

### Added
- Lumber Tracker: Pinned tracker now shows all lumber rows during farming sessions,
  not just the active one. Active row stays expanded (62px) with session stats while
  other rows display compact (18px) with have/need counts. New collapse/expand button
  in the header toggles between full view and single-row focus. Preference persists
  across farming sessions.
- Lumber Tracker: Active farming row now shows achievement progress (e.g., "47/250")
  in the bottom-right corner when the lumber achievement isn't yet earned.

### Fixed
- Localization: Comprehensive expansion name alias audit across all 10 supported
  languages. Added missing ptBR aliases (Clássico, Terralém, Nortúndria, Pandária,
  Ilhas do Dragão, Terras Sombrias), added missing Italian Cataclisma variant.
  Fixes "Unrecognized expansion name" chat spam for non-English clients.

### Changed
- Lumber Tracker: Materials bag icon states swapped -- icon now appears bright/active
  when materials panel is hidden (click to show) and dim when already showing, matching
  conventional button affordance expectations.
- Acquisition Tab: Item row highlights now scoped by vendor -- selecting an item under
  one vendor no longer highlights the same item under other vendors.
- Acquisition Tab: Vendor detail panel now shows the correct vendor when clicking items,
  instead of defaulting to the first vendor alphabetically.

## [2.11.0] - 2026-02-22 (February 2026)

### Added
- Styles Tab: "Save Placed Decor" snapshot feature -- scans all placed decor
  (account-wide across all houses/plots) and saves a snapshot to the Styles tab.
  Snapshots appear in a new "Snapshots" category with placed count badges per item.
  Gallery view sorted by placed count. Supports export/import via HDG:2: encoded
  strings for sharing between players. Note: Blizzard restricts per-house placement
  data (GetAllPlacedDecor), so snapshots reflect account-wide placed totals.
- Localization: Split monolithic localization file into per-locale files (VN pattern).
  11 locale files under Localization/ folder with layout policy -- short labels
  (column headers, compact buttons) stay English to prevent layout overflow.
- Localization: Phase 1 wiring -- Acquisition, Styles, Recipes, and Config tabs
  now use L[] references for panel titles, button labels, status messages, and
  print feedback (~70 strings wired).
- Localization: Phase 2 wiring -- Goblin, Alts, Data, Trainers, and Decor Preview
  tabs now use L[] references for panel titles, print messages, status text,
  info labels, and error messages (~103 strings wired).
- Localization: Config tab high-priority strings wired -- Interface, Lumber Radar,
  Quotes, and Advanced card checkboxes/hints, waypoint dropdown options, and
  debug toggle chat messages (~35 CFG_* keys).
- Power Crafting: Queue expand now shows topologically-sorted craft order (leaf-first)
  instead of flat subsidiary list. Each step numbered, colored green if known or
  dim if unknown. Tooltips show profession, expansion, reagents, and "Known by" info.
- Power Crafting: Raw Materials intermediates section now shows known/unknown status
  per item with "(unknown)" suffix and "Known by" tooltip line.
- Power Crafting: Implemented CanPlayerCraft(itemID) -- checks if player knows the
  recipe for a given intermediate item via profession spell lookup.

### Changed
- Style Creator: Scoring engine rewritten with specificity-weighted matching.
  Partial chip matches are now weighted by how specific an item is to the queried
  facet -- specialist items (tagged for 1-2 values) score higher than generalist
  items (tagged for 8+ values), preventing generic structural pieces from
  dominating the Accent tier.
- Style Creator: Tier assignment uses semantic logic -- full facet match or
  strong partial (>50%) for Accent, negative score for Clashing, instead of
  fixed score thresholds.
- Style Creator: Mismatch penalty -- items with a different value for a queried
  facet are penalized toward Clashing instead of scoring as Versatile.

### Fixed
- DecorDB: Added missing Long Valdrakken Storage Crate (Dragon Isles Inscription).
- AllDecorDB: Fixed mislabeled entry -- itemID 253497 was "Rootbound Vat/Crafted"
  but is actually "Embroidered Sunfury Chair/Vendor". Filled in missing name/source
  for real Rootbound Vat (itemID 253506).
- Localization: Locale override setting now persists across /reload (was writing
  to transient memory instead of Store).
- Localization: Language dropdown items now have consistent text color on first
  display (was showing mixed white/gold before hover).
- Localization: "Language" card header and Auto locale option now use L[] refs.
- Localization: Phase 3 -- Profession filter buttons and "Uncollected" checkbox
  kept English per layout policy. Wired remaining visible strings: "Style" tab,
  "Professions" header, "Shopping List" button, "Est. Cost:" label, "Not Known"
  queue header, "(you)" marker, "Known by:" tooltip. Added TAB_STYLES,
  TAB_ACQUIRE, RECIPE_PROFESSIONS, RECIPE_EST_COST to all 10 locale files.
- Style Creator: Clicking a chip no longer resets the chip scroll position to top.
- Style Creator: Selected chips stay at top of list in stable alphabetical order
  instead of re-sorting on every toggle.

## [2.10.0] - 2026-02-21 (February 2026)
### Changed
- Style Creator: Redesigned as 4-column layout (Category | Chips | Pick List
  | Basket) replacing the old vertical stack. Category facets shown as vertical
  button list with active-chip badges. Tag chips scroll vertically with arrow
  navigation. Pick list uses 86px cells in a 4-column grid with tier filter
  strip. New basket column shows selected items with icons, names, remove
  buttons, and running placement cost total. Info bar displays item name, cost,
  and decor notes on hover. Score normalization makes tier classification
  subtractive -- each additional facet narrows results instead of inflating them.

### Added
- Themes: New "Colorblind Safe" theme with CVD-friendly palette (blue/teal/amber/pink
  instead of green/red). All semantic colors remain distinguishable across
  deuteranopia, protanopia, and tritanopia. Thanks to BaronKarza for the suggestion
  and testing.
- Themes: Standardized font sizes across all 13 themes for consistent text rendering.
- Alts Tab: Recipe completion pips are now theme-aware (use themed success/error
  colors instead of hardcoded green/red).
- Lumber Tracker: Unlearned lumber asterisks now display in red instead of dim
  gray for better visibility; green asterisks remain for unlocked lumber.
  Thanks to Boggle for the suggestion.
- Vendor Data: Added promo items to Gabbi (Orgrimmar) and Tuuran (Stormwind):
  Naturally Elegant Doormat, Sanctuary's Horadric Cube, Cuddly Green Grrgle.
  Updated Miniature Replica Dark Portal price to 1500g.

### Fixed
- Vendor Shopping List: Fixed crash when mapping waypoints for wish-list items
  that have no associated vendor (nil npcID guard).
- Vendor Shopping List: Fixed export serialization skipping entries without
  vendor data instead of concatenating nil.

## [2.9.0] - 2026-02-20 (February 2026)
### Added
- Data Tab: Housing Achievements section showing progress for all 30 housing
  achievements across three groups (11 Decor Collection, 7 Community Coupons,
  12 Lumber Harvesting). Three-tone progress bars use Blizzard skills bar
  textures: green base for completed milestones, gray fill for current progress,
  black for remaining. Groups auto-collapse when all achievements in the group
  are complete; manually collapsible at any time. Section live-refreshes on
  ACHIEVEMENT_EARNED. Achievement UI extracted into standalone
  HDG_AchievementSection.lua module. Tooltips show full achievement name and
  description.
- Fixed coupon achievement thresholds (corrected to 250/2000, not 100/2500).
- Cart Buttons: New atlas-based [+][-] cart buttons (128-RedButton-Cart-Add/Minus)
  with full Pressed/Highlight states. Add increments qty, Remove decrements.
  Remove button only visible when item is on the list.
  - Preview Tab info panel: cart buttons replace old text-only "Add to List" button
  - Acquisition Tab detail panel: cart buttons in bottom-right of item info area
    with live "N in cart" counter beneath
  - Shopping List: remove button upgraded from red "x" text to cart-minus atlas
- UI Polish: Replaced all text-based collapse/expand indicators across tabs with
  Blizzard common-button-collapseExpand atlas buttons (up/down with pressed/hover
  states). Affected areas:
  - Recipes Tab: queue row arrows, material category headers, per-recipe headers,
    and intermediates section headers
  - Acquisition Tab (By Vendor): vendor group header expand/collapse arrows
  - Alts Tab: section expand/collapse arrows
  - Trainers Tab: profession section expand/collapse arrows
  - Data Tab: achievement group expand/collapse arrows
  - Shopping List (List and Zone tabs): vendor row expand/collapse arrows
- Config Tab: Sliders reskinned with common-slider-thumb and common-slider-track
  atlas textures for a native Blizzard look
- Alts Tab: Added recipe completion pips to skill cells - small colored indicators
  show recipe learning status at a glance (green = all learned, orange = missing
  recipes). Recipe details also merged into skill cell tooltips. Legend updated
  with pip explanations.
- Shopping List: New "Mats" tab replaces "Style" tab - shows all crafting materials
  needed for items on your shopping list with have/needed counts, colored by
  completion status. Direct/Raw toggle switches between direct reagents and fully
  decomposed raw materials. Click rows to search the Auction House.
- Lumber Tracker: Materials header tooltip now points to Shopping List > Mats tab
- Lumber Tracker: Mounted harvesting achievement progress shown on each lumber row
  (green asterisk when unlocked, dim progress counter when in-progress) and in row
  tooltips with detailed progress or "Unlocked!" status
- Lumber Tracker: Achievement badge (X/12) in pinned widget header showing
  mounted-harvesting completion count at a glance (dim when incomplete, green
  when all 12 complete).
- Acquisition Tab: Achievement decor collected count appended to status bar when
  Achievement source filter is active.
- ExpansionData: Achievement data layer with IsHousingAchievement,
  GetDecorAchievementProgress, GetCouponAchievementProgress, and
  GetLumberAchievementSummary functions.

### Changed
- Data Tab: Reduced crafting history container height (150 to 100px) and farming
  history container height (250 to 110px) to reclaim vertical space for the new
  achievements section.
- Internal: Renamed crafting queue identifiers from "shoppingList" to "craftingQueue"
  across the entire codebase to avoid confusion with the Vendor Shopping List widget.
  Includes SavedVariables migration (existing queue items preserved automatically).

### Removed
- Shopping List: Removed Style Shopping List feature (style mode, style export/import,
  StylesTab add/remove integration). Style tracking is replaced by the Mats tab.

## [2.8.7] - 2026-02-19 (February 2026)
### Fixed
- LumberHUD: Reverted OnLocationAdded raise-to-front logic; restores original
  single-condition auto-show behaviour

## [2.8.6] - 2026-02-18 (February 2026)
### Changed
- Goblin Tab: "Only Known" / "Known by Alts" filters are now mutually exclusive
  (selecting one automatically deselects the other)
- Goblin Tab: Renamed filter checkboxes to "My Recipes" and "All Known Recipes"
  for clarity
- Added missing localization key CHECK_KNOWN_BY_ALTS (was always using hardcoded
  English fallback)

## [2.8.5] - 2026-02-18 (February 2026)
### Fixed
- Engineering Classic/Cataclysm Horde trainer Roxxik npcID corrected (3494 -> 11017)
- Alchemy MoP trainer Ni Gentlepaw npcID corrected (64071 -> 56777)
- Engineering WoD Horde trainer corrected to Nik Steelrings (npcID 87552, updated position)
- Alchemy WoD Horde trainer corrected to Joshua Alvarez (npcID 87542)
- Engineering BfA Horde trainer Shuga Blastcaps npcID corrected (122710 -> 131840)
- Alchemy BfA Horde trainer Clever Kumali position corrected (42.2, 38.0)
- Alchemy Dragonflight trainer Conflago npcID corrected (185548 -> 185545)
- Engineering Shadowlands trainer Machinist Au'gur position corrected (38.0, 44.7)
- Engineering Dragonflight trainer corrected to Clinkyclick Shatterboom (npcID 185548)
- Engineering TWW trainer Thermalseer Arhdas npcID corrected (217139 -> 219099)
- Leatherworking Classic/Cataclysm Horde trainer Karolek npcID corrected (7871 -> 3365)
- Leatherworking WoD Horde trainer corrected to Garm Gladestride (npcID 87549, updated position)
- Leatherworking Dragonflight trainer Hideshaper Koruz npcID corrected (185543 -> 185551)
- Leatherworking TWW trainer Marbb npcID corrected (217136 -> 219080)
- Blacksmithing WoD Horde trainer corrected to Nonn Threeratchet (npcID 87550)
- Blacksmithing BfA Horde trainer Forgemaster Zak'aal npcID corrected (127114 -> 127112)
- Blacksmithing Dragonflight trainer Metalshaper Kuroko npcID corrected (185542 -> 185546)
- Blacksmithing TWW trainer Darean npcID corrected (217138 -> 223644)

### Internal
- Replace O(n) HDG_DecorDB linear scan with lazy reverse index for profession lookup
- Eliminate double profession iteration in RefreshProfessionTabs
- Move OnEnter/OnLeave scripts to one-time init in EnsureProfessionTabFrames
- Replace 6 inline SetBackdrop blocks with ApplyBackdrop
- Simplify UpdateCraftableToggle, UpdateToggleAppearance, UpdateSortModeAppearance toggle helpers
- Remove dead code: ClearScrollContent wrapper, redundant GetScheme calls, C_Timer guard
- Refactor RecipesTab: extract business logic to HDG_Data and HDG_PowerCrafting modules
- Deduplicate tier bucketing, cost display, and GetScheme calls
- Pool recipe row frames and cache profession tab buttons to reduce frame churn
- Add per-refresh CanCraftRecipe cache for performance
- Add shared CreatePanelHeader() and CreateScrollPane() helpers, replacing 3 duplicate header bar blocks and 3 duplicate scroll frame blocks
- Hoist 7 redundant GetScheme() calls in CreateRecipePanel, CreateShoppingPanel, and CreateMaterialsPanel
- Extract RenderMaterialCategory() and RenderIntermediatesSection() from RefreshMaterials (471 -> 88 lines)
- Extract CreateCraftDialog() from ShowCraftConfirmation (238 -> 85 lines)
- Extract GroupShoppingByCharacter() and RenderShoppingItem() from RefreshShoppingList (434 -> 60 lines)
- RecipesTab reduced from 4,384 to 3,682 lines (-16%)

## [2.8.4] - 2026-02-17 (February 2026)
### Fixed
- **Preview tab: wrong item shown on click** — Clicking an item in the Decor
  Preview scroll list showed the wrong item's 3D model and info. Row pool
  recycling (LIFO) during Refresh() caused stale frame data references. Fixed
  by capturing item data before pool refresh

## [2.8.3] - 2026-02-16 (February 2026)
### Added
- **Shopping List button repositioned**: Moved Shopping List button from Acquire tab
  header to main title bar for global access across all tabs
- **Shopping/Wish List: all item types supported**: Shopping List now accepts all
  item types as a "Wish List" (crafted, drops, promo, shop items, etc.)
- **Shopping List: Wish List support for non-vendor items**: Shift-click now
  works on ALL items in the Acquisition tab and gallery view, not just vendor
  items. Items without an NPC vendor (crafted, AH-only, drops, etc.) are added
  to a "Wish List" section. Wish list allows duplicate items (e.g., multiple
  copies of the same decor)
- **Decor Preview tab: shift-click to Shopping List**: Added shift-click to add
  items from the Preview tab (priority: vendor list, crafting queue, wish list).
  Updated tooltip text to say "Shopping List" instead of "Crafting Queue"
- **Preview tab: Shift-Click to Shopping List**: Shift-Click in Preview tab now
  adds items directly to the Shopping/Wish List
- **Shopping List quantity tracking**: Shopping list items now track quantity with
  counter display (e.g., "3x Item Name"). Adding duplicate vendor items also
  increments the counter instead of creating a new entry
- **Style Editor: grid cell interactivity**: Left-click grid cells to lock/unlock
  items (pinned across tag refreshes). Right-click to remove items from preview.
  Shift-click to add items to vendor shopping list. Locked/removed items auto-save
  to custom style definition. Lock icon (bag lock atlas) shown on pinned cells
- **Shopping List: Shift-Click AH search**: Shift-click craftable items in the
  vendor or style shopping lists to search the Auction House (when AH is open)

### Changed
- **Config tab Appearance card**: Scale, Font, and Waypoints controls now use a
  horizontal layout instead of vertical stacking
- **Preview tab itemID resolution**: Now uses Blizzard catalog API directly
  instead of reverse lookup for more reliable item resolution

### Fixed
- **Dropdown persistence on tab switch**: Fixed dropdowns persisting on screen
  when switching tabs (tab bar clicks now route through SwitchTab)
- **Alts tab stale professions**: Profession cache now fully replaces on each
  scan, so dropped professions are properly removed instead of persisting
- **Nil guard on C_HousingCatalog fallback path**: Added API existence check
  on decorID-based collection lookup to prevent crash if API unavailable
- **GetScheme nil safety**: All UIHelpers color getters now guard against nil
  scheme during early initialization (GetBorderColor, GetActiveColor, etc.)
- **itemLoadTimes memory cleanup**: Unreleased item entries now pruned from
  tracking table to prevent unbounded growth
- **SavedVariables growth caps**: Auto-prune userNotes (500), vendorNotes (200),
  farmingHistory (100), characters (50) on load to prevent unbounded SV bloat
- **Combat taint guard**: CloseTradeSkill/HideUIPanel in craft-and-close timer
  now checks InCombatLockdown() to prevent "Interface action failed" errors
- **FormatWithCommas dedup**: Consolidated duplicate definitions from
  VendorResolver and PriceIntegration into single UIHelpers canonical function
- **GetProgressBarColor dedup**: Removed 3 duplicate local wrappers (HDG_UI,
  LumberTracker, RecipesTab), all callers now use UIHelpers.GetProgressBarColor
- **Theme color code helper dedup**: Removed ~60 local C_* wrapper functions
  across 14 files, all call sites now use HDG.Theme.C_*() directly
- **Row pool standardization**: Migrated 10 hand-rolled row pools across 6 files
  to shared UIHelpers.CreateRowPool() pattern, eliminating ~130 lines of boilerplate
- **SavedVariables validation**: Type-safe MergeTable rejects type-mismatched values,
  bounds clamping on config (scale, fontScale, bgOpacity, chattiness), activeTab
  whitelist, array sanitization for shopping/style/vendor/crafting/farming lists
- **Tab lifecycle standardization**: All 9 tabs now have Show/Hide methods;
  UpdateTabs delegates to module methods instead of reaching into frame internals
- Tome of Reliquary Insights now correctly listed under Legion (Return to Karazhan) instead of TBC Karazhan
- **Localization (zhCN)**: Added missing Shadowlands alias for Simplified Chinese clients

## [2.8.2] - 2026-02-15
### Added
- **Alts tab: collapsible unscanned section**: Characters without scanned skill
  data are grouped into a collapsible "Unscanned Characters" section at the
  bottom, collapsed by default to reduce clutter
- **Style Creator: click-to-shop**: Left-click grid items to add to shopping
  list (stacks multiples), right-click to remove, shift-click to select/inspect
- **Style Creator: smart defaults**: New styles auto-name as "CharName Style N",
  description auto-populates from Must Have tags as you select them
- **Style Creator: collected-only preview**: Editor preview grid now shows only
  collected items; unreleased items hidden. Note displayed next to title
- **Style tab: button tinting**: Tag buttons now show subtle green/yellow/red
  tint for Must Have/Prefer/Avoid states instead of small dot indicators
- **Style detail: Export button**: Custom styles now show an Export button in
  the detail/browse view for easy sharing
- **Style Editor: Freeform category**: Added 'Freeform' category tab that uses
  Blizzard's native housing catalog tags directly, plus 'Other' catch-all for
  untagged items. Tags sorted by expansion/race/size/style with pretty names
- **Style Editor: simplified interaction**: Tags now use a clean on/off toggle
  instead of the 3-state Must Have/Prefer/Avoid cycle. Facet tab row shows
  green tint when tags are selected. Clear All button resets all selections
- **Style Editor: onboarding help**: Preview area shows guidance text when no
  tags are selected, explaining how to build a style. Disappears on first click
- **Style Editor: expanded preview**: Preview gallery increased from 4 rows to
  20 rows (scrollable) to show more matching items
- **Browse by Style**: Beta label added to header
- **Squirrel zone alerts**: Two new squirrel talking head options in Shopping
  List config -- one for uncollected vendor items in the zone, one for shopping
  list items in the zone. 40 squirrel-persona quotes with chat output
- **Minimap right-click menu**: Right-click minimap button now shows a context
  menu with Lumber Tracker and Shopping List options (also applies to addon
  compartment and LDB launcher)
- **FacetDB subject enrichment**: All 1665 items classified into 173 subject
  terms (chair, fountain, statue, etc.) and 8 structural roles via keyword
  matching pipeline. Subject and structural_role facets now indexed by style
  engine for style matching queries

### Fixed
- **Goblin tab profit accuracy**: Vendor-exclusive reagent costs (Rot Resistant
  Cauldron, Crystalforged Cauldron, etc.) now included in profit calculations.
  Price lookup falls back to ReagentsDB vendor prices when TSM/Auctionator
  have no data for vendor-only items
- **ReagentsDB vendor tagging**: 83 reagents retagged from "Gathering" to
  "Vendor:price" with correct copper amounts from Blizzard DB2 data (threads,
  dyes, fluxes, vials, cauldrons, and other vendor-sold crafting materials)
- **TomTom waypoint clearing**: Clear Pins button now correctly removes
  TomTom waypoints (fixed hash table iteration for newer TomTom versions)
- **Map crash on invalid zones**: Fixed error when mapping vendors in zones
  not yet recognized by the client (mapID validation in ZonePctToMap)
- **Housing Theme readability**: Changed recipe known text color from Solarized
  Orange to Blizzard Gold for better contrast and readability
- **Recipes tab price data**: Fixed "No price data" showing in By Recipe sort
  mode when TSM/Auctionator is installed and has pricing data
- **Vendor DB renown requirements**: Fixed 5 Dragonscale Expedition items using
  old standing IDs instead of correct renown ranks
- **Vendor DB reputation standings**: Fixed off-by-1 standing requirements for
  Blackwater Cartel, Bilgewater Cartel, and Darkfuse Solutions items
- **Trainer DB NPC fixes**: Fixed Inscription trainer Jo'mah using wrong NPC ID
  (was showing Thoth); fixed Shattrath Inscription trainer (was Nemiha/wrong ID,
  now Recorder Lidio)
- **Trainer DB coordinates**: Fixed Tailoring trainer Magar coordinates in
  Orgrimmar
- **Vendor DB renown fix**: Fixed Reliquary Telescope renown requirement
  (was 6, now 24)

## [2.8.1] - 2026-02-15
### Added
- **Native Waypoint Support**: TomTom is no longer required for waypoints
  - Blizzard's built-in waypoint + super-tracking used by default
  - TomTom still supported and preferred when installed (configurable)
  - New "Waypoint System" dropdown in Settings: Auto / Blizzard Native / TomTom Only
  - Custom map pins for multi-vendor routes via MapCanvas DataProvider
  - Acquisition tab "Navigate" button sets waypoint + super-tracks destination
  - Vendor Shopping List and Trainers tab use the same unified system
- **LibDataBroker support**: HDG now registers as an LDB launcher -- appears
  automatically in Bazooka, Titan Panel, ChocolateBar, and other LDB display addons
  (no embedded libraries; uses LDB if already loaded by another addon)
- **`/hdg reset` command**: Emergency window reset -- clears saved position and
  forces the main window to screen center (for users whose window moved off-screen)
- **Vendor map pin atlas**: Map pins for vendor waypoints now use the
  housing-map-plot-occupied atlas for better visibility
- **Travel hints**: When navigating to vendors in other expansions, shows
  portal/travel directions in chat to help you get there

### Fixed
- **Native waypoint map pins**: Fixed crash caused by incorrect
  CreateUnsecuredRegionPoolInstance signature

## [2.8.0] - 2026-02-14
### Added
- **Custom Styles**: Create your own style definitions with hand-picked facet tags
  - Style Creator editor: pick Room, Mood, Material, Color, Culture and more
  - 4-state tag cycle: Must Have (green), Prefer (yellow), Avoid (red), Off
  - Live preview shows item counts and sample icons as you build
  - Icon picker (20 presets) and color picker (12 presets)
  - Up to 50 custom styles, persisted across sessions
- **Import/Export**: Share styles as encoded strings (HDG:1:... format)
  - Export from right-click context menu or Style Creator
  - Import via button on Styles landing page
- **Context Menu**: Right-click any style card for Duplicate/Edit/Delete/Export
- **My Styles** tier on landing page with "+ New Style" card
- "Style Creator" and "Import" buttons on Styles tab header
- **Style Shopping List**: Track uncollected items per style in the Shopping List widget
  - New "Style" tab in the Shopping List alongside List, Zone, Config
  - Items grouped by style with expand/collapse headers and collected/total counts
  - "Add All to Style List" button in style detail view header
  - Shift-Click items in gallery or list view to add individually
  - Source badge (Vendor, Craft, Q, etc) on each item row
  - Collected items highlighted in green; remove button per item
  - Persists across sessions via SavedVariables

### Fixed
- **Vendor DB**: Alliance "High Tides" Ren (Founder's Point) -- added 23 missing items (37->60)
- **Vendor DB**: Alliance "Len" Splinthoof (Founder's Point) -- added 10 missing items (17->26), removed 1 incorrect
- **Vendor DB**: Alliance "Yen" Malone (Founder's Point) -- replaced incorrect Horde inventory with correct 33 Alliance items
- **Vendor DB**: Horde "High Tides" Ren (Razorwind Shores) -- added 25 missing items, fixed 7 prices (30->53)
- **Vendor DB**: Horde "Yen" Malone (Razorwind Shores) -- added 5 missing Garden Clusters, removed 4 incorrect entries
- **Localization**: Acquire tab vendor NPC names now resolve via WoW API for localized display on non-English clients (previously hardcoded English)
- **Localization**: Added missing expansion aliases for Classic (all non-English clients) so profession skill points display correctly on the Alts tab
- **Localization (zhCN)**: Updated Simplified Chinese translations from community contributor (sgswdzgr) -- improved lumber terminology, addon name handling, added minimap/compartment strings

===============================================================================
Vamoose's Housing Decor Helper - Version 2.7.0 (February 2026)
===============================================================================

TAB BAR
=======
* Replaced 8 custom TGA tab textures with unified icon+text buttons using WoW
  built-in icons. All 9 tabs now fully respond to theme changes.
* Active tab shows accent-colored 2px underline bar and tinted backdrop.
* Config and Data tabs are now compact icon-only buttons with tooltips.
* Hover state brightens inactive tabs using theme panel color.

STYLES TAB (NEW)
================
* V2 Faceted Style System — replaced monolithic keyword/tag-based classification
  with faceted query engine. Each item has up to 19 independent facets (category,
  colors, materials, culture, mood, room, condition, formality, motifs, etc.)
  Styles are now "saved queries" over facets. New HDG_FacetDB.lua (1705 items).
  Room taxonomy expanded from 7 to 20 rooms. All public StyleEngine APIs preserved.
* 14 persona-driven style definitions across 3 tiers:
  - Room Concepts (10): Rustic Tavern, Cozy Cottage, Arcane Study, Feast Hall,
    Workshop, Sacred Shrine, Garden Retreat, War Camp, Seafarer's Haven, Dark Sanctum
  - Themed (2): Witch's Den, Tribal Lodge
  - Faction (2): Alliance, Horde
  Each style has richer descriptions, refined query/boost/anti scoring, and
  fixed vocabulary values (removed invalid condition/color references).
* Card/gallery grid view — toggle between list and 3D card grid using Blizzard's
  native catalog card atlas textures with static ModelScene thumbnails. Cell
  pooling for efficient reuse. Uncollected items show actor desaturation.
* Category switcher tabs (All/Races/Moods/Classes/Expansions/Thematic) on the
  landing page to filter styles by category.
* Mini icon preview strip on each card shows up to 6 item icons from the style's
  signature tier. Collected items saturated, uncollected desaturated at 50% alpha.
* Completion percentage shown in count text (e.g. "59/68 (86%)").
  100% complete styles get a gold border on their card.
* Landing page cards show real collection progress (X / Y collected) with
  accurate progress bar fill based on 1st Order items.
* 3D model preview in detail panel — select an item to see a rotatable, zoomable
  ModelScene preview (drag to rotate, scroll to zoom, right-click to reset).
* Room subcategory filter in detail view: toggle buttons for All, Great Hall,
  Kitchen, Study, Bedroom, Garden, Workshop, and Trophy rooms.
* "Hide Unreleased" filter checkbox (default ON) — hides unreleased/datamined
  items from the item list.
* "Neutral" tier — items with no style relationship now get their own bucket.
  Tier order: 1st Order > 2nd Order > Neutral > Clash.
* Thematic Collections — 6 subcategory-based styles: Outdoors & Garden, Forest
  Retreat, Coastal & Beach, Farmstead, Zen Garden, Training Grounds. Shows
  subcategory buttons instead of harmony tiers, with source-type filter buttons.
* Generic subcategory system — any style definition with a `subcategories` field
  automatically uses subcategory buttons and keyword-based classification.
* Pre-computed thematic assignments from Blizzard dataTagsByID dump — O(1) lookup
  with runtime keyword fallback. Eliminates false positives from short substring
  matches.
* Quantity badge on gallery cells — Blizzard-style owned count at BOTTOMRIGHT.
* Data-mined harmony/clash lists — rebuilt all 42 style relationships from 1,662
  vision-classified item co-occurrences, replacing hand-authored lists.
* List view and detail panel show "+ Vendor" suffix on source labels for items
  with both a primary source and a vendor source.

ACQUISITION TAB
===============
* 3D preview rebuilt as a replica of Blizzard's HousingModelPreview — atlas
  background, item name + collected checkmark overlay, placement cost, storage
  counts, decorative corbels, and ModelSceneControlFrame (zoom/rotate/reset).
  Camera uses native PanningModelSceneMixin instead of custom handlers.
* Vendor "Also sells" gallery now uses Blizzard atlas-card style with quantity
  badges. Shift-click gallery cells to add items to the Shopping List.
* Source text in detail panel now filters out the selected vendor's block, Cost:,
  and Faction: lines to avoid duplicating info shown in the detail header.

GOBLIN TAB
==========
* Auctionator scan UX overhaul: scan status is now a clear state machine with
  distinct visual states for idle, scanning, complete, cooldown, and AH closed.
* Animated "Scanning..." indicator with cycling dots shows scan is in progress.
* Green "Updated!" flash for 3 seconds after scan completes, then shows freshness.
* Price freshness text upgraded to normal font size with color-coded age
  (green <1h, yellow <24h, red >24h, red "No AH data" if never scanned).
* Scan button text now context-aware: "Scan", "Open AH", or "Cooldown".
* Tooltip rewritten per state: explains what scan does when ready, tells you to
  visit an auctioneer when AH is closed, shows Auctionator's cooldown timer.
* 60-second freshness ticker auto-updates the time display without manual refresh.

ALTS TAB
========
* Find Lumber indicator on each character header row (spell icon + status text).
  Shows "Find Lumber known" (green), "Find Lumber not learned" (red), or
  "Log in to check" (dim) for alts not yet cached with the updated addon.
* Uses IsPlayerSpell(1256697) -- data populates as each alt logs in.

IMPROVEMENTS
============
* 3D decor preview extracted into reusable factory (HDG_UIHelpers.CreateDecorPreview).
  Acquisition, Decor Preview, and Styles tabs now share the same Blizzard-style
  atlas preview with PanningModelSceneMixin, ModelSceneControlFrame, and corbels.
* Shared gallery cell factory (HDG_UIHelpers) — Styles and Acquisition tabs share
  a single cell creation + pooling codebase for atlas-card grids.
* Memory chart window (/hdgdebug mem) — 5-minute scrolling area chart showing
  addon memory usage over time, with auto-scaling Y-axis and peak tracking.
* VendorResolver: Fixed reputation standing display — STANDING_NAMES now uses
  Blizzard's 1-based reaction IDs (8=Exalted).

PERFORMANCE
===========
* Fixed memory leak in pinned lumber tracker — row frames now pooled and reused.
* Cached shopping list and profession lumber calculations — only recalculated
  when shopping list or recipes change, not on every bag event.
* Early-exit in RefreshPinned when lumber counts haven't changed.
* Optimized lumber radar render loop — ~4x reduction in GC pressure via reused
  Vector2D, cached coordinates, localized math, numeric for loops.

DATABASE
========
* Added Sanctuary's Horadric Cube (In-Game Shop).
* Updated Beloved Lion Plushie and Beloved Wolf Plushie source to In-Game Shop.
* VendorDB: Added 15 missing vendor sources (10 new vendors: Drac Roughcut,
  Master Smith Burninate, Woodsman Drake, Maurice Essman, Fiona, Willard
  Harrington, Brave Tuho, Maybell Maclure-Stonefield, Hoddruc Bladebender,
  Provisioner Thom; plus items added to Gina Mudclaw, Ellandrieth, Caspian,
  Delphine). Added 6 missing items to Arcanist Peroleth, 7 to Second Chair
  Pawdo, 2 to Ripley Kiefer/Lord Candren, 1 to Sergeant Crowler.
* VendorDB: Fixed wrong coordinates for 17 vendors (Captain Donald Adams,
  Captain Lancy Revshon, Captain Stonehelm, Gabbi, Lonalo, Second Chair Pawdo,
  Stone Guard Nargol, Tuuran, Sage Whiteheart, Silvrath, Tethalash, Unatos,
  Auditor Balwurz x/y swap, Garnett, Chachi the Artiste mapID, Shredz the
  Scrapper, Street Food Vendor). Fixed mapID for Gabbi/Second Chair Pawdo
  (Kalimdor->Orgrimmar) and Gabbun (2272->2214).
* VendorDB: Fixed 12 expansion misclassifications — 11 Undermine/K'aresh
  vendors incorrectly tagged as Midnight (now The War Within), Moon Priestess
  Lasara corrected from TWW to Dragonflight.
* VendorDB: Fixed Lifecaller Tzadrak vendor name (was Caretaker Azkra).
* VendorDB: Fixed costs — Cendvin currency 100->75, Gina Mudclaw 4 items
  rep level 5->8 (Good Friend).
* VendorDB: Removed 3 items vendors no longer sell (Replica Acherus Soul
  Forge from Caydori Brightstar, Replica Tome of Fel Secrets from
  Quartermaster Ozorg, Skyhorn Eagle Kite from Ransa Greyfeather).
* VendorDB: Added Gundargaz Grand Keg (253172) to Chert.
* VendorDB: Fixed costs for BfA War Resources vendors (Provisioner Mukra,
  T'lama, Pearl Barlow, Janey Forrest, MOTHER), removed duplicate vendor
  Dershway the Triggered, removed 7 incorrectly listed Alliance items from
  Sergeant Grimjaw.
* VendorDB: Fixed 6 Legion class hall vendor mapIDs -- Kelsey Steelspark,
  Meridelle Lightspark, Quartermaster Durnolf, Toraan the Revered, Flamesmith
  Lanying, Quartermaster Ozorg all pointed to wrong instance maps.
* VendorDB: Fixed Provisioner Aristta Mysterious Fragments cost (7000->4000).
* VendorDB: Fixed Stacks Topskimmer -- removed non-sold achievement item
  (257353), added Counterfeit Dark Heart (267265) at 15,000 Resonance Crystals.
* VendorDB: Fixed Edwin Harly expansion tag (Cataclysm->Classic, NPC added
  in patch 1.11.1).
* VendorDB: Extended item format with quest gate [6] and achievement gate [7]
  fields. Added RENOWN_FACTIONS lookup table to distinguish renown from
  traditional rep standings (DF + TWW factions).
* VendorDB: Added quest/renown/achievement gates for 15 vendors (88 items):
  Auditor Balwurz (renown + quest), Chert (quest + renown), Stacks Topskimmer
  (renown + quest + achieve), Om'sirik (renown), MOTHER (achieve), Blair Bass
  (quest), Berazus (quest), Ta'sam (quest), Jocenna (7 quest gates + painting
  rep fix), Trader Caerel (8 quest gates), Ellandrieth (3 quest gates),
  Arcanist Peroleth (10 quest/achieve gates), T'lama (14 quest/achieve gates).
* VendorDB: Fixed Garnett -- corrected cost from 10g to Resonance Crystals
  (450-900 RC per item), added quest/achievement gates for all 7 items.
* DecorDB: Fixed Pandaren Stone Post itemID (247729->247728) -- was pointing
  to vendor version instead of crafted version.
* AllDecorDB: Fixed Kotmogu items sourceType to Achievement, fixed Architect's
  Drafting Table to Vendor, fixed 3 Brawler's Guild vendor references.
* TrainersDB: Fixed 15 incorrect NPC IDs across Cooking, Tailoring, Enchanting,
  Alchemy, Engineering. Thanks to Tzunamis for the report!
* Thanks to keeperharvest for the detailed vendor audit!
* Vendor display pipeline: wired quest/achievement gates through all UI layers.
  Acquire tab detail panel shows "Quest: name" and "Achievement: name" lines
  with green/orange met/unmet coloring. Preview tab tooltip shows quest/achieve
  requirements indented under vendor. Acquire row icons reflect combined gate
  status (rep + quest + achieve). Shopping list badge shows "Quest"/"Achieve"
  label where applicable.
* Fixed renown detection -- was using minRep > 8 heuristic which misread low
  renown levels (e.g. Cartels of Undermine renown 5 as "Friendly"). Now uses
  RENOWN_FACTIONS lookup table for correct "Renown N" display and meeting check.

BUG FIXES
=========
* Fixed Alts tab legend colors not matching cell colors — legend now uses
  theme-aware C_Accent/C_Warning/C_Dim instead of hardcoded hex colors.
  Thanks to Gnuclear Gnome for the report!
* Fixed Alts tab crash on expansion #12 (Midnight) — EXPANSION_SLOTS bumped
  from 11 to 12.
* Fixed incorrect vendor coordinates for Om'sirik — corrected to 40.6, 29.0
  in Tazavesh.

===============================================================================
Vamoose's Housing Decor Helper - Version 2.6.4 (February 2026)
===============================================================================

BUG FIXES
=========
* Fixed collection status showing red X for items the player has collected but
  no longer has copies in stock — now uses firstAcquisitionBonus to detect
  appearance unlocks (affects both IsItemCollected and IsDecorCollected)

IMPROVEMENTS
============
* Lumber tracker column headers renamed: "Needed" → "Queue", "In Stock" →
  "Uncollected" for clarity (pinned tracker and Recipes tab)
* Right-click minimap icon now toggles the pinned lumber tracker standalone
* Added "Pin Radar to Tracker" option in Config — anchors radar HUD below the
  lumber tracker so they move together

===============================================================================
Vamoose's Housing Decor Helper - Version 2.6.3 (February 2026)
===============================================================================

DATABASE
========
* Extended unreleased item detection to cover additional Midnight zones:
  Harandar, Arcantina, Voidstorm, Masters' Perch, The Voidspire, The Blinding
  Vale, Voidscar Arena, The Dreamrift, Zul'Aman, Murder Row, Windrunner Spire,
  Nexus-Point Xenas, Magisters' Terrace, Seat of the Triumvirate, Slayer's
  Rise, and Midnight Delves (Shadow Enclave, Collegiate Calamity)
* Marked 392 total unreleased items with future timestamps (up from 274)
* Fixed Alliance/Horde Doormat source — reclassified from vendor to In-Game
  Shop (source type 10) and future-dated
* Hide Unreleased filter now also filters items named "Unreleased" by the
  Blizzard API

===============================================================================
Vamoose's Housing Decor Helper - Version 2.6.2 (February 2026)
===============================================================================

NEW FEATURES
============
* Added "Hide Unreleased" checkbox to Acquisition and Preview tabs — filters
  out datamined items not yet obtainable in-game (on by default)
* Unreleased detection: zero-cost vendor items, items not in AllDecorDB, and
  future-timestamped items (Silvermoon/Eversong revamp, Midnight professions)
* Added /hdgdebug scan command — scans the Blizzard catalog API for items
  missing from AllDecorDB and outputs them in copy-paste DB format

DATABASE
========
* Added 14 new items to AllDecorDB (1704 total items tracked)
* Marked 260 unreleased items with future timestamps (Silvermoon City revamp,
  Eversong Woods revamp, Midnight profession recipes)
* Fixed "Glorious Pendant of Rukhmar" source — now correctly listed as
  Achievement (Secrets of Skettis) instead of Vendor-only
* Fixed vendor price for Duskcaller Erthix item (was 100,000g, corrected to 10g)
* Fixed Velerd (Dornogal) items — Deephaul Crystal and Earthen Contender's
  Target now correctly listed as Honor currency instead of 10g

BUG FIXES
=========
* Fixed debug mode not persisting across sessions — config checkbox saved to
  HDG_DB but the debug guard was reading from HDG_Settings
* Fixed /hdgdebug scan source classification — Lua pattern used invalid +?
  syntax (regex non-greedy), changed to proper greedy + match

===============================================================================
Vamoose's Housing Decor Helper - Version 2.6.1 (February 2026)
===============================================================================

COMPATIBILITY
=============
* Updated for WoW 12.0.1 (Midnight Patch 1)

===============================================================================
Vamoose's Housing Decor Helper - Version 2.6.0 (February 2026)
===============================================================================

NEW FEATURES
============
* NEW: Vendor Shopping List — bookmark vendor items for shopping trips
  - Shift-click items or vendor headers in Acquisition tab to add to list
  - "List" button in Acquisition tab header toggles the shopping list widget
  - Items grouped by zone → vendor → item with gold costs and rep badges
  - Remove individual items (X button) or clear the entire list
  - "Map Waypoints" button drops TomTom waypoints for all listed vendors
  - Click any vendor row to set a single TomTom waypoint
  - List persists across sessions via SavedVariables
* NEW: Zone Scanner — auto-detects vendors with uncollected items in your zone
  - "Zone" tab in the shopping list widget shows current zone vendors
  - Shift-click items/vendors in Zone view to add them to your manual list
  - Optional auto-open on zone change (disabled by default)
  - Optional notification sound on auto-open (disabled by default)
  - Config tab within the widget for zone scanner settings
IMPROVEMENTS
============
* IMPROVED: Dye Studio closes on Escape key press
* IMPROVED: Acquisition tab — "Acquisition Source" shortened to "Source",
  "Unc" spelled out as "Uncollected"
* IMPROVED: UI polish — buttons, tab toggles, checkboxes, and dropdown
  scrollbars now use native WoW atlas textures for a cleaner look

BUG FIXES
=========
* FIXED: Korean, Chinese, and Russian locale users now see proper font rendering
  — non-Latin locales use WoW's built-in locale-appropriate font instead of
  Expressway (which lacks CJK/Cyrillic glyphs)
* FIXED: Dyeable filter in Acquisition tab now works immediately on login
  (persisted cache loads at startup instead of waiting for Dye Studio init)

===============================================================================
Vamoose's Housing Decor Helper - Version 2.5.0 (Released February 2026)
===============================================================================

NEW FEATURES
============
* NEW: User Notes — Attach personal text notes to any decor item
  - Pencil icon + note text in the item header panel (visible for all item types)
  - Click to add/edit via popup editor (up to 200 characters)
  - Notes persist across sessions (account-wide in SavedVariables)
  - [N] badge indicator on item rows in the list view for annotated items
  - "Export Notes" button in Acquisition tab title bar — opens copy-friendly
    text window with all notes, item names, and timestamps
* NEW: Dye Studio — Complete overhaul of the dye browser
  - Rainbow spectrum title bar and "Vamoose's Dye Studio" branding
  - Three browse modes: Category (Blizzard groupings), Color (hue-based),
    and Theme (23 curated palettes like Alliance, Horde, class themes)
  - Custom Palettes — Create, rename, delete, and share your own dye palettes
    with import/export via encoded strings (up to 20 palettes, 20 dyes each)
  - Live Dyeing — "Replace Blizzard UI" checkbox auto-opens Dye Studio when
    editing decor in your house; click dyes for instant in-place preview
  - Dye slot bar shows all slots on the selected decor for quick slot switching
  - Color group classification (RGB→HSV) auto-sorts 62 dyes into 12 hue families
  - Sidebar filter buttons with color-coded swatches for quick navigation
  - Palette detail strip shows all dyes in a custom palette with color swatches
* NEW: Dye Studio button in HDG title bar (rainbow 2x3 swatch grid icon)
  - Hover tooltip shows colorful rainbow bar and feature summary
* NEW: `/hdg dyes` slash command to toggle the Dye Studio

PERFORMANCE
===========
* OPTIMIZED: Acquisition tab filter rebuilds no longer call Blizzard API for
  uncollected items — negative collection results now cached with generation
  counter (eliminates 1,000+ API calls per filter change)
* OPTIMIZED: Search filtering uses pre-lowercased item name cache instead of
  per-item string allocation on every keystroke
* OPTIMIZED: DNT/AUTOGEN items filtered at build time instead of per-filter-pass
* OPTIMIZED: Removed redundant sourceInfo/vendorInfo/vendorItemCost cache tables
  — reads directly from AllDecorDB and VendorDB (faster BuildCaches, less GC)
* OPTIMIZED: Sort comparators hoisted to module level (no closure allocation)
* OPTIMIZED: Theme/scheme cached per refresh batch instead of per-row lookup
* OPTIMIZED: Preview tab dye swatches use pre-computed category ownership cache
  instead of per-dye iteration on every item selection (60-80 calls → 10 lookups)
* OPTIMIZED: Removed dead O(n) ProfessionsDB scan in PowerCrafting item name
  resolution (was iterating 8,000+ entries with no possible match)

IMPROVEMENTS
============
* IMPROVED: Acquisition tab virtual scrolling for large item lists (>200 rows)
  — only creates visible rows + buffer, rebuilds on scroll for smooth performance
* IMPROVED: "Dyeable" checkbox re-enabled in Acquisition tab filters
* IMPROVED: Expansion filter dropdown now color-codes expansion names
* IMPROVED: Zone, Faction, and Source filter dropdowns highlight active selection
* IMPROVED: Non-vendor items now resolve expansion from recipe or AllDecorDB data
* IMPROVED: Dropdown widget supports `colorFn` callback for per-item text coloring
* IMPROVED: Dye Panel help popup with colored keywords and left-aligned layout

DATA UPDATES
============
* UPDATED: VendorDB — Fixed Stormshield/Warspear vendor mapIDs (588→622/624),
  Frostwall (588→590), K'aresh (0→2552) coordinates
* UPDATED: VendorDB — Added currency costs for Garrison, Legion class hall,
  Midnight, and Undermine vendors
* UPDATED: VendorDB — Fixed bogus 20000 copper on class hall vendors
* UPDATED: VendorDB — Removed incorrectly listed items (Bob's crafted item,
  misplaced Kelsey Steelspark items)
* UPDATED: AllDecorDB — Comprehensive data refresh (2,885 lines changed)

BUG FIXES
=========
* FIXED: Combat taint error from UnitGUID "secret value" in TWW 12.0+ when
  targeting vendors — VendorResolver now pcall-guards strsplit on GUID and
  defers PLAYER_TARGET_CHANGED processing to break the hardware-input taint chain
* FIXED: Frame strata lowered from HIGH to MEDIUM for main window, floating
  widgets, and teal buttons to reduce taint propagation surface
* FIXED: FloatingWidget close button using deprecated `button` scheme key
  instead of `button_normal` (caused nil color error on some themes)
* FIXED: C_DyeColor API name corrected (was C_HousingDyeColor)

===============================================================================
Vamoose's Housing Decor Helper - Version 2.4.0 (February 2026)
===============================================================================

NEW FEATURES
============
* NEW: Acquisition Tab - Vendor Shopping Guide
  - New "Acquire" tab between Preview and Trainers
  - Two views: "By Vendor" (browse vendors by zone) and "By Item" (flat
    alphabetical list of all 1,646 acquirable items)
  - Left panel: Searchable item list with Expansion, Zone, Reputation, and
    Source dropdown filters, "Uncollected only" and "Endeavor" toggles
  - Right panel: Vendor info (name, zone, coords, faction/rep), 3D model
    gallery of vendor stock, item details with price and "Other Vendors" list
  - "Set Waypoint" (TomTom) and "Show on Map" buttons for navigation
  - "Map All" button drops TomTom waypoints for all vendors matching filters

* NEW: Acquisition Tab - All Source Types
  - Master AllDecorDB of all 1,690 housing decor items with source classification
  - Vendor items (1,060): full vendor details, prices, rep requirements
  - Achievement items (121): shows achievement name and completion status
  - Quest items (110) and World Quest items (93): shows quest name and zone
  - Drop items (68): shows dungeon/source name
  - Crafted items (310): shows profession, expansion, and reagent list with
    "Add to Crafting Queue" button (same workflow as Preview and Goblin tabs)
  - Treasure (3) and Promotion (17) items also included
  - Source icons in rows: achievement crest, quest bang, crosshair, anvil,
    loot sparkle, crafting orders icon
  - Done/Incomplete status for all non-vendor source types
  - Source filter dropdown: All, Vendor, Achievement, Quest, Drop, Crafted,
    Treasure, Promotion

* NEW: "How to Use" Guide Panel
  - In-app guide shown on the right panel before any item is selected
  - Covers Getting Started, Common Use Cases, Views, Filters, and Map All
  - Explains all row icons (collected, rep status, faction) and source icons
  - "How to Use" button in header bar toggles guide visibility at any time
  - Guide text rebuilds dynamically to match active theme colors

* NEW: Preview Tab - "Find Vendor" button
  - Non-crafted vendor items now show a "Find Vendor" button in the info pane
  - Clicking navigates to the Acquisition tab and pre-selects that item

* NEW: Data Tab - Decor Collection Statistics
  - New "Decor Collection" section below Farming History
  - Summary stats: Unique items owned, items in storage, items placed
  - Top 5 category breakdown with item counts
  - "Refresh" and "Export CSV" buttons

IMPROVEMENTS
============
* IMPROVED: Preview tab vendor tooltips now show faction/reputation requirements
* IMPROVED: Reputation filter correctly excludes non-vendor items
* IMPROVED: Zone and Expansion filters properly skip non-vendor items
  - Non-vendor items only respond to Source, Search, and Uncollected filters
* IMPROVED: Acquisition Tab defaults to "By Vendor" view

PERFORMANCE
===========
* OPTIMIZED: Acquisition tab opens instantly (deferred list build to next frame)
  - Collection status lazy-cached on demand by IsItemCollected()
* OPTIMIZED: Row/cell pool acquisition O(n) → O(1) via free-list stacks
* OPTIMIZED: Vendor inventory cost summary uses pre-built lookup table
* OPTIMIZED: Gallery cells no longer flash 2D icon before 3D model loads

BUG FIXES
=========
* FIXED: Vendor coordinates — Converted 90 vendors from world-space to
  zone-percentage coordinates. Waypoints now work for Stormwind, Orgrimmar,
  Silvermoon City, Ironforge, Valdrakken, Dornogal, and all other previously
  broken locations.
* FIXED: Coordinate validation prevents waypoint crashes from out-of-range coords
* FIXED: "Also sells" gallery not updating when switching vendors in By Vendor view
* FIXED: Lumber farming sessions not detecting after zone transitions
* FIXED: Lumber session tracking robustness (timer guards, lazy init fallback)
* FIXED: Vendor button frame leak in item detail panel (now pooled)
* FIXED: "...and N more" label FontString leaked on every item selection
* FIXED: Stale theme colors in vendor button hover handlers
* FIXED: "attempt to index field 'collectedIcon'" crash in expansion grouping
* FIXED: Clicking item in vendor gallery switched to wrong vendor

DATA QUALITY
============
* ADDED: AllDecorDB — master database of all 1,690 housing decor items
  - 12 source types: Unknown, Achievement, Quest, World Quest, Drop, Vendor,
    Crafted, Learned, Gathering, Treasure, Promotion, Profession
* ADDED: 96 new vendor items from Blizzard catalog cross-reference
  - Added items from 38 new vendors across all expansions
  - VendorDB now covers 1,211 items (was 964)
* ADDED: 228 alternate vendor entries for existing items
  - Items now show all vendors that sell them
* REMOVED: 105 quest-only items from VendorDB (confirmed as quest rewards)
* UPDATED: 15 Mechagon items with correct vendor/zone data

===============================================================================
Vamoose's Housing Decor Helper - Version 2.2.2 (Released February 2026)
===============================================================================

BUG FIXES
=========
* FIXED: BfA professions not showing for Horde characters on German clients
  - Root cause: German WoW uses "Zandalar" (place name) instead of "Zandalari"
    (demonym) for Horde profession expansion identifiers
  - Added "Zandalar" to BfA locale aliases in HDG_ExpansionData.lua
  - Alliance ("Kul Tiras") was unaffected as spelling matches across locales

* FIXED: Lumber tracker not working after zone transitions (Dorn, Pandaria, etc.)
  - Root cause: C_Map.GetBestMapForUnit("player") returns nil briefly during
    zone transitions, causing lumber tracking to silently fail
  - Added ZONE_CHANGED_NEW_AREA event handler with 0.5s delay to allow map
    data to stabilize before refreshing tracker
  - Lumber HUD now clears cached blip positions on zone change for recalculation

* FIXED: Lorewalker's Bookcase (MoP Inscription) showing wrong item
  - Root cause: Database had incorrect itemID (258147) which belongs to vendor
    item "Empty Lorewalker's Bookcase" instead of crafted version
  - Corrected itemID to 247669 (crafted Lorewalker's Bookcase)
  - Thanks to user report for identifying this data error

NEW FEATURES
============
* Added Debug Mode as a config option (Config > Advanced)
  - Debug commands (/hdgdebug) are now gated behind a setting (off by default)
  - Can also toggle via /hdgdebug unlock without opening the config UI
  - Useful for troubleshooting data issues without cluttering normal usage

===============================================================================
Vamoose's Housing Decor Helper - Version 2.2.1 (Released February 2026)
===============================================================================

BUG FIXES
=========
* FIXED: Compatibility with Vamoose's Endeavors addon - HDG no longer shows as
  empty white box when both addons are loaded
  - Root cause: Shared theme system overwrote HDG-specific themes (HDGDefault)
  - Fix: HDG now preserves its own themes when merging shared color schemes
* FIXED: Lumber coordinates performance degradation after extended farming
  - Root cause: lumberCoordinates table grew unbounded, causing O(n) work per HUD frame
  - Added MAX_LUMBER_COORDINATES = 500 limit with efficient batch pruning
  - Migration (v3) prunes existing bloated SavedVariables on login

IMPROVEMENTS
============
* CHANGED: Simplified Lumber Tracker UI
  - Removed title click to show focus tracker (title now decorative only)
  - Removed Reset Session button from lumber rows
  - X (End Session) button is now the only way to end a farming session

THEME ADJUSTMENTS
=================
* CHANGED: HDGDefault "success" color from bright green to muted teal (#429A91)
  - Better visual harmony with HDG's teal accent palette

===============================================================================
Vamoose's Housing Decor Helper - Version 2.2.0 (Released January 2026)
===============================================================================

THEME SYSTEM
============
* NEW: "Housing" theme with wood panel backgrounds and decorative foliage
* NEW: HDGDefault theme matching original addon styling
* NEW: Theme selector button in title bar - switch between Housing, HDGDefault, Solarized, Midnight
* NEW: Live theme switching without reload
* NEW: Wood sign backgrounds for section headers in Housing theme
* NEW: Animated foliage decorations around titles in Housing theme

UI ARCHITECTURE REFACTOR
========================
* NEW: HDG.UI:TabPanel() factory method for standardized tab content panels
* NEW: TAB_PANEL constants in HDG_Config.lua for consistent layout values
* NEW: HeaderTitle and SectionHeader skinners in ThemeEngine
* NEW: StyleHeaderTitle() for panel header bars with wood sign backgrounds
* NEW: AddFoliageDecorations() for section titles with decorative foliage
* IMPROVED: AltsTab refactored to use new TabPanel factory pattern
* IMPROVED: Title textures (title1, title2) now display correctly for all themes
* IMPROVED: Title z-ordering fixed - renders above wood border in Housing theme

GOBLIN TAB
==========
* NEW: CSV Export button - exports all profit analysis data
* NEW: Export includes all columns: Name, ItemID, Profession, Expansion, Quality,
       LumberType, LumberQty, LumberValuePer, LumberValueTotal, MaterialCost,
       SellPrice, Profit, Margin%, RegionAvg, TSMMargin%, KnownByPlayer,
       KnownByAlts, PriceSource
* NEW: Gold values formatted as gold.silver.copper (e.g., 123.45.67)
* NEW: Export button uses housing-neighborhood-invite-icon atlas
* FIXED: Auctionator scan button no longer shows "Cooldown" when AH first opened
* FIXED: Scan button re-checks availability on each click

LUMBER TRACKER
==============
* IMPROVED: Reset Session button now saves current session to history before starting fresh
  - Farming stats are preserved in Data tab's Farming History
  - Confirmation message shows collected count before resetting

DATA TAB
========
* IMPROVED: Decor Crafting and Farming History tables now use full scroll region width
  - Column widths optimized for ~760px usable space
  - All columns use SetWordWrap(false) to prevent text layout issues

BUG FIXES
=========
* FIXED: Smoke Lamp recipe now displays correct name (was showing "Schematic: Thalassian Competitor's Plate Guard")
  - Corrected itemID in DecorDB from 257408 to 257406
* FIXED: House level/XP display moved up 2 pixels for better alignment

-------------------------------------------------------------------------------

===============================================================================
Vamoose's Housing Decor Helper - Version 2.1.8 (Released January 2026)
===============================================================================

DATABASE UPDATE
===============
* NEW: Added 2 new TBC Alchemy housing decor recipes:
  - Arakkoan Alchemist's Bottle (recipeID: 1273064)
  - Arakkoan Alchemist's Concoction (recipeID: 1273070)
  - Both items added to HDG_ProfessionsDB and HDG_DecorDB

-------------------------------------------------------------------------------

===============================================================================
Vamoose's Housing Decor Helper - Version 2.1.7 (Released January 2026)
===============================================================================

MIDNIGHT (12.0) COMPATIBILITY
=============================
* FIXED: Updated deprecated API calls for WoW 12.0 compatibility:
  - IsPlayerSpell → C_SpellBook.IsSpellKnown (recipe knowledge checks)
  - GetItemInfo → C_Item.GetItemInfo (item data lookups)
  - GetItemQualityColor → C_Item.GetItemQualityColor (quality colors)
  - GetCoinTextureString → C_CurrencyInfo.GetCoinTextureString (gold display)
* FIXED: Collection mode (Decor Preview tab) now works in 12.0
  - C_HousingCatalog searcher calls wrapped in pcall for error protection
* FIXED: Profession filter in Collection mode now properly filters items
  - Non-craftable catalog items no longer pass through when profession selected

LUMBER RADAR
============
* FIXED: Radar auto-closes when farming session ends

-------------------------------------------------------------------------------

===============================================================================
Vamoose's Housing Decor Helper - Version 2.1.6 (Released January 2026)
===============================================================================

LOCALIZATION FIXES
==================
* FIXED: Non-English clients missing expansion skills in Alts tab
  - GetExpansionFromSkill() now checks apiTags array for localized names
  - Added support for all 9 languages: DE, ES, FR, IT, RU, KO, ZH
  - German users can now see Scherbenwelt (TBC), Nordend (WotLK), etc.
  - Spanish users can see Terrallende (TBC), Rasganorte (WotLK), etc.

CONFIG TAB REORGANIZATION
=========================
* NEW: Two-column grid layout with General (left) and Lumber Tracking (right)
* NEW: Teal section headers for visual organization
* NEW: Row 1: Show Minimap Button | Auto-Enable Lumber Tracker
* NEW: Row 2: Show in Addon Compartment | Auto-Show Lumber Radar
* NEW: Row 3: Show Profession Window Buttons | Radar Scale slider (0.5x-2.5x)
* NEW: Row 4: Pin Lumber Tracker | Radar FPS slider (10-30 fps)
* NEW: Consistent 38px row spacing with hint text below each option
* NEW: "Farming & Crafting Quotes" section with streamlined layout:
  - Enable Quotes (master toggle)
  - Only print quotes to chat (NEW - disables talking head, keeps chat output)
  - Lumber Quotes
  - Chattiness slider (aligned under Lumber Quotes label)
  - Craft Quotes
* IMPROVED: Hint text clarified (e.g., "Floating widget - also via pin button")

BUG FIXES
=========
* FIXED: Manually crafting decor no longer closes profession window
  - Window only closes if craft was initiated from addon UI
* IMPROVED: Chattiness slider personality text with Vamoose's recommendations

DOCUMENTATION
=============
* IMPROVED: How-to Guide updated with Lumber Radar tips about efficient small routes

-------------------------------------------------------------------------------

===============================================================================
Vamoose's Housing Decor Helper - Version 2.1.5 (Released January 2026)
===============================================================================

MAJOR FEATURE: LUMBER RADAR HUD
===============================
* NEW: Temporal radar showing recent lumber gathering locations
* NEW: Circular radar with player at center - blips positioned by distance and bearing
* NEW: Distance rings at 150y and 300y with yard labels
* NEW: Blip colors show respawn status:
  - Red = just cut, don't return yet
  - Yellow = respawning soon
  - Green = ready to harvest again
* NEW: Blip size scales with distance (larger = closer)
* NEW: Auto-shows when gathering lumber, toggle with /lumberhud
* NEW: Draggable positioning saved to SavedVariables
* NEW: Green radar styling with circular background and distance rings
* NEW: Radar Scale slider (0.5x - 2.5x) in Config tab
* NEW: Radar Framerate slider (10-30 fps) in Config tab
* NEW: Distance calibration matches TomTom/HereBeDragons accuracy
  - Uses C_Map.GetWorldPosFromMapPos for true yard calculations

MAIN WINDOW
===========
* NEW: House level and experience display in bottom right
  - Shows "House Level 5 (Max)   7540 / 3700 XP" format
  - Uses async C_Housing API with proper event handling
  - Refreshes when player learns new decor items

MATERIALS PANEL
===============
* NEW: "Add All to Auctionator" now subtracts materials you already have
  - Only searches for quantities you actually need
* IMPROVED: Tooltip clarifies that it replaces the existing Auctionator shopping list

CRAFT CONFIRMATION DIALOG
=========================
* NEW: "Keep profession window open" checkbox option
  - Setting persists account-wide
* FIXED: +/- buttons and "Max N" now appear correctly
  - Was checking queued amount instead of craftable materials

LUMBER TRACKER
==============
* NEW: Trade lumber tracking - prevents false farming sessions
  - Added TRADE_SHOW/TRADE_CLOSED event handling
  - Multi-account users can trade lumber without triggering quotes/sessions
* NEW: Lumber coordinate tracking - saves player position when gathering
  - Stores mapID, x/y coordinates, zone, timestamp per gather
  - Data persisted for radar and future route analysis

BUG FIXES
=========
* FIXED: Craft quotes now respect chattiness=0 setting
  - Added chattiness > 0 check before showing quotes

IMPROVEMENTS
============
* IMPROVED: How-to Guide updated with Lumber Radar HUD documentation

-------------------------------------------------------------------------------

===============================================================================
Vamoose's Housing Decor Helper - Version 2.1.4 (Released January 2026)
===============================================================================

ACCOUNT-WIDE LUMBER TRACKING
============================
* NEW: Lumber tracker now sums inventory across ALL characters
* NEW: Warband Bank shown as separate line (counted once, not per-character)
* NEW: Tooltip shows breakdown: each character's personal count + Warband Bank
* FIXED: No more double-counting shared Warband Bank items

TALKING HEAD QUOTE SYSTEM
=========================
* NEW: Talking head quotes appear while farming lumber
* NEW: 20 Shaman (Vamoose) quotes per lumber type - spiritual wisdom
* NEW: 10 Goblin (Gazlowe) quotes per lumber type - profit-focused humor
* NEW: 10 Squirrel quotes per lumber type - angry eviction protests
* NEW: Squirrel speaker with brown squirrel model, "[Squirrel]" in brown in chat
* NEW: Craft quotes when crafting decor - profession-specific with famous NPC speakers:
  - Marin Noggenfogger (Alchemy), Magni Bronzebeard (Blacksmithing), Nomi (Cooking)
  - Kalecgos (Enchanting), Trade Prince Gazlowe (Engineering), Lorewalker Cho (Inscription)
  - Haris Pilton (Jewelcrafting), Hemet Nesingwary (Leatherworking), First Arcanist Thalyssra (Tailoring)
* NEW: Expansion-specific quotes matching the recipe's expansion
* NEW: Chattiness slider in Config tab (1-99, higher = less frequent)
* NEW: Custom talking head frame with animated 3D models

BUG FIXES
=========
* FIXED: Collection status not updating after collecting items
  - Only cache positive results to avoid stale negatives when Blizzard API is slow
  - Note: If refresh button doesn't work, a /reload may be needed due to API delays
* FIXED: Quality variant material counting now includes all tiers (R1 + R2 + R3)
  - Materials like "Oil of Beledar's Grace" now count all quality variants in inventory
  - New GetItemCountWithVariants() function sums base item + all quality tiers

-------------------------------------------------------------------------------

===============================================================================
Vamoose's Housing Decor Helper - Version 2.1.3 (Released January 2026)
===============================================================================

MAJOR FEATURE: LOCALIZATION
===========================
* NEW: Full localization framework with 215+ translated UI strings
* NEW: 9 languages supported: Spanish, Portuguese, German, French, Italian,
       Russian, Korean, Simplified Chinese, Traditional Chinese
* NEW: Locale override dropdown in Config tab - choose your preferred language
* NOTE: Addon UI text is translated; item/recipe names come from WoW client

NEW FEATURES
============

Alts Tab - Skills/Recipes Toggle
--------------------------------
* NEW: Two-button toggle to switch between Skills and Recipes view modes
* NEW: Recipes mode shows known/total decor recipes per profession/expansion
* NEW: Account Summary aggregates best known count across ALL characters
* NEW: Color coding: Gray=none known, Yellow=partial, Teal=all known
* NEW: Uses stored knownRecipes data - open profession windows to scan

History Click-to-Preview
------------------------
* NEW: Click on crafted items in history navigates to Preview tab with 3D model
* NEW: Click on learned items (acquired decor) also works
* NEW: Hover shows teal highlight and "Click to preview" tooltip
* FIXED: 3D preview now works on first click after reload

Trainers Tab
------------
* NEW: Shows character name who knows most decor recipes in profession header

Compatibility
-------------
* FIXED: Square minimap compatibility (SexyMap, BasicMinimap, etc.)
* NEW: Addon Compartment support (Blizzard minimap drawer integration)

UI Improvements
---------------
* NEW: Crafting Queue shows item count in title "(N items)"
* FIXED: Goblin tab layout - price source text above scan button (was overlapping)
* FIXED: "Script ran too long" error when adding all 242 items from Preview tab

Code Quality
------------
* Deduplication Phase 1-5: Consolidated color constants, collection checks,
  filter button factory, character key, and materials processing functions
* Reduced ~200 lines of duplicated code across modules

---

===============================================================================
Vamoose's Housing Decor Helper - Version 2.1.1 (Released January 2026)
===============================================================================

NEW FEATURES
============

TSM Integration Enhancements
----------------------------
* NEW: Price addon toggle in Goblin tab - switch between TSM and Auctionator
* NEW: Region Avg column (TSM only) - shows regional average sale price
* NEW: TSM % column (TSM only) - margin calculated using Region Avg price

Goblin Tab Enhancements
-----------------------
* NEW: Search box - filter decor items by name in Goblin tab
* NEW: Lumber inventory count - shows available lumber next to lumber type name

Lumber Tracker Enhancements
---------------------------
* NEW: Focus mode - when farming starts, hides other lumber rows to focus on active item

Gathering Tracker
-----------------
* NEW: Trackable reagents - ctrl-click any material to add to tracking
* NEW: Remove from tracking - right-click tracked items to remove them
* NEW: Tracked reagents appear in pinned lumber widget alongside lumber

Help Button & How-to Guide
--------------------------
* NEW: Help button (?) in title bar next to refresh button
* NEW: Clicking help button opens Config tab with comprehensive How-to Guide
* NEW: How-to Guide covers all tabs with detailed feature explanations
* NEW: Guide includes keyboard shortcuts and interaction tips

BUG FIXES
=========

* FIXED: Footer text ("Vamoose says...") being overlapped by panels
* FIXED: Panel height calculation now properly accounts for banner and tab spacing

---

===============================================================================
Vamoose's Housing Decor Helper - Version 2.1.0 (Released January 2026)
===============================================================================

NEW FEATURES
============

Goblin Mode - Profit Analysis Tab
---------------------------------
* NEW: "Goblin" tab for profit analysis on all housing decor items
* NEW: Shows Sell Price, Material Cost, Profit, and Margin for every item
* NEW: Lumber Value Analysis - implied gold value per lumber when crafting
* NEW: Total Lumber Value column - per lumber value times lumber qty per craft
* NEW: Items color-coded by expansion for easy identification
* NEW: Sortable columns - click any header to sort ascending/descending
* NEW: Sort indicator via text color (white = active sort, gold = inactive)
* NEW: Profession and Expansion filter dropdowns
* NEW: "Hide unprofitable" checkbox to filter negative-margin items
* NEW: "Only known (this char)" checkbox to show only recipes you know
* NEW: Item count shows filtered/total (e.g., "125 / 243 items")
* NEW: Click row to expand material breakdown (Direct vs Raw costs)
* NEW: Ctrl-click to add item to crafting queue
* NEW: Shift-click to search AH for item (when AH is open)
* NEW: Auctionator "Scan AH" button integration with cooldown tracking
* NEW: TSM/Auctionator price source indicator

UI/UX Improvements
------------------
* NEW: Custom goblin tab button texture
* IMPROVED: Item cache auto-refresh in expansion panel (no more "Item #XXXXX")
* IMPROVED: Expansion panel shows both Direct Materials and Raw Materials totals

Data Updates
------------
* UPDATED: Database refresh with latest profession recipes

---

===============================================================================
Vamoose's Housing Decor Helper - Version 2.0.9 (Released January 2026)
===============================================================================

DATA FIXES
==========

Raw Materials Quality Variant Deduplication
-------------------------------------------
* FIXED: TWW/DF quality variants (T1/T2/T3) no longer appear as separate items
* FIXED: Raw materials quantities now correctly sum across multiple craft paths
* NEW: Automatic deduplication by item name (groups quality tiers together)
* NEW: Consecutive ID detection for items with placeholder names (T1, T1+1, T1+2)
* NOTE: Quality variants are alternatives - only the base tier quantity is shown

Finishing Reagent Filtering
---------------------------
* ADDED: Lesser Illustrious Insight (191526) marked as "Ignore" in reagent database
* This DF finishing reagent/embellishment no longer appears in raw materials lists


---

===============================================================================
Vamoose's Housing Decor Helper - Version 2.0.8 (Released January 2026)
===============================================================================

NEW FEATURES
============

Power Crafting (Raw Materials View)
-----------------------------------
* NEW: HDG_PowerCrafting.lua module for DAG-based recipe resolution
* NEW: "Direct | Raw" toggle in Required Materials header
* NEW: Raw mode expands crafted reagents to base materials (what you actually need)
* NEW: Dependency graph builder with circular dependency detection
* NEW: Topological sort for proper crafting order (leaf nodes first)
* Supports recursive resolution up to 10 levels deep

Midnight Expansion Support
--------------------------
* NEW: Added Midnight expansion to expansion data
* NEW: Added Thalassian Lumber (item 256963) for Midnight
* NEW: Lumber tracker now supports 12 lumber types (Classic through Midnight)

Auctionator Shopping List Quantities
-------------------------------------
* NEW: "Add All to Auctionator" button now includes quantities for each material
* NEW: Uses Auctionator API v1 ConvertToSearchString for proper quantity encoding
* NEW: Shopping list shows exact amounts needed (e.g., "Bismuth x15" instead of just "Bismuth")
* NEW: Graceful fallback to item names only if quantity API unavailable

IMPROVEMENTS
============

Code Cleanup
------------
* REMOVED: Legacy CRAFTED_RECIPES hardcoded table (~220 lines) from HDG_PowerCrafting.lua
* IMPROVED: HDG_ProfessionsDB is now the single source of truth for crafted reagent recipes

Dynamic Lumber Tracker Layout
-----------------------------
* IMPROVED: Lumber tracker heights now calculate dynamically based on lumber count
* IMPROVED: Adding new expansions/lumber types no longer requires manual height adjustments
* IMPROVED: Embedded and pinned lumber widgets both scale automatically
* IMPROVED: Smaller header font in embedded lumber panel for better fit

Crafting UI Enhancements
------------------------
* NEW: Craft confirmation dialog with quantity selector (+/- buttons)
* NEW: "Craft N" button updates dynamically as you adjust quantity
* NEW: "Max N" button to craft all queued items at once
* NEW: Craft button shows craftable count in shopping list
* NEW: Multi-craft support - profession window stays open for sequential crafts
* FIXED: Shopping list now properly decrements when crafting completes
* IMPROVED: Tooltip positioning (cursor at bottom-left, not obscuring content)

Release Pipeline Automation
---------------------------
* NEW: Wago.io automatic upload on release
* NEW: CurseForge description auto-update from Curseforge_Description.md
* NEW: Wago.io description auto-update from Curseforge_Description.md
* NEW: Separate workflow for manual description-only updates

---

===============================================================================
Vamoose's Housing Decor Helper - Version 2.0.7 (Released January 2026)
===============================================================================

NEW FEATURES
============

Recipe Search Box
-----------------
* NEW: Search box in Recipes tab to filter recipes by name
* NEW: Real-time filtering as you type
* NEW: Clear button (X) to reset search
* NEW: Works with profession and "All | Ready" filters

Search Materials Toggle (+Mats)
-------------------------------
* NEW: "+Mats" checkbox to extend search to reagent names
* NEW: Search "bismuth" to find recipes using Bismuth
* NEW: Toggleable to avoid clutter in normal searches

Uncollected Only Toggle
-----------------------
* NEW: "Uncollected" checkbox in Recipes tab
* NEW: Hides recipes for decor you already own
* NEW: Persisted to SavedVariables across sessions

Collection Progress (Preview Tab)
---------------------------------
* NEW: Shows "X / Y (Z%)" collection progress in header
* NEW: Color-coded: Green (100%), Yellow (50%+), White (<50%)
* NEW: Updates dynamically with current filter results

Crafting Queue Grouped by Character
-----------------------------------
* NEW: Crafting queue items sorted by who can craft them
* NEW: Current character's craftable items appear first
* NEW: Section headers show "CharName - RealmName" for each crafter
* NEW: "(you)" indicator in gold next to current character's section
* NEW: "Not Known" section for recipes no alts can craft
* NEW: Profession icons (14x14) next to each item in queue

Decor Acquisition History
-------------------------
* NEW: Tracks when decor is learned (added to collection), not just crafted
* NEW: Source column shows "Crafted" (teal) or "Learned" (gold)
* NEW: Renamed section to "Decor Crafting / Acquisition History"
* NEW: CSV export includes Source column

Per-Character Profession Memory
-------------------------------
* NEW: Each character remembers their last selected profession tab
* NEW: Switching characters restores their profession selection
* NEW: No more resetting to "All" when logging between alts

Auto-Refresh Alts Tab
---------------------
* NEW: Alts tab refreshes when profession window opens
* NEW: 0.3s delay ensures profession data is loaded
* NEW: Keeps alt profession data current without manual refresh

UI IMPROVEMENTS
===============

* IMPROVED: Expansion background colors now consistent in All and Ready modes
* IMPROVED: Unknown recipe text lighter gray (#909090) for better readability
* IMPROVED: Tooltip async loading fixed - no more double-hover needed

DATA UPDATES
============

* ADDED: 50+ new reagent IDs for Dragonflight & TWW expansions
  - Ores: Bismuth, Aqirite, Ironclaw Ore, Draconium Ore
  - Hides: Carapace-Backed Hide, Sporecoated Hide, Stormcharged Leather, etc.
  - Gems: Queen's Ruby, Mystic Sapphire, Vibrant Emerald, Illimited Diamond, etc.
  - Inks: Shadow Ink, Apricate Ink, Blazing Ink, Flourishing Ink, etc.
  - Cloth: Weavercloth Bolt, Duskweave, Weavercloth
  - Alloys: Core Alloy, Charged Alloy, Primal Molten Alloy
  - Engineering: Handful of Bismuth Bolts, Whimsical Wiring, Gyrating Gear, etc.
  - Alchemy: Slumbering Soul Serum, Harmonious Horticulture, Oil of Beledar's Grace
* FIXED: Corrected item IDs for Dragonflight Inscription inks (Blazing, Flourishing, Serene)
* FIXED: Corrected Illimited Diamond item ID (192869)
* FIXED: Corrected Harmonious Horticulture item ID (212563)

CODE CLEANUP
============

* REMOVED: Compact mode dead code (lumber widget only has embedded/pinned modes)
* MOVED: Crafting history functions from HDG_ConfigTab to HDG_DataTab
* FIXED: Orphaned progress bar code removed

UPDATES
=======

* UPDATED: Discord invite link changed to https://discord.gg/RWZaxJaHFP


===============================================================================
Vamoose's Housing Decor Helper - Version 2.0.6 (Released January 2026)
===============================================================================

BUG FIXES
=========

* FIXED: Lumber farming no longer starts when receiving lumber from mail or bank
  - Only tracks actual gathering/farming, not withdrawing stored lumber
  - Prevents false farming sessions when checking mailbox or bank
* FIXED: Alts tab now shows all expansion skill levels correctly
  - Fixed expansion names stored as API names (Outland, Northrend, Dragon Isles)
  - Now properly normalizes to display names (TBC, WotLK, Dragonflight, etc.)
  - Existing data automatically migrated on character login


===============================================================================
Vamoose's Housing Decor Helper - Version 2.0.5 (Released January 2026)
===============================================================================

NEW FEATURES
============

Lumber Farming Session Tracker
------------------------------
* NEW: Active farming stats when collecting lumber - gold/yellow row highlight
* NEW: Shows "Collected this session" count with live updates
* NEW: Rate per hour calculation displayed in real-time
* NEW: Current zone tracking for each session
* NEW: 3-phase collection animation (white flash -> gold settle -> normal)
* NEW: "End Session" button for manual session termination
* NEW: Session summary printed to chat when ending

Farming History (Data Tab)
--------------------------
* NEW: Farming sessions saved to Data tab history
* NEW: Upsert pattern - updates existing session as you continue farming
* NEW: Columns: Date/Time, Lumber, Collected, Rate/hr, Duration, Zone, Character
* NEW: CSV export includes all farming session data
* NEW: Character-realm tracking for all farming sessions

Crafting History Price Tracking
-------------------------------
* NEW: Stores AH price at time of crafting (from TSM/Auctionator)
* NEW: Stores total material cost at time of crafting
* NEW: "Price" column shows item market value
* NEW: Hover tooltip shows: Item Value, Material Cost, Profit/Loss, Price Source
* NEW: Sortable by Price column
* NEW: CSV export includes ItemPrice, MaterialCost, PriceSource columns

Profession Window Integration
-----------------------------
* NEW: "Filter Decor" button in profession window - filters to House Decor recipes
* NEW: Teal-themed buttons matching addon style
* NEW: "/hdg decor" slash command for text-based decor filtering
* NEW: Config toggle to show/hide profession window buttons

UI IMPROVEMENTS
===============

* NEW: Custom title banner with Vamoose logo image
* IMPROVED: Data tab columns reorganized and spaced for readability
* IMPROVED: Farming history Character column at end with more width
* IMPROVED: Price tooltip title clarified as "AH Price at Time of Crafting"

BUG FIXES
=========

* FIXED: Alts tab expansion order fallback using correct display names
* FIXED: Shadowlands Alchemy threshold corrected (was 140, now 80)


===============================================================================
Vamoose's Housing Decor Helper - Version 2.0.4 (Released January 2026)
===============================================================================

BUG FIXES
=========

* FIXED: Decor Preview column alignment - header icons now align with list icons
* FIXED: Lumber tracker materials panel crash when price addon name is nil
* FIXED: Pinned lumber widget now appears above main window close button (DIALOG strata)

UI IMPROVEMENTS
===============

* IMPROVED: Preview tab status columns moved closer to scrollbar for more name space
* IMPROVED: Column right margin reduced from 8px to 2px for tighter layout


===============================================================================
Vamoose's Housing Decor Helper - Version 2.0.3 (Released January 2026)
===============================================================================

NEW FEATURES
============

Crafting History Enhancements
-----------------------------
* NEW: Clickable items in crafting history - click to preview in Decor Preview tab
* NEW: Sortable columns - click Time, Item, or Character headers to sort
* NEW: Sort direction indicator arrows (ascending/descending)
* NEW: Character-Realm display shows full realm name for all entries

BUG FIXES
=========

* FIXED: OpenRecipe now calls twice with 0.2s delay for reliable profession window opening
* FIXED: Crafting history now uses TRADE_SKILL_ITEM_CRAFTED_RESULT event for accurate tracking
* FIXED: Sort arrows now use TGA texture instead of unicode characters

CODE QUALITY
============

* NEW: PreviewByItemID function for cross-tab navigation from crafting history
* IMPROVED: Sort arrows rendered as flippable TGA texture (textures/sort-arrow.tga)
* IMPROVED: Crafting history module reference corrected (HDG_DecorPreview)


===============================================================================
Vamoose's Housing Decor Helper - Version 2.0.2 (Released January 2026)
===============================================================================

NEW FEATURES
============

Discord Button
--------------
* NEW: Discord button in title bar (blurple "D" button)
* NEW: Click to copy invite link to clipboard
* NEW: Hover tooltip shows Discord invite URL

Contributors Section
--------------------
* NEW: "Special Thanks" section at bottom of Config tab
* NEW: Credits: Abased, Rylls, Jonnyne, JodouKast

Footer Enhancement
------------------
* NEW: Random Orc quotes in footer (Shaman blue color)
* NEW: Quotes change on each /reload or login

BUG FIXES
=========

* FIXED: Visual corruption when minimizing from Trainers tab
* FIXED: Visual corruption when minimizing from Config tab
* FIXED: Crafting Queue clear button not responding to clicks
* FIXED: Crash on first load with old SavedVariables (crafting history)
* FIXED: Decor Preview row pooling causing overlapping/corrupted text

CODE QUALITY
============

* IMPROVED: Removed duplicate GetExpansionColor from TrainersTab
* IMPROVED: Removed duplicate TEXT_COLORS from UIHelpers
* IMPROVED: Centralized expansion color lookup (supports abbreviations)
* IMPROVED: Centralized tooltip anchor configuration (CONFIG.TOOLTIP_ANCHOR)
* IMPROVED: Row pooling lifecycle properly tracks all rows in activeRows
* IMPROVED: DB_VERSION incremented to force SavedVariables refresh


===============================================================================
Version 2.0.1 (Released January 2026)
===============================================================================

NEW FEATURES
============

Lumber Tracker Pinned Mode
--------------------------
* NEW: Pin button to keep compact lumber tracker open independently
* NEW: Custom pin icon shows active/inactive state
* NEW: Pinned tracker auto-shows on login
* NEW: Persists across sessions via SavedVariables

IMPROVEMENTS
============

Decor Preview Tab
-----------------
* IMPROVED: Full 3D rotation - drag vertically to tilt model up/down
* IMPROVED: Controls hint updated to show "Drag to rotate (H+V)"

Trainer Locations
-----------------
* IMPROVED: Cross-checked all coordinates against VamooseDB
* IMPROVED: Fixed 13+ incorrect trainer locations
* IMPROVED: Updated Dragonflight trainer coordinates (Valdrakken)
* IMPROVED: Updated TWW trainer coordinates (Dornogal)
* IMPROVED: "Both" faction now shows "A/H" instead of "B" for clarity

BUG FIXES
=========
* FIXED: Compact mode now works from any tab (not just Recipes)
* FIXED: Pin button tooltip updates dynamically on click


===============================================================================
Version 2.0.0 (Released January 2026)
===============================================================================

NEW FEATURES
============

Multi-Character Profession Tracking
-----------------------------------
* NEW: Alts Tab - View account-wide profession skills at a glance
* NEW: Account Summary grid showing best skill per profession/expansion
* NEW: Color-coded skill levels (White=no data, Yellow=below threshold, Teal=ready)
* NEW: "Known by: AltName" shown on recipe tooltips when alt can craft
* NEW: Alt recipe counts shown in grey for professions you don't have
* NEW: BfA expansion normalizes Kul Tiran (Alliance) / Zandalari (Horde)

Catalog Browser (Decor Preview Tab)
------------------------------------
* NEW: "Collection" toggle shows ALL housing decor from the game catalog
* NEW: Browse every decor item in the game, not just craftable recipes
* NEW: Uses Blizzard's C_HousingCatalog API for complete catalog data
* NEW: Filters out room structures (shows only placeable decor)
* NEW: Item counter shows total items in current filtered view
* NEW: Non-craftable items show icon/name from game API
* NEW: "Uncollected" toggle filters to items you don't own yet
* NEW: Segmented toggle button design matching tab styling

Tag Filter System (Decor Preview Tab)
-------------------------------------
* NEW: Two-row filter UI with category and tag buttons
* NEW: Filter categories: Sizes, Factions, Styles, Expansions, Other
* NEW: 64 unique tags extracted from game data
* NEW: Single-select filtering (one tag at a time)
* NEW: "Filter:" and "Tags:" labels for clarity
* NEW: `/hdg tags` command dumps all tags with counts

UI IMPROVEMENTS
===============

Profession Tab Badges
---------------------
* NEW: Dual badges showing recipes known (teal) + decor collected (gold)
* NEW: Header row with book/crate icons
* NEW: Professions you don't have show "--" for recipe count
* NEW: Detailed tooltip showing missing items list

Terminology Updates
-------------------
* RENAMED: "Shopping List" is now "Crafting Queue" throughout the addon
* RENAMED: "Materials Needed" is now "Required Materials" throughout the addon

Visual Polish
-------------
* IMPROVED: Minimalist scrollbars (slim thumb, no arrows, subtle teal)
* IMPROVED: Panel headers have lighter background than list body
* IMPROVED: Craftable button redesigned as segmented [All | Ready] toggle
* IMPROVED: Craftable button state now persists across reloads
* IMPROVED: Material percentage calculation is now quantity-weighted
* IMPROVED: Minimap icon positioned outside minimap border

Code Quality
------------
* IMPROVED: Data files renamed for consistency (HDG_DecorDB, HDG_ReagentsDB, HDG_TrainersDB)
* IMPROVED: Consolidated NormalizeExpansionName function
* IMPROVED: Profession threshold data in HDG_ProfessionThresholds.lua
* FIXED: 0% items no longer shown in What Can I Craft mode

PLANNED (Future Versions)
=========================

* Power Crafting - DAG-based recursive recipe resolution
* Project Manager - Named groups with gold budgeting
* Wowhead Links - Click to open item/recipe pages


===============================================================================
Version: 1.9.5 (Released January 2026)
===============================================================================

[Released on CurseForge]

NEW FEATURES
============

"What Can I Craft?" Mode
------------------------
* NEW: Toggle button to filter recipes by material availability
* NEW: Recipes organized into tiers based on material percentage:
  - Ready to Craft (100%) - Have all materials
  - Almost Ready (75-99%)
  - Halfway There (50-74%)
  - Need Materials (<50%)
* NEW: Shows material % for professions you don't have (grayed out)
* NEW: Shows all recipes for professions you have but haven't learned yet

Crafting History Log
--------------------
* NEW: Account-wide crafting history in Config tab
* NEW: Tracks what decor items you craft and when
* NEW: Stores up to 100 entries (newest first)
* NEW: Clear History button to reset

Estimated Material Costs
------------------------
* NEW: Materials panel shows estimated total cost
* NEW: Integrates with TSM and Auctionator for price data
* NEW: Shows "Have all materials!" when complete
* NEW: Per-material cost breakdown in tooltips

Profession Window Integration
-----------------------------
* NEW: "Decor Guide" button appears in Blizzard's profession UI
* NEW: Opens addon filtered to the current profession
* NEW: Only shows for professions with decor recipes

UI IMPROVEMENTS
===============

Tab Button Styling
------------------
* IMPROVED: Inactive tabs now have subtle teal tint (brand consistency)
* IMPROVED: Tab icons keep full color but reduced opacity when inactive
* IMPROVED: Hover state brightens tabs and icons
* IMPROVED: Teal border on all tabs (brighter when active)

Visual Consistency
------------------
* IMPROVED: Cool white (#e2e8f0) applied across all tabs
* IMPROVED: Recipe rows have expansion-based background colors
* IMPROVED: Fancy title bar with colored "Vamoose's" accent
* IMPROVED: Material categories renamed to "From Vendor", "From Gathering / AH"

Config Tab
----------
* IMPROVED: Added minimap button show/hide toggle
* IMPROVED: Removed icon picker (simplified)
* IMPROVED: Cleaner layout with crafting history section

Crafting Queue
--------------
* IMPROVED: Left-click decrements quantity by 1
* IMPROVED: Right-click removes entire stack
* IMPROVED: More intuitive for crafting items one at a time

BUG FIXES
=========

* FIXED: Title bar now dynamically pulls version from TOC metadata
* FIXED: Reagent database audited - TWW, DF, SL modified crafting slots fixed
* FIXED: Added missing reagents (Gilded Vial, Slumbering Soul Serum, etc.)

CODE IMPROVEMENTS
=================

* NEW: HDG_UIHelpers.lua module for centralized UI utilities
* NEW: Centralized TEXT_COLORS and CONFIG.PADDING/SIZES constants
* MOVED: validate.lua and deploy.sh to utilities/ directory
* REMOVED: Deprecated textures/README.md and QUICK_START.txt


===============================================================================
Previous Version: 1.9.4
===============================================================================

BUG FIXES
=========

Auction House Integration - Fixed
----------------------------------
* FIXED: Shift-click materials to search Auction House now works properly
* FIXED: Right-click to add materials to search list now functional
* NEW: Auctionator integration fully implemented with API v1
* NEW: TSM (TradeSkillMaster) integration added as fallback/alternative
* IMPROVED: Click instructions now shown in material tooltips

Auctionator Integration
------------------------
* Shift-click material → Search Auction House via Auctionator.API.v1.MultiSearch
* Right-click material → Add to Auctionator search list
* Automatic detection of Auctionator addon
* Graceful fallback if addon not installed

TSM Integration (NEW)
---------------------
* Shift-click material → Opens TSM and searches Auction House (if Auctionator not available)
* Right-click material → Add to TSM search list with needed quantity
* Ctrl-click material → Show TSM market price (DBMarket)
* Full TSM_API integration for price checking and shopping

UI IMPROVEMENTS
===============

Complete UI Styling Overhaul - Slate/Teal Theme
------------------------------------------------
* NEW: Modern flat design with unified "Slate/Teal" color scheme
* NEW: Dark teal accent color (#1d4e4f) for all buttons and active tabs
* NEW: Clean white text without shadows/outlines throughout interface
* IMPROVED: Progress bars now use consistent dark teal (#2C7A7B) with opacity variations
* IMPROVED: Removed all black background borders for cleaner look
* IMPROVED: Updated profession progress text to use clean white

Progress Bar Text Overlap - Fixed
----------------------------------
* FIXED: Progress bar text no longer overlaps with percentage
* FIXED: "Collected:" header position adjusted to fit properly
* FIXED: Progress bars moved further right to prevent overlap
* IMPROVED: Clean text layout across all progress indicators

Window Position Persistence
----------------------------
* IMPROVED: Window position now properly saves and restores between sessions
* FIXED: Position saved on window move/drag
* FIXED: Position restored on addon load

Technical Details
-----------------
* Major UI code refactoring for v1.9.5 preparation
* Improved frame creation and management
* Better separation of concerns between modules


===============================================================================
Version: 1.9.3
===============================================================================

* Initial release on CurseForge
* Support for all 9 professions with housing decor recipes
* Crafting queue functionality
* Material tracking with have/need counts
* Minimap button with customizable icon
* Trainer locations for all expansions
* 3D model preview for decor items
