[object Object]

← back to Debate Ring Viewer

snapshot: 6 file(s) changed, +2 new, ~4 modified

26a85f9c45a701bebdba6fc400cdf760331b8ac6 · 2026-05-13 08:57:48 -0700 · Steve

Files touched

Diff

commit 26a85f9c45a701bebdba6fc400cdf760331b8ac6
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed May 13 08:57:48 2026 -0700

    snapshot: 6 file(s) changed, +2 new, ~4 modified
---
 ecosystem.config.cjs        | 19 +++++++++++++++++++
 logs/weekly-reel.stderr.log |  1 +
 package-lock.json           | 12 +++++++++++-
 package.json                |  3 ++-
 public/favicon.svg          |  4 ++++
 src/server.js               |  3 +++
 6 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs
new file mode 100644
index 0000000..2f3a789
--- /dev/null
+++ b/ecosystem.config.cjs
@@ -0,0 +1,19 @@
+module.exports = {
+  apps: [{
+    name: "debate-ring",
+    script: "server.js",
+    cwd: __dirname,
+    env: {
+      NEXT_TELEMETRY_DISABLED: "1",
+      VITE_HOST: "0.0.0.0",
+      HOSTNAME: "0.0.0.0",
+      GUNICORN_BIND: "0.0.0.0:8000",
+      UVICORN_HOST: "0.0.0.0",
+      FLASK_RUN_HOST: "0.0.0.0",
+      BIND: "0.0.0.0",
+      HOST: "0.0.0.0",
+    },
+    autorestart: true,
+    max_memory_restart: "300M",
+  }],
+};
diff --git a/logs/weekly-reel.stderr.log b/logs/weekly-reel.stderr.log
index 6907d2b..c4a24de 100644
--- a/logs/weekly-reel.stderr.log
+++ b/logs/weekly-reel.stderr.log
@@ -58,3 +58,4 @@ SyntaxError: missing ) after argument list
     at node:internal/main/eval_string:74:3
 
 Node.js v22.14.0
+/Users/stevestudio2/Projects/debate-ring-viewer/scripts/weekly-highlight-reel.sh: line 10: GEORGE_AUTH: GEORGE_AUTH must be set (user:pass for http://localhost:9850)
diff --git a/package-lock.json b/package-lock.json
index 7086bf1..c4f9497 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,7 +8,8 @@
       "name": "debate-ring-viewer",
       "version": "0.1.0",
       "dependencies": {
-        "express": "^4.19.2"
+        "express": "^4.19.2",
+        "helmet": "^8.1.0"
       }
     },
     "node_modules/accepts": {
@@ -409,6 +410,15 @@
         "node": ">= 0.4"
       }
     },
+    "node_modules/helmet": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/helmet/-/helmet-8.1.0.tgz",
+      "integrity": "sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18.0.0"
+      }
+    },
     "node_modules/http-errors": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
diff --git a/package.json b/package.json
index c878f3e..e47313b 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
     "start": "node src/server.js"
   },
   "dependencies": {
-    "express": "^4.19.2"
+    "express": "^4.19.2",
+    "helmet": "^8.1.0"
   }
 }
diff --git a/public/favicon.svg b/public/favicon.svg
new file mode 100644
index 0000000..df58742
--- /dev/null
+++ b/public/favicon.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+<rect width="32" height="32" rx="6" fill="#10b981"/>
+<text x="50%" y="55%" text-anchor="middle" dominant-baseline="middle" font-size="20" font-family="Apple Color Emoji, Segoe UI Emoji, sans-serif" fill="white">D</text>
+</svg>
\ No newline at end of file
diff --git a/src/server.js b/src/server.js
index 3c20540..d99d6d8 100644
--- a/src/server.js
+++ b/src/server.js
@@ -2,6 +2,7 @@
 // Reads runs from ~/.claude/skills/claude-codex/runs/, exposes JSON API,
 // serves the boxing-ring SPA on :9730.
 import express from 'express';
+import helmet from 'helmet';
 import fs from 'fs/promises';
 import fsync from 'fs';
 import path from 'path';
@@ -57,6 +58,8 @@ async function readHead(fp, maxBytes) {
 }
 
 const app = express();
+// Security headers via helmet (added 2026-05-04 overnight YOLO loop)
+app.use(helmet({ contentSecurityPolicy: false }));
 app.use(express.json());
 const __dirname = path.dirname(fileURLToPath(import.meta.url));
 app.use(express.static(path.join(__dirname, '..', 'public')));

← 2b78474 untrack node_modules per standing rule (was tracking 1635 fi  ·  back to Debate Ring Viewer  ·  Link favicon.svg in head (use branded SVG, not .ico fallback 04f4c6b →