{"slug":"corvette-dashboard-viewer","total":23,"limit":100,"offset":0,"since":null,"commits":[{"hash":"e420244","date":"2026-08-30 22:58:27 -0700","author":"Steve Abrams","subject":"add creds-in-URL fetch guard to gated pages (TK-10984)","body":""},{"hash":"c74832b","date":"2026-08-25 10:48:55 -0700","author":"Steve","subject":"creds-safe fetch guard: resolve relative fetch vs credential-free location (creds-in-URL trap)","body":"Fleet inoculation — opening this basic-auth app with credentials in the URL\npoisoned document.baseURI and made relative fetch('/api/…') throw. Guard resolves\nnon-absolute request URLs against location instead. Ref: creds-in-url-fetch-guard-fleet-pattern.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"f45e428","date":"2026-08-13 13:43:56 -0700","author":"Steve","subject":"Move corvette console default port 9797->9803 (RENTV Live Console owns 9797)","body":""},{"hash":"3e6c8b1","date":"2026-07-28 22:22:47 -0700","author":"steve","subject":"Close /img socket leak: destroy the response on mid-body CDN stall instead of leaving it half-piped and never-ended","body":""},{"hash":"9115bd3","date":"2026-07-28 22:20:36 -0700","author":"steve","subject":"Harden now-public surface: guard /img double-writeHead (ERR_HTTP_HEADERS_SENT on CDN stall) + whitelist /api/new-items gids against log-poisoning","body":""},{"hash":"635e992","date":"2026-07-28 20:15:14 -0700","author":"steve","subject":"Make BASIC_AUTH a real env override in ecosystem.config.js (rotate liveskus cred without touching source)","body":""},{"hash":"0d3c544","date":"2026-07-28 20:10:34 -0700","author":"steve","subject":"Add fleet-standard basic auth (admin/DW2024!) for public liveskus subdomain; keep /healthz open","body":""},{"hash":"0ca6eea","date":"2026-07-28 14:12:51 -0700","author":"Steve Abrams","subject":"trip computer: live processing rate (SKUs/min) + ETA to finish color normalize on the console","body":""},{"hash":"3d45dba","date":"2026-07-28 09:59:46 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-28T09:59:38 (1 files) — assets/dash-pistons.png","body":""},{"hash":"dfe1272","date":"2026-07-28 09:34:14 -0700","author":"Steve Abrams","subject":"piston bank: small numbers (Style/Material/Collection/Label) as pumping engine cylinders — piston height = progress, glows green at 100%","body":""},{"hash":"9c81258","date":"2026-07-28 09:33:22 -0700","author":"Steve Abrams","subject":"5x: REPORT + sweeps 4-5 clean (clean-twice); feed-toggle verified","body":""},{"hash":"dcde435","date":"2026-07-28 09:30:32 -0700","author":"Steve Abrams","subject":"5x sweep 3: add inline data-URI favicon — kills /favicon.ico 404","body":""},{"hash":"5539a5c","date":"2026-07-28 09:27:18 -0700","author":"Steve Abrams","subject":"5x sweep 1: proxy live-ticker images via /img (placeholder on dead CDN asset) — kills intermittent console 404","body":""},{"hash":"bad80a3","date":"2026-07-28 09:12:44 -0700","author":"Steve Abrams","subject":"live twin gauges: speedo=SKUs normalized, tach=descriptor tags, mini=per-job counts — poll /api/stats every 3s, needles climb in real time","body":""},{"hash":"26818b3","date":"2026-07-28 09:12:18 -0700","author":"Steve Abrams","subject":"pm2-manage the console (ecosystem.config.js, reboot-safe)","body":""},{"hash":"21a046b","date":"2026-07-28 09:01:26 -0700","author":"Steve Abrams","subject":"live new-arrivals viewer (new.html + /api/new-items): newest color-normalized SKUs, top 50, deep palette + fresh descriptors + image + href, auto-refresh","body":""},{"hash":"c4c8d1a","date":"2026-07-28 09:00:31 -0700","author":"Steve Abrams","subject":"Live SKU ticker below engine (image+sku+palette, slide-in motion, processed counter) + glovebox starts collapsed; /api/new-items returns sku+image","body":""},{"hash":"c665d54","date":"2026-07-28 08:58:56 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-28T08:58:52 (2 files) — server.js public/new.html","body":""},{"hash":"8bbdd4d","date":"2026-07-28 08:50:52 -0700","author":"Steve Abrams","subject":"Harden fallback (guard snapshot JSON.parse against process crash) + honest feed cap (contrarian gate)","body":""},{"hash":"15efc4e","date":"2026-07-28 08:47:45 -0700","author":"Steve Abrams","subject":"Make console dynamic: live /api/data (shopify_color_enrichment⋈shopify_products) with true totals + snapshot fallback","body":""},{"hash":"b1bb47d","date":"2026-07-28 08:40:32 -0700","author":"Steve Abrams","subject":"Show DW SKU on glovebox cards + enrich data.json with sku (gid→dw_sku from mirror)","body":""},{"hash":"97b1505","date":"2026-07-28 08:18:04 -0700","author":"Steve Abrams","subject":"67 Corvette console: Figma design captured (file aswBuEFbP4imoq4IvigvoU); remove temp capture script; add preview art","body":""},{"hash":"c433c79","date":"2026-07-28 08:14:00 -0700","author":"Steve Abrams","subject":"67 Corvette catalog console — twin-cockpit dashboard viewer for TK-135 palettes (CSS/SVG gauges, glovebox feed)","body":""}]}