[object Object]

← back to Dead Agentabrams

room: re-apply bears+slowdown+18-show catalog (atomic, race-hardened) [TK bears]

ab66c929317122fe2a221f4b905ae9cd68cdcea4 · 2026-09-02 09:32:47 -0700 · steve@designerwallcoverings.com

Files touched

Diff

commit ab66c929317122fe2a221f4b905ae9cd68cdcea4
Author: steve@designerwallcoverings.com <steve@designerwallcoverings.com>
Date:   Wed Sep 2 09:32:47 2026 -0700

    room: re-apply bears+slowdown+18-show catalog (atomic, race-hardened) [TK bears]
---
 room/index.html | 43 ++++++++++++++++++++++++++++++++++++-------
 1 file changed, 36 insertions(+), 7 deletions(-)

diff --git a/room/index.html b/room/index.html
index ffa3b1c..66dbbad 100644
--- a/room/index.html
+++ b/room/index.html
@@ -1103,6 +1103,21 @@ function bearCub(x,y,s,t,ph,FUR){
   ctx.fillStyle=OUTLINE; ctx.beginPath(); ctx.arc(0,-29,1.1,0,7); ctx.fill();      // nose
   ctx.restore();
 }
+function drawIdleBackflipBear(scaleA, baseY){
+  const W=S.W;
+  const cross=8.5, gap=1.4, span=cross+gap;
+  const tt=S.idleT||0; const idx=Math.floor(tt/span); const local=tt%span;
+  if(local>cross) return;
+  const prog=local/cross;
+  const FUR=BEAR_COLORS[idx%BEAR_COLORS.length];
+  const size=1.55*scaleA, margin=64;
+  const x=-margin + prog*(W+margin*2);
+  const flips=3, fp=(prog*flips)%1;
+  const lift=Math.sin(fp*Math.PI)*54*scaleA;
+  const spin=-(prog*flips)*Math.PI*2;
+  ctx.save(); ctx.translate(x,(baseY+8)-lift); ctx.rotate(spin);
+  bearCub(0,0,size,(S.idleT||0)*0.8,idx*1.3,FUR); ctx.restore();
+}
 // a user-sized colorful dancing-bear troupe (1..10), auto-distributed + scaled across the shore (our own design, not the GD trademark)
 const BEAR_COLORS=['rgba(206,66,116,0.98)','rgba(232,160,52,0.98)','rgba(72,172,150,0.98)','rgba(124,110,224,0.98)','rgba(226,96,60,0.98)','rgba(96,182,96,0.98)','rgba(232,120,182,0.98)','rgba(82,158,224,0.98)','rgba(214,182,60,0.98)','rgba(154,92,204,0.98)'];
 function drawBearCubs(t,scaleA,baseY){
@@ -1251,6 +1266,7 @@ function drawPtero(dt){
 let last=performance.now();
 function frame(now){
   const dt=Math.min(0.05,(now-last)/1000); last=now;
+  S.idleT=(S.idleT||0)+dt;
 
   // live audio energy (0..1) when "React to Music" is on — otherwise motion stays authored
   const reacting = !!(window.SRM && window.SRM.react);
@@ -1264,7 +1280,7 @@ function frame(now){
 
   if(S.playing){
     const spd = S.reduced ? 0.28 : 1.0;
-    S.t += dt * S.tempo * spd * 1.4;
+    S.t += dt * S.tempo * spd * 0.85;   // slowed jazzy/groovy
 
     // Gentle auto-journey through the three chapters (until the visitor takes over)
     if(S.autoJourney && !S.reduced){
@@ -1481,13 +1497,26 @@ requestAnimationFrame(frame);
 (() => {
 "use strict";
 const CATALOG = [
-  {id:'gd69-02-27.sbd.16track.kaplan.6315.sbeok.shnf', date:'February 27, 1969', title:'Fillmore West',    sub:'San Francisco · primal psychedelic era'},
-  {id:'gd72-08-27.sbd.orf.3328.sbeok.shnf',            date:'August 27, 1972',   title:'Veneta',           sub:'Oregon · field, heat, and open sky'},
-  {id:'gd74-06-23.sbd.cribbs.16780.sbeok.shnf',        date:'June 23, 1974',     title:'Jai-Alai Fronton', sub:'Miami · Wall of Sound era'},
-  {id:'gd77-05-08.sbd.hicks.4982.sbeok.shnf',          date:'May 8, 1977',       title:'Cornell',          sub:'Ithaca · Barton Hall'},
-  {id:'gd90-03-29.aud-fob.set2.unknown.1317.sbeok.shnf',date:'March 29, 1990',   title:'Nassau',           sub:'Uniondale · late-era expansion'}
+  {id:"gd69-02-27.sbd.16track.kaplan.6315.sbeok.shnf", date:"February 27, 1969", title:"Fillmore West", sub:"San Francisco · primal psychedelic era"},
+  {id:"gd70-05-24.sbd.hanno.6481.sbeok.shnf", date:"May 24, 1970", title:"Newcastle-Under-Lyme", sub:"Newcastle · acoustic-and-electric era"},
+  {id:"gd71-04-14.sbd.lai.6250.sbefail.shnf", date:"April 14, 1971", title:"Christy Mathewson Stadium, Bucknell U.", sub:"Lewisburg · Skull & Roses era"},
+  {id:"gd72-08-27.sbd.orf.3328.sbeok.shnf", date:"August 27, 1972", title:"Veneta", sub:"Oregon · field, heat, and open sky"},
+  {id:"gd73-02-15.sbd.hall.1580.sbeok.shnf", date:"February 15, 1973", title:"Dane County Coliseum", sub:"Madison · jazz-loose / Wake of the Flood era"},
+  {id:"gd74-06-23.sbd.cribbs.16780.sbeok.shnf", date:"June 23, 1974", title:"Jai-Alai Fronton", sub:"Miami · Wall of Sound era"},
+  {id:"gd76-06-10.sbd.bertha-ashley.23370.sbeok.shnf", date:"June 10, 1976", title:"Boston Music Hall", sub:"Boston · return-from-hiatus era"},
+  {id:"gd77-05-08.sbd.hicks.4982.sbeok.shnf", date:"May 8, 1977", title:"Cornell", sub:"Ithaca · Barton Hall"},
+  {id:"gd78-02-01.sbd.parillo.1017.sbeok.shnf", date:"February 1, 1978", title:"Uptown Theater", sub:"Chicago · tight & funky late-’70s era"},
+  {id:"gd81-03-21.sbd.clugston.6666.sbeok.shnf", date:"March 21, 1981", title:"Rainbow Theatre", sub:"London · European-tour era"},
+  {id:"gd85-04-27.sbd.jerugim.359.sbeok.shnf", date:"April 27, 1985", title:"Frost Amphitheatre", sub:"Palo Alto · 20th-anniversary / Frost era"},
+  {id:"gd1987-01-28.sbd.walker-scotton.miller.83286.flac16", date:"January 28, 1987", title:"S.F Civic Auditorium", sub:"San Francisco · In the Dark comeback era"},
+  {id:"gd89-12-31.sbd.bertha-ashley.18674.sbeok.shnf", date:"December 31, 1989", title:"Oakland-Alameda County Coliseum", sub:"Oakland · late-peak / Built to Last era"},
+  {id:"gd90-03-29.aud-fob.set2.unknown.1317.sbeok.shnf", date:"March 29, 1990", title:"Nassau", sub:"Uniondale · late-era expansion"},
+  {id:"gd91-10-31.sbd.gardner.2897.sbeok.shnf", date:"October 31, 1991", title:"Oakland-Alameda County Coliseum", sub:"Oakland · post-Brent / Bruce Hornsby era"},
+  {id:"gd93-03-24.sbd.keyser.25664.sbeok.flacf", date:"March 24, 1993", title:"Dean Smith Center", sub:"Chapel Hill · Vince era / stadium years"},
+  {id:"gd94-10-05.sbd.unknown.8030.sbeok.shnf", date:"October 5, 1994", title:"The Spectrum", sub:"Philadelphia · final-years era"},
+  {id:"gd95-07-09.sbd.7233.sbeok.shnf", date:"July 9, 1995", title:"Soldier Field", sub:"Chicago · the final show"}
 ];
-const DEFAULT_SHOW = 3; // Cornell '77
+const DEFAULT_SHOW = 7; // Cornell '77
 
 const $ = id => document.getElementById(id);
 const audio = $('mrAudio'), room = $('musicroom'), sel = $('mrShow'), live = $('live');

← ebd5538 room(TK-11101): apply perf+a11y fixes (Steve-approved deploy  ·  back to Dead Agentabrams  ·  room: wire idle-backflip branch call (fn was defined but nev 5d8543f →