@mindexec/cli 0.2.254 → 0.2.256

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.254",
3
+ "version": "0.2.256",
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-ua-zoom-motion-lite-v701';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-ua-wheel-zoom-direct-v703';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -5212,6 +5212,127 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5212
5212
  return true;
5213
5213
  }
5214
5214
 
5215
+ presentWheelZoomCameraFrame(clientX = null, clientY = null, options = {}) {
5216
+ if (CAMERA_MOTION_VISUAL_ONLY_FAST_PATH_ENABLED !== true ||
5217
+ this.isLoading === true ||
5218
+ this.isSelecting === true ||
5219
+ this.isDraggingNode === true ||
5220
+ this.isDraggingMultipleNodes === true ||
5221
+ this.isResizing === true ||
5222
+ this.isWindowResizing === true ||
5223
+ !this.camera) {
5224
+ return false;
5225
+ }
5226
+
5227
+ const renderDebugFlags = this.renderDebugFlags || getRenderDebugFlagsSnapshot();
5228
+ const canRenderCss3d = !!(
5229
+ renderDebugFlags.enableCss3d !== false &&
5230
+ this.cssRenderer &&
5231
+ typeof this.cssRenderer.renderCamera === 'function'
5232
+ );
5233
+ const canRenderWebgl = !!(
5234
+ renderDebugFlags.enableWebglRender !== false &&
5235
+ this.renderer &&
5236
+ this.scene
5237
+ );
5238
+ if (canRenderCss3d !== true && canRenderWebgl !== true) {
5239
+ return false;
5240
+ }
5241
+
5242
+ const currentX = Number(this.camera.position?.x || 0);
5243
+ const currentY = Number(this.camera.position?.y || 0);
5244
+ const currentZ = Number(this.camera.position?.z || 1);
5245
+ const targetX = Number.isFinite(Number(this.targetX)) ? Number(this.targetX) : currentX;
5246
+ const targetY = Number.isFinite(Number(this.targetY)) ? Number(this.targetY) : currentY;
5247
+ const targetZ = Number.isFinite(Number(this.targetZ)) ? Math.max(1, Number(this.targetZ)) : Math.max(1, currentZ);
5248
+ const deltaSq =
5249
+ ((targetX - currentX) * (targetX - currentX)) +
5250
+ ((targetY - currentY) * (targetY - currentY)) +
5251
+ ((targetZ - currentZ) * (targetZ - currentZ));
5252
+
5253
+ this.camera.position.set(targetX, targetY, targetZ);
5254
+ this.camera.updateMatrixWorld(true);
5255
+ this._viewStatePersistAfterMotion = true;
5256
+ this._viewSyncMotionActive = true;
5257
+ this._cameraMovingThisFrame = deltaSq > 0.0001;
5258
+ this._lastVisibilityCullingSkipReason = 'ua-wheel-zoom-direct';
5259
+ this._fullResMotionFrozen = this.lodRenderer?.isInLODMode === true ? false : true;
5260
+ this._wasViewStateMotionFrozenLastFrame = this._fullResMotionFrozen === true;
5261
+ this._wasLodMotionFrozenLastFrame = this.lodRenderer?.isInLODMode === true;
5262
+ if (this.lodRenderer?.isInLODMode !== true) {
5263
+ this._fullResVisibilityReconcilePending = true;
5264
+ }
5265
+ this._preserveVisibleSetThisFrame = true;
5266
+ this._passiveOverlayResumeAt = Math.max(
5267
+ Number(this._passiveOverlayResumeAt || 0),
5268
+ (typeof performance !== 'undefined' && typeof performance.now === 'function' ? performance.now() : Date.now()) + PASSIVE_OVERLAY_IDLE_DELAY_MS
5269
+ );
5270
+ if (this._overlayDirty === true ||
5271
+ String(this._textOverlayV2State?.selectionNodeId || '').trim() ||
5272
+ String(this._selectableTextOverlayNodeId || '').trim()) {
5273
+ this._deferPassiveOverlayRefresh = true;
5274
+ }
5275
+
5276
+ if (Number.isFinite(Number(clientX)) && Number.isFinite(Number(clientY))) {
5277
+ this.setLocalSnapGridClientPoint?.(Number(clientX), Number(clientY));
5278
+ }
5279
+
5280
+ recordCameraMotionFastPathStatus(this, 'hit', 'ua-wheel-zoom-direct', {
5281
+ coalescedWheelEvents: Number(options?.coalescedWheelEvents || 0)
5282
+ });
5283
+
5284
+ updateCursorDomElement(this);
5285
+
5286
+ let usedWebglCanvasCameraTransform = false;
5287
+ if (canRenderWebgl === true) {
5288
+ const shouldFreezeWebglCanvasForZoom =
5289
+ shouldFreezeWebglSurfaceForZoom(this) === true;
5290
+ const canReuseWebglCanvas = !!(
5291
+ shouldFreezeWebglCanvasForZoom !== true &&
5292
+ canUseWebglCanvasTransformForCameraMotion(this) === true &&
5293
+ this._lastWebglRenderedCameraState &&
5294
+ this.renderer?.domElement
5295
+ );
5296
+ if (canReuseWebglCanvas === true) {
5297
+ deferContinuousThemeForCameraMotion(this);
5298
+ usedWebglCanvasCameraTransform = this._applyWebglCanvasCameraTransform?.() === true;
5299
+ this._webglCameraMotionDeferred = true;
5300
+ this._lastWebglRenderInfo = {
5301
+ calls: 0,
5302
+ triangles: 0,
5303
+ points: 0,
5304
+ lines: 0,
5305
+ skipped: true,
5306
+ webglCanvasCameraTransform: usedWebglCanvasCameraTransform === true,
5307
+ uaWheelZoomDirect: true
5308
+ };
5309
+ } else if (shouldFreezeWebglCanvasForZoom === true) {
5310
+ markWebglSurfaceFrozenForZoom(this, 'uaWheelZoomDirect');
5311
+ } else {
5312
+ this._clearWebglCanvasCameraTransform?.();
5313
+ this.renderer.render(this.scene, this.camera);
5314
+ this._recordWebglRenderedCameraState?.();
5315
+ const renderInfo = this.renderer?.info?.render || null;
5316
+ this._lastWebglRenderInfo = renderInfo ? {
5317
+ calls: Number(renderInfo.calls || 0),
5318
+ triangles: Number(renderInfo.triangles || 0),
5319
+ points: Number(renderInfo.points || 0),
5320
+ lines: Number(renderInfo.lines || 0),
5321
+ uaWheelZoomDirect: true,
5322
+ webglCanvasCameraBootstrap: true
5323
+ } : null;
5324
+ }
5325
+ }
5326
+
5327
+ this._syncMotionGridLayerForCameraNavigation?.(usedWebglCanvasCameraTransform);
5328
+ this._syncLocalSnapGridPositionOnly?.(true);
5329
+ if (canRenderCss3d === true) {
5330
+ renderCss3dCameraForCameraNavigation(this, 'ua-wheel-zoom-direct');
5331
+ }
5332
+ syncBusinessAutomationEdgesForCameraNavigation(this);
5333
+ return true;
5334
+ }
5335
+
5215
5336
  refreshAgentConsoleVisibilityTracking(force = false) {
5216
5337
  if (!force && this._agentConsoleVisibilityTrackingDirty !== true) {
5217
5338
  return;
@@ -6025,7 +6025,8 @@ window.MindMapInteractions = (function () {
6025
6025
 
6026
6026
  // ▼▼▼ [New] 휠 이벤트 버퍼링 시스템 - 렉/저장 순간에도 휠 이벤트 손실 방지 ▼▼▼
6027
6027
  // 휠 버퍼 상태 (모듈별로 관리)
6028
- const wheelBuffers = new WeakMap();
6028
+ const wheelBuffers = new WeakMap();
6029
+ const wheelAnalysisCache = new WeakMap();
6029
6030
 
6030
6031
  function getWheelBuffer(module) {
6031
6032
  if (!wheelBuffers.has(module)) {
@@ -6145,7 +6146,7 @@ window.MindMapInteractions = (function () {
6145
6146
  };
6146
6147
  }
6147
6148
 
6148
- const cached = e.__mindMapWheelAnalysis;
6149
+ const cached = wheelAnalysisCache.get(e);
6149
6150
  if (cached && cached.module === module) {
6150
6151
  return cached;
6151
6152
  }
@@ -6191,14 +6192,7 @@ window.MindMapInteractions = (function () {
6191
6192
  shouldHandleTrackpadPanSeparately
6192
6193
  };
6193
6194
 
6194
- try {
6195
- Object.defineProperty(e, '__mindMapWheelAnalysis', {
6196
- configurable: true,
6197
- value: analysis
6198
- });
6199
- } catch {
6200
- e.__mindMapWheelAnalysis = analysis;
6201
- }
6195
+ wheelAnalysisCache.set(e, analysis);
6202
6196
 
6203
6197
  return analysis;
6204
6198
  }
@@ -6460,12 +6454,17 @@ window.MindMapInteractions = (function () {
6460
6454
  module.targetZ = newZ;
6461
6455
  // Calculate target position based on mouse position and zoom ratio
6462
6456
  const newX = worldMouseX - (worldMouseX - module.targetX) * zoomRatio;
6463
- const newY = worldMouseY - (worldMouseY - module.targetY) * zoomRatio;
6464
- module.targetX = newX;
6457
+ const newY = worldMouseY - (worldMouseY - module.targetY) * zoomRatio;
6458
+ module.targetX = newX;
6465
6459
  module.targetY = newY;
6466
- module._forceUpdateFrames = Math.max(Number(module._forceUpdateFrames || 0), 2);
6467
- module._cameraNavigationForceFrames = Math.max(Number(module._cameraNavigationForceFrames || 0), 2);
6468
- wakeCameraNavigationAnimation(module, 'wheel-zoom-input');
6460
+ const presentedDirectly = module.presentWheelZoomCameraFrame?.(clientX, clientY, {
6461
+ reason: 'wheel-zoom-direct',
6462
+ coalescedWheelEvents: Number(options.coalescedWheelEvents || 0)
6463
+ }) === true;
6464
+ const settleFrames = presentedDirectly === true ? 1 : 2;
6465
+ module._forceUpdateFrames = Math.max(Number(module._forceUpdateFrames || 0), settleFrames);
6466
+ module._cameraNavigationForceFrames = Math.max(Number(module._cameraNavigationForceFrames || 0), settleFrames);
6467
+ wakeCameraNavigationAnimation(module, presentedDirectly === true ? 'wheel-zoom-direct-settle' : 'wheel-zoom-input');
6469
6468
  // ▲▲▲ [Changed] ▲▲▲
6470
6469
 
6471
6470
  // ▼▼▼ [Perf] 줌 종료 감지 및 CSS3D 업데이트 타이머 ▼▼▼
@@ -6775,11 +6774,6 @@ window.MindMapInteractions = (function () {
6775
6774
  if (shouldRouteWheelToZoom) {
6776
6775
  module._lastCanvasWheelAt = wheelNow;
6777
6776
  window.__mindMapLastCanvasWheelAt = wheelNow;
6778
- if ((wheelNow - Number(module._lastWheelSurfaceInteractionNotifyAt || 0)) >= 650) {
6779
- module._lastWheelSurfaceInteractionNotifyAt = wheelNow;
6780
- notifyMindCanvasSurfaceInteraction('wheel');
6781
- }
6782
-
6783
6777
  if (WHEEL_DEBUG) {
6784
6778
  if (!module._wheelDebug) {
6785
6779
  module._wheelDebug = { count: 0, lastLog: 0 };
@@ -6810,10 +6804,6 @@ window.MindMapInteractions = (function () {
6810
6804
 
6811
6805
  module._lastCanvasWheelAt = wheelNow;
6812
6806
  window.__mindMapLastCanvasWheelAt = wheelNow;
6813
- if ((wheelNow - Number(module._lastWheelSurfaceInteractionNotifyAt || 0)) >= 650) {
6814
- module._lastWheelSurfaceInteractionNotifyAt = wheelNow;
6815
- notifyMindCanvasSurfaceInteraction('wheel');
6816
- }
6817
6807
 
6818
6808
  if (WHEEL_DEBUG) {
6819
6809
  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-ua-zoom-motion-lite-v701" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-ua-zoom-motion-lite-v701" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-ua-wheel-zoom-direct-v703" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-ua-wheel-zoom-direct-v703" />
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-ua-zoom-motion-lite-v701';
582
+ const scriptVersion = '20260620-ua-wheel-zoom-direct-v703';
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": "WjyXhuL7",
2
+ "version": "1LdoK7xQ",
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-vcVgmHzzRkIap4anSwYElKSeEdcgJbZRno+CJzIa36Y=",
81
+ "hash": "sha256-wk7TV857RImYllssWmYrGh0OAxXDQT1oq2VBYCPcS9c=",
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-uuicDvKUL3Xr/yyKQAMMyH+0wvMeVU6WyGzfQ5z2mec=",
109
+ "hash": "sha256-+rd+m+8v5jsj9aJFxXoTsdnY9A4TLbvfgGwvkQ5/Rhk=",
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-oriMi66AlZgCxhFoBhFlzM3ZRTvR9oi0M0MbiOcR+pE=",
837
+ "hash": "sha256-WhrCEBoF7P15FvP1BrCFRsc6Hz4xCr5uVOLHvEjTlc8=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: WjyXhuL7 */
1
+ /* Manifest version: 1LdoK7xQ */
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