slab/menuband: fast MIDI toggle + sectioned 2-column instrument browser, no hover
Speed:
- MIDI loopback self-test now runs once per app session (first enable),
not on every toggle. Throwing the popover switch is instant — the test
exists to surface CoreMIDI hiccups at launch, no value re-running it.
- midiSwitchToggled drops the heavy syncFromController call. The switch
already reflects the user's click; no need to refresh the instrument
list scroll, update banner, crash count, etc. for one toggle.
No more hover-driven behavior:
- Input picker hover-preview gone. Clicks commit modes directly.
- Instrument hover-preview gone. Hover only nudges the row background;
clicks play.
- Removed setHoverPreview / clearHoverPreview / setInstrumentPreview /
isHoveringTypingMode / previewPlayKey / previewTypeMode /
previewKeymap from the controller, plus effective* getters.
AppDelegate.updateIcon reads `keymap` and `typeMode` directly.
- Dropped the popover's local NSEvent monitor + viewDidAppear /
viewWillDisappear lifecycle hooks (they only existed to feed the
hover-mode demo keystrokes).
Click always plays the instrument:
- New auditionCurrentProgram() on the controller plays middle-C through
the local synth for ~600 ms regardless of MIDI mode. handleInstrument
Commit calls it after committing setMelodicProgram, so the user
*always* hears their pick — even when MIDI mode is on (which used to
silence the local synth and route only to the DAW).
Sectioned 2-column instrument browser:
- InstrumentListView rewritten as a 2-column sectioned browser. Left
column carries GM families 0..7 (Piano … Brass); right carries 8..15
(Reed … Sound FX). Each family has a colored header + 8 program rows
with a family-color stripe + monospaced number + truncated name.
- Width 448 px (2 × 220 columns + 8 gap), height 1392 px (8 sections
× 174 px each). Scrolls inside the same fixed-height popover window.
- onCommit is the only callback exposed; no onHover surface anymore.
Re-deployed:
- DMG submission 09b3327b-3fc0-475e-9f2c-2ca0a02f22ff, stapled.
- md5 0b7b530853434c20571c1469ae05cb11. Page bumped to ?v=0b7b530.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>