[object Object]

← back to Wallco Ai

room: user-adjustable wall-size slider (default 13.5ft) + fullscreen toggle

45b818c0d5ed49def2925be6c5efe06b416fb35d · 2026-05-27 16:41:00 -0700 · Steve Abrams

- WALL_INCHES now a slider (8′–18′, step 0.5′), default 13.5ft (162in); persists.
  Rulers, pinstripes, repeat-count + roomtag all recompute live on change.
- ⛶ Fullscreen button (toggleFS) in header. keydown guards INPUT so slider arrows
  don't fire hot/not. Verified: 13.5′ default, slider→16′ recomputes, no errors.

Files touched

Diff

commit 45b818c0d5ed49def2925be6c5efe06b416fb35d
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed May 27 16:41:00 2026 -0700

    room: user-adjustable wall-size slider (default 13.5ft) + fullscreen toggle
    
    - WALL_INCHES now a slider (8′–18′, step 0.5′), default 13.5ft (162in); persists.
      Rulers, pinstripes, repeat-count + roomtag all recompute live on change.
    - ⛶ Fullscreen button (toggleFS) in header. keydown guards INPUT so slider arrows
      don't fire hot/not. Verified: 13.5′ default, slider→16′ recomputes, no errors.
---
 public/admin/drunk-curator.html | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/public/admin/drunk-curator.html b/public/admin/drunk-curator.html
index 3636684..a53c58f 100644
--- a/public/admin/drunk-curator.html
+++ b/public/admin/drunk-curator.html
@@ -101,6 +101,7 @@
   <label style="display:flex;align-items:center;gap:6px;font-size:12px;color:var(--mut);cursor:pointer;user-select:none;">
     <input type="checkbox" id="autotoggle"> 🔍 Auto-ID <span style="color:#6a737d">(Gemini ~$.003/item)</span>
   </label>
+  <button id="fsbtn" title="toggle fullscreen" onclick="toggleFS()" style="background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:7px;padding:5px 10px;font-size:13px;cursor:pointer">⛶ Fullscreen</button>
   <div class="stats">
     <span>seen <b id="seen">0</b></span><span>🔥 hot <b id="hot">0</b></span>
     <span>👎 not <b id="not">0</b></span><span class="streak" id="streak"></span>
@@ -135,7 +136,19 @@ let QUEUE=[], i=0, hot=0, not=0, streak=0, decided={};
 const SCALE_WIDTHS = [24, 36, 54];   // only these print widths — no slider
 const snapScale = n => SCALE_WIDTHS.reduce((a,b)=>Math.abs(b-n)<Math.abs(a-n)?b:a, 36);
 let scaleInches = snapScale(parseInt(localStorage.getItem('drunk_scale_in'))||36);
-const WALL_INCHES = 144;  // the room pane represents a 12ft × 12ft room (Steve 2026-05-27) — repeat shows at true relative size
+// room wall size in inches — user-adjustable via slider; default 13.5 ft (Steve 2026-05-27)
+let WALL_INCHES = Math.min(216, Math.max(96, parseInt(localStorage.getItem('drunk_wall_in')) || 162));
+function setWallInches(n){
+  WALL_INCHES = Math.min(216, Math.max(96, parseInt(n) || 162));
+  localStorage.setItem('drunk_wall_in', WALL_INCHES);
+  const lab=document.getElementById('wallval'); if(lab) lab.textContent=(WALL_INCHES/12).toFixed(WALL_INCHES%12?1:0)+'′';
+  applyScale();
+}
+function toggleFS(){
+  const el=document.documentElement;
+  if(!document.fullscreenElement){ (el.requestFullscreen||el.webkitRequestFullscreen||function(){}).call(el); }
+  else { (document.exitFullscreen||document.webkitExitFullscreen||function(){}).call(document); }
+}
 const FURN = ['console', 'sofa', 'bed'];  // furniture silhouettes the "Furniture" button cycles for staging/scale
 let furnIdx = (parseInt(localStorage.getItem('drunk_furn')) || 0) % FURN.length;
 // "Furniture" → render a REAL furnished room scene for THIS design via /api/room
@@ -373,6 +386,7 @@ function render(){
       <button class="sb" data-in="36" onclick="setScale(36)">36″</button>
       <button class="sb" data-in="54" onclick="setScale(54)">54″</button>
       <span><b id="scalenum">${scaleInches}</b>″ repeat · ruler in inches</span>
+      <span style="margin-left:18px">🧱 Wall <input type="range" id="wallslider" min="96" max="216" step="6" value="${WALL_INCHES}" oninput="setWallInches(this.value)" style="width:130px;accent-color:var(--hot);vertical-align:middle"> <b id="wallval">${(WALL_INCHES/12).toFixed(WALL_INCHES%12?1:0)}′</b></span>
     </div>
     <div class="meta"><span>#${d.id} · ${d.category||''}</span><span>🕓 ${fmtDate(d.created_at)}</span></div>
     <div class="prompt" onclick="this.classList.toggle('open')">${(d.prompt||'').replace(/</g,'&lt;').slice(0,240)}</div>
@@ -463,7 +477,7 @@ async function forcePublish(id){
   }catch{ flash('⚠'); }
 }
 document.addEventListener('keydown',e=>{ const k=e.key.toLowerCase();
-  if(e.target.tagName==='SELECT')return;
+  if(e.target.tagName==='SELECT'||e.target.tagName==='INPUT')return;
   if(k===','||e.key==='[')return go(-1);          // prev — skip back without deciding
   if(k==='.'||e.key===']')return go(1);           // next — skip forward without deciding
   if(e.key==='ArrowRight'||k==='h')decide('hot'); else if(e.key==='ArrowLeft'||k==='n')decide('not');

← 152132e drunk-curator: click pattern to enlarge (1x/2x/3x repeat lig  ·  back to Wallco Ai  ·  reroll geometric-block-leaves via programmatic SVG tessellat 22eba6a →