@mindexec/cli 0.2.446 → 0.2.447

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.
Files changed (31) hide show
  1. package/README.md +2 -2
  2. package/package.json +2 -2
  3. package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
  4. package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
  5. package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
  6. package/remote-hub.js +1 -1
  7. package/scripts/remote-fleet-render-smoke.mjs +74 -36
  8. package/scripts/remote-hub-smoke.mjs +7 -0
  9. package/wwwroot/_content/MindExecution.Shared/js/background-themes.js +1 -3
  10. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +199 -100
  11. package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-hotpath.js +902 -0
  12. package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +56 -385
  13. package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +90 -134
  14. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +167 -24
  15. package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +92 -50
  16. package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +35 -12
  17. package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +35 -2
  18. package/wwwroot/_framework/{MindExecution.Core.djyzj5mxyk.dll → MindExecution.Core.mswl4wlkm9.dll} +0 -0
  19. package/wwwroot/_framework/{MindExecution.Kernel.6e5cj9aijz.dll → MindExecution.Kernel.zupeldfptg.dll} +0 -0
  20. package/wwwroot/_framework/{MindExecution.Plugins.Admin.siulh9tfrf.dll → MindExecution.Plugins.Admin.hq0vyqnqtn.dll} +0 -0
  21. package/wwwroot/_framework/{MindExecution.Plugins.Business.8cjtrc7qd3.dll → MindExecution.Plugins.Business.pucw3o7rno.dll} +0 -0
  22. package/wwwroot/_framework/{MindExecution.Plugins.Concept.rpp78mc75u.dll → MindExecution.Plugins.Concept.557tzzkrrx.dll} +0 -0
  23. package/wwwroot/_framework/{MindExecution.Plugins.Directory.wfv0ff9v4u.dll → MindExecution.Plugins.Directory.zh1ddg1fn6.dll} +0 -0
  24. package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.jdppnbd6g4.dll → MindExecution.Plugins.PlanMaster.0z9pzynpu9.dll} +0 -0
  25. package/wwwroot/_framework/{MindExecution.Plugins.YouTube.a43f2q3pkw.dll → MindExecution.Plugins.YouTube.y8g77r54fa.dll} +0 -0
  26. package/wwwroot/_framework/{MindExecution.Shared.gwtyj0e9lw.dll → MindExecution.Shared.1ymsdbwid2.dll} +0 -0
  27. package/wwwroot/_framework/{MindExecution.Web.j3zaapcxtt.dll → MindExecution.Web.bb1txupuv0.dll} +0 -0
  28. package/wwwroot/_framework/blazor.boot.json +21 -21
  29. package/wwwroot/index.html +2 -1
  30. package/wwwroot/service-worker-assets.js +35 -31
  31. package/wwwroot/service-worker.js +1 -1
@@ -525,7 +525,7 @@
525
525
  return nodeEntry.cssObject.userData.spatialGridKeys;
526
526
  }
527
527
 
528
- return new Set();
528
+ return null;
529
529
  }
530
530
 
531
531
  function setNodeSpatialGridKeys(nodeEntry, keys) {
@@ -589,7 +589,7 @@
589
589
  const bounds = getNodeWorldBounds(nodeEntry);
590
590
  if (!bounds) return;
591
591
 
592
- const oldKeys = getNodeSpatialGridKeys(nodeEntry);
592
+ const oldKeys = getNodeSpatialGridKeys(nodeEntry) || new Set();
593
593
  const newKeys = new Set();
594
594
  const startCellX = Math.floor(bounds.minX / module.GRID_CELL_SIZE);
595
595
  const endCellX = Math.floor(bounds.maxX / module.GRID_CELL_SIZE);
@@ -789,7 +789,7 @@
789
789
  const preservedY = Number(oldGroup?.position?.y ?? model.positionY ?? 0);
790
790
  const preservedZ = Number(oldGroup?.position?.z ?? model.positionZ ?? 0);
791
791
  const preservedVisible = oldGroup?.visible !== false;
792
- const preservedSpatialKeys = new Set(getNodeSpatialGridKeys(nodeEntry));
792
+ const preservedSpatialKeys = new Set(getNodeSpatialGridKeys(nodeEntry) || []);
793
793
  const width = Number(model.width || 400);
794
794
  const height = Number(model.height || 200);
795
795
 
@@ -846,21 +846,15 @@
846
846
  function removeNodeFromSpatialGrid(module, nodeId, nodeEntry = null) {
847
847
  if (!module?.spatialGrid || !nodeId) return;
848
848
 
849
- const keys = getNodeSpatialGridKeys(nodeEntry);
850
- if (keys && typeof keys.forEach === 'function') {
851
- keys.forEach(key => {
852
- const cell = module.spatialGrid.get(key);
853
- if (cell) cell.delete(nodeId);
854
- if (cell && cell.size === 0) module.spatialGrid.delete(key);
855
- });
856
- setNodeSpatialGridKeys(nodeEntry, new Set());
857
- return;
858
- }
859
-
860
- module.spatialGrid.forEach((cell, key) => {
849
+ const keys = getNodeSpatialGridKeys(nodeEntry)
850
+ || window.MindMapCss3dHotPath?.getSpatialGridKeysForBounds?.(module, nodeEntry)
851
+ || new Set();
852
+ keys.forEach(key => {
853
+ const cell = module.spatialGrid.get(key);
861
854
  if (!cell?.delete?.(nodeId)) return;
862
855
  if (cell.size === 0) module.spatialGrid.delete(key);
863
856
  });
857
+ setNodeSpatialGridKeys(nodeEntry, new Set());
864
858
  }
865
859
  // ▲▲▲ [New] ▲▲▲
866
860
 
@@ -927,6 +921,7 @@
927
921
  return null;
928
922
  }
929
923
 
924
+ const geometryKey = `${Math.round(width)}x${Math.round(height)}:${IMAGE_SELECTION_GLOW_PAD}`;
930
925
  if (!outline) {
931
926
  outline = new THREE.Mesh(
932
927
  createRoundedRectFilledGeometry(
@@ -943,15 +938,20 @@
943
938
  })
944
939
  );
945
940
  outline.name = 'outline';
941
+ outline.userData.geometrySizeKey = geometryKey;
946
942
  group.add(outline);
943
+ } else {
944
+ window.MindMapCss3dHotPath?.replaceGeometryIfSizeChanged?.(
945
+ outline,
946
+ geometryKey,
947
+ () => createRoundedRectFilledGeometry(
948
+ width + IMAGE_SELECTION_GLOW_PAD,
949
+ height + IMAGE_SELECTION_GLOW_PAD,
950
+ 20 + (IMAGE_SELECTION_GLOW_PAD * 0.5)
951
+ )
952
+ );
947
953
  }
948
954
 
949
- outline.geometry?.dispose?.();
950
- outline.geometry = createRoundedRectFilledGeometry(
951
- width + IMAGE_SELECTION_GLOW_PAD,
952
- height + IMAGE_SELECTION_GLOW_PAD,
953
- 20 + (IMAGE_SELECTION_GLOW_PAD * 0.5)
954
- );
955
955
  outline.position.set(-(IMAGE_SELECTION_GLOW_PAD / 2), IMAGE_SELECTION_GLOW_PAD / 2, 0);
956
956
  outline.renderOrder = Math.max(0, (baseRenderOrder || 1) - 1);
957
957
  outline.visible = !!isSelected;
@@ -3487,6 +3487,66 @@
3487
3487
  window.MindMapTextOverlayV2?.invalidateView?.(module);
3488
3488
  }
3489
3489
 
3490
+ function applyNodeGlRenderOrder(module, entry, targetBaseOrder) {
3491
+ if (!entry?.glObject) return;
3492
+ const renderables = [];
3493
+ let minOrder = Infinity;
3494
+ let maxOrder = -Infinity;
3495
+ entry.glObject.traverse(child => {
3496
+ if (!child.isMesh && !child.isLine) return;
3497
+ const order = Number(child.renderOrder || 0);
3498
+ renderables.push(child);
3499
+ if (order < minOrder) minOrder = order;
3500
+ if (order > maxOrder) maxOrder = order;
3501
+ });
3502
+ if (!Number.isFinite(minOrder)) return;
3503
+ const delta = Number(targetBaseOrder || 0) - minOrder;
3504
+ for (let i = 0; i < renderables.length; i++) {
3505
+ renderables[i].renderOrder = Number(renderables[i].renderOrder || 0) + delta;
3506
+ }
3507
+ module.nodeZCounter = Math.max(Number(module.nodeZCounter || 0), maxOrder + delta + 1);
3508
+ }
3509
+
3510
+ function flushPendingGlRenderOrder(module, entry) {
3511
+ if (!module || !entry || !Number.isFinite(entry._pendingGlRenderOrderBase)) {
3512
+ return false;
3513
+ }
3514
+ applyNodeGlRenderOrder(module, entry, entry._pendingGlRenderOrderBase);
3515
+ delete entry._pendingGlRenderOrderBase;
3516
+ entry._pendingGlRenderOrderScheduled = false;
3517
+ return true;
3518
+ }
3519
+
3520
+ function schedulePendingGlRenderOrder(module, nodeId, entry, attempt = 0) {
3521
+ if (!module || !entry || entry._pendingGlRenderOrderScheduled === true) return;
3522
+ entry._pendingGlRenderOrderScheduled = true;
3523
+ const run = () => {
3524
+ entry._pendingGlRenderOrderScheduled = false;
3525
+ if (module.nodeObjectsById?.get?.(nodeId) !== entry ||
3526
+ !Number.isFinite(entry._pendingGlRenderOrderBase)) {
3527
+ return;
3528
+ }
3529
+ const isInteracting =
3530
+ module.isPanning === true ||
3531
+ module.isZooming === true ||
3532
+ module.isDraggingNode === true ||
3533
+ module.isDraggingMultipleNodes === true ||
3534
+ module.isSelecting === true;
3535
+ if (isInteracting && attempt < 12) {
3536
+ schedulePendingGlRenderOrder(module, nodeId, entry, attempt + 1);
3537
+ return;
3538
+ }
3539
+ if (!isInteracting) {
3540
+ flushPendingGlRenderOrder(module, entry);
3541
+ }
3542
+ };
3543
+ if (typeof requestIdleCallback === 'function') {
3544
+ requestIdleCallback(run, { timeout: 180 });
3545
+ } else {
3546
+ setTimeout(run, 32);
3547
+ }
3548
+ }
3549
+
3490
3550
  function bringNodeToFront(module, nodeId) {
3491
3551
  if (!module || !nodeId) return;
3492
3552
 
@@ -3495,35 +3555,15 @@
3495
3555
  const contentTypeLower = getNodeContentTypeLower(entry.model);
3496
3556
  const usesSafeMediaSelectionChrome = contentTypeLower === 'video' || contentTypeLower === 'embed';
3497
3557
 
3498
- // Keep relative renderOrder offsets (e.g., resize handles above body) and move whole node to top.
3499
- if (entry.glObject) {
3500
- let minOrder = Infinity;
3501
- let maxOrder = -Infinity;
3502
-
3503
- entry.glObject.traverse(child => {
3504
- if (child.isMesh || child.isLine) {
3505
- const order = child.renderOrder || 0;
3506
- if (order < minOrder) minOrder = order;
3507
- if (order > maxOrder) maxOrder = order;
3508
- }
3509
- });
3510
-
3511
- if (!Number.isFinite(minOrder)) minOrder = 0;
3512
- if (!Number.isFinite(maxOrder)) maxOrder = minOrder;
3513
-
3514
- const targetBaseOrder = module.nodeZCounter++;
3515
- const delta = targetBaseOrder - minOrder;
3516
-
3517
- entry.glObject.traverse(child => {
3518
- if (child.isMesh || child.isLine) {
3519
- child.renderOrder = (child.renderOrder || 0) + delta;
3520
- }
3521
- });
3522
-
3523
- const nextTop = maxOrder + delta + 1;
3524
- if (nextTop > module.nodeZCounter) {
3525
- module.nodeZCounter = nextTop;
3526
- }
3558
+ const targetBaseOrder = module.nodeZCounter++;
3559
+ const deferGlOrder = entry.currentType === 'CSS' &&
3560
+ entry.cssObject?.visible === true &&
3561
+ Number(module.camera?.position?.z || 0) < 9000;
3562
+ if (deferGlOrder) {
3563
+ entry._pendingGlRenderOrderBase = targetBaseOrder;
3564
+ schedulePendingGlRenderOrder(module, nodeId, entry);
3565
+ } else {
3566
+ applyNodeGlRenderOrder(module, entry, targetBaseOrder);
3527
3567
  }
3528
3568
 
3529
3569
  // CSS3DObject re-parenting can trigger a one-frame detach flicker.
@@ -4295,6 +4335,7 @@
4295
4335
  // ▲▲▲ [Changed] ▲▲▲
4296
4336
 
4297
4337
  if (nodeEntry.currentType === 'GL') {
4338
+ flushPendingGlRenderOrder(module, nodeEntry);
4298
4339
  log(`[MindMapNodes] SwitchToWebGL(${nodeId}) SKIPPED (Already in GL mode).`);
4299
4340
  return;
4300
4341
  }
@@ -4304,6 +4345,7 @@
4304
4345
  if (nodeEntry.isDeferredShell === true) {
4305
4346
  await ensureDeferredNodeMaterialized(module, nodeEntry, { attachToScene: true });
4306
4347
  }
4348
+ flushPendingGlRenderOrder(module, nodeEntry);
4307
4349
 
4308
4350
  // Store CSS3D textarea scroll ratio into WebGL scrollOffset
4309
4351
  const textarea = nodeEntry.cssObject.element.querySelector('textarea');
@@ -150,8 +150,10 @@
150
150
  let renderQueueScheduled = false;
151
151
  let renderModuleRef = null;
152
152
  let renderQueueDirty = false;
153
- const RENDER_BUDGET_MS = 8;
154
- let renderSeq = 0;
153
+ const RENDER_BUDGET_MS = 8;
154
+ let renderSeq = 0;
155
+ let renderQueueSortCount = 0;
156
+ let renderQueueMaxLength = 0;
155
157
 
156
158
  function computeRenderPriority(module, nodeId) {
157
159
  const entry = module?.nodeObjectsById?.get(nodeId);
@@ -183,6 +185,7 @@
183
185
  renderQueue.push({ nodeId, priority: computeRenderPriority(module, nodeId), seq: renderSeq++ });
184
186
  renderQueueSet.add(nodeId);
185
187
  renderQueueDirty = true;
188
+ renderQueueMaxLength = Math.max(renderQueueMaxLength, renderQueue.length);
186
189
  }
187
190
  scheduleRenderQueue();
188
191
  }
@@ -200,6 +203,7 @@
200
203
  if (renderQueueDirty) {
201
204
  if (renderQueue.length > 1) {
202
205
  renderQueue.sort((a, b) => (b.priority - a.priority) || (b.seq - a.seq));
206
+ renderQueueSortCount++;
203
207
  }
204
208
  renderQueueDirty = false;
205
209
  }
@@ -348,6 +352,7 @@
348
352
  if (!group) return null;
349
353
 
350
354
  let outline = group.getObjectByName('outline');
355
+ const geometryKey = `${Math.round(width)}x${Math.round(height)}:${IMAGE_SELECTION_GLOW_PAD}`;
351
356
  if (!outline) {
352
357
  outline = new THREE.Mesh(
353
358
  createRoundedRectFilledGeometry(
@@ -364,16 +369,24 @@
364
369
  })
365
370
  );
366
371
  outline.name = 'outline';
367
- outline.userData = { ...(outline.userData || {}), isImageSelectionGlow: true };
372
+ outline.userData = {
373
+ ...(outline.userData || {}),
374
+ isImageSelectionGlow: true,
375
+ geometrySizeKey: geometryKey
376
+ };
368
377
  group.add(outline);
378
+ } else {
379
+ window.MindMapCss3dHotPath?.replaceGeometryIfSizeChanged?.(
380
+ outline,
381
+ geometryKey,
382
+ () => createRoundedRectFilledGeometry(
383
+ width + IMAGE_SELECTION_GLOW_PAD,
384
+ height + IMAGE_SELECTION_GLOW_PAD,
385
+ 20 + (IMAGE_SELECTION_GLOW_PAD * 0.5)
386
+ )
387
+ );
369
388
  }
370
389
 
371
- outline.geometry?.dispose?.();
372
- outline.geometry = createRoundedRectFilledGeometry(
373
- width + IMAGE_SELECTION_GLOW_PAD,
374
- height + IMAGE_SELECTION_GLOW_PAD,
375
- 20 + (IMAGE_SELECTION_GLOW_PAD * 0.5)
376
- );
377
390
  outline.position.set(-(IMAGE_SELECTION_GLOW_PAD / 2), IMAGE_SELECTION_GLOW_PAD / 2, 0);
378
391
  outline.renderOrder = baseRenderOrder - 1;
379
392
  outline.visible = !!isSelected;
@@ -2199,7 +2212,7 @@
2199
2212
  }
2200
2213
 
2201
2214
  // Expose MindMapPipeline globally
2202
- window.MindMapPipeline = {
2215
+ window.MindMapPipeline = {
2203
2216
  processRenderQueue: processRenderQueue,
2204
2217
  debouncedProcessRenderQueue: debouncedProcessRenderQueue,
2205
2218
  throttledScrollUpdate: throttledScrollUpdate,
@@ -2207,8 +2220,18 @@
2207
2220
  throttledProcessRenderQueueDuringResize: throttledProcessRenderQueueDuringResize,
2208
2221
  startResizing: startResizing,
2209
2222
  doResizing: doResizing,
2210
- stopResizing: stopResizing,
2211
- throttledUpdateScrollInCSharp: throttledUpdateScrollInCSharp
2223
+ stopResizing: stopResizing,
2224
+ getQueueDebugMetrics: () => ({
2225
+ sortCount: renderQueueSortCount,
2226
+ maxLength: renderQueueMaxLength,
2227
+ currentLength: renderQueue.length,
2228
+ disposePending: Math.max(0, disposeQueue.length - disposeQueueHead)
2229
+ }),
2230
+ resetQueueDebugMetrics: () => {
2231
+ renderQueueSortCount = 0;
2232
+ renderQueueMaxLength = renderQueue.length;
2233
+ },
2234
+ throttledUpdateScrollInCSharp: throttledUpdateScrollInCSharp
2212
2235
  };
2213
2236
 
2214
2237
  console.log('? mind-map-pipeline.js loaded');
@@ -33,6 +33,7 @@
33
33
  function CSS3DRenderer(){
34
34
  var _width, _height, _widthHalf, _heightHalf;
35
35
  var cache = { camera:{ fov:0, style:'' }, objects: new WeakMap() };
36
+ var debugCounters = { sceneObjectsVisited:0, visibilityPatchEntered:0, visibilityPatchExited:0 };
36
37
  var domElement = document.createElement('div');
37
38
  domElement.style.overflow = 'hidden';
38
39
  domElement.style.contain = 'layout style';
@@ -63,8 +64,8 @@
63
64
  for (var i=0;i<16;i++) next[i]=epsilon(elements[i]);
64
65
  return next;
65
66
  }
66
- function renderObject(object){
67
- if (object.isCSS3DObject){
67
+ function renderCssObject(object){
68
+ if (object?.isCSS3DObject){
68
69
  var visible=object.visible===true;
69
70
  var layoutPrepared=object.userData?._residentTransitionPrepared===true || object.userData?._fullResFringePrepared===true;
70
71
  var display=(visible || layoutPrepared) ? '' : 'none';
@@ -85,6 +86,10 @@
85
86
  cached.display=display;
86
87
  if (element.parentNode!==cameraElement) cameraElement.appendChild(element);
87
88
  }
89
+ }
90
+ function renderObject(object){
91
+ debugCounters.sceneObjectsVisited++;
92
+ renderCssObject(object);
88
93
  for (var i=0,l=object.children.length;i<l;i++) renderObject(object.children[i]);
89
94
  }
90
95
  function renderCameraOnly(renderer, camera, matrixWorldIsCurrent){
@@ -109,6 +114,34 @@
109
114
  object.element?.getBoundingClientRect?.();
110
115
  return true;
111
116
  };
117
+ this.applyVisibilityDiff = function(enteredObjects, exitedObjects){
118
+ var entered=Array.isArray(enteredObjects) ? enteredObjects : [];
119
+ var exited=Array.isArray(exitedObjects) ? exitedObjects : [];
120
+ var visited=0;
121
+ try {
122
+ for (var i=0;i<exited.length;i++){
123
+ var exitedObject=exited[i];
124
+ if (!exitedObject || exitedObject.isCSS3DObject!==true) continue;
125
+ exitedObject.updateMatrixWorld(true);
126
+ renderCssObject(exitedObject);
127
+ visited++;
128
+ }
129
+ for (var j=0;j<entered.length;j++){
130
+ var enteredObject=entered[j];
131
+ if (!enteredObject || enteredObject.isCSS3DObject!==true) continue;
132
+ enteredObject.updateMatrixWorld(true);
133
+ renderCssObject(enteredObject);
134
+ visited++;
135
+ }
136
+ } catch (error) {
137
+ return { complete:false, reason:'visibility-diff-exception', visited:visited, error:error };
138
+ }
139
+ debugCounters.visibilityPatchEntered+=entered.length;
140
+ debugCounters.visibilityPatchExited+=exited.length;
141
+ return { complete:true, entered:entered.length, exited:exited.length, visited:visited };
142
+ };
143
+ this.getDebugCounters = function(){ return { ...debugCounters }; };
144
+ this.resetDebugCounters = function(){ debugCounters={ sceneObjectsVisited:0, visibilityPatchEntered:0, visibilityPatchExited:0 }; };
112
145
  this.render = function(scene, camera){ if (scene.autoUpdate===true) scene.updateMatrixWorld(); renderCameraOnly(this, camera, false); renderObject(scene); };
113
146
  }
114
147
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "mainAssemblyName": "MindExecution.Web",
3
3
  "resources": {
4
- "hash": "sha256-o6tmG5oGpl7vciF713W3t451harGm461qOhCvK87lOE=",
4
+ "hash": "sha256-UZuh8tLI9D39IO7I9pnWdRUu1iZ6Vy2k6IjaF0olNBI=",
5
5
  "fingerprinting": {
6
6
  "Google.Protobuf.9h59ukbel7.dll": "Google.Protobuf.dll",
7
7
  "Markdig.d1j7v41cl1.dll": "Markdig.dll",
@@ -122,16 +122,16 @@
122
122
  "System.brmz7yk5qh.dll": "System.dll",
123
123
  "netstandard.b50t77veor.dll": "netstandard.dll",
124
124
  "System.Private.CoreLib.g6ztz7cmo2.dll": "System.Private.CoreLib.dll",
125
- "MindExecution.Core.djyzj5mxyk.dll": "MindExecution.Core.dll",
126
- "MindExecution.Kernel.6e5cj9aijz.dll": "MindExecution.Kernel.dll",
127
- "MindExecution.Plugins.Admin.siulh9tfrf.dll": "MindExecution.Plugins.Admin.dll",
128
- "MindExecution.Plugins.Business.8cjtrc7qd3.dll": "MindExecution.Plugins.Business.dll",
129
- "MindExecution.Plugins.Concept.rpp78mc75u.dll": "MindExecution.Plugins.Concept.dll",
130
- "MindExecution.Plugins.Directory.wfv0ff9v4u.dll": "MindExecution.Plugins.Directory.dll",
131
- "MindExecution.Plugins.PlanMaster.jdppnbd6g4.dll": "MindExecution.Plugins.PlanMaster.dll",
132
- "MindExecution.Plugins.YouTube.a43f2q3pkw.dll": "MindExecution.Plugins.YouTube.dll",
133
- "MindExecution.Shared.gwtyj0e9lw.dll": "MindExecution.Shared.dll",
134
- "MindExecution.Web.j3zaapcxtt.dll": "MindExecution.Web.dll",
125
+ "MindExecution.Core.mswl4wlkm9.dll": "MindExecution.Core.dll",
126
+ "MindExecution.Kernel.zupeldfptg.dll": "MindExecution.Kernel.dll",
127
+ "MindExecution.Plugins.Admin.hq0vyqnqtn.dll": "MindExecution.Plugins.Admin.dll",
128
+ "MindExecution.Plugins.Business.pucw3o7rno.dll": "MindExecution.Plugins.Business.dll",
129
+ "MindExecution.Plugins.Concept.557tzzkrrx.dll": "MindExecution.Plugins.Concept.dll",
130
+ "MindExecution.Plugins.Directory.zh1ddg1fn6.dll": "MindExecution.Plugins.Directory.dll",
131
+ "MindExecution.Plugins.PlanMaster.0z9pzynpu9.dll": "MindExecution.Plugins.PlanMaster.dll",
132
+ "MindExecution.Plugins.YouTube.y8g77r54fa.dll": "MindExecution.Plugins.YouTube.dll",
133
+ "MindExecution.Shared.1ymsdbwid2.dll": "MindExecution.Shared.dll",
134
+ "MindExecution.Web.bb1txupuv0.dll": "MindExecution.Web.dll",
135
135
  "dotnet.native.566r55w3xu.js": "dotnet.native.js",
136
136
  "dotnet.native.x6q5aixc38.wasm": "dotnet.native.wasm",
137
137
  "dotnet.js": "dotnet.js",
@@ -276,18 +276,18 @@
276
276
  "System.Xml.XDocument.sn51jas17n.dll": "sha256-GNI2kFgFmPTwzuzwUn8gxK+AzGLUWRJFdg9JzIbrybQ=",
277
277
  "System.brmz7yk5qh.dll": "sha256-CfM2miyj1KHApFmqMdLYWio3S/jrdON2pW9Xr2nTwlo=",
278
278
  "netstandard.b50t77veor.dll": "sha256-//jQGOXjb8ET8WtXgOJrAxLx6E7zDJ5RjRRutwkvmxo=",
279
- "MindExecution.Core.djyzj5mxyk.dll": "sha256-mWD5B7qIqi95K+2PlXhtVYKTU0NXvGjFUMZIIKhgOJM=",
280
- "MindExecution.Kernel.6e5cj9aijz.dll": "sha256-soI6Vf+R5EO4br1BPNT8w1Dojx0MrwEpnoU3hlN/Jo4=",
281
- "MindExecution.Plugins.Business.8cjtrc7qd3.dll": "sha256-KKJ9wMXw9lRRp8Yej3hIx2A/KlT4IMnCNvE6nC15NHc=",
282
- "MindExecution.Plugins.Concept.rpp78mc75u.dll": "sha256-EeJ9pPy1kMPUMU1/VZq086s7Rpx8Kl8JNJin/q8CCk0=",
283
- "MindExecution.Plugins.PlanMaster.jdppnbd6g4.dll": "sha256-tx9+RxTaAfdk4GoSZt3mj8tZfGOwNAlK/JMf0NyrkUY=",
284
- "MindExecution.Shared.gwtyj0e9lw.dll": "sha256-4N4HdjdoXtRylfVW6OYliAy9JOlx67Vudw/CbXjCZDs=",
285
- "MindExecution.Web.j3zaapcxtt.dll": "sha256-0eGBQjTRRbbCk0PMweH2fX57WJ/z8Nj2h8IRCvURzUI="
279
+ "MindExecution.Core.mswl4wlkm9.dll": "sha256-Ru09H3PbP8MVKjeEE5FLXnXm2LVpv421tfgliW/vN+M=",
280
+ "MindExecution.Kernel.zupeldfptg.dll": "sha256-azMSlIBQcPcmVNI3eX+WxSnlXUQ/j/NDCtOKDp++owk=",
281
+ "MindExecution.Plugins.Business.pucw3o7rno.dll": "sha256-EXxUy+DRMR51sHo+Q/QYuTh2Oz7/wxeKGhADP07KWcw=",
282
+ "MindExecution.Plugins.Concept.557tzzkrrx.dll": "sha256-aTh3k+ncbMY0UZ0EWHp19SSWyHKIv8/MUW6AqDDmWW8=",
283
+ "MindExecution.Plugins.PlanMaster.0z9pzynpu9.dll": "sha256-vHnd6UzPOrh35E0y1VPsWGj+Jl+Ze2rM9c6SYb+grpM=",
284
+ "MindExecution.Shared.1ymsdbwid2.dll": "sha256-KRyO57WBUyFvSyLnDWqpBoELgMoiC+d6lyBMU9qz8PQ=",
285
+ "MindExecution.Web.bb1txupuv0.dll": "sha256-57REdRLMDGVtyh6YhuvZe0XLVkNhrJHqLDnEDR45l9Q="
286
286
  },
287
287
  "lazyAssembly": {
288
- "MindExecution.Plugins.Admin.siulh9tfrf.dll": "sha256-xJKUGBrCw9pX8r+5p5uCn5oEikqnBhhN8PQk1UQXvwk=",
289
- "MindExecution.Plugins.Directory.wfv0ff9v4u.dll": "sha256-LPqtVKjGSWJC9OfNV3Sc/ohbNBfwPMkt/fvpx4nMRnQ=",
290
- "MindExecution.Plugins.YouTube.a43f2q3pkw.dll": "sha256-duhXTTnMwRKd8YPDL5IkWyunMITVbxMbk0xWZXdaTPU="
288
+ "MindExecution.Plugins.Admin.hq0vyqnqtn.dll": "sha256-eQ9YVFpetThf85xrcPIDWGPIHp2E3kzSVYmghtRFDFo=",
289
+ "MindExecution.Plugins.Directory.zh1ddg1fn6.dll": "sha256-KXobDyCfuJf/4WJf7DAJaBPanfkPZHkdrCiSWwefotg=",
290
+ "MindExecution.Plugins.YouTube.y8g77r54fa.dll": "sha256-/q58KqYenDmVBAYkDcB/Frnz97E/69zjgE++VeKa2Ug="
291
291
  }
292
292
  },
293
293
  "cacheBootResources": true,
@@ -579,7 +579,7 @@
579
579
  }
580
580
 
581
581
  const base = '_content/MindExecution.Shared/js/';
582
- const scriptVersion = '20260724-near-css3d-input-optimization-v939';
582
+ const scriptVersion = '20260725-cold-mid-local-grid-v945';
583
583
  const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
584
584
  console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
585
585
  const criticalScripts = [
@@ -595,6 +595,7 @@
595
595
  'mind-map-glow-shader.js', // ??SDF Glow (no textures, GPU only)
596
596
  'mind-map-video-playback-controls.js',
597
597
  'mind-map-remote-codecs.js',
598
+ 'mind-map-css3d-hotpath.js',
598
599
  'mind-map-css3d-manager.js',
599
600
  'mind-map-object-manager.js',
600
601
  'mind-map-pipeline.js',
@@ -1,5 +1,5 @@
1
1
  self.assetsManifest = {
2
- "version": "pBnHSW0b",
2
+ "version": "1hca8nFH",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -58,7 +58,7 @@
58
58
  "url": "_content/MindExecution.Shared/js/agent-visualization.js"
59
59
  },
60
60
  {
61
- "hash": "sha256-7nukRRerm88Ot5J1KdJMyyTHP3d+zlvaPaECTGeJZAk=",
61
+ "hash": "sha256-qCfvX9VTWXpI/7IAJyV8FXc83Z7vDq7yxYHg5rkp4ZE=",
62
62
  "url": "_content/MindExecution.Shared/js/background-themes.js"
63
63
  },
64
64
  {
@@ -78,7 +78,7 @@
78
78
  "url": "_content/MindExecution.Shared/js/marked.min.js"
79
79
  },
80
80
  {
81
- "hash": "sha256-hxUthw2aeZKkPCvKaa1jYyAkNB4xLAOkRMq795teC0U=",
81
+ "hash": "sha256-4eD2o9mTDubyz6mpk1N9GZ3MmCi09MaC923iYGCb348=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -86,7 +86,11 @@
86
86
  "url": "_content/MindExecution.Shared/js/mind-map-core.js.backup"
87
87
  },
88
88
  {
89
- "hash": "sha256-TDGgoL98z7EsRCteDygp6BPbjkikAsWGQl2wRFPOff8=",
89
+ "hash": "sha256-3OXymXLbgQLXbqa2rQrPpfUq3tnWYVv2LZR3azSeGV0=",
90
+ "url": "_content/MindExecution.Shared/js/mind-map-css3d-hotpath.js"
91
+ },
92
+ {
93
+ "hash": "sha256-2JJyLe6OTexKRnFxVzybuaMqnwJggLHXs37xmjWlUkg=",
90
94
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
95
  },
92
96
  {
@@ -106,7 +110,7 @@
106
110
  "url": "_content/MindExecution.Shared/js/mind-map-glow-shader.js"
107
111
  },
108
112
  {
109
- "hash": "sha256-z6ei/pblSnb1icfwyIbm9GqrNuKFKA0SCeRHv0f7ifw=",
113
+ "hash": "sha256-yU6+cCQmi+iqU9PH1W17Kpgbn4t9MUsgMSRbByeJebw=",
110
114
  "url": "_content/MindExecution.Shared/js/mind-map-interactions.js"
111
115
  },
112
116
  {
@@ -114,7 +118,7 @@
114
118
  "url": "_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js"
115
119
  },
116
120
  {
117
- "hash": "sha256-NejkiYDvjK3zH9yJHAa212PHYv2qXxdTHnV3J9b06g0=",
121
+ "hash": "sha256-I07Vo+UaV2ej2xI0H0Rd3t6oagbgg1Yhime3SMHEDiU=",
118
122
  "url": "_content/MindExecution.Shared/js/mind-map-lod-renderer.js"
119
123
  },
120
124
  {
@@ -134,7 +138,7 @@
134
138
  "url": "_content/MindExecution.Shared/js/mind-map-node-search-worker.js"
135
139
  },
136
140
  {
137
- "hash": "sha256-w8ARoHGjOAb0e9gV2Rgdxx8q0YKdJ2bk2yWwGq8+Rkk=",
141
+ "hash": "sha256-X5aI8spIp8PTAdgUHXT84MNn5jboAkTAPkvqroiKwZ8=",
138
142
  "url": "_content/MindExecution.Shared/js/mind-map-nodes.js"
139
143
  },
140
144
  {
@@ -150,7 +154,7 @@
150
154
  "url": "_content/MindExecution.Shared/js/mind-map-object-manager.js.backup"
151
155
  },
152
156
  {
153
- "hash": "sha256-j8E7panGfk4BEh7iBNe3TLqCHtqvd00/InvVWwpPQ30=",
157
+ "hash": "sha256-5DDlGOvO+rSwX72WkOOoK+XnOQn376q7XozwyQYV54s=",
154
158
  "url": "_content/MindExecution.Shared/js/mind-map-pipeline.js"
155
159
  },
156
160
  {
@@ -194,7 +198,7 @@
194
198
  "url": "_content/MindExecution.Shared/js/plan-master.js"
195
199
  },
196
200
  {
197
- "hash": "sha256-hxZf4WN0MA10CQ/d4ovA2C5HM67HyjQ5fne/TcIFG/U=",
201
+ "hash": "sha256-bhxag0Uf6KL+a8LEeYLS3UvXAkh4nTflb7xcxtbIl+U=",
198
202
  "url": "_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js"
199
203
  },
200
204
  {
@@ -422,44 +426,44 @@
422
426
  "url": "_framework/MimeMapping.og9ys58ylm.dll"
423
427
  },
424
428
  {
425
- "hash": "sha256-mWD5B7qIqi95K+2PlXhtVYKTU0NXvGjFUMZIIKhgOJM=",
426
- "url": "_framework/MindExecution.Core.djyzj5mxyk.dll"
429
+ "hash": "sha256-Ru09H3PbP8MVKjeEE5FLXnXm2LVpv421tfgliW/vN+M=",
430
+ "url": "_framework/MindExecution.Core.mswl4wlkm9.dll"
427
431
  },
428
432
  {
429
- "hash": "sha256-soI6Vf+R5EO4br1BPNT8w1Dojx0MrwEpnoU3hlN/Jo4=",
430
- "url": "_framework/MindExecution.Kernel.6e5cj9aijz.dll"
433
+ "hash": "sha256-azMSlIBQcPcmVNI3eX+WxSnlXUQ/j/NDCtOKDp++owk=",
434
+ "url": "_framework/MindExecution.Kernel.zupeldfptg.dll"
431
435
  },
432
436
  {
433
- "hash": "sha256-xJKUGBrCw9pX8r+5p5uCn5oEikqnBhhN8PQk1UQXvwk=",
434
- "url": "_framework/MindExecution.Plugins.Admin.siulh9tfrf.dll"
437
+ "hash": "sha256-eQ9YVFpetThf85xrcPIDWGPIHp2E3kzSVYmghtRFDFo=",
438
+ "url": "_framework/MindExecution.Plugins.Admin.hq0vyqnqtn.dll"
435
439
  },
436
440
  {
437
- "hash": "sha256-KKJ9wMXw9lRRp8Yej3hIx2A/KlT4IMnCNvE6nC15NHc=",
438
- "url": "_framework/MindExecution.Plugins.Business.8cjtrc7qd3.dll"
441
+ "hash": "sha256-EXxUy+DRMR51sHo+Q/QYuTh2Oz7/wxeKGhADP07KWcw=",
442
+ "url": "_framework/MindExecution.Plugins.Business.pucw3o7rno.dll"
439
443
  },
440
444
  {
441
- "hash": "sha256-EeJ9pPy1kMPUMU1/VZq086s7Rpx8Kl8JNJin/q8CCk0=",
442
- "url": "_framework/MindExecution.Plugins.Concept.rpp78mc75u.dll"
445
+ "hash": "sha256-aTh3k+ncbMY0UZ0EWHp19SSWyHKIv8/MUW6AqDDmWW8=",
446
+ "url": "_framework/MindExecution.Plugins.Concept.557tzzkrrx.dll"
443
447
  },
444
448
  {
445
- "hash": "sha256-LPqtVKjGSWJC9OfNV3Sc/ohbNBfwPMkt/fvpx4nMRnQ=",
446
- "url": "_framework/MindExecution.Plugins.Directory.wfv0ff9v4u.dll"
449
+ "hash": "sha256-KXobDyCfuJf/4WJf7DAJaBPanfkPZHkdrCiSWwefotg=",
450
+ "url": "_framework/MindExecution.Plugins.Directory.zh1ddg1fn6.dll"
447
451
  },
448
452
  {
449
- "hash": "sha256-tx9+RxTaAfdk4GoSZt3mj8tZfGOwNAlK/JMf0NyrkUY=",
450
- "url": "_framework/MindExecution.Plugins.PlanMaster.jdppnbd6g4.dll"
453
+ "hash": "sha256-vHnd6UzPOrh35E0y1VPsWGj+Jl+Ze2rM9c6SYb+grpM=",
454
+ "url": "_framework/MindExecution.Plugins.PlanMaster.0z9pzynpu9.dll"
451
455
  },
452
456
  {
453
- "hash": "sha256-duhXTTnMwRKd8YPDL5IkWyunMITVbxMbk0xWZXdaTPU=",
454
- "url": "_framework/MindExecution.Plugins.YouTube.a43f2q3pkw.dll"
457
+ "hash": "sha256-/q58KqYenDmVBAYkDcB/Frnz97E/69zjgE++VeKa2Ug=",
458
+ "url": "_framework/MindExecution.Plugins.YouTube.y8g77r54fa.dll"
455
459
  },
456
460
  {
457
- "hash": "sha256-4N4HdjdoXtRylfVW6OYliAy9JOlx67Vudw/CbXjCZDs=",
458
- "url": "_framework/MindExecution.Shared.gwtyj0e9lw.dll"
461
+ "hash": "sha256-KRyO57WBUyFvSyLnDWqpBoELgMoiC+d6lyBMU9qz8PQ=",
462
+ "url": "_framework/MindExecution.Shared.1ymsdbwid2.dll"
459
463
  },
460
464
  {
461
- "hash": "sha256-0eGBQjTRRbbCk0PMweH2fX57WJ/z8Nj2h8IRCvURzUI=",
462
- "url": "_framework/MindExecution.Web.j3zaapcxtt.dll"
465
+ "hash": "sha256-57REdRLMDGVtyh6YhuvZe0XLVkNhrJHqLDnEDR45l9Q=",
466
+ "url": "_framework/MindExecution.Web.bb1txupuv0.dll"
463
467
  },
464
468
  {
465
469
  "hash": "sha256-IsZJ91/OW+fHzNqIgEc7Y072ns8z9dGritiSyvR9Wgc=",
@@ -778,7 +782,7 @@
778
782
  "url": "_framework/Websocket.Client.vapounvmnl.dll"
779
783
  },
780
784
  {
781
- "hash": "sha256-R66vaDDvugckSIMLdSTU0DP/rekoQy3lOMX2rkbRSS0=",
785
+ "hash": "sha256-y+apDynf1Lx2swoTt7EoIRlZ26seLNBsgZjBYUjkSc8=",
782
786
  "url": "_framework/blazor.boot.json"
783
787
  },
784
788
  {
@@ -838,7 +842,7 @@
838
842
  "url": "icon-512.png"
839
843
  },
840
844
  {
841
- "hash": "sha256-Ju9ltrGqim7VcAoGRi0eDNxiu3FS0ZAXUtzqeWRNBZA=",
845
+ "hash": "sha256-/9v1YExJbRhqbwfDeyeXT/IrmqGDhzowehpIIwAJc+c=",
842
846
  "url": "index.html"
843
847
  },
844
848
  {