@mindexec/cli 0.2.464 → 0.2.466

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 (28) hide show
  1. package/README.md +1 -0
  2. package/codex-runtime.js +521 -15
  3. package/package.json +35 -33
  4. package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
  5. package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
  6. package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
  7. package/scripts/board-render-ownership-smoke.mjs +85 -0
  8. package/scripts/codex-sdk-image-runtime-smoke.mjs +121 -0
  9. package/server.js +17 -0
  10. package/wwwroot/_content/MindExecution.Shared/js/mind-map-board-render-ownership.js +81 -0
  11. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +110 -46
  12. package/wwwroot/_content/MindExecution.Shared/js/mind-map-render-plan.js +24 -1
  13. package/wwwroot/_framework/MindExecution.Core.psrddqi3mi.dll +0 -0
  14. package/wwwroot/_framework/{MindExecution.Kernel.s20qz1vf5c.dll → MindExecution.Kernel.emus4f6jja.dll} +0 -0
  15. package/wwwroot/_framework/{MindExecution.Plugins.Admin.th7yn9x0f6.dll → MindExecution.Plugins.Admin.q3gz9b4wp8.dll} +0 -0
  16. package/wwwroot/_framework/{MindExecution.Plugins.Business.5oxedy1s9k.dll → MindExecution.Plugins.Business.dr4m9mbnc5.dll} +0 -0
  17. package/wwwroot/_framework/{MindExecution.Plugins.Concept.3687y3dptp.dll → MindExecution.Plugins.Concept.xzrzi61p7e.dll} +0 -0
  18. package/wwwroot/_framework/{MindExecution.Plugins.Directory.9nttshvjo8.dll → MindExecution.Plugins.Directory.hcbtf3n8w7.dll} +0 -0
  19. package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.poo6g7knqo.dll → MindExecution.Plugins.PlanMaster.1w09epz56f.dll} +0 -0
  20. package/wwwroot/_framework/{MindExecution.Plugins.YouTube.fyved6pyst.dll → MindExecution.Plugins.YouTube.7vjbulgfo8.dll} +0 -0
  21. package/wwwroot/_framework/{MindExecution.Shared.pldp11njra.dll → MindExecution.Shared.zj2n1axexl.dll} +0 -0
  22. package/wwwroot/_framework/MindExecution.Web.z1np8j1qu6.dll +0 -0
  23. package/wwwroot/_framework/blazor.boot.json +21 -21
  24. package/wwwroot/index.html +2 -1
  25. package/wwwroot/service-worker-assets.js +29 -25
  26. package/wwwroot/service-worker.js +1 -1
  27. package/wwwroot/_framework/MindExecution.Core.8qo2jd7tuo.dll +0 -0
  28. package/wwwroot/_framework/MindExecution.Web.vldms1qzyf.dll +0 -0
@@ -5,7 +5,7 @@
5
5
  const DEBUG = false;
6
6
  const FPS_DEBUG = false;
7
7
  const FRAME_PERF_DEBUG = false;
8
- const MINDMAP_CORE_BUILD_ID = '20260801-wheel-dpr-stable-v866';
8
+ const MINDMAP_CORE_BUILD_ID = '20260817-grid-distance-fade-v867';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -112,7 +112,6 @@
112
112
  const LOCAL_SNAP_GRID_SOLID_RADIUS_PX = LOCAL_SNAP_GRID_RADIUS_PX - LOCAL_SNAP_GRID_FADE_PX;
113
113
  const LOCAL_SNAP_GRID_RASTER_MIN_STEP_PX = 0.5;
114
114
  const LOCAL_SNAP_GRID_RASTER_MAX_PERIOD_PX = 2048;
115
- const LOCAL_SNAP_GRID_OPACITY_BUCKET = 0.04;
116
115
  const LOCAL_SNAP_GRID_DEFAULT_STEP_PX = 10;
117
116
  const LOCAL_SNAP_GRID_DEFAULT_MAJOR_STEP_PX = 100;
118
117
  const LOCAL_SNAP_GRID_DEFAULT_OPACITY = 0.58;
@@ -2838,7 +2837,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
2838
2837
  /**
2839
2838
  * Detach the current board's scene objects (without destroying them) and store in cache.
2840
2839
  */
2841
- function _detachCurrentBoard(boardId) {
2840
+ function _detachCurrentBoard(boardId, nextBoardId = null) {
2842
2841
  if (!moduleInstance || !boardId) return;
2843
2842
  const t0 = performance.now();
2844
2843
 
@@ -2893,6 +2892,16 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
2893
2892
  window.MindMapCss3DManager.clearTextOverlays(moduleInstance);
2894
2893
  }
2895
2894
 
2895
+ window.MindMapBoardRenderOwnership?.retireResidentBoard?.(
2896
+ moduleInstance.lodRenderer,
2897
+ moduleInstance,
2898
+ {
2899
+ fromBoardId: boardId,
2900
+ toBoardId: nextBoardId,
2901
+ reason: 'board-cache-detach'
2902
+ }
2903
+ );
2904
+
2896
2905
  _touchBoardCache(boardId, snapshot);
2897
2906
  _enforceBoardCacheLimit();
2898
2907
 
@@ -2912,15 +2921,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
2912
2921
  totalTextureMemoryBytes: 0
2913
2922
  });
2914
2923
 
2915
- // Reset LOD renderer state
2916
- if (moduleInstance.lodRenderer) {
2917
- moduleInstance.lodRenderer._instancesDirty = true;
2918
- moduleInstance.lodRenderer._isNodeArrayDirty = true;
2919
- moduleInstance.lodRenderer._nodeIdToIndex.clear();
2920
- moduleInstance.lodRenderer.lineDataCache = new Map();
2921
- moduleInstance.lodRenderer._cachedNodeArray = [];
2922
- }
2923
-
2924
2924
  console.log(`[BoardCache] ??Detached board ${boardId} (${snapshot.nodeObjectsById.size} nodes) in ${(performance.now() - t0).toFixed(1)}ms`);
2925
2925
  }
2926
2926
 
@@ -2940,16 +2940,17 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
2940
2940
  snapshot.nodeObjectsById.forEach((entry, nodeId) => {
2941
2941
  try {
2942
2942
  if (entry.glObject && moduleInstance.scene) {
2943
+ entry.glObject.visible = false;
2943
2944
  moduleInstance.scene.add(entry.glObject);
2944
2945
  }
2945
2946
  if (entry.cssObject) {
2946
2947
  const cssScene = moduleInstance.cssScene || moduleInstance.scene;
2947
2948
  if (cssScene) cssScene.add(entry.cssObject);
2948
- // Re-show CSS element
2949
+ entry.cssObject.visible = false;
2950
+ // Keep the cached surface neutral until the target board's
2951
+ // camera band becomes the active renderer owner.
2949
2952
  if (entry.cssObject.element) {
2950
- entry.cssObject.element.style.display = '';
2951
- entry.cssObject.element.style.visibility = '';
2952
- entry.cssObject.element.style.opacity = '';
2953
+ entry.cssObject.element.style.setProperty('display', 'none', 'important');
2953
2954
  }
2954
2955
  }
2955
2956
  } catch (e) {
@@ -2975,10 +2976,14 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
2975
2976
  });
2976
2977
 
2977
2978
  // Restore LOD renderer
2978
- if (moduleInstance.lodRenderer) {
2979
- moduleInstance.lodRenderer.lineDataCache = snapshot.lodLineDataCache;
2980
- moduleInstance.lodRenderer.requestResidentPatch?.('board-reload');
2981
- }
2979
+ window.MindMapBoardRenderOwnership?.prepareCachedBoard?.(
2980
+ moduleInstance.lodRenderer,
2981
+ moduleInstance,
2982
+ {
2983
+ boardId,
2984
+ lineDataCache: snapshot.lodLineDataCache
2985
+ }
2986
+ );
2982
2987
  moduleInstance.logicWorkerBridge?.resetBoard?.(boardId, 'cache-attach');
2983
2988
  moduleInstance.logicWorkerBridge?.rebuildNodeTables?.(moduleInstance, {
2984
2989
  boardId,
@@ -3789,7 +3794,10 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3789
3794
  Number(majorStepPx) || LOCAL_SNAP_GRID_DEFAULT_MAJOR_STEP_PX
3790
3795
  )
3791
3796
  );
3792
- const safeOpacity = Math.max(0.28, Math.min(0.68, Number(opacity) || LOCAL_SNAP_GRID_DEFAULT_OPACITY));
3797
+ const parsedOpacity = Number(opacity);
3798
+ const safeOpacity = Number.isFinite(parsedOpacity)
3799
+ ? Math.max(0, Math.min(0.68, parsedOpacity))
3800
+ : LOCAL_SNAP_GRID_DEFAULT_OPACITY;
3793
3801
  const localGridKey = [
3794
3802
  keyPrefix,
3795
3803
  safeStyleKind,
@@ -3857,6 +3865,53 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3857
3865
  return true;
3858
3866
  }
3859
3867
 
3868
+ _applyLocalSnapGridMotionStyle(layer, smallStepPx, majorStepPx, opacity) {
3869
+ if (!layer) return false;
3870
+
3871
+ const safeSmallStep = Math.max(
3872
+ LOCAL_SNAP_GRID_RASTER_MIN_STEP_PX,
3873
+ Number(smallStepPx) || LOCAL_SNAP_GRID_DEFAULT_STEP_PX
3874
+ );
3875
+ const safeMajorStep = Math.max(
3876
+ safeSmallStep,
3877
+ Math.min(
3878
+ LOCAL_SNAP_GRID_RASTER_MAX_PERIOD_PX,
3879
+ Number(majorStepPx) || LOCAL_SNAP_GRID_DEFAULT_MAJOR_STEP_PX
3880
+ )
3881
+ );
3882
+ const safeOpacity = Math.max(0, Math.min(0.68, Number(opacity) || 0));
3883
+ const smallStepValue = safeSmallStep.toFixed(3);
3884
+ const majorStepValue = safeMajorStep.toFixed(3);
3885
+ const backgroundSizeValue = [
3886
+ `${smallStepValue}px ${smallStepValue}px`,
3887
+ `${smallStepValue}px ${smallStepValue}px`,
3888
+ `${majorStepValue}px ${majorStepValue}px`,
3889
+ `${majorStepValue}px ${majorStepValue}px`
3890
+ ].join(', ');
3891
+ const backgroundImage = [
3892
+ 'linear-gradient(to right, rgba(51, 65, 85, 0.24) 0 1px, transparent 1px)',
3893
+ 'linear-gradient(to bottom, rgba(51, 65, 85, 0.24) 0 1px, transparent 1px)',
3894
+ 'linear-gradient(to right, rgba(15, 23, 42, 0.42) 0 1px, transparent 1px)',
3895
+ 'linear-gradient(to bottom, rgba(15, 23, 42, 0.42) 0 1px, transparent 1px)'
3896
+ ].join(', ');
3897
+ const motionKey = `motion-line|${smallStepValue}|${majorStepValue}|${safeOpacity.toFixed(3)}`;
3898
+
3899
+ if (motionKey === this._lastLocalSnapGridKey) return false;
3900
+
3901
+ this._lastLocalSnapGridKey = motionKey;
3902
+ this._lastLocalSnapGridPatternPeriodPx = safeMajorStep;
3903
+ this._localSnapGridRasterPeriodPx = safeMajorStep;
3904
+ this._lastLocalSnapGridBackgroundSizeKey = backgroundSizeValue;
3905
+ this._lastLocalSnapGridOpacity = safeOpacity.toFixed(3);
3906
+ this._lastLocalSnapGridTransformKey = '';
3907
+ if (layer.style.backgroundImage !== backgroundImage) layer.style.backgroundImage = backgroundImage;
3908
+ if (layer.style.backgroundSize !== backgroundSizeValue) layer.style.backgroundSize = backgroundSizeValue;
3909
+ if (layer.style.opacity !== this._lastLocalSnapGridOpacity) {
3910
+ layer.style.opacity = this._lastLocalSnapGridOpacity;
3911
+ }
3912
+ return true;
3913
+ }
3914
+
3860
3915
  _ensureLocalSnapGridBaseStyle(layer = null) {
3861
3916
  const targetLayer = layer || this._ensureLocalSnapGridLayer();
3862
3917
  if (!targetLayer) {
@@ -3890,6 +3945,9 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3890
3945
  const opacityValue = targetOpacity == null
3891
3946
  ? this._lastLocalSnapGridOpacity
3892
3947
  : String(targetOpacity);
3948
+ if (opacityValue) {
3949
+ this._lastLocalSnapGridOpacity = opacityValue;
3950
+ }
3893
3951
  if (this._localSnapGridVisible !== true) {
3894
3952
  this._localSnapGridVisible = true;
3895
3953
  if (layer.style.display !== 'block') {
@@ -3957,19 +4015,17 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3957
4015
  const left = Number(viewportMetrics.left || 0);
3958
4016
  const top = Number(viewportMetrics.top || 0);
3959
4017
  const pointerRevision = Math.max(0, Number(this._localSnapGridPointerRevision || 0));
4018
+ const camera = this.camera;
4019
+ const cameraZ = Math.max(1, Number(camera.position?.z || 1));
4020
+ const opacity = Math.max(0, Math.min(0.68, Number(
4021
+ window.MindMapRenderPlan?.getLocalSnapGridDistanceOpacity?.(cameraZ)
4022
+ ) || 0));
3960
4023
 
3961
- if (this.isZooming === true &&
3962
- !!this._lastLocalSnapGridKey &&
3963
- this._getLocalSnapGridStyleKind() !== 'dot') {
3964
- this._syncLocalSnapGridSpotlightPosition(width, height, left, top);
3965
- this._lastLocalSnapGridPositionRevision = pointerRevision;
3966
- this._localSnapGridStyleDeferredForZoom = true;
3967
- this._setLocalSnapGridVisible(true, this._lastLocalSnapGridOpacity || null);
3968
- return true;
4024
+ if (opacity <= 0.001) {
4025
+ this._setLocalSnapGridVisible(false);
4026
+ return false;
3969
4027
  }
3970
4028
 
3971
- const camera = this.camera;
3972
- const cameraZ = Math.max(1, Number(camera.position?.z || 1));
3973
4029
  const vfov = (Number(camera.fov || 45) * Math.PI) / 180;
3974
4030
  const viewHeight = 2 * Math.tan(vfov / 2) * cameraZ;
3975
4031
  const pxPerWorld = height / Math.max(1, viewHeight);
@@ -3979,11 +4035,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3979
4035
  this._lastLocalSnapGridWorldStep = gridProjection.worldStep;
3980
4036
  this._lastLocalSnapGridWorldPeriod = gridProjection.worldStep * 10;
3981
4037
  const styleKind = this._getLocalSnapGridStyleKind();
3982
- const rawOpacity = Math.max(0.38, Math.min(0.64, cameraZ <= 1800 ? 0.60 : 0.60 - ((cameraZ - 1800) / 36000)));
3983
- const opacity = Math.max(
3984
- 0.38,
3985
- Math.min(0.64, Math.round(rawOpacity / LOCAL_SNAP_GRID_OPACITY_BUCKET) * LOCAL_SNAP_GRID_OPACITY_BUCKET)
3986
- );
3987
4038
  const shouldDeferLocalGridStyleForZoom =
3988
4039
  this.isZooming === true &&
3989
4040
  styleKind !== 'dot' &&
@@ -3999,6 +4050,12 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3999
4050
  opacity
4000
4051
  );
4001
4052
  } else if (shouldDeferLocalGridStyleForZoom === true) {
4053
+ this._applyLocalSnapGridMotionStyle(
4054
+ layer,
4055
+ smallStepPx,
4056
+ majorStepPx,
4057
+ opacity
4058
+ );
4002
4059
  this._localSnapGridStyleDeferredForZoom = true;
4003
4060
  }
4004
4061
 
@@ -4038,27 +4095,34 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4038
4095
  const height = Math.max(1, Number(viewportMetrics.height || 0));
4039
4096
  const left = Number(viewportMetrics.left || 0);
4040
4097
  const top = Number(viewportMetrics.top || 0);
4098
+ const cameraZ = Math.max(1, Number(this.camera?.position?.z || 1));
4099
+ const opacity = Math.max(0, Math.min(0.68, Number(
4100
+ window.MindMapRenderPlan?.getLocalSnapGridDistanceOpacity?.(cameraZ)
4101
+ ) || 0));
4102
+ if (opacity <= 0.001) {
4103
+ this._setLocalSnapGridVisible(false);
4104
+ return false;
4105
+ }
4041
4106
  const styleKind = this._getLocalSnapGridStyleKind();
4042
4107
  if (this.isZooming === true && styleKind === 'dot') {
4043
- const cameraZ = Math.max(1, Number(this.camera?.position?.z || 1));
4044
4108
  const vfov = (Number(this.camera?.fov || 45) * Math.PI) / 180;
4045
4109
  const pxPerWorld = height / Math.max(1, 2 * Math.tan(vfov / 2) * cameraZ);
4046
4110
  const projection = this._resolveLocalSnapGridWorldStep(pxPerWorld);
4047
- const rawOpacity = Math.max(0.38, Math.min(0.64,
4048
- cameraZ <= 1800 ? 0.60 : 0.60 - ((cameraZ - 1800) / 36000)));
4049
- const opacity = Math.max(0.38, Math.min(0.64,
4050
- Math.round(rawOpacity / LOCAL_SNAP_GRID_OPACITY_BUCKET) * LOCAL_SNAP_GRID_OPACITY_BUCKET));
4051
4111
  this._applyLocalSnapGridStyle(
4052
4112
  layer, styleKind, projection.smallStepPx, projection.majorStepPx, opacity);
4053
4113
  this._localSnapGridStyleDeferredForZoom = false;
4114
+ } else if (this.isZooming === true) {
4115
+ const vfov = (Number(this.camera?.fov || 45) * Math.PI) / 180;
4116
+ const pxPerWorld = height / Math.max(1, 2 * Math.tan(vfov / 2) * cameraZ);
4117
+ const projection = this._resolveLocalSnapGridWorldStep(pxPerWorld);
4118
+ this._applyLocalSnapGridMotionStyle(
4119
+ layer, projection.smallStepPx, projection.majorStepPx, opacity);
4120
+ this._localSnapGridStyleDeferredForZoom = true;
4054
4121
  }
4055
4122
  this._syncLocalSnapGridSpotlightPosition(width, height, left, top);
4056
4123
  this._lastLocalSnapGridPositionRevision = pointerRevision;
4057
4124
 
4058
- if (this.isZooming === true && styleKind !== 'dot') {
4059
- this._localSnapGridStyleDeferredForZoom = true;
4060
- }
4061
- this._setLocalSnapGridVisible(true, this._lastLocalSnapGridOpacity || null);
4125
+ this._setLocalSnapGridVisible(true, opacity.toFixed(3));
4062
4126
  return true;
4063
4127
  }
4064
4128
 
@@ -9894,7 +9958,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
9894
9958
 
9895
9959
  // Detach current board (save to JS cache)
9896
9960
  if (boardToDetach) {
9897
- _detachCurrentBoard(boardToDetach);
9961
+ _detachCurrentBoard(boardToDetach, targetBoardId);
9898
9962
  }
9899
9963
  moduleInstance.setCanvasPhase?.(CanvasPhase.BoardSwitching, 'swapBoard', {
9900
9964
  fromBoardId: boardToDetach || null,
@@ -1,13 +1,15 @@
1
1
  (function () {
2
2
  'use strict';
3
3
 
4
- const BUILD_ID = '20260801-wheel-dpr-stable-v44';
4
+ const BUILD_ID = '20260817-grid-distance-fade-v45';
5
5
  const FRAME_SAMPLE_LIMIT = 240;
6
6
  const INITIAL_LINE_TEXTURE_ROWS = 1024;
7
7
  const GPU_WARM_RETRY_DELAY_MS = 120;
8
8
  const IMAGE_ATLAS_TILE_SIZE = 128;
9
9
  const IMAGE_ATLAS_UPLOAD_SETTLE_MS = 1000;
10
10
  const IMAGE_ATLAS_UPLOAD_MAX_WAIT_MS = 3500;
11
+ const LOCAL_SNAP_GRID_FADE_START_Z = 9000;
12
+ const LOCAL_SNAP_GRID_FADE_END_Z = 30000;
11
13
  const frameSampleStates = new WeakMap();
12
14
  const residentLinePrewarmStates = new WeakMap();
13
15
  const residentTransitionStates = new WeakMap();
@@ -71,6 +73,26 @@
71
73
  );
72
74
  }
73
75
 
76
+ function getLocalSnapGridDistanceOpacity(cameraZ) {
77
+ const parsedCameraZ = Math.abs(Number(cameraZ));
78
+ const safeCameraZ = Number.isFinite(parsedCameraZ) ? Math.max(1, parsedCameraZ) : 1;
79
+ const baseOpacity = Math.max(
80
+ 0.38,
81
+ Math.min(0.64, safeCameraZ <= 1800 ? 0.60 : 0.60 - ((safeCameraZ - 1800) / 36000))
82
+ );
83
+ if (safeCameraZ <= LOCAL_SNAP_GRID_FADE_START_Z) {
84
+ return baseOpacity;
85
+ }
86
+ if (safeCameraZ >= LOCAL_SNAP_GRID_FADE_END_Z) {
87
+ return 0;
88
+ }
89
+
90
+ const fadeProgress = (safeCameraZ - LOCAL_SNAP_GRID_FADE_START_Z) /
91
+ (LOCAL_SNAP_GRID_FADE_END_Z - LOCAL_SNAP_GRID_FADE_START_Z);
92
+ const smoothProgress = fadeProgress * fadeProgress * (3 - (2 * fadeProgress));
93
+ return baseOpacity * (1 - smoothProgress);
94
+ }
95
+
74
96
  function shouldUseInteractiveRendererDpr(module, frameState = null) {
75
97
  const wheelOnlyCameraNavigation = isWheelOnlyCameraNavigation(module);
76
98
  return !!(
@@ -1890,6 +1912,7 @@
1890
1912
  window.MindMapRenderPlan = Object.freeze({
1891
1913
  configureImageAtlasTexture,
1892
1914
  getImageAtlasOutputColorChunk,
1915
+ getLocalSnapGridDistanceOpacity,
1893
1916
  shouldUseInteractiveRendererDpr,
1894
1917
  isRendererDprInteractionActive,
1895
1918
  getCameraOnlyWebglBlockerMask,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "mainAssemblyName": "MindExecution.Web",
3
3
  "resources": {
4
- "hash": "sha256-xbkd7KcJBy5yAqXFmgsgo5SumL+g/uWuXdnaagEWtp4=",
4
+ "hash": "sha256-ZCsr6yMshf12g8H1C7Es4Bcxp7qN8HF/8VqttnLuOao=",
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.8qo2jd7tuo.dll": "MindExecution.Core.dll",
126
- "MindExecution.Kernel.s20qz1vf5c.dll": "MindExecution.Kernel.dll",
127
- "MindExecution.Plugins.Admin.th7yn9x0f6.dll": "MindExecution.Plugins.Admin.dll",
128
- "MindExecution.Plugins.Business.5oxedy1s9k.dll": "MindExecution.Plugins.Business.dll",
129
- "MindExecution.Plugins.Concept.3687y3dptp.dll": "MindExecution.Plugins.Concept.dll",
130
- "MindExecution.Plugins.Directory.9nttshvjo8.dll": "MindExecution.Plugins.Directory.dll",
131
- "MindExecution.Plugins.PlanMaster.poo6g7knqo.dll": "MindExecution.Plugins.PlanMaster.dll",
132
- "MindExecution.Plugins.YouTube.fyved6pyst.dll": "MindExecution.Plugins.YouTube.dll",
133
- "MindExecution.Shared.pldp11njra.dll": "MindExecution.Shared.dll",
134
- "MindExecution.Web.vldms1qzyf.dll": "MindExecution.Web.dll",
125
+ "MindExecution.Core.psrddqi3mi.dll": "MindExecution.Core.dll",
126
+ "MindExecution.Kernel.emus4f6jja.dll": "MindExecution.Kernel.dll",
127
+ "MindExecution.Plugins.Admin.q3gz9b4wp8.dll": "MindExecution.Plugins.Admin.dll",
128
+ "MindExecution.Plugins.Business.dr4m9mbnc5.dll": "MindExecution.Plugins.Business.dll",
129
+ "MindExecution.Plugins.Concept.xzrzi61p7e.dll": "MindExecution.Plugins.Concept.dll",
130
+ "MindExecution.Plugins.Directory.hcbtf3n8w7.dll": "MindExecution.Plugins.Directory.dll",
131
+ "MindExecution.Plugins.PlanMaster.1w09epz56f.dll": "MindExecution.Plugins.PlanMaster.dll",
132
+ "MindExecution.Plugins.YouTube.7vjbulgfo8.dll": "MindExecution.Plugins.YouTube.dll",
133
+ "MindExecution.Shared.zj2n1axexl.dll": "MindExecution.Shared.dll",
134
+ "MindExecution.Web.z1np8j1qu6.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.8qo2jd7tuo.dll": "sha256-UB+YROrcEWb6I4nydNzxKyQ9fBCOxkaeG3XGHIGj3S0=",
280
- "MindExecution.Kernel.s20qz1vf5c.dll": "sha256-HCZUf78F2vPjE90+3B7gu9szT0aZrDhxXIYfhUMPIC8=",
281
- "MindExecution.Plugins.Business.5oxedy1s9k.dll": "sha256-C1kXmGh4joC1+xuxg852zNLVCu1guJVBeGp7r2Va69s=",
282
- "MindExecution.Plugins.Concept.3687y3dptp.dll": "sha256-G4PF9cKO1vsYJzt0MxtaqiNSXFnrbzNMj4BDW+SxvUE=",
283
- "MindExecution.Plugins.PlanMaster.poo6g7knqo.dll": "sha256-eU4Y5urUDih0nB6rdQFMZuPzvFDSYUWv5FEtYzHxdAk=",
284
- "MindExecution.Shared.pldp11njra.dll": "sha256-HYbCnuYBXiUPns9zUuxim1rMuRlce1t3SPIgvNi+Q2o=",
285
- "MindExecution.Web.vldms1qzyf.dll": "sha256-Y46Q9q5gwtB+csgwQ8TuZ/IItDXUh1vAermjbIgvko0="
279
+ "MindExecution.Core.psrddqi3mi.dll": "sha256-B33cTW2KC7j+nxxSkwA1KD3qCGmLk7qH0DvEMA+qPCk=",
280
+ "MindExecution.Kernel.emus4f6jja.dll": "sha256-+jWRYJUSZg/+/yuEpHFeoW05bwhQq+1uJ519QRLal6o=",
281
+ "MindExecution.Plugins.Business.dr4m9mbnc5.dll": "sha256-mfINIgO0Jb1B9JNJVuBjGebWdT05+X1WusarZ0UhC2E=",
282
+ "MindExecution.Plugins.Concept.xzrzi61p7e.dll": "sha256-gw0HIuC4xerbOv3GbS/66kRPU98Hzo5oWVC7BCFig3A=",
283
+ "MindExecution.Plugins.PlanMaster.1w09epz56f.dll": "sha256-wa5PyOU/QkpFcW0/wiNbtYjtEIOtkqfuqaQsVeAMXBk=",
284
+ "MindExecution.Shared.zj2n1axexl.dll": "sha256-UfqtUG6XriHJTwSc8E0LUD65HYeTJxSedYz4UZl8dg8=",
285
+ "MindExecution.Web.z1np8j1qu6.dll": "sha256-9wQB1wuAG+0sMQV1UZOybyqGSWmQyBMyMxJrHwpQFp4="
286
286
  },
287
287
  "lazyAssembly": {
288
- "MindExecution.Plugins.Admin.th7yn9x0f6.dll": "sha256-caUd7zEMOuYZGzR7PxhDMdtZ+H5/yQAhaZzRIdKoSxw=",
289
- "MindExecution.Plugins.Directory.9nttshvjo8.dll": "sha256-q5Quc/lapBHAK0CFLI1aXcbqc2wXdX+W08YiF9oLfGI=",
290
- "MindExecution.Plugins.YouTube.fyved6pyst.dll": "sha256-uVELlFlT4/2LY6FukJfYzAY39+0WKxaBsZg1AZa1Yvo="
288
+ "MindExecution.Plugins.Admin.q3gz9b4wp8.dll": "sha256-us79gHGdEtfuUIlKqMmJZFbHE9sB+OBzsGgiaOIJCGk=",
289
+ "MindExecution.Plugins.Directory.hcbtf3n8w7.dll": "sha256-T1ay20LkWJDPggiQ1ws5h0f6e34xLCmQV3qXVsMZIHc=",
290
+ "MindExecution.Plugins.YouTube.7vjbulgfo8.dll": "sha256-rbRIYqL6wVvLLLHmkDp3ct+dVjUGw7mW8bn3c30SvuA="
291
291
  }
292
292
  },
293
293
  "cacheBootResources": true,
@@ -614,7 +614,7 @@
614
614
  }
615
615
 
616
616
  const base = '_content/MindExecution.Shared/js/';
617
- const scriptVersion = '20260815-lod-grid-live-v973';
617
+ const scriptVersion = '20260819-board-owner-grid-v975';
618
618
  const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
619
619
  console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
620
620
  const criticalScripts = [
@@ -640,6 +640,7 @@
640
640
  'mind-map-multi-select.js',
641
641
  'mind-map-interactions.js',
642
642
  'mind-map-dnd.js',
643
+ 'mind-map-board-render-ownership.js',
643
644
  'mind-map-render-plan.js',
644
645
  'mind-map-normal-boundary-optimizer.js',
645
646
  'mind-map-lod-video-placeholder.js',
@@ -1,5 +1,5 @@
1
1
  self.assetsManifest = {
2
- "version": "HCgT1KJn",
2
+ "version": "plldCWxD",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -82,7 +82,11 @@ self.assetsManifest = {
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-animated-image-preview.js"
83
83
  },
84
84
  {
85
- "hash": "sha256-bKZK/OA/kLveWaNcyQGsjwhZsK+VG8zxKY1FyGBHp7o=",
85
+ "hash": "sha256-W/h4gC38IZn54pM6q++JJFSbDBLokscPLSNvh3xMFpw=",
86
+ "url": "_content/MindExecution.Shared/js/mind-map-board-render-ownership.js"
87
+ },
88
+ {
89
+ "hash": "sha256-+YNEfvac1szWmQjPUmzKmTUVCS5qHcXNn6k2W2mlFQ8=",
86
90
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
87
91
  },
88
92
  {
@@ -170,7 +174,7 @@ self.assetsManifest = {
170
174
  "url": "_content/MindExecution.Shared/js/mind-map-remote-codecs.js"
171
175
  },
172
176
  {
173
- "hash": "sha256-Bt4KcL8tpxwxc65QyRnApkoI80NJ0zyWY7NuepM2N+g=",
177
+ "hash": "sha256-PihHBHk/uBhyozFJeiUdN/9yWB4aXkeUnoHg1Fjuiik=",
174
178
  "url": "_content/MindExecution.Shared/js/mind-map-render-plan.js"
175
179
  },
176
180
  {
@@ -434,44 +438,44 @@ self.assetsManifest = {
434
438
  "url": "_framework/MimeMapping.og9ys58ylm.dll"
435
439
  },
436
440
  {
437
- "hash": "sha256-UB+YROrcEWb6I4nydNzxKyQ9fBCOxkaeG3XGHIGj3S0=",
438
- "url": "_framework/MindExecution.Core.8qo2jd7tuo.dll"
441
+ "hash": "sha256-B33cTW2KC7j+nxxSkwA1KD3qCGmLk7qH0DvEMA+qPCk=",
442
+ "url": "_framework/MindExecution.Core.psrddqi3mi.dll"
439
443
  },
440
444
  {
441
- "hash": "sha256-HCZUf78F2vPjE90+3B7gu9szT0aZrDhxXIYfhUMPIC8=",
442
- "url": "_framework/MindExecution.Kernel.s20qz1vf5c.dll"
445
+ "hash": "sha256-+jWRYJUSZg/+/yuEpHFeoW05bwhQq+1uJ519QRLal6o=",
446
+ "url": "_framework/MindExecution.Kernel.emus4f6jja.dll"
443
447
  },
444
448
  {
445
- "hash": "sha256-caUd7zEMOuYZGzR7PxhDMdtZ+H5/yQAhaZzRIdKoSxw=",
446
- "url": "_framework/MindExecution.Plugins.Admin.th7yn9x0f6.dll"
449
+ "hash": "sha256-us79gHGdEtfuUIlKqMmJZFbHE9sB+OBzsGgiaOIJCGk=",
450
+ "url": "_framework/MindExecution.Plugins.Admin.q3gz9b4wp8.dll"
447
451
  },
448
452
  {
449
- "hash": "sha256-C1kXmGh4joC1+xuxg852zNLVCu1guJVBeGp7r2Va69s=",
450
- "url": "_framework/MindExecution.Plugins.Business.5oxedy1s9k.dll"
453
+ "hash": "sha256-mfINIgO0Jb1B9JNJVuBjGebWdT05+X1WusarZ0UhC2E=",
454
+ "url": "_framework/MindExecution.Plugins.Business.dr4m9mbnc5.dll"
451
455
  },
452
456
  {
453
- "hash": "sha256-G4PF9cKO1vsYJzt0MxtaqiNSXFnrbzNMj4BDW+SxvUE=",
454
- "url": "_framework/MindExecution.Plugins.Concept.3687y3dptp.dll"
457
+ "hash": "sha256-gw0HIuC4xerbOv3GbS/66kRPU98Hzo5oWVC7BCFig3A=",
458
+ "url": "_framework/MindExecution.Plugins.Concept.xzrzi61p7e.dll"
455
459
  },
456
460
  {
457
- "hash": "sha256-q5Quc/lapBHAK0CFLI1aXcbqc2wXdX+W08YiF9oLfGI=",
458
- "url": "_framework/MindExecution.Plugins.Directory.9nttshvjo8.dll"
461
+ "hash": "sha256-T1ay20LkWJDPggiQ1ws5h0f6e34xLCmQV3qXVsMZIHc=",
462
+ "url": "_framework/MindExecution.Plugins.Directory.hcbtf3n8w7.dll"
459
463
  },
460
464
  {
461
- "hash": "sha256-eU4Y5urUDih0nB6rdQFMZuPzvFDSYUWv5FEtYzHxdAk=",
462
- "url": "_framework/MindExecution.Plugins.PlanMaster.poo6g7knqo.dll"
465
+ "hash": "sha256-wa5PyOU/QkpFcW0/wiNbtYjtEIOtkqfuqaQsVeAMXBk=",
466
+ "url": "_framework/MindExecution.Plugins.PlanMaster.1w09epz56f.dll"
463
467
  },
464
468
  {
465
- "hash": "sha256-uVELlFlT4/2LY6FukJfYzAY39+0WKxaBsZg1AZa1Yvo=",
466
- "url": "_framework/MindExecution.Plugins.YouTube.fyved6pyst.dll"
469
+ "hash": "sha256-rbRIYqL6wVvLLLHmkDp3ct+dVjUGw7mW8bn3c30SvuA=",
470
+ "url": "_framework/MindExecution.Plugins.YouTube.7vjbulgfo8.dll"
467
471
  },
468
472
  {
469
- "hash": "sha256-HYbCnuYBXiUPns9zUuxim1rMuRlce1t3SPIgvNi+Q2o=",
470
- "url": "_framework/MindExecution.Shared.pldp11njra.dll"
473
+ "hash": "sha256-UfqtUG6XriHJTwSc8E0LUD65HYeTJxSedYz4UZl8dg8=",
474
+ "url": "_framework/MindExecution.Shared.zj2n1axexl.dll"
471
475
  },
472
476
  {
473
- "hash": "sha256-Y46Q9q5gwtB+csgwQ8TuZ/IItDXUh1vAermjbIgvko0=",
474
- "url": "_framework/MindExecution.Web.vldms1qzyf.dll"
477
+ "hash": "sha256-9wQB1wuAG+0sMQV1UZOybyqGSWmQyBMyMxJrHwpQFp4=",
478
+ "url": "_framework/MindExecution.Web.z1np8j1qu6.dll"
475
479
  },
476
480
  {
477
481
  "hash": "sha256-IsZJ91/OW+fHzNqIgEc7Y072ns8z9dGritiSyvR9Wgc=",
@@ -790,7 +794,7 @@ self.assetsManifest = {
790
794
  "url": "_framework/Websocket.Client.vapounvmnl.dll"
791
795
  },
792
796
  {
793
- "hash": "sha256-F6SkqJxelIktlfhzsZMmDvyAWyZ/3RWpJFWh8KuUgh4=",
797
+ "hash": "sha256-yveVWUW29Nw/d1qRdB9Q6r3BjTMpqnEkjEhqwMxzaI4=",
794
798
  "url": "_framework/blazor.boot.json"
795
799
  },
796
800
  {
@@ -866,7 +870,7 @@ self.assetsManifest = {
866
870
  "url": "icon-512.png"
867
871
  },
868
872
  {
869
- "hash": "sha256-09pACZREKNjnfet+hL8kX0iFNjHKgdjnCO4JMu/we94=",
873
+ "hash": "sha256-9dWOZC5NL0BDx5c/eCMKiBn/zJYlPtkAemjcgPyZeK8=",
870
874
  "url": "index.html"
871
875
  },
872
876
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: HCgT1KJn */
1
+ /* Manifest version: plldCWxD */
2
2
  // Hosted deployments should prefer the network over stale offline caches.
3
3
  // This service worker immediately clears old Blazor offline caches and unregisters itself.
4
4