← back to Pattern Vault
chore: lint, refactor, v0.2.3 (session close)
a337213b08b25ad6124797c3b311e6bb3fa94a02 · 2026-07-16 10:27:38 -0700 · Steve
Files touched
M package-lock.jsonM package.jsonM whimsical-compare/daily/scripts/upload_sf.js
Diff
commit a337213b08b25ad6124797c3b311e6bb3fa94a02
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Jul 16 10:27:38 2026 -0700
chore: lint, refactor, v0.2.3 (session close)
---
package-lock.json | 4 ++--
package.json | 2 +-
whimsical-compare/daily/scripts/upload_sf.js | 7 ++++---
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 4716a9e..3cd32a2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "pattern-vault",
- "version": "0.2.2",
+ "version": "0.2.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pattern-vault",
- "version": "0.2.2",
+ "version": "0.2.3",
"dependencies": {
"express": "^4.19.0"
}
diff --git a/package.json b/package.json
index a1d32d9..18945d1 100644
--- a/package.json
+++ b/package.json
@@ -1 +1 @@
-{"name":"pattern-vault","version":"0.2.2","private":true,"scripts":{"start":"node server.js"},"dependencies":{"express":"^4.19.0"}}
\ No newline at end of file
+{"name":"pattern-vault","version":"0.2.3","private":true,"scripts":{"start":"node server.js"},"dependencies":{"express":"^4.19.0"}}
\ No newline at end of file
diff --git a/whimsical-compare/daily/scripts/upload_sf.js b/whimsical-compare/daily/scripts/upload_sf.js
index 64b506f..d0124a5 100755
--- a/whimsical-compare/daily/scripts/upload_sf.js
+++ b/whimsical-compare/daily/scripts/upload_sf.js
@@ -25,6 +25,7 @@ const path = require('path');
const os = require('os');
const MANIFEST = process.argv[2];
+if (!MANIFEST) { console.log(JSON.stringify({ error: 'usage: upload_sf.js <manifest.json> [--armed]', uploaded: [], failed: [] })); process.exit(1); }
const ARMED = process.argv.includes('--armed');
// DEFAULT TRANSPORT = Browserbase cloud Chrome (residential proxy + native Cloudflare/captcha
// solving). It runs entirely in the cloud — NO local browser window ever opens, and it never
@@ -39,8 +40,7 @@ const EMAIL = process.env.SPOONFLOWER_EMAIL || rzEnv.SPOONFLOWER_EMAIL;
const PASSWORD = process.env.SPOONFLOWER_PASSWORD || rzEnv.SPOONFLOWER_PASSWORD;
// Persistent session path (was /tmp/sf-state.json — /tmp is wiped on reboot, which
// silently expired the Spoonflower session every restart). Override with SF_STATE.
-const STATE = process.env.SF_STATE || require('path').join(require('os').homedir(), '.config/pattern-vault/sf-state.json');
-const UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/126 Safari/537.36';
+const STATE = process.env.SF_STATE || path.join(os.homedir(), '.config/pattern-vault/sf-state.json');
const rnd = (a, b) => Math.floor(a + Math.random() * (b - a));
const sleep = ms => new Promise(r => setTimeout(r, ms));
@@ -48,7 +48,8 @@ const sleep = ms => new Promise(r => setTimeout(r, ms));
async function humanType(el, text) {
for (const ch of text) {
if (Math.random() < 0.06) { // typo then correct
- const wrong = 'asdfghjkl'[rnd(0, 9)];
+ const TYPO_CHARS = 'asdfghjkl';
+ const wrong = TYPO_CHARS[rnd(0, TYPO_CHARS.length)];
await el.type(wrong, { delay: rnd(40, 140) });
await sleep(rnd(120, 400));
await el.press('Backspace');
← 42412e9 spoonflower: default to Browserbase cloud (no local Chrome);
·
back to Pattern Vault
·
design-trend-scout: refresh trend board 2026-07-20 (correct f053b3d →