From ed5bfa612261664563646a794f5d48f3930ec7ec Mon Sep 17 00:00:00 2001 From: type-two Date: Mon, 6 Jul 2026 12:12:34 +1000 Subject: [PATCH] sky menu: skin picker as a submenu (all 12 skins, pick any directly) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the cycle-through "skin: X ↺" item with a ctxSub listing every skin by label, active one marked ✓ — no more clicking through 11 to reach the one you want. Co-Authored-By: Claude Fable 5 --- viz/index.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/viz/index.html b/viz/index.html index d531b78..62b1006 100644 --- a/viz/index.html +++ b/viz/index.html @@ -4545,8 +4545,13 @@ hd.appendChild(b); hd.appendChild(sp); ctxEl.appendChild(hd); ctxItem(chakraMode ? "leave chakra view" : "chakra view", () => { chakraMode = !chakraMode; if (!chakraMode) layoutDirty = true; }, "C"); - ctxItem("skin: " + activeSkin.label + " ↺", - () => { setSkin(nextSkinKey()); if (!chakraMode) { chakraMode = true; clearTrails(); } }); + const skinSub = ctxSub("skin · " + activeSkin.label); + for (const sk of Object.keys(SKINS)) { + const it2 = document.createElement("div"); it2.className = "it"; + it2.textContent = (SKINS[sk].key === activeSkin.key ? "✓ " : "") + SKINS[sk].label; + it2.onclick = () => { setSkin(sk); if (!chakraMode) { chakraMode = true; clearTrails(); } closeCtx(); }; + skinSub.appendChild(it2); + } ctxItem(performMode ? "leave performance mode" : "performance mode", () => window.dispatchEvent(new KeyboardEvent("keydown", { key: "p" })), "P"); ctxItem(arr.open ? "close tracks" : "🎛 tracks — arrange clips",