Two live-play fixes:
- Zoom: trackpad pinch (ctrl+wheel) over a DOM overlay (right-click menu,
panels) used to hit the BROWSER's page zoom, which the canvas then made
un-undoable because it preventDefaults every wheel — zoomed-in with no way
out except re-opening a menu. Now a capture-phase window listener catches
pinch everywhere and drives the app's own view zoom (shared zoomAt());
Safari's gesture* events are blocked too. Plain scrolling in menus and
panels is untouched; canvas behavior unchanged (verified single-fire).
- Cables: dash/blip speed was uniform (activity-only). Each source now
carries flowDisp — an EMA of |Δnorm|/s with fast attack + slow release —
and every cable's dashPhase advances at 6 + flow·240 + activity·40, with
the pulse dot riding the same phase. A ticking feed streams, a glacial
feed crawls (venus.dist ~0 flow vs mercury.phase saturated, measured);
event sources surge on fire via firePulse.
Verified: pinch in/out over overlay drives view.z and is defaultPrevented,
plain scroll not hijacked, canvas single-fire, flows measured per-source
via temp hook (removed, grep-verified 0), zero console errors, T O B G S
+ ⌘Z regression green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>