[object Object]

← back to Dead Agentabrams

Music room: make the concert video visible — pull scene canvases down under a video backdrop + a yt-hero state where the fallback video dominates (TK-11178)

93937cc5e43e5f01128c2fbd0ddcbf61cf7e90f0 · 2026-09-03 10:46:15 -0700 · Steve (via Claude)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012XLgczMhQr91Ad5jL38JM4

Files touched

Diff

commit 93937cc5e43e5f01128c2fbd0ddcbf61cf7e90f0
Author: Steve (via Claude) <steve@designerwallcoverings.com>
Date:   Thu Sep 3 10:46:15 2026 -0700

    Music room: make the concert video visible — pull scene canvases down under a video backdrop + a yt-hero state where the fallback video dominates (TK-11178)
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_012XLgczMhQr91Ad5jL38JM4
---
 room/index.html | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/room/index.html b/room/index.html
index 0b92e26..6326671 100644
--- a/room/index.html
+++ b/room/index.html
@@ -29,8 +29,12 @@
   #venueVideo iframe,#venueVideo>div{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
     width:100vw;height:56.25vw;min-height:100vh;min-width:177.78vh;border:0;pointer-events:none}
   #stage.video-bg #venueVideo{opacity:1}
-  #stage.video-bg #sky{opacity:.20}
-  #stage.video-bg #scene{opacity:.66}
+  #stage.video-bg #sky{opacity:.12}
+  #stage.video-bg #scene{opacity:.42}
+  /* YouTube fallback = the video IS the show → let the concert footage dominate the frame */
+  #stage.video-bg.yt-hero #sky{opacity:.04}
+  #stage.video-bg.yt-hero #scene{opacity:.16}
+  #stage.video-bg.yt-hero #orb{opacity:.5}
   .btn:disabled,button:disabled{opacity:.42;cursor:not-allowed}
   /* construction-paper grain — the cutout/South-Park texture over the whole scene */
   .grain{position:fixed;inset:0;pointer-events:none;z-index:5;opacity:.10;mix-blend-mode:overlay;
@@ -1704,7 +1708,7 @@ function pickVideoFor(s){
 const VB={ mode:'off', ready:false, player:null, curId:null, wantId:null, wantPlay:false, wantMuted:true, venueOn:true };
 const _stageEl=document.getElementById('stage');
 function _vbShow(){ if(VB.venueOn && VB.wantId) _stageEl.classList.add('video-bg'); }
-function _vbHide(){ _stageEl.classList.remove('video-bg'); }
+function _vbHide(){ _stageEl.classList.remove('video-bg'); _stageEl.classList.remove('yt-hero'); }
 function _loadYTApi(){
   if(window.YT && window.YT.Player){ VB.ready=true; _buildPlayer(); return; }
   if(!document.getElementById('yt-iframe-api')){
@@ -1778,6 +1782,7 @@ function _primeYTUnlock(){
 // archive mode: the real SBD tape plays from <audio>; the concert video is a MUTED visual backdrop.
 function enterArchiveMode(show){
   VB.mode='archive';
+  _stageEl.classList.remove('yt-hero');                   // scene is the star when the real SBD tape is the audio
   if(typeof reactBtn!=='undefined' && reactBtn){ reactBtn.disabled=false; reactBtn.removeAttribute('title'); }
   vbSetVideo(show,{play:true,muted:true});
 }
@@ -1789,6 +1794,7 @@ function enterYouTubeFallback(show, hadGesture){
   // Prefer the gesture captured BEFORE the metadata await (transient activation expires in ~5s); else read it live.
   const hasAct=(hadGesture!=null) ? !!hadGesture : !!(navigator.userActivation ? navigator.userActivation.isActive : false);
   vbSetVideo(show,{play:true,muted:!hasAct});                    // gesture → sound now; cold load → muted+visible
+  _stageEl.classList.add('yt-hero');                            // the concert video IS the show now → let it dominate the frame
   if(!hasAct) _primeYTUnlock();
   const v=MR_VIDEOS.find(x=>x.id===VB.wantId)||{};
   $('mrNow').textContent='▶ '+(v.title?('Grateful Dead — '+v.title):'Grateful Dead (YouTube)');

← 6b68f71 Add a standalone Videos section, independent of archive.org/  ·  back to Dead Agentabrams  ·  Music room UI: collapse the sprawling controls into a hambur e9d46a6 →