From b9292db99f2b28ae2aa7496bd5db4aae43b8e470 Mon Sep 17 00:00:00 2001 From: jedarden Date: Thu, 9 Apr 2026 23:02:54 -0400 Subject: [PATCH] feat: implement spatial quick actions with follow camera - Add userData.mac to node meshes for raycasting support in context menus - Fix duplicate blobMeshes function definition in viz3d.js - Fix typo: FeeddownPanel -> FeedbackPanel in quick-actions.js - Enable right-click context menus on 3D elements (blobs, nodes, zones, portals, triggers) - Add long-press support for mobile devices - Implement follow camera functionality that tracks selected person - Add follow mode indicator with stop button and ESC key support Co-Authored-By: Claude Opus 4.6 --- ...beads.db-shm.20260409_193343_182842531.bak | Bin 0 -> 32768 bytes ...beads.db-wal.20260409_193343_182842531.bak | 0 .../beads.db.20260409_193343_182842531.bak | Bin 0 -> 1806336 bytes .beads/issues.jsonl | 2 +- .needle-predispatch-sha | 2 +- dashboard/js/quick-actions.js | 2 +- dashboard/js/viz3d.js | 4 +++- 7 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 .beads/.br_recovery/beads.db-shm.20260409_193343_182842531.bak create mode 100644 .beads/.br_recovery/beads.db-wal.20260409_193343_182842531.bak create mode 100644 .beads/.br_recovery/beads.db.20260409_193343_182842531.bak diff --git a/.beads/.br_recovery/beads.db-shm.20260409_193343_182842531.bak b/.beads/.br_recovery/beads.db-shm.20260409_193343_182842531.bak new file mode 100644 index 0000000000000000000000000000000000000000..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 GIT binary patch literal 32768 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