@andespindola/brainlink 0.1.0-beta.91 → 0.1.0-beta.92
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 +20 -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 of connected 1000-note points, zoom-in continuously spreads and fades only focused clusters through 500-note, 250-note, 125-note and 60-note subgraphs with aggregated real links plus local sibling mesh links, keeps parent points during expansion to avoid visual jumps, then progressively raises the focused node budget so local areas keep nearby notes and links visible
|
|
605
|
+
- graph LOD progression: graphs up to 1000 notes render directly; larger graphs use a compact memory-hub-centered mesh of small connected 1000-note points, zoom-in delays expansion until the focused cluster is visually close, then continuously spreads and fades only focused clusters through 500-note, 250-note, 125-note and 60-note subgraphs with aggregated real links plus local sibling mesh links, keeps parent points during expansion to avoid visual jumps, then progressively raises the focused node budget so local areas keep nearby notes and links visible
|
|
606
606
|
|
|
607
607
|
The server indexes before starting by default. Use `--no-index` to skip that step:
|
|
608
608
|
|
|
@@ -27,15 +27,15 @@ const ecosystemGroupSizes = [1000, 500, 250, 125, 60]
|
|
|
27
27
|
const ecosystemClusterEdgeLimit = 520
|
|
28
28
|
const ecosystemHubEdgeLimit = 120
|
|
29
29
|
const ecosystemSiblingEdgeLimit = 180
|
|
30
|
-
const ecosystemClusterScaleThreshold = 0.
|
|
30
|
+
const ecosystemClusterScaleThreshold = 0.78
|
|
31
31
|
const ecosystemSubgraphScaleThreshold = 0.18
|
|
32
32
|
const ecosystemMicroScaleThreshold = 0.08
|
|
33
|
-
const ecosystemFocusedParentLimit =
|
|
33
|
+
const ecosystemFocusedParentLimit = 2
|
|
34
34
|
const ecosystemExpansionLevels = [
|
|
35
|
-
{ parentSize: 1000, childSize: 500, start: 0.
|
|
36
|
-
{ parentSize: 500, childSize: 250, start: 0.
|
|
37
|
-
{ parentSize: 250, childSize: 125, start: 0.
|
|
38
|
-
{ parentSize: 125, childSize: 60, start: 0.
|
|
35
|
+
{ parentSize: 1000, childSize: 500, start: 0.16, end: 0.34 },
|
|
36
|
+
{ parentSize: 500, childSize: 250, start: 0.3, end: 0.5 },
|
|
37
|
+
{ parentSize: 250, childSize: 125, start: 0.46, end: 0.66 },
|
|
38
|
+
{ parentSize: 125, childSize: 60, start: 0.62, end: 0.78 }
|
|
39
39
|
]
|
|
40
40
|
const zoomRecoveryGuardMs = 4200
|
|
41
41
|
const zoomCapTargetViewportShare = 0.72
|
|
@@ -743,11 +743,11 @@ const selectEcosystemRepresentative = nodes => {
|
|
|
743
743
|
}
|
|
744
744
|
|
|
745
745
|
const ecosystemLayoutSpacingForSize = size => {
|
|
746
|
-
if (size >= 1000) return
|
|
747
|
-
if (size >= 500) return
|
|
748
|
-
if (size >= 250) return
|
|
749
|
-
if (size >= 125) return
|
|
750
|
-
return
|
|
746
|
+
if (size >= 1000) return 260
|
|
747
|
+
if (size >= 500) return 92
|
|
748
|
+
if (size >= 250) return 52
|
|
749
|
+
if (size >= 125) return 28
|
|
750
|
+
return 16
|
|
751
751
|
}
|
|
752
752
|
|
|
753
753
|
const ecosystemCompactPoint = (index, total, center, spacing) => {
|
|
@@ -894,7 +894,9 @@ const smoothStep = value => {
|
|
|
894
894
|
const zoomProgress = (scale, start, end) =>
|
|
895
895
|
smoothStep((scale - start) / Math.max(end - start, 0.0001))
|
|
896
896
|
|
|
897
|
-
const
|
|
897
|
+
const semanticZoomSpread = progress => Math.pow(progress, 2.6)
|
|
898
|
+
|
|
899
|
+
const opacityForSpread = spread => 0.03 + smoothStep(spread) * 0.97
|
|
898
900
|
|
|
899
901
|
const expandFocusedClusters = (parentClusters, childSize, spread, viewport) => {
|
|
900
902
|
const focusPoint = ecosystemFocusPoint()
|
|
@@ -943,10 +945,11 @@ const selectHierarchicalEcosystemClusters = viewport => {
|
|
|
943
945
|
if (parentClusters.length === 0) {
|
|
944
946
|
continue
|
|
945
947
|
}
|
|
946
|
-
const
|
|
947
|
-
if (
|
|
948
|
+
const progress = zoomProgress(state.transform.scale, level.start, level.end)
|
|
949
|
+
if (progress <= 0.025) {
|
|
948
950
|
continue
|
|
949
951
|
}
|
|
952
|
+
const spread = semanticZoomSpread(progress)
|
|
950
953
|
const expansion = expandFocusedClusters(parentClusters, level.childSize, spread, viewport)
|
|
951
954
|
visibleClusters.push(...expansion.childClusters)
|
|
952
955
|
}
|
|
@@ -2527,11 +2530,11 @@ const clusterRadiusPx = cluster => {
|
|
|
2527
2530
|
return 10
|
|
2528
2531
|
}
|
|
2529
2532
|
if (cluster.isHub) {
|
|
2530
|
-
return
|
|
2533
|
+
return 4.2
|
|
2531
2534
|
}
|
|
2532
2535
|
if (String(cluster.id).startsWith('ecosystem-')) {
|
|
2533
|
-
const base = cluster.size >= 1000 ? 2
|
|
2534
|
-
return Math.max(
|
|
2536
|
+
const base = cluster.size >= 1000 ? 1.2 : cluster.size >= 500 ? 1.1 : cluster.size >= 250 ? 1 : cluster.size >= 125 ? 0.92 : 0.86
|
|
2537
|
+
return Math.max(0.85, Math.min(2.45, base + Math.log10(cluster.count + 1) * 0.18))
|
|
2535
2538
|
}
|
|
2536
2539
|
return Math.max(8, Math.min(28, 8 + Math.log2(cluster.count + 1) * 3))
|
|
2537
2540
|
}
|
package/package.json
CHANGED