From 78dbb039b76d1c16c09bb1526f352ac1b612ded1 Mon Sep 17 00:00:00 2001 From: byrongamatos Date: Sun, 12 Jul 2026 01:17:58 +0200 Subject: [PATCH 01/16] feat(venue): reactive crowd video layer behind the 3D highway (career mode PR1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two crossfading video backdrop planes in the highway_3d venue background style, driven by a new venue-crowd.js state machine that maps v3:live-performance-state to crowd states (bored/neutral/engaged/ecstatic) with 3s stability + 8s dwell hysteresis, plus one-shot reaction stingers on streak milestones and end-of-song accuracy. Inert without a venue pack manifest (career plugin, PR2) or the feedBack-venue-crowd-dev flag — the static bg plate behaves exactly as before. Co-Authored-By: Claude Fable 5 --- plugins/highway_3d/screen.js | 109 ++++++++++ static/v3/index.html | 1 + static/v3/venue-crowd.js | 371 +++++++++++++++++++++++++++++++++++ static/v3/venue-scene-3d.js | 12 ++ tests/js/venue_crowd.test.js | 130 ++++++++++++ 5 files changed, 623 insertions(+) create mode 100644 static/v3/venue-crowd.js create mode 100644 tests/js/venue_crowd.test.js diff --git a/plugins/highway_3d/screen.js b/plugins/highway_3d/screen.js index a9fe835b..b4ee0f36 100644 --- a/plugins/highway_3d/screen.js +++ b/plugins/highway_3d/screen.js @@ -2418,6 +2418,13 @@ let _venueSceneAssetsLoaded = false; let _venueSceneLoadFailed = false; const _venueTextureCache = new Map(); + // Crowd video layers (career mode). venue-crowd.js owns the