[object Object]

← back to Wild Wallcoverings

Skip button also regenerates the SKU (fires /api/regen + live status; un-skip does not re-fire)

0de8a586250d6ca01a56c7153723b1782a502e43 · 2026-07-22 20:44:47 -0700 · Steve Abrams

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Files touched

Diff

commit 0de8a586250d6ca01a56c7153723b1782a502e43
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jul 22 20:44:47 2026 -0700

    Skip button also regenerates the SKU (fires /api/regen + live status; un-skip does not re-fire)
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---
 public/index.html | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/public/index.html b/public/index.html
index a9899e1..cb9eb9c 100644
--- a/public/index.html
+++ b/public/index.html
@@ -154,10 +154,13 @@ function render() {
         </div>`).join('') +
       `</div></div>
       <div class="rowactions">
-        <button class="skip" onclick="choose('${d.id}','none')">Skip — none of these</button>
+        <button class="skip" title="records the skip AND regenerates 3 fresh versions (~$0.12)"
+          onclick="skipRegen('${d.id}')">Skip — none of these</button>
         <button class="skip" style="border-color:#5a7;color:#8fc9a8" title="~$0.12 — 3 fresh versions, all rules applied"
           onclick="regen('${d.id}', this)">🔄 Regenerate — give me 3 new versions</button>
-        ${chosenFile === 'none' ? '<span class="status">skipped</span>' : ''}
+        ${regenning.has(d.id)
+          ? '<span class="status">⏳ skipped — 3 fresh versions generating (~$0.12, ~2 min)…</span>'
+          : chosenFile === 'none' ? '<span class="status">skipped</span>' : ''}
       </div>`;
     board.appendChild(el);
   }
@@ -172,6 +175,20 @@ function zoom(src) {
 // selections stay LOCAL (pending) until GO is pressed
 let pending = JSON.parse(localStorage.getItem('whimsical.pending') || '{}');
 
+// Skip — none of these ALSO regenerates the SKU (Steve 2026-07-22).
+// Tracked here (not on the button) because choose() re-renders the board.
+const regenning = new Set();
+async function skipRegen(id) {
+  const wasSkipped = pending[id] === 'none';
+  choose(id, 'none');
+  if (wasSkipped || pending[id] !== 'none') return;  // un-skip → no regen
+  regenning.add(id);
+  render();
+  try { await fetch('/api/regen', { method: 'POST', body: JSON.stringify({ id }) }); }
+  catch { regenning.delete(id); render(); return; }
+  setTimeout(() => { regenning.delete(id); load(); }, 150000);  // fresh set lands
+}
+
 function choose(id, variant) {
   if (pending[id] === variant) delete pending[id];   // click again to unselect
   else pending[id] = variant;

← 3b219e7 seamless pass2 script: aggressive denoise for stubborn files  ·  back to Wild Wallcoverings  ·  auto-save: 2026-07-22T20:46:37 (5 files) — data/choices.json d84e1fb →