← 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
M public/css/site.cssM public/index.htmlM public/js/site.jsM server.js
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 →