vestige/apps/dashboard
Sam Valladares 9f5a1fde4a feat(observatory): GPU picking — click a memory in the field to inspect it
The living field is now interactive, killing Classic's main reason to
exist. Clicking a node in the WebGPU field opens the same Memory Detail
inspector (content, FSRS bars, retention forecast, promote/demote,
explore) that Classic's Three.js picking drove.

How: NodeRenderer.pickAt(ndcX, ndcY) — the one sanctioned GPU readback,
input-driven and click-frequency only, so the render loop's determinism
contract (spec §6) holds. It copies the live NodeState buffer (post
force-sim positions) to a MAP_READ staging buffer, reprojects every node
on the CPU through the SAME deterministic orbit camera the frame used
(engine params phase + canvas aspect, column-major viewProj), and picks
the nearest node whose projected disc (r·f/w with a floor for faint
nodes, 1.6x halo slop) contains the click. NodeState gains COPY_SRC for
the copy; a fresh staging buffer per click is created and destroyed.

ObservatoryStage gains an onpick prop wired to the canvas layer
(crosshair cursor when interactive); the graph page passes onNodeSelect
so field picks open the existing panel.

Verified live: click at field center hit a real memory, panel opened
with real FSRS data (retention 65.4%, forecast 65%->37% @30d), zero
console errors. svelte-check 940 files 0/0; 96 observatory tests green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 19:22:07 -07:00
..
build ci(pages): deploy dashboard to GitHub Pages with subpath-aware base 2026-06-21 17:46:43 -05:00
e2e v2.0.8 Pulse — Reasoning Theater + Pulse Toast + Terrarium + Intel Mac (#44) 2026-04-23 02:21:11 -05:00
src feat(observatory): GPU picking — click a memory in the field to inspect it 2026-07-08 19:22:07 -07:00
static feat: Vestige v2.0.0 "Cognitive Leap" — 3D dashboard, HyDE search, WebSocket events 2026-02-22 03:07:25 -06:00
.env.example v2.1.2 Honest Memory 2026-05-06 02:22:24 -05:00
OBSERVATORY-SPEC.md feat(observatory): raw-WebGPU living cognitive field with 5 deterministic demos 2026-07-08 10:49:18 -07:00
package-lock.json Release v2.1.23 Receipt Lock hardening 2026-05-27 19:03:16 -05:00
package.json chore(release): v2.2.0 — Retroactive Salience + Tool Consolidation 2026-06-29 15:15:54 -05:00
playwright.config.ts feat: live memory materialization — nodes spawn in 3D graph in real-time 2026-03-03 14:04:31 -06:00
svelte.config.js ci(pages): deploy dashboard to GitHub Pages with subpath-aware base 2026-06-21 17:46:43 -05:00
tsconfig.json feat: live memory materialization — nodes spawn in 3D graph in real-time 2026-03-03 14:04:31 -06:00
vite.config.ts feat(observatory): raw-WebGPU living cognitive field with 5 deterministic demos 2026-07-08 10:49:18 -07:00