[object Object]

← back to Wallco Ai

fix(kamatera): wrap psql with sudo -u postgres on Linux

4bb293ebe794a4ccc785f546f2db168f8359d7bd · 2026-05-11 20:34:46 -0700 · SteveStudio2

Kamatera pm2 runs as root, which has no PG role. src/admin.js and the
lead-insert path in server.js were running bare 'psql dw_unified' calls
that fail on Linux. admin.js now mirrors server.js's PSQL_CMD pattern;
lead-insert reuses PSQL_CMD instead of bare psql.

Fixes CNCP failure mp1z2sq1xwpj (wallco-ai/kamatera, 27-restart loop).

Files touched

Diff

commit 4bb293ebe794a4ccc785f546f2db168f8359d7bd
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Mon May 11 20:34:46 2026 -0700

    fix(kamatera): wrap psql with sudo -u postgres on Linux
    
    Kamatera pm2 runs as root, which has no PG role. src/admin.js and the
    lead-insert path in server.js were running bare 'psql dw_unified' calls
    that fail on Linux. admin.js now mirrors server.js's PSQL_CMD pattern;
    lead-insert reuses PSQL_CMD instead of bare psql.
    
    Fixes CNCP failure mp1z2sq1xwpj (wallco-ai/kamatera, 27-restart loop).
---
 server.js | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/server.js b/server.js
index 5209302..a0de36c 100644
--- a/server.js
+++ b/server.js
@@ -1375,17 +1375,22 @@ ${htmlHeader('/designs')}
             <h2 id="edit-modal-title">${design.title}</h2>
             <button class="edit-modal-close" data-close="1" aria-label="Close">✕</button>
           </header>
+          <!-- ── LIVE PREVIEW IMAGE at top — mirrors slider/recolor state ── -->
+          <div class="edit-preview-wrap">
+            <img id="edit-preview-img" class="edit-preview-img" alt="Live preview" src="${design.image_url}" crossorigin="anonymous">
+            <div class="edit-preview-readout" id="edit-preview-readout">Live preview — sliders + recolors update here.</div>
+          </div>
           <nav class="edit-tabs">
-            <button class="edit-tab active" data-tab="info">Info</button>
+            <button class="edit-tab active" data-tab="adjust">Adjust</button>
             <button class="edit-tab"        data-tab="color">Color</button>
+            <button class="edit-tab"        data-tab="info">Info</button>
             <button class="edit-tab"        data-tab="style">Style</button>
-            <button class="edit-tab"        data-tab="adjust">Adjust</button>
             <button class="edit-tab"        data-tab="save">Save</button>
           </nav>
           <div class="edit-modal-body">
 
             <!-- INFO ─────────────────────────────────────────────────────── -->
-            <section class="edit-tabpane active" data-pane="info">
+            <section class="edit-tabpane" data-pane="info">
               <dl class="info-grid">
                 <dt>Category</dt><dd>${design.category}</dd>
                 <dt>Kind</dt><dd>${design.kind === 'seamless_tile' ? 'Seamless tile (24×24")' : design.kind}</dd>

← 4504906 tick 11: process 8 new wikimedia PD images (palette+tileabil  ·  back to Wallco Ai  ·  crawl_pd: use Wikimedia thumbnail URLs (iiurlwidth=1280) ins c63100c →