[object Object]

← back to Wallco Ai

fliepaper-bugs admin grid: created date+time chip (standing rule #2)

47c3b30ab71676915ff8868f26acae888a06d20d · 2026-06-03 09:26:47 -0700 · Steve

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 47c3b30ab71676915ff8868f26acae888a06d20d
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Jun 3 09:26:47 2026 -0700

    fliepaper-bugs admin grid: created date+time chip (standing rule #2)
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 YOLO_BACKLOG.md                  | 2 +-
 public/admin/fliepaper-bugs.html | 3 +++
 src/fliepaper-bugs.js            | 1 +
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/YOLO_BACKLOG.md b/YOLO_BACKLOG.md
index 32a17b9..e5bd67c 100644
--- a/YOLO_BACKLOG.md
+++ b/YOLO_BACKLOG.md
@@ -126,7 +126,7 @@ Pacing: ScheduleWakeup ~1800s dynamic. **Mural batch PARKED** — it costs Repli
 $ per mural + the low-res demotion is customer-facing; both await Steve's go.
 
 ## Queue
-- [ ] **Q1 · fliepaper-bugs.html** — admin record grid, missing the created date+time chip (standing rule #2)
+- [x] **Q1 · fliepaper-bugs.html** — 2026-06-03 09:26 · added created date+time chip (🕓 fmtDate, full ISO in title=) per standing rule #2. API now carries c.created_at; .when chip + CSS in admin grid. Validated: local API returns created_at 36/36, node -c clean. Local only (deploy gated).
 - [ ] **Q2 · build-mural-master.py --estimate** — zero-spend dry-run cost estimator (ESRGAN tiles + outpaint calls × per-call $) so Steve sees the batch cost before approving
 - [ ] **Q3 · curated top-12 Monterey manifest** — read-only DB select → JSON so the paid batch is one command away on return
 - [ ] opportunistic local code-health as found
diff --git a/public/admin/fliepaper-bugs.html b/public/admin/fliepaper-bugs.html
index 31b8a30..1efd741 100644
--- a/public/admin/fliepaper-bugs.html
+++ b/public/admin/fliepaper-bugs.html
@@ -72,6 +72,7 @@
   }
   .cell .actions button.danger { background: var(--bad); }
   .cell .err { font-size: 10px; color: var(--bad); margin-top: 4px; line-height: 1.3; max-height: 36px; overflow: hidden; }
+  .cell .when { font-size: 10px; color: #8a8378; margin-top: 4px; white-space: nowrap; }
 
   #toast {
     position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%);
@@ -114,6 +115,7 @@ function toast(msg, isErr) {
   setTimeout(() => t.className = '', 4500);
 }
 function escHtml(s){ return String(s||'').replace(/[&<>"]/g, c => ({ '&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;' }[c])); }
+function fmtDate(ts){ if(!ts) return ''; const d=new Date(ts); if(isNaN(d)) return ''; return d.toLocaleString(undefined,{year:'numeric',month:'short',day:'numeric',hour:'numeric',minute:'2-digit'}); }
 
 async function loadData() {
   const r = await fetch('/api/collections/fliepaper-bugs' + AUTH_QS);
@@ -170,6 +172,7 @@ function render(data) {
               ? `<button data-action="violation" data-design-id="${cell.design_id}" data-cell-id="${cell.id}" class="danger">⚠ Violation</button>`
               : `<button disabled title="No design yet">⚠ Violation</button>`}
           </div>
+          ${cell.created_at ? `<div class="when" title="${escHtml(cell.created_at)}">🕓 ${escHtml(fmtDate(cell.created_at))}</div>` : ''}
           ${errLine}
         </div>
       </td>`;
diff --git a/src/fliepaper-bugs.js b/src/fliepaper-bugs.js
index ef5fa40..e2d05ee 100644
--- a/src/fliepaper-bugs.js
+++ b/src/fliepaper-bugs.js
@@ -116,6 +116,7 @@ function readCells() {
       SELECT c.id, c.pattern_slug, c.pattern_name, c.bug, c.scale, c.colorway_slug,
              c.colorway_name, c.colorway_hex, c.colorway_role, c.gucci_ref, c.status,
              c.design_id, c.thumbnail_url, c.last_error, c.regen_count, c.generated_at,
+             c.created_at,
              c.settlement_verdict, c.composition,
              CASE WHEN d.local_path IS NOT NULL
                   THEN '/designs/img/' || regexp_replace(d.local_path, '^.*/', '')

← 6e65e8c loop tick2: UNSTABLE flag benign, designer-scenic 363 root-c  ·  back to Wallco Ai  ·  loop tick3: 2867 never-gated analysis — prompt triage unreli 1327a3c →