From 29933288597a15c786449155e8e90f02b2825e1b Mon Sep 17 00:00:00 2001 From: monkey-w1n5t0n Date: Sat, 11 Apr 2026 07:53:37 +0200 Subject: [PATCH] fix(a-app): bail out of showGroupDrawer for non-C15 engines showGroupDrawer indexes into the hardcoded SYNTH_SECTIONS table and groupOverrides, which only exist for the shaper-feedback engine. For additive/fm/modular engines, paramToSection is rebuilt dynamically from paramMeta groups, so region.index points into a larger dynamic section list and SYNTH_SECTIONS[region.index] is undefined. Hovering a section label in Modular mode threw "Cannot read properties of undefined (reading 'name')". These engines have their own param UIs; the C15 group drawer doesn't apply. Guard and early-return. --- playground/js/a-app.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/playground/js/a-app.js b/playground/js/a-app.js index f29b158..9cffb08 100644 --- a/playground/js/a-app.js +++ b/playground/js/a-app.js @@ -3842,6 +3842,10 @@ function wireGroupDrawer() { } function showGroupDrawer(region) { + // Group drawer is C15-specific: indexes into the hardcoded SYNTH_SECTIONS + // table and groupOverrides, which only exist for the shaper-feedback engine. + // Other engines (additive, fm, modular) have their own param UIs. + if (activeEngine?.id !== 'shaper-feedback') return; activeDrawerSection = region.index; const sec = SYNTH_SECTIONS[region.index]; const ov = groupOverrides[region.index];