[object Object]

← back to Dw Domain Fleet

microsite catalog: exclude showroom-tagged products from CLEAN grids (TK-11307)

42bf6b71b8ff742dcc3cbdea032ef2cc603eff02 · 2026-09-08 15:38:06 -0700 · steve

CLEAN now filters isShowroomProduct (vendor-on-list OR 'Showroom' tag), making the
MDC exclusion rule-based instead of relying on the incidental display_variant junk
rule. Sellable Phillipe Romano products (no Showroom tag) still served.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JDeaFL4eeREBZX79tc4cnr

Files touched

Diff

commit 42bf6b71b8ff742dcc3cbdea032ef2cc603eff02
Author: steve <steve@designerwallcoverings.com>
Date:   Tue Sep 8 15:38:06 2026 -0700

    microsite catalog: exclude showroom-tagged products from CLEAN grids (TK-11307)
    
    CLEAN now filters isShowroomProduct (vendor-on-list OR 'Showroom' tag), making the
    MDC exclusion rule-based instead of relying on the incidental display_variant junk
    rule. Sellable Phillipe Romano products (no Showroom tag) still served.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01JDeaFL4eeREBZX79tc4cnr
---
 shared/catalog.js | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/shared/catalog.js b/shared/catalog.js
index b5d6a05..208a8a4 100644
--- a/shared/catalog.js
+++ b/shared/catalog.js
@@ -39,7 +39,25 @@ function isShowroomVendor(p) {
   return SHOWROOM_VENDORS.includes(String(p.vendor).trim().toLowerCase());
 }
 
-const CLEAN = RAW.filter(p => !isJunk(p) && !isShowroomVendor(p));
+// Product-level showroom TAG (TK-11307). A shared-vendor showroom line (MDC under the
+// shared "Phillipe Romano" label, which also carries SELLABLE lines) is hidden from
+// microsite grids by its "Showroom" tag, WITHOUT hiding the vendor's sellable products.
+// Until now MDC was excluded only incidentally via the display_variant junk rule — this
+// makes the exclusion rule-based. Mirrors fix-live-board's isShowroomProduct, kept local
+// so the deployed fleet stays self-contained.
+function isShowroomTagged(p) {
+  const tags = p.tags;
+  const arr = Array.isArray(tags) ? tags : (typeof tags === 'string' ? tags.split(',') : []);
+  return arr.some(t => String(t).trim().toLowerCase() === 'showroom');
+}
+
+// A product is showroom-only (addressable-but-not-discoverable) if its vendor is on the
+// list OR it carries the Showroom tag.
+function isShowroomProduct(p) {
+  return isShowroomVendor(p) || isShowroomTagged(p);
+}
+
+const CLEAN = RAW.filter(p => !isJunk(p) && !isShowroomProduct(p));
 
 // --- product-type normalization ---
 function normType(t) {
@@ -89,4 +107,4 @@ function siteExtras(slug) {
   } catch { return []; }
 }
 
-module.exports = { RAW, CLEAN, isJunk, isShowroomVendor, normType, nicheSlice, siteExtras, count: CLEAN.length };
+module.exports = { RAW, CLEAN, isJunk, isShowroomVendor, isShowroomTagged, isShowroomProduct, normType, nicheSlice, siteExtras, count: CLEAN.length };

← ddc73f9 add .trim() to isShowroomVendor vendor string comparison (TK  ·  back to Dw Domain Fleet  ·  auto-data-snapshot: 2026-09-09T08:26:36 (1 data files) — dat 8d99c6c →