@andespindola/brainlink 0.1.0-beta.72 → 0.1.0-beta.74

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
@@ -594,7 +594,7 @@ The graph UI shows:
594
594
  - double-click on canvas zooms in at cursor position
595
595
  - floating graph totals (notes, links, tags) below the Brainlink title
596
596
  - large-graph rendering safeguards (edge draw caps, lower redraw rate, zoom-aware interaction)
597
- - massive-graph LOD progression: zoomed-out views prefer lightweight clusters, then progressively reveal nodes and edges as zoom increases
597
+ - massive-graph LOD progression: very low zoom uses spatial overview clusters to preserve whole-vault shape, then progressively reveals nodes and edges as zoom increases
598
598
 
599
599
  The server indexes before starting by default. Use `--no-index` to skip that step:
600
600
 
@@ -10,6 +10,7 @@ const clusterZoomThreshold = 0.18
10
10
  const macroGalaxyZoomThreshold = 0.012
11
11
  const macroGalaxyEnterHysteresis = 0.86
12
12
  const macroGalaxyExitHysteresis = 1.24
13
+ const galaxyDiscoveryEnabled = false
13
14
  const massiveAutoFitMacroScale = 0.006
14
15
  const defaultMacroScale = 0.006
15
16
  const clusterCellPixelSize = 64
@@ -25,6 +26,7 @@ const meshEdgeScaleThreshold = 0.09
25
26
  const meshEdgeMinBudget = 140
26
27
  const meshEdgeMaxBudget = 1400
27
28
  const layeredCoreScaleThreshold = 0.55
29
+ const massiveOverviewClusterScaleThreshold = 0.035
28
30
  const dragNeighborhoodMaxAffected = 180
29
31
  const dragSettleRounds = 3
30
32
  const wheelZoomExponent = 0.0018
@@ -677,6 +679,10 @@ const visibilityScaleBucket = (scale) => {
677
679
  }
678
680
 
679
681
  const shouldRenderMacroGalaxyView = () => {
682
+ if (!galaxyDiscoveryEnabled) {
683
+ state.macroViewActive = false
684
+ return false
685
+ }
680
686
  if (state.visibleNodes.length <= 1) {
681
687
  state.macroViewActive = false
682
688
  return false
@@ -1805,6 +1811,17 @@ const computeRenderVisibility = () => {
1805
1811
 
1806
1812
  if (state.visibleNodes.length > massiveGraphNodeThreshold) {
1807
1813
  const viewportNodes = viewportNodesFromSpatialIndex(viewport)
1814
+ if (state.transform.scale <= massiveOverviewClusterScaleThreshold) {
1815
+ const overviewClusters = filterOverviewClustersByViewport(viewport)
1816
+ .sort((left, right) => right.count - left.count)
1817
+ .slice(0, Math.min(renderNodeBudget, clusterBudgetForScale(state.transform.scale)))
1818
+ if (overviewClusters.length > 0) {
1819
+ state.renderClusters = overviewClusters
1820
+ state.renderNodes = overviewClusters.map((cluster) => cluster.representative)
1821
+ state.renderEdges = []
1822
+ return
1823
+ }
1824
+ }
1808
1825
  const sourceNodes = viewportNodes.length > 0 ? viewportNodes : state.visibleNodes
1809
1826
  const sampleLimit = nodeBudgetForScale(state.transform.scale)
1810
1827
  const carryMargin = Math.max(240, Math.min(1200, 340 / Math.max(state.transform.scale, 0.0001)))
@@ -1818,15 +1835,8 @@ const computeRenderVisibility = () => {
1818
1835
  carryOverNodes,
1819
1836
  Math.max(sampleLimit * 7, carryOverLimit)
1820
1837
  )
1821
- const layeredNodes = selectLayeredNodesForScale(sourceWithCarry, sampleLimit)
1822
- const bridgeLimit = Math.max(24, Math.min(180, Math.floor(sampleLimit * 0.26)))
1823
- const bridgedNodes = mergeUniqueNodes(
1824
- layeredNodes,
1825
- selectAccessBridgeNodes(sourceWithCarry, bridgeLimit),
1826
- Math.min(renderNodeBudget, sampleLimit + bridgeLimit)
1827
- )
1828
1838
  const sampledRaw = selectStableSampleNodes(
1829
- bridgedNodes,
1839
+ sourceWithCarry,
1830
1840
  Math.min(sampleLimit, renderNodeBudget)
1831
1841
  )
1832
1842
  const continuityBudget = Math.max(24, Math.min(sampleLimit - 8, Math.floor(sampleLimit * 0.42)))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andespindola/brainlink",
3
- "version": "0.1.0-beta.72",
3
+ "version": "0.1.0-beta.74",
4
4
  "description": "Local-first knowledge memory for agents with Markdown, backlinks, indexing and context retrieval.",
5
5
  "type": "module",
6
6
  "license": "MIT",