From 8318366d1c9dc834db0e80b2527ccee3094f1b2c Mon Sep 17 00:00:00 2001 From: type-two Date: Mon, 6 Jul 2026 12:06:09 +1000 Subject: [PATCH] usability: hover-zoom loupe for dense columns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The source column packs ~68 feeds ~8px apart while each hit-target is 28px wide, so the whole column is one continuous blur — you cannot aim one node, and labels overlap unreadably. The loupe fixes it: hovering a dense column unfolds a magnified strip of the ~9 nearest feeds, comfortably spaced and fully labelled with live values, the one under the cursor highlighted. Each row is a live hit target (click=mute, shift=tab, cmd=group, drag=patch); the panel holds still while you reach across it. Right-click sky -> hover zoom to toggle (localStorage gs_loupe). Verified: activation on hover, correct render + position, hit-test lands the right node, shift-clicking a magnified row opens that source's tab. Two bugs found & fixed during review: the panel's activation band excluded the panel itself (vanished as you reached for it -> panel-hold), and column identity was by object reference which goes stale when doLayout rebuilds columnInfo (wrong side/position -> track by stable "src"/"dst" side key). drawLoupe wrapped so a draw error can never kill the render loop. Also verified this session (no code change needed): drag source->voice creates a cable; cmd-click multi-selects for grouping. Co-Authored-By: Claude Fable 5 --- viz/index.html | 107 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 105 insertions(+), 2 deletions(-) diff --git a/viz/index.html b/viz/index.html index b6dc335..d531b78 100644 --- a/viz/index.html +++ b/viz/index.html @@ -885,6 +885,7 @@