@andespindola/brainlink 0.1.0-beta.142 → 0.1.0-beta.144
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/dist/application/frontend/client-css.js +1 -6
- package/dist/application/frontend/client-html.js +8 -1
- package/dist/application/frontend/client-js.js +640 -3323
- package/dist/application/frontend/client-render-worker-js.js +569 -0
- package/dist/application/get-graph-stream-chunk.js +285 -0
- package/dist/application/server/routes.js +31 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -83,8 +83,8 @@ Legacy `.jsonl.gz` packs are upgraded to `.blpk` automatically on first search/c
|
|
|
83
83
|
- Local HTTP API.
|
|
84
84
|
- Realtime graph UI with agent selector and colored knowledge groups.
|
|
85
85
|
- Graph renderer keeps the full filtered graph visible during zoom/pan, rendering every visible node and edge without viewport culling or edge caps in the main view.
|
|
86
|
-
-
|
|
87
|
-
-
|
|
86
|
+
- Graph exploration uses viewport-first chunk streaming (`/api/graph-stream`) with explicit node/edge budgets.
|
|
87
|
+
- Render pipeline uses WebGL in a dedicated worker through `OffscreenCanvas`, keeping the main thread focused on UI controls and details panels.
|
|
88
88
|
- Large graph layout API automatically uses compact payload encoding with link-coverage-aware edge selection to reduce initial client load without hiding major relationships.
|
|
89
89
|
- Large-segment layout spacing now grows logarithmically to keep initial visual density consistent between medium and very large vaults (for example, ~1k vs ~50k notes).
|
|
90
90
|
- Graph coordinates are visually compacted across graph sizes so reset starts from a stable fitted scene and zoom-in progressively reveals local detail.
|
|
@@ -598,14 +598,14 @@ The graph UI shows:
|
|
|
598
598
|
- graph controls for zoom in, zoom out, fit visible nodes and reset-to-fit-all
|
|
599
599
|
- wheel zoom (including `cmd+scroll` and `ctrl+scroll`) anchored to cursor position for faster navigation in large graphs
|
|
600
600
|
- wheel/button zoom updates immediately at the cursor anchor without delayed focus-transition interpolation
|
|
601
|
-
- Bloom-like scene navigation: reset fits the current graph scene, wheel zoom stays anchored to the cursor, and WebGL
|
|
601
|
+
- Bloom-like scene navigation: reset fits the current graph scene, wheel zoom stays anchored to the cursor, and worker-driven WebGL rendering keeps pan/zoom interaction responsive
|
|
602
602
|
- zoom-out floor for large and massive graphs to keep the scene reachable without switching into a separate macro graph mode
|
|
603
603
|
- keyboard shortcuts: `+` zoom in, `-` zoom out, `0` reset fit
|
|
604
604
|
- click on a node opens its details panel; double-click on empty canvas zooms in at cursor position
|
|
605
605
|
- floating graph totals (notes, links, tags) below the Brainlink title
|
|
606
|
-
- graph rendering safeguards (batched
|
|
606
|
+
- graph rendering safeguards (batched GPU draw calls, lower redraw rate, zoom-aware interaction)
|
|
607
607
|
- adaptive CPU safeguards for large graphs: idle frame pacing, throttled background physics updates and cached viewport dimensions to reduce redraw/layout overhead while preserving interaction responsiveness
|
|
608
|
-
- WebGL
|
|
608
|
+
- worker-first WebGL rendering with Canvas fallback when `OffscreenCanvas` or worker rendering is unavailable
|
|
609
609
|
- large graph view keeps a single-level graph model across zoom levels, renders the full filtered scene instead of viewport-sampled subsets, and shows node titles as zoom approaches readable scale
|
|
610
610
|
|
|
611
611
|
The server indexes before starting by default. Use `--no-index` to skip that step:
|
|
@@ -626,6 +626,7 @@ Routes:
|
|
|
626
626
|
- `GET /api/graph`
|
|
627
627
|
- `GET /api/graph-layout`
|
|
628
628
|
- `GET /api/graph-view?x=<x>&y=<y>&w=<width>&h=<height>&scale=<scale>`
|
|
629
|
+
- `GET /api/graph-stream?x=<x>&y=<y>&w=<width>&h=<height>&scale=<scale>&nodeBudget=<n>&edgeBudget=<n>`
|
|
629
630
|
- `GET /api/graph-node?id=<node-id>`
|
|
630
631
|
- `GET /api/search?q=<query>&limit=10&mode=hybrid`
|
|
631
632
|
- `GET /api/context?q=<query>&limit=12&tokens=2000&mode=hybrid`
|
|
@@ -87,8 +87,7 @@ select {
|
|
|
87
87
|
overflow: hidden;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
#graph
|
|
91
|
-
#graphGl {
|
|
90
|
+
#graph {
|
|
92
91
|
display: block;
|
|
93
92
|
position: absolute;
|
|
94
93
|
inset: 0;
|
|
@@ -100,10 +99,6 @@ select {
|
|
|
100
99
|
cursor: grab;
|
|
101
100
|
}
|
|
102
101
|
|
|
103
|
-
#graphGl {
|
|
104
|
-
pointer-events: none;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
102
|
#graph:active {
|
|
108
103
|
cursor: grabbing;
|
|
109
104
|
}
|
|
@@ -44,7 +44,6 @@ export const createClientHtml = () => `<!doctype html>
|
|
|
44
44
|
</div>
|
|
45
45
|
</header>
|
|
46
46
|
<div class="graph-stage">
|
|
47
|
-
<canvas id="graphGl" aria-hidden="true"></canvas>
|
|
48
47
|
<canvas id="graph" aria-label="Brainlink knowledge graph"></canvas>
|
|
49
48
|
</div>
|
|
50
49
|
</section>
|
|
@@ -63,6 +62,14 @@ export const createClientHtml = () => `<!doctype html>
|
|
|
63
62
|
<button id="contentClose" type="button">Close</button>
|
|
64
63
|
</header>
|
|
65
64
|
<div class="content-meta">
|
|
65
|
+
<section class="content-meta-section">
|
|
66
|
+
<h3>Facts</h3>
|
|
67
|
+
<ul id="contentFacts"></ul>
|
|
68
|
+
</section>
|
|
69
|
+
<section class="content-meta-section">
|
|
70
|
+
<h3>Context Links</h3>
|
|
71
|
+
<ul id="contentContextLinks"></ul>
|
|
72
|
+
</section>
|
|
66
73
|
<section class="content-meta-section">
|
|
67
74
|
<h3>Tags</h3>
|
|
68
75
|
<div id="contentTags" class="tags"></div>
|