← back to Designer Wallcoverings
cadence-import: delete dead <li> spec-list blocks (TK-10039 hardening)
f321a5a0c030faa51093acae8014dec1017dbec5 · 2026-07-29 20:11:06 -0700 · steve
The specs.push('<li>...') blocks in buildSampleOnlyInput + buildInput were
already discarded by 'void specs' — descriptionHtml is prose-only. Removing
the dead code so a future edit can't accidentally re-wire it into body_html
and re-introduce the list-format defect TK-10030 cleaned fleet-wide.
Files touched
M shopify/scripts/cadence/cadence-import.js
Diff
commit f321a5a0c030faa51093acae8014dec1017dbec5
Author: steve <steve@designerwallcoverings.com>
Date: Wed Jul 29 20:11:06 2026 -0700
cadence-import: delete dead <li> spec-list blocks (TK-10039 hardening)
The specs.push('<li>...') blocks in buildSampleOnlyInput + buildInput were
already discarded by 'void specs' — descriptionHtml is prose-only. Removing
the dead code so a future edit can't accidentally re-wire it into body_html
and re-introduce the list-format defect TK-10030 cleaned fleet-wide.
---
shopify/scripts/cadence/cadence-import.js | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/shopify/scripts/cadence/cadence-import.js b/shopify/scripts/cadence/cadence-import.js
index fd45b5bd..f3ebaba0 100644
--- a/shopify/scripts/cadence/cadence-import.js
+++ b/shopify/scripts/cadence/cadence-import.js
@@ -491,12 +491,6 @@ function buildSampleOnlyInput(vendor, cfg, row, activate) {
const SL='single_line_text_field', ML='multi_line_text_field';
let vendorDesc = String(row.vendor_desc || '').trim();
if (/^(\\N|null|undefined)$/i.test(vendorDesc)) vendorDesc = '';
- const specs = [];
- if (row.material) specs.push(`<li><strong>Material:</strong> ${esc(row.material)}</li>`);
- if (row.width) specs.push(`<li><strong>Width:</strong> ${esc(row.width)}</li>`);
- if (row.roll_length) specs.push(`<li><strong>Roll Length:</strong> ${esc(row.roll_length)}</li>`);
- if (row.pattern_repeat) specs.push(`<li><strong>Repeat:</strong> ${esc(row.pattern_repeat)}</li>`);
- if (row.collection) specs.push(`<li><strong>Collection:</strong> ${esc(row.collection)}</li>`);
const safeVendor = scrubBanned(vendor);
const safeCollection = scrubBanned(row.collection);
let intro = vendorDesc
@@ -508,7 +502,6 @@ function buildSampleOnlyInput(vendor, cfg, row, activate) {
.replace(/Wallcoverings/g,'Fabrics').replace(/wallcoverings/g,'fabrics')
.replace(/Wallcovering/g,'Fabric').replace(/wallcovering/g,'fabric');
// specs live in metafields (rendered by product-description-meta.liquid), NEVER a body list (TK-10039)
- void specs;
const descriptionHtml = `<p>${intro}</p>`;
// Metafields — NO cost (there is none). Width/specs where present, brand, sku, pattern, color.
@@ -640,12 +633,6 @@ function buildInput(vendor, cfg, row, retail, activate) {
const typeWord = /fabric/i.test(productType) ? 'Fabric' : 'Wallcoverings'; // mixed-type vendors (Anna French): fabric rows must not be titled "Wallcoverings"
const title = `${core} ${typeWord} | ${vendor}`.replace(/wallpaper/gi,'Wallcovering');
const handle = (`${core}-${row.dw_sku}`).toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-+|-+$/g,'').slice(0,100);
- const specs = [];
- if (row.material) specs.push(`<li><strong>Material:</strong> ${esc(row.material)}</li>`);
- if (row.width) specs.push(`<li><strong>Width:</strong> ${esc(row.width)}</li>`);
- if (row.roll_length) specs.push(`<li><strong>Roll Length:</strong> ${esc(row.roll_length)}</li>`);
- if (row.pattern_repeat) specs.push(`<li><strong>Repeat:</strong> ${esc(row.pattern_repeat)}</li>`);
- specs.push(`<li><strong>Sold By:</strong> ${esc(soldBy)}</li>`);
const safeVendor = scrubBanned(vendor);
const safeCollection = scrubBanned(row.collection);
const intro = `${pattern}${color?' in '+color:''} is a designer ${/fabric/i.test(productType)?'fabric':'wallcovering'}${safeCollection?' from the '+esc(safeCollection)+' collection':''} by ${safeVendor}. Priced per ${soldBy.toLowerCase()}.`;
@@ -682,7 +669,6 @@ function buildInput(vendor, cfg, row, retail, activate) {
// stays DRAFT and is TAGGED Needs-Specs / Needs-Description / Needs-Image so it's
// fixable later — never a broken product on the storefront.
// specs live in metafields (rendered by product-description-meta.liquid), NEVER a body list (TK-10039)
- void specs;
const descriptionHtml = `<p>${esc(intro)}</p>`;
const gate = validateBeforeActivate({
title, vendor, dwSku: row.dw_sku, descriptionHtml, // vendor → INTERNAL guard (registry vendor never activates)
← b99dbd61 auto-save: 2026-07-29T17:10:49 (1 files) — shopify/scripts/c
·
back to Designer Wallcoverings
·
chore: image-gate sweep hardening per code review — check DE b05ee055 →