← 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
M public/admin/drunk-curator.html
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,'<').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 →