[object Object]

← back to Chinoiseriewallpaper

remove DW vendor leaks from customer UI

f031da94ed49aac9e22e7895505a51ebb0ad6d4b · 2026-05-25 20:54:07 -0700 · Steve Abrams

- drop .card-vendor render in site.js (was exposing p.vendor on every card)
- drop "By Vendor" + "vendor-desc" sort options
- drop p.vendor from search filter (title + tags only)
- drop unused .card-vendor CSS rule
- drop "vendor" from search-input placeholder

Standing rule (MEMORY.md 2026-05-20): DW vendor names never in
customer-facing UI.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit f031da94ed49aac9e22e7895505a51ebb0ad6d4b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon May 25 20:54:07 2026 -0700

    remove DW vendor leaks from customer UI
    
    - drop .card-vendor render in site.js (was exposing p.vendor on every card)
    - drop "By Vendor" + "vendor-desc" sort options
    - drop p.vendor from search filter (title + tags only)
    - drop unused .card-vendor CSS rule
    - drop "vendor" from search-input placeholder
    
    Standing rule (MEMORY.md 2026-05-20): DW vendor names never in
    customer-facing UI.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
 public/css/site.css | 6 ------
 public/index.html   | 3 +--
 public/js/site.js   | 1 -
 server.js           | 5 ++---
 4 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/public/css/site.css b/public/css/site.css
index 99cc8a8..bac57f7 100644
--- a/public/css/site.css
+++ b/public/css/site.css
@@ -464,12 +464,6 @@ select:focus { border-color: var(--gold); }
   -webkit-box-orient: vertical;
   overflow: hidden;
 }
-.card-vendor {
-  font-size: 11px;
-  color: var(--ink-faint);
-  letter-spacing: 0.04em;
-  margin-bottom: 10px;
-}
 .dots {
   display: flex;
   gap: 4px;
diff --git a/public/index.html b/public/index.html
index d450457..84d9ac6 100644
--- a/public/index.html
+++ b/public/index.html
@@ -219,7 +219,7 @@
   <div class="controls-bar">
     <div class="search-wrap">
       <svg class="search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
-      <input type="search" id="searchInput" placeholder="Search by name, vendor, motif…" autocomplete="off">
+      <input type="search" id="searchInput" placeholder="Search by name or motif…" autocomplete="off">
     </div>
 
     <div class="filter-wrap">
@@ -250,7 +250,6 @@
         <option value="title">Title A–Z</option>
         <option value="price-asc">Price ↑</option>
         <option value="price-desc">Price ↓</option>
-        <option value="vendor">By Vendor</option>
       </select>
     </div>
 
diff --git a/public/js/site.js b/public/js/site.js
index 01c2cd0..6eb9357 100644
--- a/public/js/site.js
+++ b/public/js/site.js
@@ -137,7 +137,6 @@ function buildCard(p) {
     <div class="card-body">
       <div class="card-aesthetic">${escHtml(aesthetic)}</div>
       <div class="card-title">${escHtml(p.title)}</div>
-      <div class="card-vendor">${escHtml(p.vendor || '')}</div>
       ${dotsHtml}
       <div class="card-footer">
         ${priceDisplay}
diff --git a/server.js b/server.js
index d8770a4..cb7d8b4 100644
--- a/server.js
+++ b/server.js
@@ -179,7 +179,6 @@ function styleKey(p) {
 function sortProducts(list, mode) {
   if (mode === 'sku')        return [...list].sort((a,b) => String(a.sku||a.handle||'').localeCompare(String(b.sku||b.handle||'')));
   if (mode === 'title')      return [...list].sort((a,b) => String(a.title||'').localeCompare(String(b.title||'')));
-  if (mode === 'vendor')     return [...list].sort((a,b) => String(a.vendor||'').localeCompare(String(b.vendor||'')));
   if (mode === 'color')      return [...list].sort((a,b) => colorRank(a) - colorRank(b) || String(a.title||'').localeCompare(String(b.title||'')));
   if (mode === 'style')      return [...list].sort((a,b) => styleKey(a).localeCompare(styleKey(b)) || String(a.title||'').localeCompare(String(b.title||'')));
   if (mode === 'light-dark') return [...list].sort((a,b) => luminance(b) - luminance(a));
@@ -190,7 +189,6 @@ function sortProducts(list, mode) {
   // List-view sortable columns — every column sortable in both directions.
   if (mode === 'title-desc')     return [...list].sort((a,b) => String(b.title||'').localeCompare(String(a.title||'')));
   if (mode === 'sku-desc')       return [...list].sort((a,b) => String(b.sku||b.handle||'').localeCompare(String(a.sku||a.handle||'')));
-  if (mode === 'vendor-desc')    return [...list].sort((a,b) => String(b.vendor||'').localeCompare(String(a.vendor||'')) || String(a.title||'').localeCompare(String(b.title||'')));
   if (mode === 'aesthetic')      return [...list].sort((a,b) => String(a.aesthetic||'').localeCompare(String(b.aesthetic||'')) || String(a.title||'').localeCompare(String(b.title||'')));
   if (mode === 'aesthetic-desc') return [...list].sort((a,b) => String(b.aesthetic||'').localeCompare(String(a.aesthetic||'')) || String(a.title||'').localeCompare(String(b.title||'')));
   return list; // 'newest' — server's natural order
@@ -223,9 +221,10 @@ app.get('/api/products', (req, res) => {
 
   if (q) {
     const needle = q.toLowerCase();
+    // Vendor names intentionally excluded from search to keep DW vendor identity
+    // out of customer-facing surfaces (standing rule, MEMORY.md 2026-05-20).
     list = list.filter(p =>
       (p.title  || '').toLowerCase().includes(needle) ||
-      (p.vendor || '').toLowerCase().includes(needle) ||
       (p.tags   || []).some(t => t.toLowerCase().includes(needle))
     );
   }

← 78c4d98 pull-from-shopify: use shared classifier with rails primary,  ·  back to Chinoiseriewallpaper  ·  add noreferrer to every target=_blank link e041ec6 →