← back to Quadrille Showroom
chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)
17535f58e713078d8c5c04c2788c85ddeb5a7ee4 · 2026-07-03 08:08:13 -0700 · Steve
Files touched
M cta/cta-harness.jsM cta/cta-v1-harness.jsM cta/targeted-test.jsM scripts/clickthrough-showroom.mjsM scripts/diag-probe.mjsM scripts/probe-boot-scene.mjsM scripts/record-boot-walk.mjsM scripts/record-carousel.mjsM scripts/record-table.mjsM scripts/shot-chunkK-avatar.mjsM scripts/shot-clad-realgpu.mjsM scripts/shot-numbers-realgpu.mjsM scripts/shot-pins-tight.mjsM scripts/verify-bootrace.mjsM scripts/verify-carousel.mjsM scripts/verify-openface.mjsM scripts/verify-qh6.mjsM scripts/verify-roomtypes.mjsM scripts/verify-scene-render.mjsM scripts/verify-slice2-spec-legal.mjsM scripts/verify-slice2.mjsM scripts/verify-slice3-fps-realgpu.mjsM scripts/verify-slice3.mjsM scripts/verify-sort-density-persist.mjsM scripts/verify-table-view.mjsM scripts/verify-walls-on-next.mjs
Diff
commit 17535f58e713078d8c5c04c2788c85ddeb5a7ee4
Author: Steve <steve@designerwallcoverings.com>
Date: Fri Jul 3 08:08:13 2026 -0700
chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)
---
cta/cta-harness.js | 12 ++++++------
cta/cta-v1-harness.js | 12 ++++++------
cta/targeted-test.js | 4 ++--
scripts/clickthrough-showroom.mjs | 2 +-
scripts/diag-probe.mjs | 2 +-
scripts/probe-boot-scene.mjs | 2 +-
scripts/record-boot-walk.mjs | 2 +-
scripts/record-carousel.mjs | 2 +-
scripts/record-table.mjs | 2 +-
scripts/shot-chunkK-avatar.mjs | 4 ++--
scripts/shot-clad-realgpu.mjs | 4 ++--
scripts/shot-numbers-realgpu.mjs | 4 ++--
scripts/shot-pins-tight.mjs | 4 ++--
scripts/verify-bootrace.mjs | 4 ++--
scripts/verify-carousel.mjs | 4 ++--
scripts/verify-openface.mjs | 4 ++--
scripts/verify-qh6.mjs | 2 +-
scripts/verify-roomtypes.mjs | 2 +-
scripts/verify-scene-render.mjs | 4 ++--
scripts/verify-slice2-spec-legal.mjs | 4 ++--
scripts/verify-slice2.mjs | 4 ++--
scripts/verify-slice3-fps-realgpu.mjs | 2 +-
scripts/verify-slice3.mjs | 4 ++--
scripts/verify-sort-density-persist.mjs | 4 ++--
scripts/verify-table-view.mjs | 4 ++--
scripts/verify-walls-on-next.mjs | 2 +-
26 files changed, 50 insertions(+), 50 deletions(-)
diff --git a/cta/cta-harness.js b/cta/cta-harness.js
index 0178abe..423fc05 100644
--- a/cta/cta-harness.js
+++ b/cta/cta-harness.js
@@ -13,7 +13,7 @@ const https = require('https');
const http = require('http');
const BASE = 'http://127.0.0.1:7690';
-const OUTDIR = '/Users/stevestudio2/Projects/quadrille-showroom/cta';
+const OUTDIR = '/Users/macstudio3/Projects/quadrille-showroom/cta';
const SHOTS = path.join(OUTDIR, 'shots');
const RECS = path.join(OUTDIR, 'rec');
@@ -625,7 +625,7 @@ async function runEngine(engineName, browser, results, browserbaseReplay) {
async function runBrowserbase(results) {
log('browserbase', 'Checking credentials...');
let envRaw = '';
- try { envRaw = fs.readFileSync('/Users/stevestudio2/.claude/skills/browserbase/.env', 'utf8'); } catch (e) {
+ try { envRaw = fs.readFileSync('/Users/macstudio3/.claude/skills/browserbase/.env', 'utf8'); } catch (e) {
results.push({ component: 'Browserbase', engine: 'browserbase', rendered: false, worked: false,
errors: 0, notes: 'SKIPPED: .env not found' });
log('browserbase', 'SKIPPED: .env not found');
@@ -825,7 +825,7 @@ function generateReport(results, bbReplay, engineErrors) {
let md = `# CTA Report — Quadrille Showroom\n`;
md += `**Date:** ${new Date().toISOString()}\n`;
md += `**Target:** ${BASE}\n`;
- md += `**Project:** /Users/stevestudio2/Projects/quadrille-showroom\n\n`;
+ md += `**Project:** /Users/macstudio3/Projects/quadrille-showroom\n\n`;
// BROKEN section at top
const anyBroken = engines.some(e => broken[e].length > 0);
@@ -891,9 +891,9 @@ function generateReport(results, bbReplay, engineErrors) {
// Recordings
md += `\n## Recordings & Screenshots\n`;
- md += `- Chrome recording: /Users/stevestudio2/Projects/quadrille-showroom/cta/rec/chrome.mp4 (or .webm)\n`;
- md += `- Safari recording: /Users/stevestudio2/Projects/quadrille-showroom/cta/rec/safari.mp4 (or .webm)\n`;
- md += `- Screenshots: /Users/stevestudio2/Projects/quadrille-showroom/cta/shots/{chrome,safari,browserbase}/\n\n`;
+ md += `- Chrome recording: /Users/macstudio3/Projects/quadrille-showroom/cta/rec/chrome.mp4 (or .webm)\n`;
+ md += `- Safari recording: /Users/macstudio3/Projects/quadrille-showroom/cta/rec/safari.mp4 (or .webm)\n`;
+ md += `- Screenshots: /Users/macstudio3/Projects/quadrille-showroom/cta/shots/{chrome,safari,browserbase}/\n\n`;
// Verdict
const chromePass = results.filter(r => r.engine === 'chrome').every(r => r.rendered && r.worked);
diff --git a/cta/cta-v1-harness.js b/cta/cta-v1-harness.js
index 115d4e3..b6a3f9a 100644
--- a/cta/cta-v1-harness.js
+++ b/cta/cta-v1-harness.js
@@ -25,7 +25,7 @@ const path = require('path');
const https = require('https');
const BASE = 'http://127.0.0.1:7690';
-const OUTDIR = '/Users/stevestudio2/Projects/quadrille-showroom/cta';
+const OUTDIR = '/Users/macstudio3/Projects/quadrille-showroom/cta';
const SHOTS = path.join(OUTDIR, 'shots');
const RECS = path.join(OUTDIR, 'rec');
@@ -749,7 +749,7 @@ async function runEngine(engineName, browser, results) {
async function runBrowserbase(results) {
log('browserbase', 'Checking credentials...');
let envRaw = '';
- try { envRaw = fs.readFileSync('/Users/stevestudio2/.claude/skills/browserbase/.env', 'utf8'); }
+ try { envRaw = fs.readFileSync('/Users/macstudio3/.claude/skills/browserbase/.env', 'utf8'); }
catch (e) {
results.push({ component: 'Browserbase', engine: 'browserbase', rendered: false, worked: false,
errors: 0, notes: 'SKIPPED: .env not found', errDetails: [] });
@@ -801,7 +801,7 @@ function generateReport(results, bbReplay, engineErrors) {
let md = `# CTA Report — Quadrille Showroom V1 Definitive Build\n`;
md += `**Date:** ${new Date().toISOString()}\n`;
md += `**Target:** ${BASE}\n`;
- md += `**Project:** /Users/stevestudio2/Projects/quadrille-showroom\n\n`;
+ md += `**Project:** /Users/macstudio3/Projects/quadrille-showroom\n\n`;
// BROKEN section at top
const chromeBroken = broken.chrome || [];
@@ -900,9 +900,9 @@ function generateReport(results, bbReplay, engineErrors) {
// Recordings
md += `\n## Recordings & Screenshots\n`;
- md += `- Chrome recording: /Users/stevestudio2/Projects/quadrille-showroom/cta/rec/chrome.mp4 (or .webm)\n`;
- md += `- Safari recording: /Users/stevestudio2/Projects/quadrille-showroom/cta/rec/safari.mp4 (or .webm)\n`;
- md += `- Screenshots dir: /Users/stevestudio2/Projects/quadrille-showroom/cta/shots/\n\n`;
+ md += `- Chrome recording: /Users/macstudio3/Projects/quadrille-showroom/cta/rec/chrome.mp4 (or .webm)\n`;
+ md += `- Safari recording: /Users/macstudio3/Projects/quadrille-showroom/cta/rec/safari.mp4 (or .webm)\n`;
+ md += `- Screenshots dir: /Users/macstudio3/Projects/quadrille-showroom/cta/shots/\n\n`;
// Verdict
const chromeResults = results.filter(r => r.engine === 'chrome');
diff --git a/cta/targeted-test.js b/cta/targeted-test.js
index 7e09085..8573e29 100644
--- a/cta/targeted-test.js
+++ b/cta/targeted-test.js
@@ -3,7 +3,7 @@ const {chromium, webkit} = require('playwright');
const fs = require('fs');
const path = require('path');
-const SHOTS = '/Users/stevestudio2/Projects/quadrille-showroom/cta/shots';
+const SHOTS = '/Users/macstudio3/Projects/quadrille-showroom/cta/shots';
async function testEngine(eng, launcher) {
console.log('\n=== ENGINE:', eng, '===');
@@ -476,6 +476,6 @@ async function testEngine(eng, launcher) {
}
// Save JSON results
- fs.writeFileSync('/Users/stevestudio2/Projects/quadrille-showroom/cta/targeted-results.json', JSON.stringify(allResults, null, 2));
+ fs.writeFileSync('/Users/macstudio3/Projects/quadrille-showroom/cta/targeted-results.json', JSON.stringify(allResults, null, 2));
console.log('\nResults saved to cta/targeted-results.json');
})().catch(e => { console.error('FATAL:', e); process.exit(1); });
diff --git a/scripts/clickthrough-showroom.mjs b/scripts/clickthrough-showroom.mjs
index 93fa0aa..816ac66 100644
--- a/scripts/clickthrough-showroom.mjs
+++ b/scripts/clickthrough-showroom.mjs
@@ -16,7 +16,7 @@
* Run: NODE_PATH=$HOME/.npm-global/lib/node_modules node scripts/clickthrough-showroom.mjs
* Exit 0 = clean; 1 = real defects (printed + JSON); 2 = crash.
* ========================================================================== */
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
diff --git a/scripts/diag-probe.mjs b/scripts/diag-probe.mjs
index 9ee3367..57c85de 100644
--- a/scripts/diag-probe.mjs
+++ b/scripts/diag-probe.mjs
@@ -5,7 +5,7 @@
// measure how many screen pixels of clad SIDE/BACK wall are visible (raycast a grid
// of screen points into the scene; count hits on a roomWall mesh that carries a clad
// material map). NO setMode('room'), NO park(), NO camera move.
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
const browser = await chromium.launch({ args: ['--use-gl=angle','--use-angle=swiftshader','--enable-webgl','--ignore-gpu-blocklist'] });
const page = await browser.newPage({ viewport: { width: 1440, height: 900 } });
diff --git a/scripts/probe-boot-scene.mjs b/scripts/probe-boot-scene.mjs
index c3ba6ac..487641b 100644
--- a/scripts/probe-boot-scene.mjs
+++ b/scripts/probe-boot-scene.mjs
@@ -1,4 +1,4 @@
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
const errors = [];
diff --git a/scripts/record-boot-walk.mjs b/scripts/record-boot-walk.mjs
index 7c928cc..7c1f4a0 100644
--- a/scripts/record-boot-walk.mjs
+++ b/scripts/record-boot-walk.mjs
@@ -17,7 +17,7 @@
*
* Run: node scripts/record-boot-walk.mjs
*/
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync, existsSync, renameSync, writeFileSync } from 'fs';
import { execFileSync } from 'child_process';
diff --git a/scripts/record-carousel.mjs b/scripts/record-carousel.mjs
index 062ad53..23b8215 100644
--- a/scripts/record-carousel.mjs
+++ b/scripts/record-carousel.mjs
@@ -22,7 +22,7 @@
*
* Run: node scripts/record-carousel.mjs
*/
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync, existsSync, renameSync, writeFileSync } from 'fs';
import { execFileSync } from 'child_process';
diff --git a/scripts/record-table.mjs b/scripts/record-table.mjs
index cfdfb43..f162944 100644
--- a/scripts/record-table.mjs
+++ b/scripts/record-table.mjs
@@ -1,7 +1,7 @@
// record-table.mjs — screen-record the "At the Table" view (Phase 3):
// enter table mode → add samples from a few different boards → drag one → click a
// board to center the design. Playwright chromium + recordVideo, webm→mp4.
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
import { execSync } from 'node:child_process';
import fs from 'node:fs';
const { chromium } = pw;
diff --git a/scripts/shot-chunkK-avatar.mjs b/scripts/shot-chunkK-avatar.mjs
index c56f969..4b1ebfa 100644
--- a/scripts/shot-chunkK-avatar.mjs
+++ b/scripts/shot-chunkK-avatar.mjs
@@ -3,10 +3,10 @@
// runs the asserts: camera.position constant across yaw (posDelta 0), body present +
// yaw-only parented (rig pitch 0 even when camera pitches down), 50 boards, click still
// → carousel + 4-wall clad, errorCount 0, room = 20'×20'.
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/chunkK';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/chunkK';
mkdirSync(OUT, { recursive: true });
const errors = [];
diff --git a/scripts/shot-clad-realgpu.mjs b/scripts/shot-clad-realgpu.mjs
index fa78684..aeb67d1 100644
--- a/scripts/shot-clad-realgpu.mjs
+++ b/scripts/shot-clad-realgpu.mjs
@@ -1,10 +1,10 @@
// Real-GPU headed screenshot of a SELECTED state — proves the off-thread clad path
// renders the walls right-side-up (CanvasTexture flipY) + the hero opens. Also a
// room-preview shot so the side/back clad walls fill frame for visual inspection.
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/slice3';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/slice3';
mkdirSync(OUT, { recursive: true });
const browser = await chromium.launch({ channel: 'chrome', headless: false, args: ['--use-angle=metal', '--ignore-gpu-blocklist', '--window-size=1440,900'] });
diff --git a/scripts/shot-numbers-realgpu.mjs b/scripts/shot-numbers-realgpu.mjs
index bece053..070f9ff 100644
--- a/scripts/shot-numbers-realgpu.mjs
+++ b/scripts/shot-numbers-realgpu.mjs
@@ -1,10 +1,10 @@
// Real-GPU headed screenshot of "① Numbers ON" — pins visibly bearing their
// globally-unique 1000QH<version> code chips. Also a tight DOM crop of one pin so
// the code text is unambiguous in the proof, plus a JSON dump of the rendered codes.
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/slice3';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/slice3';
mkdirSync(OUT, { recursive: true });
const browser = await chromium.launch({ channel: 'chrome', headless: false, args: ['--use-angle=metal', '--ignore-gpu-blocklist', '--window-size=1440,900'] });
diff --git a/scripts/shot-pins-tight.mjs b/scripts/shot-pins-tight.mjs
index 11e39bb..a7240a9 100644
--- a/scripts/shot-pins-tight.mjs
+++ b/scripts/shot-pins-tight.mjs
@@ -1,9 +1,9 @@
// Tight, legible real-GPU proof of the code chips: open all V1 pin labels, read each
// pin's on-screen bounding box, screenshot the union region (clip) so the 1000QHV1…
// code chips are unambiguous. Native res, no upscale.
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/slice3';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/slice3';
const browser = await chromium.launch({ channel: 'chrome', headless: false, args: ['--use-angle=metal', '--ignore-gpu-blocklist', '--window-size=1600,1000'] });
const page = await browser.newPage({ viewport: { width: 1600, height: 1000 } });
await page.goto('http://localhost:7690/', { waitUntil: 'domcontentloaded' });
diff --git a/scripts/verify-bootrace.mjs b/scripts/verify-bootrace.mjs
index 8352a64..78f2cff 100644
--- a/scripts/verify-bootrace.mjs
+++ b/scripts/verify-bootrace.mjs
@@ -8,11 +8,11 @@
// ~2.5s via route interception, then dispatch a REAL DOM click on #showroom-canvas at
// t≈1000ms (well before buildWingWall runs). We assert it queued, capture the pre-ready
// screenshot, let the bank load, then assert the queued click ended in a real selection.
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/bootrace';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/bootrace';
mkdirSync(OUT, { recursive: true });
const result = {};
diff --git a/scripts/verify-carousel.mjs b/scripts/verify-carousel.mjs
index ee55189..8da34f3 100644
--- a/scripts/verify-carousel.mjs
+++ b/scripts/verify-carousel.mjs
@@ -7,11 +7,11 @@
// - click a RIGHT-of-centre board -> carousels to centre (closes prior)
// - the CAMERA never moves across the whole interaction (posDelta ~0)
// - errorCount 0
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/carousel';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/carousel';
mkdirSync(OUT, { recursive: true });
const result = {};
diff --git a/scripts/verify-openface.mjs b/scripts/verify-openface.mjs
index 6776741..df24d55 100644
--- a/scripts/verify-openface.mjs
+++ b/scripts/verify-openface.mjs
@@ -2,11 +2,11 @@
// NO neighbour slat-bars / frames crossing it, plus a mid-swivel "flip-through" frame.
// Also computes a screen-space occlusion check: raycast a grid of points over the open
// hero's face rect and assert the FIRST hit mesh is the hero's own face (nothing in front).
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/openface';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/openface';
mkdirSync(OUT, { recursive: true });
const result = {}, errors = [];
diff --git a/scripts/verify-qh6.mjs b/scripts/verify-qh6.mjs
index e89cc26..7acb364 100644
--- a/scripts/verify-qh6.mjs
+++ b/scripts/verify-qh6.mjs
@@ -1,4 +1,4 @@
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
const errors = [];
diff --git a/scripts/verify-roomtypes.mjs b/scripts/verify-roomtypes.mjs
index db1c3b8..b4b5502 100644
--- a/scripts/verify-roomtypes.mjs
+++ b/scripts/verify-roomtypes.mjs
@@ -8,7 +8,7 @@
//
// playwright is installed globally at ~/.npm-global/lib/node_modules/playwright.
import { createRequire } from 'module';
-const require = createRequire('/Users/stevestudio2/.npm-global/lib/node_modules/');
+const require = createRequire('/Users/macstudio3/.npm-global/lib/node_modules/');
const { chromium } = require('playwright');
import fs from 'fs';
import path from 'path';
diff --git a/scripts/verify-scene-render.mjs b/scripts/verify-scene-render.mjs
index 5ba6613..616b992 100644
--- a/scripts/verify-scene-render.mjs
+++ b/scripts/verify-scene-render.mjs
@@ -6,8 +6,8 @@
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const CANDIDATES = ['playwright',
- '/Users/stevestudio2/.claude/skills/hero-readability-auditor/node_modules/playwright/index.js',
- '/Users/stevestudio2/.claude/skills/app-demo-video/node_modules/playwright/index.js'];
+ '/Users/macstudio3/.claude/skills/hero-readability-auditor/node_modules/playwright/index.js',
+ '/Users/macstudio3/.claude/skills/app-demo-video/node_modules/playwright/index.js'];
let chromium=null; for (const c of CANDIDATES){ try{({chromium}=require(c)); if(chromium)break;}catch{} }
if(!chromium){ console.error('playwright not found'); process.exit(2); }
diff --git a/scripts/verify-slice2-spec-legal.mjs b/scripts/verify-slice2-spec-legal.mjs
index 64e981f..3e4dfe7 100644
--- a/scripts/verify-slice2-spec-legal.mjs
+++ b/scripts/verify-slice2-spec-legal.mjs
@@ -18,11 +18,11 @@
// a FRESH selection STILL starts collapsed
// • camera posDelta 0 across the whole spin; yaw clamp ±72°; errorCount 0
// ============================================================
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/slice2-spec-legal';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/slice2-spec-legal';
mkdirSync(OUT, { recursive: true });
const result = {}; const errors = [];
diff --git a/scripts/verify-slice2.mjs b/scripts/verify-slice2.mjs
index 69d9967..47cb7b3 100644
--- a/scripts/verify-slice2.mjs
+++ b/scripts/verify-slice2.mjs
@@ -5,11 +5,11 @@
// - detail-expanded: expand reveals 27x27 China Seas specs
// - spin-to-clad-wall: yaw to a side wall shows the selected pattern (clad)
// - camera fixed-centre (posDelta ~0), yaw still clamped ±72°, errorCount 0
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/slice2';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/slice2';
mkdirSync(OUT, { recursive: true });
const result = {};
diff --git a/scripts/verify-slice3-fps-realgpu.mjs b/scripts/verify-slice3-fps-realgpu.mjs
index 4fab056..56c5098 100644
--- a/scripts/verify-slice3-fps-realgpu.mjs
+++ b/scripts/verify-slice3-fps-realgpu.mjs
@@ -3,7 +3,7 @@
// at single-digit FPS regardless of the app — useless for the ≥55 gate. This launches
// a HEADED Chromium with the real Apple GPU (Metal/ANGLE) so window._perf reports the
// genuine frame rate, then runs the same spin+select+version-switch sweep.
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
// Use the SYSTEM Chrome (real Apple GPU via Metal/ANGLE) — the bundled Playwright
diff --git a/scripts/verify-slice3.mjs b/scripts/verify-slice3.mjs
index 2c98e2c..cc6002a 100644
--- a/scripts/verify-slice3.mjs
+++ b/scripts/verify-slice3.mjs
@@ -15,11 +15,11 @@
// • confirm Slice-1/2 invariants still hold (posDelta 0, yaw clamp ±72°, 50 boards,
// click → 4-wall clad + hero).
// ============================================================================
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const { chromium } = pw;
import { mkdirSync } from 'fs';
-const OUT = '/Users/stevestudio2/Projects/quadrille-showroom/recordings/slice3';
+const OUT = '/Users/macstudio3/Projects/quadrille-showroom/recordings/slice3';
mkdirSync(OUT, { recursive: true });
const result = {};
diff --git a/scripts/verify-sort-density-persist.mjs b/scripts/verify-sort-density-persist.mjs
index 6638dc4..f3562e7 100644
--- a/scripts/verify-sort-density-persist.mjs
+++ b/scripts/verify-sort-density-persist.mjs
@@ -6,8 +6,8 @@ import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const CANDIDATES = [
'playwright',
- '/Users/stevestudio2/.claude/skills/hero-readability-auditor/node_modules/playwright/index.js',
- '/Users/stevestudio2/.claude/skills/app-demo-video/node_modules/playwright/index.js',
+ '/Users/macstudio3/.claude/skills/hero-readability-auditor/node_modules/playwright/index.js',
+ '/Users/macstudio3/.claude/skills/app-demo-video/node_modules/playwright/index.js',
];
let chromium=null;
for (const c of CANDIDATES){ try { ({ chromium } = require(c)); if (chromium) break; } catch {} }
diff --git a/scripts/verify-table-view.mjs b/scripts/verify-table-view.mjs
index 7a713d1..140c7e4 100644
--- a/scripts/verify-table-view.mjs
+++ b/scripts/verify-table-view.mjs
@@ -4,8 +4,8 @@
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const CANDIDATES = ['playwright',
- '/Users/stevestudio2/.claude/skills/hero-readability-auditor/node_modules/playwright/index.js',
- '/Users/stevestudio2/.claude/skills/app-demo-video/node_modules/playwright/index.js'];
+ '/Users/macstudio3/.claude/skills/hero-readability-auditor/node_modules/playwright/index.js',
+ '/Users/macstudio3/.claude/skills/app-demo-video/node_modules/playwright/index.js'];
let chromium=null; for (const c of CANDIDATES){ try{({chromium}=require(c)); if(chromium)break;}catch{} }
if(!chromium){ console.error('playwright not found'); process.exit(2); }
diff --git a/scripts/verify-walls-on-next.mjs b/scripts/verify-walls-on-next.mjs
index a7c146c..4e5bce3 100644
--- a/scripts/verify-walls-on-next.mjs
+++ b/scripts/verify-walls-on-next.mjs
@@ -1,5 +1,5 @@
/* Verify: every Next/Prev book-page clads the NEW design onto ALL 4 walls. */
-import pw from '/Users/stevestudio2/.npm-global/lib/node_modules/playwright/index.js';
+import pw from '/Users/macstudio3/.npm-global/lib/node_modules/playwright/index.js';
const URL='http://127.0.0.1:7690/';
const b=await pw.chromium.launch({channel:'chrome',args:['--use-gl=angle']});
const c=await b.newContext({viewport:{width:1280,height:820},httpCredentials:{username:'admin',password:'DWSecure2024!'}});
← e7f3b0f auto-save: 2026-07-02T11:47:40 (2 files) — public/js/rack.js
·
back to Quadrille Showroom
·
(newest)