@mindexec/cli 0.2.221 → 0.2.223

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.221",
3
+ "version": "0.2.223",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -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 = '20260619-motion-hidden-work-v668';
8
+ const MINDMAP_CORE_BUILD_ID = '20260619-ua-motion-hidden-work-v670';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -77,6 +77,7 @@
77
77
  });
78
78
  const CanvasPhaseSet = new Set(Object.values(CanvasPhase));
79
79
  const VIEWPORT_METRICS_POLL_INTERVAL = 480;
80
+ const PASSIVE_DOM_OVERLAY_RUNTIME_ENABLED = false;
80
81
  const PASSIVE_OVERLAY_ZOOM_DEFER_VISIBLE_THRESHOLD = 24;
81
82
  const PASSIVE_OVERLAY_INTERACTIVE_REFRESH_INTERVAL_MS = 48;
82
83
  const PASSIVE_OVERLAY_INTERACTIVE_DENSE_REFRESH_INTERVAL_MS = 72;
@@ -410,11 +411,14 @@
410
411
  return;
411
412
  }
412
413
 
413
- if (typeof document === 'undefined' || !document.body) {
414
+ if (typeof document === 'undefined') {
414
415
  return;
415
416
  }
416
417
 
417
- const targetElement = moduleInstance?.cssRenderer?.domElement || document.body;
418
+ const targetElement = moduleInstance?.cssRenderer?.domElement || null;
419
+ if (!targetElement) {
420
+ return;
421
+ }
418
422
  if (_mindCanvasPerfClassState.target && _mindCanvasPerfClassState.target !== targetElement) {
419
423
  _mindCanvasPerfClassState.target.classList?.remove?.('mindcanvas-is-moving', 'mindcanvas-is-dense');
420
424
  _mindCanvasPerfClassState.moving = false;
@@ -436,13 +440,36 @@
436
440
  }
437
441
  }
438
442
 
439
- function isContinuousBackgroundTheme(module) {
443
+ function getThemeAnimationModeCached(module) {
440
444
  if (!module?.currentThemeObject || typeof window === 'undefined') {
441
- return false;
445
+ return 'none';
442
446
  }
443
447
 
444
- const mode = window.MindMapThemes?.getAnimationMode?.(module.currentThemeName, module.currentThemeObject);
445
- return mode === 'continuous';
448
+ const frameId = Number(module.frameCount || 0);
449
+ const themeName = String(module.currentThemeName || '');
450
+ const themeObject = module.currentThemeObject || null;
451
+ const cache = module._themeAnimationModeFrameCache || null;
452
+ if (cache &&
453
+ cache.frameId === frameId &&
454
+ cache.themeName === themeName &&
455
+ cache.themeObject === themeObject) {
456
+ return cache.mode || 'none';
457
+ }
458
+
459
+ const mode =
460
+ window.MindMapThemes?.getAnimationMode?.(themeName, themeObject) ||
461
+ 'none';
462
+ module._themeAnimationModeFrameCache = {
463
+ frameId,
464
+ themeName,
465
+ themeObject,
466
+ mode
467
+ };
468
+ return mode;
469
+ }
470
+
471
+ function isContinuousBackgroundTheme(module) {
472
+ return getThemeAnimationModeCached(module) === 'continuous';
446
473
  }
447
474
 
448
475
  function canUseWebglCanvasTransformForCameraMotion(module) {
@@ -519,7 +546,7 @@
519
546
  enableLodUpdate: true,
520
547
  enableWebglRender: true,
521
548
  enableCssImageLodFallback: false,
522
- autoFreezeLodDuringMotion: true,
549
+ autoFreezeLodDuringMotion: false,
523
550
  freezeVisibilityDuringMotion: false,
524
551
  freezeLodDuringMotion: false,
525
552
  enableFramePerfProbe: false,
@@ -3318,6 +3345,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3318
3345
  this._viewStatePersistNeedsFreshSnapshot = false;
3319
3346
  this._viewStatePersistDelayMs = 650;
3320
3347
  this._viewStatePersistScheduledAt = 0;
3348
+ this._viewStatePersistAfterMotion = false;
3321
3349
  this._postLoadVisualSyncToken = 0;
3322
3350
  this._overlayDirty = true;
3323
3351
  this._lastOverlayKey = '';
@@ -4529,8 +4557,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4529
4557
  _getThemeAnimationInterval(interactive = false, animationMode = null) {
4530
4558
  const mode = this.themePerformanceMode || 'work';
4531
4559
  const isGpuParticleTheme = this.currentThemeName === 'Space3D' || this.currentThemeName === 'SpiritFlow';
4532
- const themeAnimationMode = animationMode ||
4533
- window.MindMapThemes?.getAnimationMode?.(this.currentThemeName, this.currentThemeObject);
4560
+ const themeAnimationMode = animationMode || getThemeAnimationModeCached(this);
4534
4561
 
4535
4562
  if (themeAnimationMode === 'camera') {
4536
4563
  return interactive ? 2 : 30;
@@ -5405,7 +5432,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5405
5432
  const deltaMove = this.camera.position.distanceToSquared(this._tmpOldCamPos);
5406
5433
  const isCameraMoving = deltaMove > 0.0001;
5407
5434
  if (isCameraMoving) {
5408
- this.scheduleViewStatePersist();
5435
+ this._viewStatePersistAfterMotion = true;
5409
5436
  }
5410
5437
 
5411
5438
  // ▼▼▼ [Fix] Update selection box when camera moves ▼▼▼
@@ -5434,7 +5461,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5434
5461
 
5435
5462
  if (this.isZooming && !isCameraMoving && timeSinceLastInput > ZOOM_END_DELAY_MS) {
5436
5463
  this.isZooming = false;
5437
- document.body?.classList?.remove?.('is-zooming');
5438
5464
  this.cssRenderer?.domElement?.classList?.remove?.('is-zooming');
5439
5465
  if (FRAME_PERF_DEBUG) {
5440
5466
  console.log(`[Perf] Zoom ended (${timeSinceLastInput.toFixed(0)}ms since last input)`);
@@ -5551,6 +5577,18 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5551
5577
  window.MindMapTextOverlayV2?.invalidateView?.(this);
5552
5578
  }
5553
5579
  }
5580
+
5581
+ if (this._viewStatePersistAfterMotion === true &&
5582
+ this.isZooming !== true &&
5583
+ this.isPanning !== true &&
5584
+ isCameraMoving !== true &&
5585
+ this.isDraggingNode !== true &&
5586
+ this.isDraggingMultipleNodes !== true &&
5587
+ this.isResizing !== true &&
5588
+ this.isWindowResizing !== true) {
5589
+ this._viewStatePersistAfterMotion = false;
5590
+ this.scheduleViewStatePersist();
5591
+ }
5554
5592
 
5555
5593
  // 3. Unified Visibility & LOD Pass (One Loop to Rule Them All)
5556
5594
  // ----------------------------------------------------------------
@@ -5736,8 +5774,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5736
5774
  const isInteractiveFrame = this.isZooming || this.isPanning || isCameraMoving || isNodeInteracting || !!this.isWindowResizing;
5737
5775
  const useTextOverlayV2 = !isBoardLoading && this.useTextOverlayV2 === true && !!window.MindMapTextOverlayV2;
5738
5776
  const isPassiveDomOverlayRuntimeEnabled =
5739
- useTextOverlayV2 &&
5740
- window.MindMapTextOverlayV2?.isPassiveDomOverlayEnabled?.() === true;
5777
+ PASSIVE_DOM_OVERLAY_RUNTIME_ENABLED === true &&
5778
+ useTextOverlayV2;
5741
5779
  const renderDebugFlags = activeRenderDebugFlags;
5742
5780
  const isCss3dEnabled = !isBoardLoading && renderDebugFlags.enableCss3d !== false;
5743
5781
 
@@ -5867,9 +5905,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5867
5905
 
5868
5906
  this.cssRenderer.renderCamera(this.camera);
5869
5907
  const shouldSyncPassiveOverlayTransformDuringMotion =
5870
- window.MindMapTextOverlayV2?.isPassiveDomOverlayEnabled?.() === true &&
5871
- this.useTextOverlayV2 === true &&
5872
- this.renderDebugFlags?.enableDomOverlay !== false;
5908
+ isPassiveDomOverlayRuntimeEnabled === true;
5873
5909
  if (shouldSyncPassiveOverlayTransformDuringMotion &&
5874
5910
  window.MindMapTextOverlayV2?.syncPassiveViewTransform) {
5875
5911
  window.MindMapTextOverlayV2.syncPassiveViewTransform(this);
@@ -6315,9 +6351,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6315
6351
  this._scheduleAnimationLoop(loop, 0);
6316
6352
  return;
6317
6353
  }
6318
- const themeAnimationMode =
6319
- window.MindMapThemes?.getAnimationMode?.(this.currentThemeName, this.currentThemeObject) ||
6320
- 'none';
6354
+ const themeAnimationMode = getThemeAnimationModeCached(this);
6321
6355
  const isContinuousTheme = themeAnimationMode === 'continuous';
6322
6356
  const shouldPauseThemeForCameraNavigation =
6323
6357
  isContinuousTheme === true &&
@@ -6681,7 +6715,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6681
6715
  isMotionHeavyScene &&
6682
6716
  isMotionFreezeEligible;
6683
6717
  const shouldAutoFreezeLodMotion =
6684
- (renderDebugFlags.autoFreezeLodDuringMotion !== false || shouldAdaptiveFreezeMotionSafeguard) &&
6718
+ renderDebugFlags.autoFreezeLodDuringMotion === true &&
6685
6719
  shouldAdaptiveFreezeMotionSafeguard;
6686
6720
  const shouldFreezeVisibilityDuringMotion =
6687
6721
  (renderDebugFlags.freezeVisibilityDuringMotion === true || shouldAutoFreezeLodMotion) &&
@@ -8028,6 +8062,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8028
8062
  this._viewStatePersistTimer = null;
8029
8063
  }
8030
8064
  this._viewStatePersistNeedsFreshSnapshot = false;
8065
+ this._viewStatePersistAfterMotion = false;
8031
8066
 
8032
8067
  MindMapInteractions.removeEventListeners(this);
8033
8068
  MindMapDnD.removeEventListeners(this);
@@ -827,10 +827,6 @@
827
827
 
828
828
  /* Keep CSS3D nodes readable during camera motion, but drop expensive
829
829
  decorative effects consistently across selected and agent-style nodes. */
830
- body.is-zooming .css3d-resolution-wrapper,
831
- body.is-panning .css3d-resolution-wrapper,
832
- body.mindcanvas-is-moving .css3d-resolution-wrapper,
833
- body.mindcanvas-is-dense .css3d-resolution-wrapper,
834
830
  #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper,
835
831
  #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper,
836
832
  #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper,
@@ -841,14 +837,6 @@
841
837
  -webkit-filter: none !important;
842
838
  }
843
839
 
844
- body.is-zooming .css3d-resolution-wrapper .css3d-dynamic-node,
845
- body.is-panning .css3d-resolution-wrapper .css3d-dynamic-node,
846
- body.mindcanvas-is-moving .css3d-resolution-wrapper .css3d-dynamic-node,
847
- body.mindcanvas-is-dense .css3d-resolution-wrapper .css3d-dynamic-node,
848
- body.is-zooming .css3d-resolution-wrapper [id^="css3d-node-"],
849
- body.is-panning .css3d-resolution-wrapper [id^="css3d-node-"],
850
- body.mindcanvas-is-moving .css3d-resolution-wrapper [id^="css3d-node-"],
851
- body.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"],
852
840
  #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper .css3d-dynamic-node,
853
841
  #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper .css3d-dynamic-node,
854
842
  #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper .css3d-dynamic-node,
@@ -864,36 +852,18 @@
864
852
  -webkit-backdrop-filter: none !important;
865
853
  }
866
854
 
867
- body.is-zooming .embed-content iframe,
868
- body.is-zooming .embed-iframe-host iframe,
869
- body.is-zooming .embed-card,
870
- body.is-zooming .embed-card *,
871
- body.is-zooming .embed-action,
872
- body.is-zooming .embed-play-button,
873
855
  #css3d-dom-wrapper.is-zooming .embed-content iframe,
874
856
  #css3d-dom-wrapper.is-zooming .embed-iframe-host iframe,
875
857
  #css3d-dom-wrapper.is-zooming .embed-card,
876
858
  #css3d-dom-wrapper.is-zooming .embed-card *,
877
859
  #css3d-dom-wrapper.is-zooming .embed-action,
878
860
  #css3d-dom-wrapper.is-zooming .embed-play-button,
879
- body.is-panning .embed-content iframe,
880
- body.is-panning .embed-iframe-host iframe,
881
- body.is-panning .embed-card,
882
- body.is-panning .embed-card *,
883
- body.is-panning .embed-action,
884
- body.is-panning .embed-play-button,
885
861
  body.is-node-dragging .embed-content iframe,
886
862
  body.is-node-dragging .embed-iframe-host iframe,
887
863
  body.is-node-dragging .embed-card,
888
864
  body.is-node-dragging .embed-card *,
889
865
  body.is-node-dragging .embed-action,
890
866
  body.is-node-dragging .embed-play-button,
891
- body.mindcanvas-is-moving .embed-content iframe,
892
- body.mindcanvas-is-moving .embed-iframe-host iframe,
893
- body.mindcanvas-is-moving .embed-card,
894
- body.mindcanvas-is-moving .embed-card *,
895
- body.mindcanvas-is-moving .embed-action,
896
- body.mindcanvas-is-moving .embed-play-button,
897
867
  #css3d-dom-wrapper.mindcanvas-is-moving .embed-content iframe,
898
868
  #css3d-dom-wrapper.mindcanvas-is-moving .embed-iframe-host iframe,
899
869
  #css3d-dom-wrapper.mindcanvas-is-moving .embed-card,
@@ -930,16 +900,10 @@
930
900
  pointer-events: auto !important;
931
901
  }
932
902
 
933
- body.is-zooming .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
934
- body.is-zooming .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
935
903
  #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
936
904
  #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
937
- body.is-panning .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
938
- body.is-panning .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
939
905
  body.is-node-dragging .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
940
906
  body.is-node-dragging .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
941
- body.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
942
- body.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
943
907
  #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
944
908
  #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
945
909
  .is-dragging .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
@@ -949,14 +913,6 @@
949
913
  pointer-events: none !important;
950
914
  }
951
915
 
952
- body.is-zooming .ai-loading-row.ai-loading-row-media,
953
- body.is-panning .ai-loading-row.ai-loading-row-media,
954
- body.mindcanvas-is-moving .ai-loading-row.ai-loading-row-media,
955
- body.mindcanvas-is-dense .ai-loading-row.ai-loading-row-media,
956
- body.is-zooming .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
957
- body.is-panning .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
958
- body.mindcanvas-is-moving .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
959
- body.mindcanvas-is-dense .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
960
916
  #css3d-dom-wrapper.is-zooming .ai-loading-row.ai-loading-row-media,
961
917
  #css3d-dom-wrapper.is-panning .ai-loading-row.ai-loading-row-media,
962
918
  #css3d-dom-wrapper.mindcanvas-is-moving .ai-loading-row.ai-loading-row-media,
@@ -96,7 +96,7 @@ window.MindMapInteractions = (function () {
96
96
  }
97
97
 
98
98
  function scheduleZoomMotionChrome(module) {
99
- if (!module || typeof document === 'undefined' || !document.body) {
99
+ if (!module || typeof document === 'undefined') {
100
100
  return;
101
101
  }
102
102
  if (MOTION_DOM_FANOUT_ENABLED !== true) {
@@ -107,9 +107,9 @@ window.MindMapInteractions = (function () {
107
107
  clearModuleTimer(module, '_zoomMotionChromeTimer');
108
108
  module._zoomMotionChromeTimer = setTimeout(() => {
109
109
  module._zoomMotionChromeTimer = null;
110
- const targetElement = module?.cssRenderer?.domElement || document.body;
110
+ const targetElement = module?.cssRenderer?.domElement || null;
111
111
  if (module.isZooming === true) {
112
- targetElement.classList.add('is-zooming');
112
+ targetElement?.classList?.add?.('is-zooming');
113
113
  }
114
114
  }, MOTION_DOM_FANOUT_DELAY_MS);
115
115
  }
@@ -117,11 +117,10 @@ window.MindMapInteractions = (function () {
117
117
  function clearZoomMotionChrome(module) {
118
118
  clearModuleTimer(module, '_zoomMotionChromeTimer');
119
119
  module?.cssRenderer?.domElement?.classList?.remove?.('is-zooming');
120
- document?.body?.classList?.remove?.('is-zooming');
121
120
  }
122
121
 
123
122
  function getPanMotionClassElement(module) {
124
- return module?.cssRenderer?.domElement || document?.body || null;
123
+ return module?.cssRenderer?.domElement || null;
125
124
  }
126
125
 
127
126
  function schedulePanMotionChrome(module) {
@@ -147,7 +146,6 @@ window.MindMapInteractions = (function () {
147
146
  function clearPanMotionChrome(module) {
148
147
  clearModuleTimer(module, '_panMotionChromeTimer');
149
148
  module?.cssRenderer?.domElement?.classList?.remove?.('is-panning');
150
- document?.body?.classList?.remove?.('is-panning');
151
149
  }
152
150
 
153
151
  function scheduleMotionWillChangeEnable(module) {
@@ -5426,7 +5424,7 @@ window.MindMapInteractions = (function () {
5426
5424
  module._physicalControlKeyDown = false;
5427
5425
  module._physicalMetaKeyDown = false;
5428
5426
  releaseCanvasInteractionSelectionLocks();
5429
- document.body?.classList?.remove?.('is-node-dragging', 'is-panning');
5427
+ document.body?.classList?.remove?.('is-node-dragging');
5430
5428
  module.cssRenderer?.domElement?.classList?.remove?.('is-dragging', 'is-panning');
5431
5429
  if (document.body) {
5432
5430
  document.body.style.cursor = '';
@@ -1,5 +1,5 @@
1
1
  self.assetsManifest = {
2
- "version": "3aMiQb+v",
2
+ "version": "mhkJA+oz",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -78,7 +78,7 @@
78
78
  "url": "_content/MindExecution.Shared/js/marked.min.js"
79
79
  },
80
80
  {
81
- "hash": "sha256-hJpRJ5O5QFjQ3bE0HHza1S8xmT9lc5hh1N15pIsdQiY=",
81
+ "hash": "sha256-V9Gke8hWYGzarQib0ePGGTfm3WPoyPWCCtvWLOlO210=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -86,7 +86,7 @@
86
86
  "url": "_content/MindExecution.Shared/js/mind-map-core.js.backup"
87
87
  },
88
88
  {
89
- "hash": "sha256-ie/IGvR2skZfq52M9F2BhanMZbOL9p84vuWvw8EvPFw=",
89
+ "hash": "sha256-5fmLBOdDbR09QvAV1juZUdcYEc/SLxHdGtCoL2h7Png=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -106,7 +106,7 @@
106
106
  "url": "_content/MindExecution.Shared/js/mind-map-glow-shader.js"
107
107
  },
108
108
  {
109
- "hash": "sha256-wt0KmPRXo3aaKAC3Os0NDeUacjHxFu1XYUYA6OmtKw8=",
109
+ "hash": "sha256-vFjVl706htlkNXSeB04YhjKIbbKPIwnXm9r+qgd/EDk=",
110
110
  "url": "_content/MindExecution.Shared/js/mind-map-interactions.js"
111
111
  },
112
112
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 3aMiQb+v */
1
+ /* Manifest version: mhkJA+oz */
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