← back to Wallco Ai
wallco.ai: finish Scenic+Studio sub-brand strip — kill orphaned customer chips + trade-pricing brand text
87fa2ac626a50fc10ae7aea13d7baf1559eecf0a · 2026-05-28 13:46:45 -0700 · Steve
DTD verdict 2026-05-28 killed the Scenic+Studio sub-brand proposal. Prior
commit (aed2aa0b) removed nav entries, hospitality-chip block, and made
/scenic + /studio redirect. This pass removes the four remaining customer-
facing brand surfaces that were still rendering "wallco / Scenic" /
"wallco / Studio" text:
1. Grid card sub-brand chip ("Scenic" / "Studio" pill on every design card
in /designs)
2. PDP product-line chip ("wallco / Scenic — Photoreal hospitality mural"
pill at top of /design/:id)
3. Mural wall-sizing calculator trade-pricing CTA ("wallco / Studio" badge
+ "Studio mode —" footer + "Trade pricing inquiry — wallco / Studio"
email subject)
4. Wallpaper wall-sizing calculator trade-pricing CTA (same surface, repeat
instance)
Trade-pricing distinction kept (legitimate per memory — different price
tier), brand label replaced with neutral "Trade pricing". Email subject
now reads "Trade pricing inquiry — wallco.ai design #X".
No deploy. Steve runs deploy-kamatera.sh.
Files touched
Diff
commit 87fa2ac626a50fc10ae7aea13d7baf1559eecf0a
Author: Steve <steve@designerwallcoverings.com>
Date: Thu May 28 13:46:45 2026 -0700
wallco.ai: finish Scenic+Studio sub-brand strip — kill orphaned customer chips + trade-pricing brand text
DTD verdict 2026-05-28 killed the Scenic+Studio sub-brand proposal. Prior
commit (aed2aa0b) removed nav entries, hospitality-chip block, and made
/scenic + /studio redirect. This pass removes the four remaining customer-
facing brand surfaces that were still rendering "wallco / Scenic" /
"wallco / Studio" text:
1. Grid card sub-brand chip ("Scenic" / "Studio" pill on every design card
in /designs)
2. PDP product-line chip ("wallco / Scenic — Photoreal hospitality mural"
pill at top of /design/:id)
3. Mural wall-sizing calculator trade-pricing CTA ("wallco / Studio" badge
+ "Studio mode —" footer + "Trade pricing inquiry — wallco / Studio"
email subject)
4. Wallpaper wall-sizing calculator trade-pricing CTA (same surface, repeat
instance)
Trade-pricing distinction kept (legitimate per memory — different price
tier), brand label replaced with neutral "Trade pricing". Email subject
now reads "Trade pricing inquiry — wallco.ai design #X".
No deploy. Steve runs deploy-kamatera.sh.
---
server.js | 42 ++++++++----------------------------------
1 file changed, 8 insertions(+), 34 deletions(-)
diff --git a/server.js b/server.js
index 2a93d44..f29f36c 100644
--- a/server.js
+++ b/server.js
@@ -5860,18 +5860,7 @@ app.get('/designs', (req, res) => {
<span class="card-tags">
<span class="card-ai-badge" title="Curated-designed pattern">✦ Curated-Designed</span>
<span class="card-style">${styleTag}</span>
- ${(() => {
- // Sub-brand chip on grid card. Only renders for Scenic + Studio
- // designs; legacy categories stay unchipped.
- const _line = productLine(d);
- if (!_line) return '';
- const _bg = _line === 'Studio' ? '#1E3550' : '#7A4A28';
- const _chip = `<span class="card-line-chip" title="wallco / ${_line}" style="font-size:9px;letter-spacing:.16em;text-transform:uppercase;padding:2px 8px;background:${_bg};color:#F2EADB;border-radius:999px;font-weight:600">${_line}</span>`;
- // Hospitality sub-tag — Scenic only.
- const _fit = hospitalityFit(d);
- const _sub = _fit ? `<span class="card-hospitality-fit" style="display:block;margin-top:2px;font-style:italic;color:var(--ink-soft,#666);font:10px var(--sans,system-ui);letter-spacing:.02em">— ${_fit}</span>` : '';
- return _chip + _sub;
- })()}
+ ${''/* 2026-05-28 — sub-brand chip ("wallco / Scenic" / "wallco / Studio") + hospitality fit sub-tag removed after Scenic+Studio sub-brand proposal killed via DTD. Murals stay under core wallco branding. */}
</span>
</div>
</a>
@@ -13637,22 +13626,7 @@ ${(() => {
</script>
<h1 class="detail-title js-buyer-drawer-card">${design.title}</h1>
- ${(() => {
- // Product-line chip — Scenic (photoreal hospitality murals) or
- // Studio (flat hand-painted-silk hand-painted-silk register). Renders only
- // for designs in those two lines; legacy categories stay unchipped.
- const _line = productLine(design);
- if (!_line) return '';
- const _hue = _line === 'Studio'
- ? { bg: '#1E3550', fg: '#F2EADB' } // indigo on cream — Studio inky-luxe
- : { bg: '#7A4A28', fg: '#F2EADB' }; // burnt-umber on cream — Scenic earthy
- const _tag = _line === 'Studio' ? 'Hand-painted scenic register' : 'Photoreal hospitality mural';
- const _chip = `<a href="/${_line.toLowerCase()}" class="product-line-chip" title="${_tag}" style="display:inline-flex;align-items:center;gap:8px;margin:6px 0 8px;padding:5px 12px 5px 10px;background:${_hue.bg};color:${_hue.fg};border-radius:999px;text-decoration:none;font:11px var(--sans,system-ui);font-weight:600;letter-spacing:.10em;text-transform:uppercase">wallco / ${_line} <span style="opacity:.7;font-weight:400;text-transform:none;letter-spacing:.02em">— ${_tag}</span></a>`;
- // Hospitality sub-tag — Scenic only. Italic small-text under the chip.
- const _fit = hospitalityFit(design);
- const _sub = _fit ? `<span class="hospitality-fit" style="display:inline-block;margin-left:8px;font-style:italic;color:var(--ink-soft,#555);font:11px var(--sans,system-ui)">— for the ${_fit} aesthetic</span>` : '';
- return _chip + _sub;
- })()}
+ ${''/* 2026-05-28 — PDP product-line chip ("wallco / Scenic" / "wallco / Studio") + hospitality fit sub-tag removed after Scenic+Studio sub-brand proposal killed via DTD. Mural designs render under core wallco branding now. */}
<div class="provenance-badge js-buyer-drawer-card">
${_isAdmin ? `<span class="ai-badge">Curated-Original</span>` : ''}
@@ -14115,12 +14089,12 @@ ${(() => {
// Mural pricing: ~$12-22/sq-ft installed list (custom mural)
var lowEnd = Math.round(panels * (panelWidthIn/12) * panelHFt * 12);
var highEnd = Math.round(panels * (panelWidthIn/12) * panelHFt * 22);
- // Studio is trade-priced — swap the cost tile for a mailto CTA.
+ // Trade-priced designs get a mailto CTA instead of a public estimate.
var costTileMural = isStudio
- ? ('<div><a href="mailto:info@designerwallcoverings.com?subject=' + encodeURIComponent('Trade pricing inquiry — wallco / Studio #' + designId) + '&body=' + encodeURIComponent('Wall size: ' + w + ' ft × ' + h + ' ft (' + panels + ' panels @ ' + panelWidthIn + '" × 11 ft)\nDesign: https://wallco.ai/design/' + designId + '\n\nPlease send Studio trade pricing for this install.\n') + '" style="display:inline-block;padding:8px 12px;background:#1E3550;color:#F2EADB;text-decoration:none;font:11px var(--sans);font-weight:600;letter-spacing:.08em;text-transform:uppercase;border-radius:999px">Contact for trade pricing →</a><span style="display:block;margin-top:6px;font:11px var(--sans);color:var(--ink-faint,#999);text-transform:uppercase;letter-spacing:.06em">wallco / Studio</span></div>')
+ ? ('<div><a href="mailto:info@designerwallcoverings.com?subject=' + encodeURIComponent('Trade pricing inquiry — wallco.ai design #' + designId) + '&body=' + encodeURIComponent('Wall size: ' + w + ' ft × ' + h + ' ft (' + panels + ' panels @ ' + panelWidthIn + '" × 11 ft)\nDesign: https://wallco.ai/design/' + designId + '\n\nPlease send trade pricing for this install.\n') + '" style="display:inline-block;padding:8px 12px;background:#1E3550;color:#F2EADB;text-decoration:none;font:11px var(--sans);font-weight:600;letter-spacing:.08em;text-transform:uppercase;border-radius:999px">Contact for trade pricing →</a><span style="display:block;margin-top:6px;font:11px var(--sans);color:var(--ink-faint,#999);text-transform:uppercase;letter-spacing:.06em">Trade pricing</span></div>')
: ('<div><strong style="display:block;font:22px var(--serif,Georgia,serif);color:var(--ink,#111)">~$' + lowEnd.toLocaleString() + '–$' + highEnd.toLocaleString() + '</strong><span style="font:11px var(--sans);color:var(--ink-faint,#999);text-transform:uppercase;letter-spacing:.06em">material estimate</span></div>');
var footerMural = isStudio
- ? '<p style="margin:10px 0 0;font:11px/1.4 var(--sans);color:var(--ink-faint,#999)">Studio mode — hand-painted-silk register, trade-priced. ' + panels + ' panels (' + panelWidthIn + '" × 11 ft each). Reach info@designerwallcoverings.com for a quote.</p>'
+ ? '<p style="margin:10px 0 0;font:11px/1.4 var(--sans);color:var(--ink-faint,#999)">Trade pricing — hand-painted-silk register. ' + panels + ' panels (' + panelWidthIn + '" × 11 ft each). Reach info@designerwallcoverings.com for a quote.</p>'
: '<p style="margin:10px 0 0;font:11px/1.4 var(--sans);color:var(--ink-faint,#999)">Mural mode — panels join edge-to-edge L→R. Custom heights cropped from 11 ft panel at install. Material estimate; install separate.</p>';
html =
'<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:6px">' +
@@ -14152,12 +14126,12 @@ ${(() => {
// Wallpaper pricing: ~$5-10/sq-ft installed list
var lowEnd = Math.round(rolls * (rollWidthIn/12) * rollLengthFt * 5);
var highEnd = Math.round(rolls * (rollWidthIn/12) * rollLengthFt * 10);
- // Studio is trade-priced — hide the $X-$Y estimate entirely.
+ // Trade-priced designs hide the public $X-$Y estimate.
var costTileWp = isStudio
- ? ('<div><a href="mailto:info@designerwallcoverings.com?subject=' + encodeURIComponent('Trade pricing inquiry — wallco / Studio #' + designId) + '&body=' + encodeURIComponent('Wall size: ' + w + ' ft × ' + h + ' ft (' + rolls + ' rolls @ ' + rollWidthIn + '" × 27 ft)\nDesign: https://wallco.ai/design/' + designId + '\n\nPlease send Studio trade pricing for this install.\n') + '" style="display:inline-block;padding:8px 12px;background:#1E3550;color:#F2EADB;text-decoration:none;font:11px var(--sans);font-weight:600;letter-spacing:.08em;text-transform:uppercase;border-radius:999px">Contact for trade pricing →</a><span style="display:block;margin-top:6px;font:11px var(--sans);color:var(--ink-faint,#999);text-transform:uppercase;letter-spacing:.06em">wallco / Studio</span></div>')
+ ? ('<div><a href="mailto:info@designerwallcoverings.com?subject=' + encodeURIComponent('Trade pricing inquiry — wallco.ai design #' + designId) + '&body=' + encodeURIComponent('Wall size: ' + w + ' ft × ' + h + ' ft (' + rolls + ' rolls @ ' + rollWidthIn + '" × 27 ft)\nDesign: https://wallco.ai/design/' + designId + '\n\nPlease send trade pricing for this install.\n') + '" style="display:inline-block;padding:8px 12px;background:#1E3550;color:#F2EADB;text-decoration:none;font:11px var(--sans);font-weight:600;letter-spacing:.08em;text-transform:uppercase;border-radius:999px">Contact for trade pricing →</a><span style="display:block;margin-top:6px;font:11px var(--sans);color:var(--ink-faint,#999);text-transform:uppercase;letter-spacing:.06em">Trade pricing</span></div>')
: ('<div><strong style="display:block;font:22px var(--serif,Georgia,serif);color:var(--ink,#111)">~$' + lowEnd.toLocaleString() + '–$' + highEnd.toLocaleString() + '</strong><span style="font:11px var(--sans);color:var(--ink-faint,#999);text-transform:uppercase;letter-spacing:.06em">material estimate</span></div>');
var footerWp = isStudio
- ? '<p style="margin:10px 0 0;font:11px/1.4 var(--sans);color:var(--ink-faint,#999)">Studio mode — Studio is mural-only (panels join edge-to-edge); these wallpaper-roll numbers are a rough cross-reference. Reach info@designerwallcoverings.com for a quote.</p>'
+ ? '<p style="margin:10px 0 0;font:11px/1.4 var(--sans);color:var(--ink-faint,#999)">Trade pricing — mural-only design (panels join edge-to-edge); these wallpaper-roll numbers are a rough cross-reference. Reach info@designerwallcoverings.com for a quote.</p>'
: '<p style="margin:10px 0 0;font:11px/1.4 var(--sans);color:var(--ink-faint,#999)">Wallpaper mode — ' + rollWidthIn + '" × 27 ft rolls, ' + repeatIn + '" vertical repeat. Drop length = wall height + 1 repeat for pattern match. Material estimate; install separate.</p>';
html =
'<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:6px">' +
← aed2aa0 strip Scenic/Studio sub-brand from customer-facing surfaces
·
back to Wallco Ai
·
generate_room_mockups: add --all-published, --kind-filter, - d43deaf →