feat: live memory materialization — nodes spawn in 3D graph in real-time

When memories are created, promoted, deleted, or dreamed via MCP tools,
the 3D graph now shows spectacular live animations:

- Rainbow particle burst + elastic scale-up on MemoryCreated
- Ripple wave cascading to nearby nodes
- Green pulse + node growth on MemoryPromoted
- Implosion + dissolution on MemoryDeleted
- Edge growth animation on ConnectionDiscovered
- Purple cascade on DreamStarted/DreamProgress/DreamCompleted
- FIFO eviction at 50 live nodes to guard performance

Also: graph center defaults to most-connected node, legacy HTML
redirects to SvelteKit dashboard, CSS height chain fix in layout.

Testing: 150 unit tests (vitest), 11 e2e tests (Playwright with
MCP Streamable HTTP client), 22 proof screenshots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sam Valladares 2026-03-03 14:04:31 -06:00
parent 816b577f69
commit 9bdcc69ce3
76 changed files with 5915 additions and 332 deletions

View file

@ -1 +0,0 @@
f`Œ”.o­ÙtÏ2%E[r¯W@~ Š”¿¿•w€<јÂo]õ­ã8©´Ôšl÷snm=Ý _G^ëõúž¸VÔ?,knœ_÷Ìh<C38C>w•Ñ¢¶ÞÈ=²"þ^…Áüzd>ÖH… S 6 <09> ¤@Dá¥'q´üœ¸¹þHD—~Cß/ƒ7Åú$+ßþfc‹š¿^ž?Xäß8Ê0ÔƒË×é‡ò|û°-òJSâoUVÊ<56>ãô0vCDɪ§.¡ª¦aV/TÌž{e¡¾ÁEqù ߀µšïìô<C3AC>áO¹Ñ¬Ñ<C2AC>9ñû!¨äb¥<62>K<EFBFBD><>Äü<04>B.CŒ$ñ ˜!ƒ+ð?œ7¢„H  €|·â™*Ì }_<>|Hƒ±W†£ÁJé…Ðgl<67>rP)FJ%7,q¨ænX

View file

@ -1 +1 @@
import"../chunks/Bzak7iHL.js";import{i as h}from"../chunks/_Va07L2l.js";import{p as g,f as d,t as l,a as v,d as _,e as s,r as o}from"../chunks/C9Z4nxhR.js";import{s as p}from"../chunks/DP9qWekZ.js";import{a as x,f as $}from"../chunks/DPfxVJHQ.js";import{s as k,p as m}from"../chunks/C9fAJV5Y.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var E=$("<h1> </h1> <p> </p>",1);function B(f,n){g(n,!1),h();var t=E(),r=d(t),c=s(r,!0);o(r);var a=_(r,2),u=s(a,!0);o(a),l(()=>{var e;p(c,i.status),p(u,(e=i.error)==null?void 0:e.message)}),x(f,t),v()}export{B as component};
import"../chunks/Bzak7iHL.js";import{i as h}from"../chunks/_Va07L2l.js";import{p as g,f as d,t as l,a as v,d as _,e as s,r as o}from"../chunks/C9Z4nxhR.js";import{s as p}from"../chunks/DP9qWekZ.js";import{a as x,f as $}from"../chunks/DPfxVJHQ.js";import{s as k,p as m}from"../chunks/gFolWfSi.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var E=$("<h1> </h1> <p> </p>",1);function B(f,n){g(n,!1),h();var t=E(),r=d(t),c=s(r,!0);o(r);var a=_(r,2),u=s(a,!0);o(a),l(()=>{var e;p(c,i.status),p(u,(e=i.error)==null?void 0:e.message)}),x(f,t),v()}export{B as component};

View file

@ -1 +1 @@
import"../chunks/Bzak7iHL.js";import{i as p}from"../chunks/_Va07L2l.js";import{o as r}from"../chunks/CkyfbJUz.js";import{p as t,a}from"../chunks/C9Z4nxhR.js";import{g as m}from"../chunks/C9fAJV5Y.js";function g(i,o){t(o,!1),r(()=>m("/graph",{replaceState:!0})),p(),a()}export{g as component};
import"../chunks/Bzak7iHL.js";import{i as p}from"../chunks/_Va07L2l.js";import{o as r}from"../chunks/CkyfbJUz.js";import{p as t,a}from"../chunks/C9Z4nxhR.js";import{g as m}from"../chunks/gFolWfSi.js";function g(i,o){t(o,!1),r(()=>m("/graph",{replaceState:!0})),p(),a()}export{g as component};

View file

@ -0,0 +1 @@
$ ei[<5B>àÒ†û$3³Ùù¡Y×x[$Qà+ÿùÝÆpyžRÑŠ¼w×D¥éê~Ø^¥äg¼µÖù²¸¹Ohß5=¾Ò§ÄiR†<52>±l•ÕŽìEImßI±þÁé|ãÇ”œŽ~x­*X®{<7B>¸k.ªë¨ï} kþˆßyFAþ€A¸"}t/·žCý¹ŒüGäO€üð?eŠyÈ¿G