@mindexec/cli 0.2.255 → 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.255",
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-v702';
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;
@@ -6454,12 +6454,17 @@ window.MindMapInteractions = (function () {
6454
6454
  module.targetZ = newZ;
6455
6455
  // Calculate target position based on mouse position and zoom ratio
6456
6456
  const newX = worldMouseX - (worldMouseX - module.targetX) * zoomRatio;
6457
- const newY = worldMouseY - (worldMouseY - module.targetY) * zoomRatio;
6458
- module.targetX = newX;
6457
+ const newY = worldMouseY - (worldMouseY - module.targetY) * zoomRatio;
6458
+ module.targetX = newX;
6459
6459
  module.targetY = newY;
6460
- module._forceUpdateFrames = Math.max(Number(module._forceUpdateFrames || 0), 2);
6461
- module._cameraNavigationForceFrames = Math.max(Number(module._cameraNavigationForceFrames || 0), 2);
6462
- 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');
6463
6468
  // ▲▲▲ [Changed] ▲▲▲
6464
6469
 
6465
6470
  // ▼▼▼ [Perf] 줌 종료 감지 및 CSS3D 업데이트 타이머 ▼▼▼
@@ -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-v702" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-ua-zoom-motion-lite-v702" />
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-v702';
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": "7QBlxc4s",
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-o+i+x7LpltW0e2S8nRTwwGwGy1qDpL70R+/Da/+lr/A=",
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-agCyFImDU819fOhCgWbLQpUd+XTc2lV1nmTjAqYb1Vg=",
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-KP3YKI1pVCuyzMlVYyt+Vvcs/1SafFXPv7pXpv4LIWs=",
837
+ "hash": "sha256-WhrCEBoF7P15FvP1BrCFRsc6Hz4xCr5uVOLHvEjTlc8=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 7QBlxc4s */
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