@andespindola/brainlink 0.1.0-beta.98 → 0.1.0-beta.99

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
@@ -602,7 +602,7 @@ The graph UI shows:
602
602
  - WebGL node and edge acceleration when supported, falling back to Canvas 2D without changing graph behavior
603
603
  - compact macro-to-micro density progression so reset keeps the graph mass oriented and zoom-in separates local neighborhoods progressively
604
604
  - graph camera treats hub-centered navigation as structural only when the hub is dominant; diffuse stress graphs reset and zoom around the full graph mass
605
- - graph LOD progression: graphs up to 1000 notes render directly; larger graphs use one recursive model where each visible level targets up to 999 non-hub nodes, starts from a memory-hub-centered mesh, and each supernode can expand into another same-shape subgraph level (again up to 999 children) with latent fade-in, aggregated real links and local sibling mesh links so org-heavy and stress-50k follow the same structure at different depths
605
+ - graph LOD progression: graphs up to 1000 notes render directly; larger graphs use one recursive model where each visible level targets up to 999 non-hub nodes, starts from a memory-hub-centered mesh, and each supernode can expand into another same-shape subgraph level (again up to 999 children) with latent fade-in, aggregated real links and local sibling mesh links so org-heavy and stress-50k follow the same structure at different depths; for massive graphs the first expansion starts much deeper in zoom and low-size child levels use slower easing so the view stays as one compact graph longer
606
606
 
607
607
  The server indexes before starting by default. Use `--no-index` to skip that step:
608
608
 
@@ -782,17 +782,20 @@ const buildEcosystemExpansionLevels = (levelSizes, nodeCount) => {
782
782
  if (levelSizes.length <= 1) {
783
783
  return []
784
784
  }
785
- const maxScale = nodeCount > massiveGraphNodeThreshold
785
+ const isMassive = nodeCount > massiveGraphNodeThreshold
786
+ const maxScale = isMassive
786
787
  ? massiveEcosystemClusterScaleThreshold
787
788
  : ecosystemClusterScaleThreshold
788
- const startScale = 0.04
789
+ const startScale = isMassive ? 0.82 : 0.18
789
790
  const transitionCount = levelSizes.length - 1
790
791
  const usableScale = Math.max(0.08, maxScale - startScale)
791
792
  const step = usableScale / transitionCount
793
+ const stride = isMassive ? 0.9 : 0.78
794
+ const overlap = isMassive ? 1.28 : 1.75
792
795
  const levels = []
793
796
  for (let index = 0; index < transitionCount; index += 1) {
794
- const start = startScale + step * index * 0.72
795
- const end = Math.min(maxScale, start + step * 1.85)
797
+ const start = startScale + step * index * stride
798
+ const end = Math.min(maxScale, start + step * overlap)
796
799
  levels.push({
797
800
  parentSize: levelSizes[index],
798
801
  childSize: levelSizes[index + 1],
@@ -970,7 +973,8 @@ const zoomProgress = (scale, start, end) =>
970
973
  smoothStep((scale - start) / Math.max(end - start, 0.0001))
971
974
 
972
975
  const semanticZoomSpread = (progress, childSize) => {
973
- const curve = Math.pow(progress, 4.2)
976
+ const spreadExponent = childSize <= Math.ceil(ecosystemLevelNodeCap / 12) ? 5.6 : 4.2
977
+ const curve = Math.pow(progress, spreadExponent)
974
978
  if (childSize >= Math.ceil(ecosystemLevelNodeCap / 2)) {
975
979
  return 0.12 + curve * 0.88
976
980
  }
@@ -978,7 +982,8 @@ const semanticZoomSpread = (progress, childSize) => {
978
982
  }
979
983
 
980
984
  const opacityForProgress = (progress, childSize) => {
981
- const eased = Math.pow(progress, 2.1)
985
+ const opacityExponent = childSize <= Math.ceil(ecosystemLevelNodeCap / 12) ? 2.8 : 2.1
986
+ const eased = Math.pow(progress, opacityExponent)
982
987
  if (childSize >= Math.ceil(ecosystemLevelNodeCap / 2)) {
983
988
  return 0.22 + eased * 0.78
984
989
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andespindola/brainlink",
3
- "version": "0.1.0-beta.98",
3
+ "version": "0.1.0-beta.99",
4
4
  "description": "Local-first knowledge memory for agents with Markdown, backlinks, indexing and context retrieval.",
5
5
  "type": "module",
6
6
  "license": "MIT",