[object Object]

← back to Consulting Rentv Com

slideshow: deck view of the deliverable at /slideshow (parses /portal into full-screen slides) + Present button; verified 19 slides render, no errors

64a81959f9a35eced71d2de5792d229518163dd7 · 2026-07-26 08:47:24 -0700 · Steve Abrams

Files touched

Diff

commit 64a81959f9a35eced71d2de5792d229518163dd7
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sun Jul 26 08:47:24 2026 -0700

    slideshow: deck view of the deliverable at /slideshow (parses /portal into full-screen slides) + Present button; verified 19 slides render, no errors
---
 build.mjs             | 1 +
 public/portal.html    | 1 +
 public/slideshow.html | 9 +++++++--
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/build.mjs b/build.mjs
index 81ba964..29846ba 100644
--- a/build.mjs
+++ b/build.mjs
@@ -824,6 +824,7 @@ function initDesk(){
 fetch('/portal/videos/heygen-brandfilm.mp4',{method:'HEAD'}).then(function(r){if(r.ok){var v=document.getElementById('heyfilm');v.src='/portal/videos/heygen-brandfilm.mp4';v.play();var p=document.getElementById('heyph');if(p)p.style.display='none';}}).catch(function(){});
 document.querySelectorAll('.f5').forEach(function(c){var k=c.getAttribute('data-key'),src='/portal/videos/heygen-'+k+'.mp4';fetch(src,{method:'HEAD'}).then(function(r){if(r.ok){var v=c.querySelector('video');v.src=src;v.play();var p=c.querySelector('.fph');if(p)p.style.display='none';}}).catch(function(){});});
 </script>
+<a href="/slideshow" style="position:fixed;bottom:20px;right:20px;z-index:60;background:#c6a765;color:#12100e;font-family:system-ui,-apple-system,sans-serif;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:11px 18px;border-radius:4px;text-decoration:none;box-shadow:0 8px 24px rgba(0,0,0,.45)">▶ Present</a>
 </body></html>`;
 
 writeFileSync(`${OUT}/portal.html`, app);
diff --git a/public/portal.html b/public/portal.html
index 41024c6..f5ab40a 100644
--- a/public/portal.html
+++ b/public/portal.html
@@ -585,4 +585,5 @@ function initDesk(){
 fetch('/portal/videos/heygen-brandfilm.mp4',{method:'HEAD'}).then(function(r){if(r.ok){var v=document.getElementById('heyfilm');v.src='/portal/videos/heygen-brandfilm.mp4';v.play();var p=document.getElementById('heyph');if(p)p.style.display='none';}}).catch(function(){});
 document.querySelectorAll('.f5').forEach(function(c){var k=c.getAttribute('data-key'),src='/portal/videos/heygen-'+k+'.mp4';fetch(src,{method:'HEAD'}).then(function(r){if(r.ok){var v=c.querySelector('video');v.src=src;v.play();var p=c.querySelector('.fph');if(p)p.style.display='none';}}).catch(function(){});});
 </script>
+<a href="/slideshow" style="position:fixed;bottom:20px;right:20px;z-index:60;background:#c6a765;color:#12100e;font-family:system-ui,-apple-system,sans-serif;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:11px 18px;border-radius:4px;text-decoration:none;box-shadow:0 8px 24px rgba(0,0,0,.45)">▶ Present</a>
 </body></html>
\ No newline at end of file
diff --git a/public/slideshow.html b/public/slideshow.html
index 4c9882c..8b22147 100644
--- a/public/slideshow.html
+++ b/public/slideshow.html
@@ -54,7 +54,12 @@
   function esc(s){var d=document.createElement('div');d.textContent=s==null?'':String(s);return d.innerHTML;}
   function txt(el){return el?el.textContent.replace(/\s+/g,' ').trim():'';}
 
-  fetch('/portal').then(function(r){return r.ok?r.text():Promise.reject(r.status);}).then(function(html){
+  // The deliverable lives at /portal on template-based portals, or at / on the
+  // originals (car-wash, fantasea). Try /portal, fall back to /.
+  var deliverableUrl='/portal';
+  function load(url){return fetch(url).then(function(r){if(!r.ok)return Promise.reject(r.status);deliverableUrl=url;return r.text();});}
+  load('/portal').catch(function(){return load('/');}).then(function(html){
+    var exit=document.querySelector('.exit'); if(exit) exit.href=deliverableUrl;
     var doc=new DOMParser().parseFromString(html,'text/html');
     var out=[];
     // Cover slide from the deliverable's hero (h1 + first hero paragraph) or title.
@@ -110,7 +115,7 @@
     if(e.key==='ArrowRight'||e.key===' '||e.key==='PageDown'){e.preventDefault();next();}
     else if(e.key==='ArrowLeft'||e.key==='PageUp'){e.preventDefault();prev();}
     else if(e.key==='Home'){go(0);} else if(e.key==='End'){go(slides.length-1);}
-    else if(e.key==='Escape'){location.href='/portal';}
+    else if(e.key==='Escape'){location.href=deliverableUrl;}
   });
   // touch swipe
   var x0=null;

← aa47540 auto-save: 2026-07-26T08:41:50 (2 files) — server.js public/  ·  back to Consulting Rentv Com  ·  slideshow: XSS-safe cover head (whitelist br/span sanitizer, 9ae2327 →