diff --git a/.daemon/logs/signet-2026-02-22.log b/.daemon/logs/signet-2026-02-22.log index cb4a1bd1a..e64ca5c52 100644 --- a/.daemon/logs/signet-2026-02-22.log +++ b/.daemon/logs/signet-2026-02-22.log @@ -1596,3 +1596,23 @@ {"timestamp":"2026-02-22T09:41:04.116Z","level":"info","category":"hooks","message":"Session start hook","data":{"harness":"claude-code","project":"/home/nicholai/signet/signetai"}} {"timestamp":"2026-02-22T09:41:04.117Z","level":"info","category":"hooks","message":"Session start completed","data":{"memoryCount":30,"durationMs":1}} {"timestamp":"2026-02-22T09:41:04.118Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-22T09:41:09.172Z","level":"info","category":"git","message":"Auto-committed","data":{"message":"2026-02-22T09-41-09_auto_memory/memories.db-wal, memory/memories.db-wal, me","filesChanged":3}} +{"timestamp":"2026-02-22T09:41:20.051Z","level":"info","category":"summary-worker","message":"Wrote session summary","data":{"path":"/home/nicholai/.agents/memory/2026-02-22-dashboard-umap-projection-migration.md"}} +{"timestamp":"2026-02-22T09:41:20.055Z","level":"info","category":"summary-worker","message":"Inserted session facts","data":{"total":10,"saved":10,"deduplicated":0}} +{"timestamp":"2026-02-22T09:41:20.055Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-22T09:41:20.056Z","level":"info","category":"watcher","message":"File added","data":{"path":"/home/nicholai/.agents/memory/2026-02-22-dashboard-umap-projection-migration.md"}} +{"timestamp":"2026-02-22T09:41:20.816Z","level":"info","category":"memory","message":"Memory saved","data":{"id":"069ed1f3-02bd-4086-b3a2-1787742a67d2","type":"rule","pinned":false,"embedded":true}} +{"timestamp":"2026-02-22T09:41:20.818Z","level":"info","category":"watcher","message":"Ingested memory file","data":{"path":"/home/nicholai/.agents/memory/2026-02-22-dashboard-umap-projection-migration.md","chunks":1,"sections":1,"filename":"2026-02-22-dashboard-umap-projection-migration"}} +{"timestamp":"2026-02-22T09:41:20.818Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-22T09:41:21.155Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-22T09:41:21.634Z","level":"info","category":"summary-worker","message":"Enqueued session summary job","data":{"jobId":"197c8e30-a12f-41c0-a306-0265b80dbcf0","harness":"claude-code"}} +{"timestamp":"2026-02-22T09:41:21.634Z","level":"info","category":"hooks","message":"Session end queued for summary","data":{"jobId":"197c8e30-a12f-41c0-a306-0265b80dbcf0"}} +{"timestamp":"2026-02-22T09:41:21.634Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-22T09:41:25.257Z","level":"info","category":"hooks","message":"Session start hook","data":{"harness":"claude-code","project":"/home/nicholai/signet/signetai"}} +{"timestamp":"2026-02-22T09:41:25.258Z","level":"info","category":"hooks","message":"Session start completed","data":{"memoryCount":24,"durationMs":1}} +{"timestamp":"2026-02-22T09:41:25.259Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-22T09:41:25.557Z","level":"info","category":"summary-worker","message":"Processing session summary","data":{"jobId":"197c8e30-a12f-41c0-a306-0265b80dbcf0","harness":"claude-code","attempt":1}} +{"timestamp":"2026-02-22T09:41:25.558Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-22T09:41:29.960Z","level":"info","category":"hooks","message":"Session start hook","data":{"harness":"claude-code","project":"/home/nicholai/signet/signetai"}} +{"timestamp":"2026-02-22T09:41:29.961Z","level":"info","category":"hooks","message":"Session start completed","data":{"memoryCount":24,"durationMs":1}} +{"timestamp":"2026-02-22T09:41:29.961Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} diff --git a/memory/2026-02-22-dashboard-umap-projection-migration.md b/memory/2026-02-22-dashboard-umap-projection-migration.md new file mode 100644 index 000000000..7b75f3d9e --- /dev/null +++ b/memory/2026-02-22-dashboard-umap-projection-migration.md @@ -0,0 +1,15 @@ +# 2026-02-22 Session Notes + +## Dashboard UMAP Projection Migration + +Frontend-worker on the umap-perf team received task #5: migrate the embeddings dashboard from client-side UMAP computation to server-side projection fetching. The changes involve two main files and represent a significant architectural shift in how embedding visualizations are handled. + +The new flow: instead of fetching raw embedding vectors and running UMAP in the browser, the dashboard now fetches pre-computed 2D/3D coordinates from the daemon via `GET /api/embeddings/projection?dimensions=2|3`. This reduces client-side computation burden and allows the server to cache expensive layout calculations. + +Key changes required: +1. **api.ts**: Add `ProjectionNode` and `ProjectionResponse` types, implement `getProjection()` function with polling logic for "computing" status (HTTP 202) +2. **EmbeddingsTab.svelte**: Remove UMAP import and all client-side vector math; rewrite `initGraph()` to fetch projections and map nodes to GraphNode format; rewrite `switchGraphMode()` for 3D; replace `computeRelationsForSelection()` to use async `getSimilarMemories()` API call instead of cosine similarity + +Preserved functionality: search/filter, EmbeddingInspector integration, canvas 2D/3D rendering, embeddingsHasMore indicator. Removed: embedding limit controls (server now sends all points), client-side cosine similarity computation, UMAP-related state variables. + +Critical consideration: `EmbeddingPoint` type mapping from `ProjectionNode` must be preserved so downstream inspector and canvas components continue working despite vector data no longer being available client-side. \ No newline at end of file diff --git a/memory/memories.db-shm b/memory/memories.db-shm index 747b82da1..2d9e48b14 100644 Binary files a/memory/memories.db-shm and b/memory/memories.db-shm differ diff --git a/memory/memories.db-wal b/memory/memories.db-wal index a32a2903b..88b58f971 100644 Binary files a/memory/memories.db-wal and b/memory/memories.db-wal differ