@mindexec/cli 0.2.233 → 0.2.235

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.233",
3
+ "version": "0.2.235",
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 = '20260620-motion-edge-idle-skip-v680';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-zoom-grid-style-freeze-v682';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -346,7 +346,10 @@
346
346
  }
347
347
 
348
348
  module._lastCursorDomPositionKey = positionKey;
349
- element.style.display = visible ? 'block' : 'none';
349
+ if (module._lastCursorDomVisible !== visible) {
350
+ module._lastCursorDomVisible = visible;
351
+ element.style.display = visible ? 'block' : 'none';
352
+ }
350
353
  if (visible) {
351
354
  element.style.transform = `translate3d(${x.toFixed(2)}px, ${y.toFixed(2)}px, 0)`;
352
355
  }
@@ -842,7 +845,10 @@
842
845
  if (cachedWidth > 0 && cachedHeight > 0) {
843
846
  return {
844
847
  width: cachedWidth,
845
- height: cachedHeight
848
+ height: cachedHeight,
849
+ left: Number(module?._lastViewportLeft || 0),
850
+ top: Number(module?._lastViewportTop || 0),
851
+ dpr: Math.max(1, Number(module?._lastViewportDpr || window.devicePixelRatio || 1))
846
852
  };
847
853
  }
848
854
 
@@ -851,13 +857,19 @@
851
857
  if (cachedContainerWidth > 0 && cachedContainerHeight > 0) {
852
858
  return {
853
859
  width: cachedContainerWidth,
854
- height: cachedContainerHeight
860
+ height: cachedContainerHeight,
861
+ left: Number(module?._lastViewportLeft || 0),
862
+ top: Number(module?._lastViewportTop || 0),
863
+ dpr: Math.max(1, Number(module?._lastViewportDpr || window.devicePixelRatio || 1))
855
864
  };
856
865
  }
857
866
 
858
867
  return {
859
868
  width: Math.max(1, Number(module?.container?.clientWidth || 0)),
860
- height: Math.max(1, Number(module?.container?.clientHeight || 0))
869
+ height: Math.max(1, Number(module?.container?.clientHeight || 0)),
870
+ left: 0,
871
+ top: 0,
872
+ dpr: Math.max(1, Number(window.devicePixelRatio || 1))
861
873
  };
862
874
  }
863
875
 
@@ -3533,7 +3545,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3533
3545
 
3534
3546
  // ▼▼▼ [Perf] Flag to track zoom state for CSS3D optimization ▼▼▼
3535
3547
  this.isZooming = false;
3536
- this._zoomEndTimer = null;
3537
3548
  // ▲▲▲ [Perf] ▲▲▲
3538
3549
 
3539
3550
  // ▼▼▼ [Core addition] Multi-selection and spatial grid initialization ▼▼▼
@@ -3619,6 +3630,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3619
3630
  this._localSnapGridVisible = false;
3620
3631
  this._lastLocalSnapGridKey = '';
3621
3632
  this._lastLocalSnapGridTransformKey = '';
3633
+ this._lastLocalSnapGridOpacity = '';
3634
+ this._localSnapGridStyleDeferredForZoom = false;
3622
3635
  this._lastSnapGridClientX = null;
3623
3636
  this._lastSnapGridClientY = null;
3624
3637
  this._animationIdleTimerId = null;
@@ -3738,24 +3751,29 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3738
3751
  this._localSnapGridLayer = layer;
3739
3752
  this._lastLocalSnapGridKey = '';
3740
3753
  this._lastLocalSnapGridTransformKey = '';
3754
+ this._lastLocalSnapGridOpacity = '';
3755
+ this._localSnapGridStyleDeferredForZoom = false;
3741
3756
  return layer;
3742
3757
  }
3743
3758
 
3744
- _setLocalSnapGridVisible(visible) {
3759
+ _setLocalSnapGridVisible(visible, targetOpacity = null) {
3745
3760
  const layer = this._localSnapGridLayer;
3746
3761
  if (!layer) {
3747
3762
  return;
3748
3763
  }
3749
3764
 
3750
3765
  if (visible === true) {
3766
+ const opacityValue = targetOpacity == null
3767
+ ? this._lastLocalSnapGridOpacity
3768
+ : String(targetOpacity);
3751
3769
  if (this._localSnapGridVisible !== true) {
3752
3770
  this._localSnapGridVisible = true;
3753
3771
  if (layer.style.display !== 'block') {
3754
3772
  layer.style.display = 'block';
3755
3773
  }
3756
3774
  }
3757
- if (layer.style.opacity !== '1') {
3758
- layer.style.opacity = '1';
3775
+ if (opacityValue && layer.style.opacity !== opacityValue) {
3776
+ layer.style.opacity = opacityValue;
3759
3777
  }
3760
3778
  return;
3761
3779
  }
@@ -3765,6 +3783,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3765
3783
  }
3766
3784
 
3767
3785
  this._localSnapGridVisible = false;
3786
+ this._localSnapGridStyleDeferredForZoom = false;
3768
3787
  if (layer.style.opacity !== '0') {
3769
3788
  layer.style.opacity = '0';
3770
3789
  }
@@ -3837,9 +3856,16 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3837
3856
  Math.round(majorStepPx * 100),
3838
3857
  Math.round(opacity * 100)
3839
3858
  ].join('|');
3859
+ const shouldDeferLocalGridStyleForZoom =
3860
+ this.isZooming === true &&
3861
+ !!this._lastLocalSnapGridKey;
3840
3862
 
3841
- if (localGridKey !== this._lastLocalSnapGridKey) {
3863
+ if (localGridKey !== this._lastLocalSnapGridKey &&
3864
+ shouldDeferLocalGridStyleForZoom !== true) {
3865
+ this._localSnapGridStyleDeferredForZoom = false;
3842
3866
  this._lastLocalSnapGridKey = localGridKey;
3867
+ const opacityValue = opacity.toFixed(3);
3868
+ this._lastLocalSnapGridOpacity = opacityValue;
3843
3869
  if (styleKind === 'dot') {
3844
3870
  layer.style.backgroundImage = [
3845
3871
  'radial-gradient(circle at 0 0, rgba(68, 78, 94, 0.34) 1px, transparent 1.55px)',
@@ -3859,7 +3885,11 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3859
3885
  layer.style.backgroundPosition = styleKind === 'dot'
3860
3886
  ? '0 0, 0 0'
3861
3887
  : '0 0, 0 0, 0 0, 0 0';
3862
- layer.style.opacity = opacity.toFixed(3);
3888
+ if (layer.style.opacity !== opacityValue) {
3889
+ layer.style.opacity = opacityValue;
3890
+ }
3891
+ } else if (shouldDeferLocalGridStyleForZoom === true) {
3892
+ this._localSnapGridStyleDeferredForZoom = true;
3863
3893
  }
3864
3894
 
3865
3895
  const transformKey = `${Math.round(layerLeft * 2)}|${Math.round(layerTop * 2)}`;
@@ -3868,7 +3898,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3868
3898
  layer.style.transform = `translate3d(${layerLeft.toFixed(2)}px, ${layerTop.toFixed(2)}px, 0)`;
3869
3899
  }
3870
3900
 
3871
- this._setLocalSnapGridVisible(true);
3901
+ this._setLocalSnapGridVisible(true, this._lastLocalSnapGridOpacity || opacity.toFixed(3));
3872
3902
  return true;
3873
3903
  }
3874
3904
 
@@ -6200,10 +6200,6 @@ window.MindMapInteractions = (function () {
6200
6200
  module.isZooming = false;
6201
6201
  clearZoomMotionChrome(module);
6202
6202
  clearMotionWillChangeEnable(module, { disableIfIdle: true });
6203
- if (module._zoomEndTimer) {
6204
- clearTimeout(module._zoomEndTimer);
6205
- module._zoomEndTimer = null;
6206
- }
6207
6203
  }
6208
6204
 
6209
6205
  function applyTrackpadPanDelta(module, deltaX, deltaY) {
@@ -6348,7 +6344,6 @@ window.MindMapInteractions = (function () {
6348
6344
  module._zoomInputTime = performance.now();
6349
6345
  // ▲▲▲ [Fix] ▲▲▲
6350
6346
  // Reset zoom fallback flag on new input
6351
- module._zoomFallbackExpired = false;
6352
6347
  // ▲▲▲ [Perf] ▲▲▲
6353
6348
 
6354
6349
  const viewportMetrics = getCachedViewportMetrics(module);
@@ -6400,15 +6395,6 @@ window.MindMapInteractions = (function () {
6400
6395
 
6401
6396
  // ▼▼▼ [Perf] 줌 종료 감지 및 CSS3D 업데이트 타이머 ▼▼▼
6402
6397
  // 기존 타이머 취소 (연속 스크롤 감지)
6403
- if (module._zoomEndTimer) {
6404
- clearTimeout(module._zoomEndTimer);
6405
- }
6406
-
6407
- // Fallback timer - main detection is in animate() loop when camera stops
6408
- module._zoomEndTimer = setTimeout(() => {
6409
- if (!module.isZooming) return; // Already handled by animate() loop
6410
- module._zoomFallbackExpired = true;
6411
- }, 150);
6412
6398
  // ▲▲▲ [Perf] ▲▲▲
6413
6399
 
6414
6400
  if (WHEEL_PERF_DEBUG) {
@@ -6703,13 +6689,15 @@ window.MindMapInteractions = (function () {
6703
6689
  return;
6704
6690
  }
6705
6691
 
6706
- notifyMindCanvasSurfaceInteraction('wheel');
6707
-
6708
6692
  const wheelNow = typeof performance !== 'undefined' && typeof performance.now === 'function'
6709
6693
  ? performance.now()
6710
6694
  : Date.now();
6711
6695
  module._lastCanvasWheelAt = wheelNow;
6712
6696
  window.__mindMapLastCanvasWheelAt = wheelNow;
6697
+ if ((wheelNow - Number(module._lastWheelSurfaceInteractionNotifyAt || 0)) >= 650) {
6698
+ module._lastWheelSurfaceInteractionNotifyAt = wheelNow;
6699
+ notifyMindCanvasSurfaceInteraction('wheel');
6700
+ }
6713
6701
 
6714
6702
  if (WHEEL_DEBUG) {
6715
6703
  if (!module._wheelDebug) {
@@ -7,8 +7,8 @@
7
7
  <title>MindExec | Business Execution OS for solo builders</title>
8
8
  <meta name="description" content="MindExec is an AI business execution OS for solo builders who want to turn notes, research, assets, and repeatable execution Skills into revenue-producing work." />
9
9
  <base href="/" />
10
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-motion-edge-idle-skip-v680" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-motion-edge-idle-skip-v680" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-zoom-grid-style-freeze-v682" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-zoom-grid-style-freeze-v682" />
12
12
  <!-- ?占썩뼹??Font Awesome (local) ?占썩뼹??-->
13
13
  <link rel="stylesheet" href="_content/MindExecution.Shared/lib/font-awesome/css/all.min.css" />
14
14
  <!-- ?占썩뼯??-->
@@ -579,7 +579,7 @@
579
579
  }
580
580
 
581
581
  const base = '_content/MindExecution.Shared/js/';
582
- const scriptVersion = '20260620-motion-edge-idle-skip-v680';
582
+ const scriptVersion = '20260620-zoom-grid-style-freeze-v682';
583
583
  const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
584
584
  console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
585
585
  const criticalScripts = [
@@ -1,5 +1,5 @@
1
1
  self.assetsManifest = {
2
- "version": "tfRsKidn",
2
+ "version": "Bb7gNuNW",
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-gayKurjZwXPgO2/y/DZ3HV7akcasjW5dLLQ0z+11/Lc=",
81
+ "hash": "sha256-f21NTYhVmQcqoeMozAXBeF/XGDlYcx+EQE8RyuJVaSE=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -106,7 +106,7 @@
106
106
  "url": "_content/MindExecution.Shared/js/mind-map-glow-shader.js"
107
107
  },
108
108
  {
109
- "hash": "sha256-c4m1kyotX9806YeHVrbh0M3lvEmn9kO8oyhZY8lD28M=",
109
+ "hash": "sha256-glU8Qi29dTeN+P17xuF+Nno5MLoR88v44leP9LrLAgw=",
110
110
  "url": "_content/MindExecution.Shared/js/mind-map-interactions.js"
111
111
  },
112
112
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-Ptdz9ioX39SYDLpMEEbaN8skc/gqYMH1xzlzt+c9a/o=",
837
+ "hash": "sha256-Bf3v8t4sqye7cFE8ehvHN/FdvilUpZdu7Pg/xI5fAmc=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: tfRsKidn */
1
+ /* Manifest version: Bb7gNuNW */
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