From cd7dfcd63dd36b64b5dc6c5bf1c3d88525084ed3 Mon Sep 17 00:00:00 2001
From: Dejvino
Date: Sun, 20 Sep 2026 16:54:39 +0200
Subject: [PATCH] Vis testing battery: library + debug page sections
Collects every manual testing entry point into one library (src/debug/battery.js) rendered from the live registries: all 17 bank songs with app/+venue/strip links, all 70 scenes grouped by family with gate/wide links, all 3 venues, 9 curated param and scenario combos, and the graduated lab pages with their headless runners. debug.html renders it; new songs/scenes/venues join free.
---
flow-state/debug.html | 162 +++++++++++++++++++++++++++++++
flow-state/src/debug/battery.js | 167 ++++++++++++++++++++++++++++++++
2 files changed, 329 insertions(+)
create mode 100644 flow-state/src/debug/battery.js
diff --git a/flow-state/debug.html b/flow-state/debug.html
index f38f6a0..ace5b60 100644
--- a/flow-state/debug.html
+++ b/flow-state/debug.html
@@ -33,6 +33,22 @@
pre { padding: 8px 10px; overflow-x: auto; margin: 6px 0 0; }
.note { color: #6b7280; font-size: 12px; max-width: 80ch; }
.warn { color: #eab308; }
+ .chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 2px; }
+ .chips a {
+ background: #080a0f; border: 1px solid #1a1e28; border-radius: 3px;
+ padding: 1px 7px; font-size: 12px; white-space: nowrap;
+ }
+ .chips a:hover { border-color: #7dd3fc; text-decoration: none; }
+ .chips .fam { width: 100%; color: #565f70; font-size: 11px; letter-spacing: .08em;
+ text-transform: uppercase; margin-top: 6px; }
+ .chips .fam:first-child { margin-top: 0; }
+ .links { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
+ .links a {
+ background: #080a0f; border: 1px solid #1a1e28; border-radius: 3px;
+ padding: 1px 7px; font-size: 12px;
+ }
+ .links a:hover { border-color: #7dd3fc; text-decoration: none; }
+ .links .lbl { color: #565f70; font-size: 12px; align-self: center; }
@@ -43,6 +59,48 @@
many.
+ Vis testing battery
+
+ The testing library: every bank song, every scene, every venue, the
+ param/scenario combos worth re-running, and the lab pages. Rendered
+ from the live registries (src/debug/battery.js), so a new
+ song, scene or venue joins the battery for free.
+
+
+
+
songs — the bank, one click each
+
Each song holds a corner of the feature space (covers).
+ App loads the song; +venue adds the room; strip is one frame per
+ 30 s across the whole song.
+
loading…
+
+
+
venues — every room
+
Pinned gallery first (fastest way to review a venue change), then
+ the app and the filmstrip with the room on.
+
loading…
+
+
+
+ Scenes — every visualizer
+
+ Gate is the per-scene acceptance battery (renders, animates,
+ deterministic, distinct, sweep, flash, traits); wide is the scene on
+ six songs × six seeds.
+
+
+
+ Scenarios — params and combos
+
+
+ Lab pages + headless runners
+
+
Looking at output
@@ -212,5 +270,109 @@ npm test
session over a file called clicktrack.js — or a dev server
caught mid-restart.
+