← 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
M YOLO_BACKLOG.mdM public/admin/fliepaper-bugs.htmlM src/fliepaper-bugs.js
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 => ({ '&':'&','<':'<','>':'>','"':'"' }[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 →