← back to Designer Wallcoverings
security: strip hardcoded secret -> env-first/passwordless. No rotation/deploy.
20d1ed5b228c318c1d443f4ed66753702a208c2b · 2026-06-22 09:24:04 -0700 · Steve
Files touched
M DW-Programming/VendorDashboard-V2/server.jsM shopify/_cwGRID/assets/dw-product.cssM shopify/scripts/innovations-pattern-sweep.jsM shopify/scripts/vendor-disco-draft.jsM shopify/scripts/vendor-pdp-probe.js
Diff
commit 20d1ed5b228c318c1d443f4ed66753702a208c2b
Author: Steve <steve@designerwallcoverings.com>
Date: Mon Jun 22 09:24:04 2026 -0700
security: strip hardcoded secret -> env-first/passwordless. No rotation/deploy.
---
DW-Programming/VendorDashboard-V2/server.js | 2 +-
shopify/_cwGRID/assets/dw-product.css | 11 +++++++++--
shopify/scripts/innovations-pattern-sweep.js | 2 +-
shopify/scripts/vendor-disco-draft.js | 2 +-
shopify/scripts/vendor-pdp-probe.js | 2 +-
5 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/DW-Programming/VendorDashboard-V2/server.js b/DW-Programming/VendorDashboard-V2/server.js
index 516b3767..7e519ca7 100644
--- a/DW-Programming/VendorDashboard-V2/server.js
+++ b/DW-Programming/VendorDashboard-V2/server.js
@@ -11,7 +11,7 @@ const PORT = 9832; // New port for V2
// stale Dec snapshot of only 106 — kept here purely as an offline fallback.
const pool = new Pool({
connectionString: process.env.DATABASE_URL ||
- 'postgresql://dw_admin:DW2024SecurePass@127.0.0.1:5432/dw_unified',
+ 'postgresql://dw_admin@127.0.0.1:5432/dw_unified',
max: 4,
connectionTimeoutMillis: 5000,
});
diff --git a/shopify/_cwGRID/assets/dw-product.css b/shopify/_cwGRID/assets/dw-product.css
index 3922e801..cf94991a 100644
--- a/shopify/_cwGRID/assets/dw-product.css
+++ b/shopify/_cwGRID/assets/dw-product.css
@@ -184,7 +184,14 @@ h1.product-title {
color: #333 !important;
}
-/* Quantity selector */
+/* Quantity selector — compact, left-aligned */
+.quantity-selector {
+ display: flex !important;
+ align-items: center !important;
+ gap: 0 !important;
+ width: fit-content !important;
+}
+
.mm_quantity .input-text.qty,
.mm_quantity .qty,
.product-quantity-box input,
@@ -192,7 +199,7 @@ h1.product-title {
font-size: 14px !important;
font-weight: 600 !important;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
- width: 48px !important;
+ width: 40px !important;
text-align: center !important;
}
diff --git a/shopify/scripts/innovations-pattern-sweep.js b/shopify/scripts/innovations-pattern-sweep.js
index a9e258c8..9a40be67 100644
--- a/shopify/scripts/innovations-pattern-sweep.js
+++ b/shopify/scripts/innovations-pattern-sweep.js
@@ -39,7 +39,7 @@ const ambiguous = (name, slug) => /\d/.test(slug) || /\b(\d+(\.\d+)?)\b/.test(na
(async () => {
// catalog: mfr -> stored product_url (for authoritative slug)
- const rows = JSON.parse(execSync(`PGPASSWORD=DW2024SecurePass psql -h 127.0.0.1 -U dw_admin -d dw_unified -tAc "SELECT COALESCE(json_agg(json_build_object('mfr',upper(trim(mfr_sku)),'url',product_url)),'[]') FROM innovations_catalog WHERE product_url IS NOT NULL AND product_url<>'';"`).toString().trim());
+ const rows = JSON.parse(execSync(`PGPASSWORD=${process.env.PGPASSWORD||''} psql -h 127.0.0.1 -U dw_admin -d dw_unified -tAc "SELECT COALESCE(json_agg(json_build_object('mfr',upper(trim(mfr_sku)),'url',product_url)),'[]') FROM innovations_catalog WHERE product_url IS NOT NULL AND product_url<>'';"`).toString().trim());
const urlByMfr = {}; for (const r of rows) if (r.mfr) urlByMfr[r.mfr] = r.url;
const slugFromUrl = u => { const m = (u||'').match(/\/item\/([^/]+)\//); return m ? m[1].toLowerCase() : null; };
diff --git a/shopify/scripts/vendor-disco-draft.js b/shopify/scripts/vendor-disco-draft.js
index 4752d50d..d567a6fa 100644
--- a/shopify/scripts/vendor-disco-draft.js
+++ b/shopify/scripts/vendor-disco-draft.js
@@ -42,7 +42,7 @@ const UPDATE = `mutation($id:ID!){productUpdate(input:{id:$id,status:DRAFT}){pro
(async () => {
// url map from catalog keyed by BOTH gid and mfr (mfr_sku + arte_sku) -> product_url
- const rows = JSON.parse(execSync(`PGPASSWORD=DW2024SecurePass psql -h 127.0.0.1 -U dw_admin -d dw_unified -tAc "SELECT COALESCE(json_agg(json_build_object('gid',shopify_product_id,'mfr',upper(trim(mfr_sku)),'url',product_url)),'[]') FROM ${TABLE} WHERE product_url IS NOT NULL AND product_url<>'';"`).toString().trim());
+ const rows = JSON.parse(execSync(`PGPASSWORD=${process.env.PGPASSWORD||''} psql -h 127.0.0.1 -U dw_admin -d dw_unified -tAc "SELECT COALESCE(json_agg(json_build_object('gid',shopify_product_id,'mfr',upper(trim(mfr_sku)),'url',product_url)),'[]') FROM ${TABLE} WHERE product_url IS NOT NULL AND product_url<>'';"`).toString().trim());
const urlByGid = {}, urlByMfr = {};
for (const r of rows) { if (r.gid) urlByGid[r.gid] = r.url; if (r.mfr) urlByMfr[r.mfr] = r.url; }
diff --git a/shopify/scripts/vendor-pdp-probe.js b/shopify/scripts/vendor-pdp-probe.js
index ac676293..be255f68 100644
--- a/shopify/scripts/vendor-pdp-probe.js
+++ b/shopify/scripts/vendor-pdp-probe.js
@@ -5,7 +5,7 @@ const { execSync } = require('child_process');
const sleep = ms => new Promise(r => setTimeout(r, ms));
const TBL = process.argv[2], N = parseInt(process.argv[3] || '30');
const sql = `SELECT product_url FROM ${TBL} WHERE on_shopify IS TRUE AND product_url IS NOT NULL AND product_url<>'' ORDER BY updated_at DESC NULLS LAST LIMIT ${N};`;
-const urls = execSync(`PGPASSWORD=DW2024SecurePass psql -h 127.0.0.1 -U dw_admin -d dw_unified -tAc "${sql}"`).toString().trim().split('\n').filter(Boolean);
+const urls = execSync(`PGPASSWORD=${process.env.PGPASSWORD||''} psql -h 127.0.0.1 -U dw_admin -d dw_unified -tAc "${sql}"`).toString().trim().split('\n').filter(Boolean);
async function status(url){
try { const r = await fetch(url,{method:'GET',redirect:'manual',headers:{'User-Agent':'Mozilla/5.0'},signal:AbortSignal.timeout(15000)}); return r.status; }
catch(e){ return 'ERR:'+(e.name||'x'); }
← dd3905fd Designtex UOM fix: recheck + 5-product canary relabel Single
·
back to Designer Wallcoverings
·
Add 'Trending Wallcovering Collection 2026' and 'display_var c842dadf →