@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 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
- - Canvas graph rendering uses the same batched node and edge pipeline for every graph size, reducing per-frame draw calls while keeping selected and hovered items highlighted.
87
- - WebGL acceleration is used when available for dense node and edge drawing, with Canvas 2D preserved as the interaction and fallback layer.
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 acceleration draws the dense node and edge layer faster
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 canvas drawing across graph sizes, lower redraw rate, zoom-aware interaction)
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 node and edge acceleration when supported, falling back to Canvas 2D without changing graph behavior
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>