@andespindola/brainlink 0.1.0-beta.95 → 0.1.0-beta.96
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 +1 -1
- package/dist/application/frontend/client-js.js +29 -17
- package/package.json +1 -1
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 a compact memory-hub-centered mesh
|
|
605
|
+
- graph LOD progression: graphs up to 1000 notes render directly; larger graphs use a compact memory-hub-centered mesh where each 1000-note point already carries a faint connected 500-note micro-structure, then zoom-in keeps focused child clusters latent at the parent position before fading and separating them through 250-note, 125-note, 60-note, 30-note, 15-note and 8-note subgraphs with aggregated real links plus local sibling mesh links, and in massive graphs keeps this subgraph mode active much longer with finer wheel steps so deep zoom does not abruptly switch to a broad sampled node cloud
|
|
606
606
|
|
|
607
607
|
The server indexes before starting by default. Use `--no-index` to skip that step:
|
|
608
608
|
|
|
@@ -901,9 +901,21 @@ const smoothStep = value => {
|
|
|
901
901
|
const zoomProgress = (scale, start, end) =>
|
|
902
902
|
smoothStep((scale - start) / Math.max(end - start, 0.0001))
|
|
903
903
|
|
|
904
|
-
const semanticZoomSpread =
|
|
904
|
+
const semanticZoomSpread = (progress, childSize) => {
|
|
905
|
+
const curve = Math.pow(progress, 4.2)
|
|
906
|
+
if (childSize >= 500) {
|
|
907
|
+
return 0.12 + curve * 0.88
|
|
908
|
+
}
|
|
909
|
+
return curve
|
|
910
|
+
}
|
|
905
911
|
|
|
906
|
-
const opacityForProgress =
|
|
912
|
+
const opacityForProgress = (progress, childSize) => {
|
|
913
|
+
const eased = Math.pow(progress, 2.1)
|
|
914
|
+
if (childSize >= 500) {
|
|
915
|
+
return 0.22 + eased * 0.78
|
|
916
|
+
}
|
|
917
|
+
return eased
|
|
918
|
+
}
|
|
907
919
|
|
|
908
920
|
const expandFocusedClusters = (parentClusters, childSize, progress, spread, viewport) => {
|
|
909
921
|
const focusPoint = ecosystemFocusPoint()
|
|
@@ -915,7 +927,7 @@ const expandFocusedClusters = (parentClusters, childSize, progress, spread, view
|
|
|
915
927
|
const childClusters = state.ecosystemClustersBySize.get(childSize) ?? []
|
|
916
928
|
const visibleChildClusters = childClusters
|
|
917
929
|
.filter(cluster => expandedParentIds.has(cluster.parentId))
|
|
918
|
-
.map(cluster => spreadChildClusterFromParent(cluster, progress, spread))
|
|
930
|
+
.map(cluster => spreadChildClusterFromParent(cluster, childSize, progress, spread))
|
|
919
931
|
.filter(cluster => isClusterInViewport(cluster, viewport))
|
|
920
932
|
|
|
921
933
|
return {
|
|
@@ -924,11 +936,11 @@ const expandFocusedClusters = (parentClusters, childSize, progress, spread, view
|
|
|
924
936
|
}
|
|
925
937
|
}
|
|
926
938
|
|
|
927
|
-
const spreadChildClusterFromParent = (cluster, progress, spread) => {
|
|
939
|
+
const spreadChildClusterFromParent = (cluster, childSize, progress, spread) => {
|
|
928
940
|
if (!Number.isFinite(cluster.parentX) || !Number.isFinite(cluster.parentY)) {
|
|
929
941
|
return {
|
|
930
942
|
...cluster,
|
|
931
|
-
lodOpacity: opacityForProgress(progress)
|
|
943
|
+
lodOpacity: opacityForProgress(progress, childSize)
|
|
932
944
|
}
|
|
933
945
|
}
|
|
934
946
|
|
|
@@ -936,7 +948,7 @@ const spreadChildClusterFromParent = (cluster, progress, spread) => {
|
|
|
936
948
|
...cluster,
|
|
937
949
|
x: cluster.parentX + (cluster.x - cluster.parentX) * spread,
|
|
938
950
|
y: cluster.parentY + (cluster.y - cluster.parentY) * spread,
|
|
939
|
-
lodOpacity: opacityForProgress(progress)
|
|
951
|
+
lodOpacity: opacityForProgress(progress, childSize)
|
|
940
952
|
}
|
|
941
953
|
}
|
|
942
954
|
|
|
@@ -953,7 +965,7 @@ const selectHierarchicalEcosystemClusters = viewport => {
|
|
|
953
965
|
continue
|
|
954
966
|
}
|
|
955
967
|
const progress = zoomProgress(state.transform.scale, level.start, level.end)
|
|
956
|
-
const spread = semanticZoomSpread(progress)
|
|
968
|
+
const spread = semanticZoomSpread(progress, level.childSize)
|
|
957
969
|
const expansion = expandFocusedClusters(parentClusters, level.childSize, progress, spread, viewport)
|
|
958
970
|
visibleClusters.push(...expansion.childClusters)
|
|
959
971
|
}
|
|
@@ -2535,25 +2547,25 @@ const clusterRadiusPx = cluster => {
|
|
|
2535
2547
|
return 10
|
|
2536
2548
|
}
|
|
2537
2549
|
if (cluster.isHub) {
|
|
2538
|
-
return 3.
|
|
2550
|
+
return 3.8
|
|
2539
2551
|
}
|
|
2540
2552
|
if (String(cluster.id).startsWith('ecosystem-')) {
|
|
2541
2553
|
const base = cluster.size >= 1000
|
|
2542
|
-
? 0.
|
|
2554
|
+
? 0.96
|
|
2543
2555
|
: cluster.size >= 500
|
|
2544
|
-
? 0.
|
|
2556
|
+
? 0.9
|
|
2545
2557
|
: cluster.size >= 250
|
|
2546
|
-
? 0.
|
|
2558
|
+
? 0.82
|
|
2547
2559
|
: cluster.size >= 125
|
|
2548
|
-
? 0.
|
|
2560
|
+
? 0.74
|
|
2549
2561
|
: cluster.size >= 60
|
|
2550
|
-
? 0.
|
|
2562
|
+
? 0.66
|
|
2551
2563
|
: cluster.size >= 30
|
|
2552
|
-
? 0.
|
|
2564
|
+
? 0.62
|
|
2553
2565
|
: cluster.size >= 15
|
|
2554
|
-
? 0.
|
|
2555
|
-
: 0.
|
|
2556
|
-
return Math.max(0.
|
|
2566
|
+
? 0.74
|
|
2567
|
+
: 0.9
|
|
2568
|
+
return Math.max(0.62, Math.min(2.2, base + Math.log10(cluster.count + 1) * 0.14))
|
|
2557
2569
|
}
|
|
2558
2570
|
return Math.max(8, Math.min(28, 8 + Math.log2(cluster.count + 1) * 3))
|
|
2559
2571
|
}
|
package/package.json
CHANGED