@mindexec/cli 0.2.280 → 0.2.282

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.280",
3
+ "version": "0.2.282",
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-css3d-flat-wheel-v728';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-css3d-flat-wheel-v730';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -511,6 +511,29 @@
511
511
  return module?.currentThemeObject?.userData?.localSnapGrid === true;
512
512
  }
513
513
 
514
+ function shouldTouchLocalSnapGridLayerForCameraNavigation(module) {
515
+ return !!(
516
+ module &&
517
+ (
518
+ module._isLocalSnapGridThemeEnabled?.() === true ||
519
+ module._localSnapGridVisible === true ||
520
+ module._localSnapGridLayer?.isConnected === true
521
+ )
522
+ );
523
+ }
524
+
525
+ function syncLocalSnapGridForCameraNavigation(module, positionOnly = true) {
526
+ if (shouldTouchLocalSnapGridLayerForCameraNavigation(module) !== true) {
527
+ return false;
528
+ }
529
+
530
+ if (positionOnly === true) {
531
+ return module._syncLocalSnapGridPositionOnly?.(true) === true;
532
+ }
533
+
534
+ return module._syncLocalSnapGridLayer?.(true) === true;
535
+ }
536
+
514
537
  function hasPassiveOverlaySelectionSurface(module) {
515
538
  const selectionNodeId = module?._textOverlayV2State?.selectionNodeId;
516
539
  const selectableTextOverlayNodeId = module?._selectableTextOverlayNodeId;
@@ -1401,6 +1424,14 @@
1401
1424
  }
1402
1425
 
1403
1426
  const previous = module._cameraMotionFastPathStatus || null;
1427
+ if (!details &&
1428
+ previous &&
1429
+ previous.status === status &&
1430
+ previous.reason === reason) {
1431
+ previous.count = Number(previous.count || 0) + 1;
1432
+ return;
1433
+ }
1434
+
1404
1435
  const normalizedStatus = String(status || '').trim() || 'unknown';
1405
1436
  const normalizedReason = String(reason || '').trim() || normalizedStatus;
1406
1437
  if (previous &&
@@ -1824,7 +1855,7 @@
1824
1855
  if (module._shouldTouchMotionGridLayerForCameraNavigation?.() === true) {
1825
1856
  module._syncMotionGridLayerForCameraNavigation?.(usedWebglCanvasCameraTransform);
1826
1857
  }
1827
- module._syncLocalSnapGridPositionOnly?.(true);
1858
+ syncLocalSnapGridForCameraNavigation(module, true);
1828
1859
  renderCss3dCameraForCameraNavigation(module, 'ua-ultra-camera-only');
1829
1860
 
1830
1861
  if (hasBusinessAutomationTransformMotionWork(module) === true) {
@@ -2050,7 +2081,7 @@
2050
2081
  if (module._shouldTouchMotionGridLayerForCameraNavigation?.() === true) {
2051
2082
  module._syncMotionGridLayerForCameraNavigation?.(usedWebglCanvasCameraTransform);
2052
2083
  }
2053
- module._syncLocalSnapGridPositionOnly?.(true);
2084
+ syncLocalSnapGridForCameraNavigation(module, true);
2054
2085
  if (canRenderCss3dCamera === true) {
2055
2086
  renderCss3dCameraForCameraNavigation(module, 'ua-ultra-resident-camera-only');
2056
2087
  }
@@ -4733,14 +4764,16 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4733
4764
  }
4734
4765
  }
4735
4766
 
4736
- requestWheelZoomDirectSettle(delayMs = CAMERA_ZOOM_END_DELAY_MS + 18) {
4767
+ requestWheelZoomDirectSettle(delayMs = CAMERA_ZOOM_END_DELAY_MS + 18, nowMs = 0) {
4737
4768
  const safeDelayMs = Math.max(
4738
4769
  16,
4739
4770
  Math.floor(Number(delayMs) || (CAMERA_ZOOM_END_DELAY_MS + 18))
4740
4771
  );
4741
- const now = typeof performance !== 'undefined' && typeof performance.now === 'function'
4742
- ? performance.now()
4743
- : Date.now();
4772
+ const now = Number(nowMs || 0) > 0
4773
+ ? Number(nowMs)
4774
+ : (typeof performance !== 'undefined' && typeof performance.now === 'function'
4775
+ ? performance.now()
4776
+ : Date.now());
4744
4777
  this._wheelZoomDirectSettleDueAt = now + safeDelayMs;
4745
4778
 
4746
4779
  if (this._wheelZoomDirectSettleTimer) {
@@ -5646,6 +5679,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5646
5679
  }
5647
5680
 
5648
5681
  if (snapGridPointAlreadySet !== true &&
5682
+ shouldTouchLocalSnapGridLayerForCameraNavigation(this) === true &&
5649
5683
  Number.isFinite(Number(clientX)) &&
5650
5684
  Number.isFinite(Number(clientY))) {
5651
5685
  this.setLocalSnapGridClientPoint?.(Number(clientX), Number(clientY));
@@ -5688,7 +5722,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5688
5722
  if (this._shouldTouchMotionGridLayerForCameraNavigation?.() === true) {
5689
5723
  this._syncMotionGridLayerForCameraNavigation?.(usedWebglCanvasCameraTransform);
5690
5724
  }
5691
- this._syncLocalSnapGridPositionOnly?.(true);
5725
+ syncLocalSnapGridForCameraNavigation(this, true);
5692
5726
  if (canRenderCss3d === true) {
5693
5727
  renderCss3dCameraForCameraNavigation(this, 'ua-wheel-zoom-direct', {
5694
5728
  renderDebugFlags,
@@ -7190,7 +7224,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7190
7224
  if (this._shouldTouchMotionGridLayerForCameraNavigation?.() === true) {
7191
7225
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformImmediate);
7192
7226
  }
7193
- this._syncLocalSnapGridPositionOnly(true);
7227
+ syncLocalSnapGridForCameraNavigation(this, true);
7194
7228
 
7195
7229
  renderCss3dCameraForCameraNavigation(this, 'ua-visual-only-motion');
7196
7230
  const shouldSyncPassiveOverlayTransformDuringMotion =
@@ -7373,7 +7407,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7373
7407
  if (this._shouldTouchMotionGridLayerForCameraNavigation?.() === true) {
7374
7408
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformStationary);
7375
7409
  }
7376
- this._syncLocalSnapGridPositionOnly(true);
7410
+ syncLocalSnapGridForCameraNavigation(this, true);
7377
7411
  if (this.cssRenderer && typeof this.cssRenderer.renderCamera === 'function') {
7378
7412
  renderCss3dCameraForCameraNavigation(this, 'ua-stationary-visual-motion');
7379
7413
  }
@@ -7569,7 +7603,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7569
7603
  }
7570
7604
  }
7571
7605
 
7572
- this._syncLocalSnapGridPositionOnly(true);
7606
+ syncLocalSnapGridForCameraNavigation(this, true);
7573
7607
  if (shouldRenderCss3dInLodForUaResidentCameraOnly === true) {
7574
7608
  renderCss3dCameraForCameraNavigation(this, 'ua-resident-visual-only-motion');
7575
7609
  }
@@ -8726,11 +8760,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8726
8760
  this._localSnapGridLayer?.isConnected &&
8727
8761
  this._lastLocalSnapGridKey
8728
8762
  );
8729
- if (shouldUseLocalSnapGridPositionOnly === true) {
8730
- this._syncLocalSnapGridPositionOnly(true);
8731
- } else {
8732
- this._syncLocalSnapGridLayer(true);
8733
- }
8763
+ syncLocalSnapGridForCameraNavigation(this, shouldUseLocalSnapGridPositionOnly === true);
8734
8764
  if (shouldRenderWebglFrame === true &&
8735
8765
  this._motionGridVisible === true &&
8736
8766
  isPureCss3dCameraMotionFrame !== true &&
@@ -1462,7 +1462,13 @@ window.MindMapInteractions = (function () {
1462
1462
  function setPointerFromClientPosition(module, clientX, clientY) {
1463
1463
  if (!module?.pointer) return false;
1464
1464
 
1465
- const localSnapGridMoved = module.setLocalSnapGridClientPoint?.(clientX, clientY) === true;
1465
+ const shouldUpdateLocalSnapGridPointer = !!(
1466
+ module._isLocalSnapGridThemeEnabled?.() === true ||
1467
+ module._localSnapGridVisible === true ||
1468
+ module._localSnapGridLayer?.isConnected === true
1469
+ );
1470
+ const localSnapGridMoved = shouldUpdateLocalSnapGridPointer === true &&
1471
+ module.setLocalSnapGridClientPoint?.(clientX, clientY) === true;
1466
1472
  if (localSnapGridMoved && module._isLocalSnapGridThemeEnabled?.() === true) {
1467
1473
  if (module.isZooming === true) {
1468
1474
  module._localSnapGridPointerWakeDeferredForZoom = true;
@@ -6051,12 +6057,24 @@ window.MindMapInteractions = (function () {
6051
6057
  : Date.now();
6052
6058
  }
6053
6059
 
6054
- function markCanvasWheelActivity(module, now = 0) {
6060
+ function markCanvasWheelActivity(module, now = 0, options = {}) {
6055
6061
  if (!module) {
6056
6062
  return 0;
6057
6063
  }
6058
6064
 
6059
6065
  const wheelNow = Number(now || 0) > 0 ? Number(now) : getWheelTimestamp();
6066
+ const throttleMs = Math.max(0, Number(options?.throttleMs || 0));
6067
+ const previousWheelAt = Math.max(
6068
+ 0,
6069
+ Number(module._lastCanvasWheelAt || 0),
6070
+ Number(window.__mindMapLastCanvasWheelAt || 0)
6071
+ );
6072
+ if (throttleMs > 0 &&
6073
+ previousWheelAt > 0 &&
6074
+ wheelNow - previousWheelAt < throttleMs) {
6075
+ return previousWheelAt;
6076
+ }
6077
+
6060
6078
  module._lastCanvasWheelAt = wheelNow;
6061
6079
  window.__mindMapLastCanvasWheelAt = wheelNow;
6062
6080
  return wheelNow;
@@ -6101,6 +6119,7 @@ window.MindMapInteractions = (function () {
6101
6119
  const TRACKPAD_PIXEL_DELTA_MAX = 32;
6102
6120
  const GESTURE_SCALE_EPSILON = 0.001;
6103
6121
  const GESTURE_SCALE_TO_WHEEL_DELTA = 240;
6122
+ const WHEEL_ACTIVITY_BURST_INTERVAL_MS = 120;
6104
6123
 
6105
6124
  function normalizeWheelDelta(e, axis) {
6106
6125
  let delta = Number(e?.[axis] || 0);
@@ -6342,8 +6361,9 @@ window.MindMapInteractions = (function () {
6342
6361
  return;
6343
6362
  }
6344
6363
 
6345
- markCanvasWheelActivity(module);
6346
- performCameraZoomBuffered(module, accumulatedDeltaY, clientX, clientY);
6364
+ const wheelNow = getWheelTimestamp();
6365
+ markCanvasWheelActivity(module, wheelNow, { throttleMs: WHEEL_ACTIVITY_BURST_INTERVAL_MS });
6366
+ performCameraZoomBuffered(module, accumulatedDeltaY, clientX, clientY, { inputTime: wheelNow });
6347
6367
  });
6348
6368
  }
6349
6369
 
@@ -6358,7 +6378,11 @@ window.MindMapInteractions = (function () {
6358
6378
  return;
6359
6379
  }
6360
6380
  // ▲▲▲ [Fix] ▲▲▲
6361
- module.setLocalSnapGridClientPoint?.(clientX, clientY);
6381
+ if (module._isLocalSnapGridThemeEnabled?.() === true ||
6382
+ module._localSnapGridVisible === true ||
6383
+ module._localSnapGridLayer?.isConnected === true) {
6384
+ module.setLocalSnapGridClientPoint?.(clientX, clientY);
6385
+ }
6362
6386
 
6363
6387
  let t0 = 0;
6364
6388
  let cameraZ = '?';
@@ -6378,7 +6402,9 @@ window.MindMapInteractions = (function () {
6378
6402
  }
6379
6403
  }
6380
6404
  // ▼▼▼ [Fix] 휠 입력 시간 기록 (줌 종료 타이밍 계산용) ▼▼▼
6381
- module._zoomInputTime = performance.now();
6405
+ module._zoomInputTime = Number(options?.inputTime || 0) > 0
6406
+ ? Number(options.inputTime)
6407
+ : performance.now();
6382
6408
  // ▲▲▲ [Fix] ▲▲▲
6383
6409
  // Reset zoom fallback flag on new input
6384
6410
  // ▲▲▲ [Perf] ▲▲▲
@@ -6428,7 +6454,7 @@ window.MindMapInteractions = (function () {
6428
6454
  const presentedDirectly = module.presentWheelZoomCameraFrame?.(clientX, clientY, true) === true;
6429
6455
  const settleScheduled =
6430
6456
  presentedDirectly === true &&
6431
- module.requestWheelZoomDirectSettle?.() === true;
6457
+ module.requestWheelZoomDirectSettle?.(undefined, module._zoomInputTime) === true;
6432
6458
  if (settleScheduled !== true) {
6433
6459
  const settleFrames = 2;
6434
6460
  module._forceUpdateFrames = Math.max(Number(module._forceUpdateFrames || 0), settleFrames);
@@ -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-css3d-flat-wheel-v728" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v728" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-css3d-flat-wheel-v730" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v730" />
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-css3d-flat-wheel-v728';
582
+ const scriptVersion = '20260620-css3d-flat-wheel-v730';
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": "FCFiOPFS",
2
+ "version": "Cmt5F94a",
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-pMyO/ImYhCgI4GNnRzeHujvl85idQabhgamLQQqHM1k=",
81
+ "hash": "sha256-9SMzn1w2hrty2US+O8GMpjoP32Us/hO4fYX+zPQpT50=",
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-v66z+kBA+ob3JHBGielrNVQDU1t3t0UPpQnUoNmFKyQ=",
109
+ "hash": "sha256-AmkV3no3WRkpMZ4GO+XHpIMuWgixgiTmZjuR1FpgTA8=",
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-yLo2j8CTV6E9gXnuGf0/o/Uv9Xh3yhcpoJJlzaQ8G1U=",
837
+ "hash": "sha256-vcH2v/8rZXgQ9wpUc+GQ5g6h+htQOhQvMksFPVWBAHY=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: FCFiOPFS */
1
+ /* Manifest version: Cmt5F94a */
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