← back to Quadrille Showroom
chore: lint, refactor, v1.3.0 (session close)
3ac09a0b59892afba5165a08ce3a1600d6696ac8 · 2026-07-02 08:16:17 -0700 · Steve
- hoist crypto require to module top (drop 2 inline requires)
- age handler == null -> === null (strict-equality consistency)
- version 1.2.2 -> 1.3.0 (sample-request submit feature landed this session)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Files touched
M package-lock.jsonM package.jsonM public/js/showroom.jsM server.js
Diff
commit 3ac09a0b59892afba5165a08ce3a1600d6696ac8
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Jul 2 08:16:17 2026 -0700
chore: lint, refactor, v1.3.0 (session close)
- hoist crypto require to module top (drop 2 inline requires)
- age handler == null -> === null (strict-equality consistency)
- version 1.2.2 -> 1.3.0 (sample-request submit feature landed this session)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---
package-lock.json | 4 ++--
package.json | 2 +-
public/js/showroom.js | 2 +-
server.js | 3 +--
4 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 7e787d5..77ff195 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "quadrille-showroom",
- "version": "1.2.2",
+ "version": "1.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "quadrille-showroom",
- "version": "1.2.2",
+ "version": "1.3.0",
"license": "ISC",
"dependencies": {
"compression": "^1.8.1",
diff --git a/package.json b/package.json
index e4dea79..f8206d8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "quadrille-showroom",
- "version": "1.2.2",
+ "version": "1.3.0",
"main": "server.js",
"scripts": {
"start": "node server.js",
diff --git a/public/js/showroom.js b/public/js/showroom.js
index 801fae6..7e1494b 100644
--- a/public/js/showroom.js
+++ b/public/js/showroom.js
@@ -3914,7 +3914,7 @@ function initHUD() {
const v = ageInput.value.trim();
const n = v === '' ? null : Math.max(0, Math.min(120, parseInt(v, 10) || 0));
visitorAge = n;
- if (n == null) localStorage.removeItem('qh_visitor_age');
+ if (n === null) localStorage.removeItem('qh_visitor_age');
else localStorage.setItem('qh_visitor_age', String(n));
});
}
diff --git a/server.js b/server.js
index df5f8e0..e51a313 100644
--- a/server.js
+++ b/server.js
@@ -3,6 +3,7 @@ const helmet = require('helmet');
const compression = require('compression');
const path = require('path');
const fs = require('fs');
+const crypto = require('crypto');
const app = express();
app.use(helmet({ contentSecurityPolicy: false }));
@@ -187,7 +188,6 @@ app.post('/api/sample-request', (req, res) => {
const notes = clampMulti(b.notes, 2000);
const created_at = new Date().toISOString();
- const crypto = require('crypto');
const id = 'sr_' + crypto.createHash('sha1')
.update(created_at + JSON.stringify(samples)).digest('hex').slice(0, 12);
const record = { id, created_at, ip: req.ip || null, age, samples, contact, notes };
@@ -280,7 +280,6 @@ app.get('/api/thumb', async (req, res) => {
const url = req.query.url;
// Cache key by source + width
- const crypto = require('crypto');
const ck = crypto.createHash('sha1').update((sku || url || '') + '|' + w).digest('hex').slice(0, 24);
const cacheFile = path.join(THUMB_CACHE, ck + '.jpg');
try {
← fb869a9 Wire the George email picker for sample requests (sending ga
·
back to Quadrille Showroom
·
5x sweep 1: retry transient upstream in /api/thumb (cold-cac d9cf3b2 →