feat: Vestige v2.0.0 "Cognitive Leap" — 3D dashboard, HyDE search, WebSocket events

The biggest release in Vestige history. Complete visual and cognitive overhaul.

Dashboard:
- SvelteKit 2 + Three.js 3D neural visualization at localhost:3927/dashboard
- 7 interactive pages: Graph, Memories, Timeline, Feed, Explore, Intentions, Stats
- WebSocket event bus with 16 event types, real-time 3D animations
- Bloom post-processing, GPU instanced rendering, force-directed layout
- Dream visualization mode, FSRS retention curves, command palette (Cmd+K)
- Keyboard shortcuts, responsive mobile layout, PWA installable
- Single binary deployment via include_dir! (22MB)

Engine:
- HyDE query expansion (intent classification + 3-5 semantic variants + centroid)
- fastembed 5.11 with optional Nomic v2 MoE + Qwen3 reranker + Metal GPU
- Emotional memory module (#29)
- Criterion benchmark suite

Backend:
- Axum WebSocket at /ws with heartbeat + event broadcast
- 7 new REST endpoints for cognitive operations
- Event emission from MCP tools via shared broadcast channel
- CORS for SvelteKit dev mode

Distribution:
- GitHub issue templates (bug report, feature request)
- CHANGELOG with comprehensive v2.0 release notes
- README updated with dashboard docs, architecture diagram, comparison table

734 tests passing, zero warnings, 22MB release binary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sam Valladares 2026-02-22 03:07:25 -06:00
parent 26cee040a5
commit c2d28f3433
321 changed files with 32695 additions and 4727 deletions

View file

@ -0,0 +1,253 @@
{
"../../node_modules/.pnpm/@sveltejs+kit@2.53.0_@sveltejs+vite-plugin-svelte@5.1.1_svelte@5.53.2_vite@6.4.1_@types_da6f945e4bdc5861c12f795ef3b5ca26/node_modules/@sveltejs/kit/src/runtime/app/server/remote/index.js": {
"file": "remote-entry.js",
"name": "remote-entry",
"src": "../../node_modules/.pnpm/@sveltejs+kit@2.53.0_@sveltejs+vite-plugin-svelte@5.1.1_svelte@5.53.2_vite@6.4.1_@types_da6f945e4bdc5861c12f795ef3b5ca26/node_modules/@sveltejs/kit/src/runtime/app/server/remote/index.js",
"isEntry": true,
"imports": [
"_shared.js",
"_utils.js",
"_server.js",
"_environment.js"
]
},
"../../node_modules/.pnpm/@sveltejs+kit@2.53.0_@sveltejs+vite-plugin-svelte@5.1.1_svelte@5.53.2_vite@6.4.1_@types_da6f945e4bdc5861c12f795ef3b5ca26/node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte": {
"file": "entries/fallbacks/error.svelte.js",
"name": "entries/fallbacks/error.svelte",
"src": "../../node_modules/.pnpm/@sveltejs+kit@2.53.0_@sveltejs+vite-plugin-svelte@5.1.1_svelte@5.53.2_vite@6.4.1_@types_da6f945e4bdc5861c12f795ef3b5ca26/node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte",
"isEntry": true,
"imports": [
"_index.js",
"_state.svelte.js",
"_exports.js",
"_utils2.js",
"_index2.js",
"_root.js"
]
},
"../../node_modules/.pnpm/@sveltejs+kit@2.53.0_@sveltejs+vite-plugin-svelte@5.1.1_svelte@5.53.2_vite@6.4.1_@types_da6f945e4bdc5861c12f795ef3b5ca26/node_modules/@sveltejs/kit/src/runtime/server/index.js": {
"file": "index.js",
"name": "index",
"src": "../../node_modules/.pnpm/@sveltejs+kit@2.53.0_@sveltejs+vite-plugin-svelte@5.1.1_svelte@5.53.2_vite@6.4.1_@types_da6f945e4bdc5861c12f795ef3b5ca26/node_modules/@sveltejs/kit/src/runtime/server/index.js",
"isEntry": true,
"imports": [
"_utils.js",
"_server.js",
"_shared.js",
"_index.js",
"_exports.js",
"_utils2.js",
"_index2.js",
"_internal.js"
]
},
".svelte-kit/generated/server/internal.js": {
"file": "internal.js",
"name": "internal",
"src": ".svelte-kit/generated/server/internal.js",
"isEntry": true,
"imports": [
"_root.js",
"_environment.js",
"_server.js",
"_internal.js"
]
},
"_api.js": {
"file": "chunks/api.js",
"name": "api"
},
"_environment.js": {
"file": "chunks/environment.js",
"name": "environment"
},
"_exports.js": {
"file": "chunks/exports.js",
"name": "exports"
},
"_index.js": {
"file": "chunks/index.js",
"name": "index",
"imports": [
"_utils.js"
]
},
"_index2.js": {
"file": "chunks/index2.js",
"name": "index",
"imports": [
"_index.js"
]
},
"_index3.js": {
"file": "chunks/index3.js",
"name": "index"
},
"_internal.js": {
"file": "chunks/internal.js",
"name": "internal",
"imports": [
"_root.js",
"_environment.js",
"_server.js"
]
},
"_root.js": {
"file": "chunks/root.js",
"name": "root",
"imports": [
"_index.js"
]
},
"_server.js": {
"file": "chunks/server.js",
"name": "server"
},
"_shared.js": {
"file": "chunks/shared.js",
"name": "shared",
"imports": [
"_utils2.js",
"_utils.js"
]
},
"_state.svelte.js": {
"file": "chunks/state.svelte.js",
"name": "state.svelte",
"imports": [
"_index.js",
"_exports.js",
"_root.js"
]
},
"_utils.js": {
"file": "chunks/utils.js",
"name": "utils"
},
"_utils2.js": {
"file": "chunks/utils2.js",
"name": "utils"
},
"_websocket.js": {
"file": "chunks/websocket.js",
"name": "websocket",
"imports": [
"_index2.js"
]
},
"src/routes/(app)/+layout.svelte": {
"file": "entries/pages/(app)/_layout.svelte.js",
"name": "entries/pages/(app)/_layout.svelte",
"src": "src/routes/(app)/+layout.svelte",
"isEntry": true
},
"src/routes/(app)/explore/+page.svelte": {
"file": "entries/pages/(app)/explore/_page.svelte.js",
"name": "entries/pages/(app)/explore/_page.svelte",
"src": "src/routes/(app)/explore/+page.svelte",
"isEntry": true,
"imports": [
"_index.js"
]
},
"src/routes/(app)/feed/+page.svelte": {
"file": "entries/pages/(app)/feed/_page.svelte.js",
"name": "entries/pages/(app)/feed/_page.svelte",
"src": "src/routes/(app)/feed/+page.svelte",
"isEntry": true,
"imports": [
"_index.js",
"_websocket.js",
"_index3.js"
]
},
"src/routes/(app)/graph/+page.svelte": {
"file": "entries/pages/(app)/graph/_page.svelte.js",
"name": "entries/pages/(app)/graph/_page.svelte",
"src": "src/routes/(app)/graph/+page.svelte",
"isEntry": true,
"imports": [
"_index.js",
"_api.js",
"_websocket.js"
]
},
"src/routes/(app)/intentions/+page.svelte": {
"file": "entries/pages/(app)/intentions/_page.svelte.js",
"name": "entries/pages/(app)/intentions/_page.svelte",
"src": "src/routes/(app)/intentions/+page.svelte",
"isEntry": true,
"imports": [
"_index.js"
]
},
"src/routes/(app)/memories/+page.svelte": {
"file": "entries/pages/(app)/memories/_page.svelte.js",
"name": "entries/pages/(app)/memories/_page.svelte",
"src": "src/routes/(app)/memories/+page.svelte",
"isEntry": true,
"imports": [
"_index.js",
"_api.js",
"_index3.js"
]
},
"src/routes/(app)/settings/+page.svelte": {
"file": "entries/pages/(app)/settings/_page.svelte.js",
"name": "entries/pages/(app)/settings/_page.svelte",
"src": "src/routes/(app)/settings/+page.svelte",
"isEntry": true,
"imports": [
"_index.js",
"_websocket.js"
]
},
"src/routes/(app)/stats/+page.svelte": {
"file": "entries/pages/(app)/stats/_page.svelte.js",
"name": "entries/pages/(app)/stats/_page.svelte",
"src": "src/routes/(app)/stats/+page.svelte",
"isEntry": true,
"imports": [
"_index.js"
]
},
"src/routes/(app)/timeline/+page.svelte": {
"file": "entries/pages/(app)/timeline/_page.svelte.js",
"name": "entries/pages/(app)/timeline/_page.svelte",
"src": "src/routes/(app)/timeline/+page.svelte",
"isEntry": true,
"imports": [
"_index.js",
"_api.js",
"_index3.js"
]
},
"src/routes/+layout.svelte": {
"file": "entries/pages/_layout.svelte.js",
"name": "entries/pages/_layout.svelte",
"src": "src/routes/+layout.svelte",
"isEntry": true,
"imports": [
"_index.js",
"_exports.js",
"_utils2.js",
"_root.js",
"_state.svelte.js",
"_server.js",
"_websocket.js"
],
"css": [
"_app/immutable/assets/_layout.CWCL9vmt.css"
]
},
"src/routes/+page.svelte": {
"file": "entries/pages/_page.svelte.js",
"name": "entries/pages/_page.svelte",
"src": "src/routes/+page.svelte",
"isEntry": true,
"imports": [
"_index.js",
"_websocket.js"
]
}
}