@mindexec/cli 0.2.260 → 0.2.262

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.260",
3
+ "version": "0.2.262",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
package/server.js CHANGED
@@ -32,7 +32,7 @@ const { normalizePort, releaseBridgePort } = portGuard;
32
32
  const app = express();
33
33
  const PORT = normalizePort(process.env.BRIDGE_PORT);
34
34
  const BRIDGE_ROOT = path.dirname(fileURLToPath(import.meta.url));
35
- const PACKAGE_INFO = JSON.parse(readFileSync(path.join(BRIDGE_ROOT, 'package.json'), 'utf8'));
35
+ const PACKAGE_INFO = JSON.parse(readFileSync(path.join(BRIDGE_ROOT, 'package.json'), 'utf8').replace(/^\uFEFF/, ''));
36
36
  const BRIDGE_PACKAGE_NAME = String(PACKAGE_INFO.name || '@mindexec/cli');
37
37
  const BRIDGE_VERSION = String(PACKAGE_INFO.version || '0.1.0');
38
38
  const REMOTE_HUB_IDENTITY_FILE_PREFIX = 'remote-hub-identity';
@@ -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-v708';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-css3d-flat-wheel-v709';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -507,10 +507,7 @@
507
507
  }
508
508
 
509
509
  function shouldFreezeWebglSurfaceForZoom(module) {
510
- return !!(
511
- module?.isZooming === true &&
512
- module?._lastWebglRenderedCameraState
513
- );
510
+ return module?.isZooming === true;
514
511
  }
515
512
 
516
513
  function isLocalSnapGridOnlyTheme(module) {
@@ -529,9 +526,7 @@
529
526
  return false;
530
527
  }
531
528
 
532
- if (CSS3D_FLAT_CAMERA_MOTION_ENABLED === true &&
533
- renderDebugFlags.enableFlatCss3dCameraMotion !== false &&
534
- typeof renderer.renderFlatCamera === 'function') {
529
+ if (canUseFlatCss3dCameraMotion(module, renderer, camera, renderDebugFlags) === true) {
535
530
  const usedFlatCamera = renderer.renderFlatCamera(camera, {
536
531
  translateBucketPx: CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX,
537
532
  scaleBucket: CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET
@@ -595,6 +590,26 @@
595
590
  );
596
591
  }
597
592
 
593
+ function canUseFlatCss3dCameraMotion(module, renderer = module?.cssRenderer, camera = module?.camera, renderDebugFlags = null) {
594
+ if (CSS3D_FLAT_CAMERA_MOTION_ENABLED !== true ||
595
+ !renderer ||
596
+ !camera ||
597
+ camera.isPerspectiveCamera !== true ||
598
+ typeof renderer.renderFlatCamera !== 'function') {
599
+ return false;
600
+ }
601
+
602
+ const flags = renderDebugFlags || module?.renderDebugFlags || getRenderDebugFlagsSnapshot();
603
+ if (flags.enableFlatCss3dCameraMotion === false) {
604
+ return false;
605
+ }
606
+
607
+ const rotation = camera.rotation || {};
608
+ return Math.abs(Number(rotation.x || 0)) <= 1e-5 &&
609
+ Math.abs(Number(rotation.y || 0)) <= 1e-5 &&
610
+ Math.abs(Number(rotation.z || 0)) <= 1e-5;
611
+ }
612
+
598
613
  function syncBusinessAutomationEdgesForCameraNavigation(module, options = {}) {
599
614
  const hasActiveEdges = module?._businessAutomationEdgeRenderActive === true;
600
615
  if (hasActiveEdges !== true && options.allowDraftRender !== true) {
@@ -5370,13 +5385,20 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5370
5385
  const targetX = Number.isFinite(Number(this.targetX)) ? Number(this.targetX) : currentX;
5371
5386
  const targetY = Number.isFinite(Number(this.targetY)) ? Number(this.targetY) : currentY;
5372
5387
  const targetZ = Number.isFinite(Number(this.targetZ)) ? Math.max(1, Number(this.targetZ)) : Math.max(1, currentZ);
5388
+ const canUseFlatCss3dWheelCamera =
5389
+ canRenderCss3d === true &&
5390
+ canUseFlatCss3dCameraMotion(this, this.cssRenderer, this.camera, renderDebugFlags) === true;
5373
5391
  const deltaSq =
5374
5392
  ((targetX - currentX) * (targetX - currentX)) +
5375
5393
  ((targetY - currentY) * (targetY - currentY)) +
5376
5394
  ((targetZ - currentZ) * (targetZ - currentZ));
5377
5395
 
5378
5396
  this.camera.position.set(targetX, targetY, targetZ);
5379
- this.camera.updateMatrixWorld(true);
5397
+ if (canUseFlatCss3dWheelCamera === true) {
5398
+ this.camera.matrixWorldNeedsUpdate = true;
5399
+ } else {
5400
+ this.camera.updateMatrixWorld(true);
5401
+ }
5380
5402
  this._viewStatePersistAfterMotion = true;
5381
5403
  this._viewSyncMotionActive = true;
5382
5404
  this._cameraMovingThisFrame = deltaSq > 0.0001;
@@ -6032,11 +6032,9 @@ window.MindMapInteractions = (function () {
6032
6032
  if (!wheelBuffers.has(module)) {
6033
6033
  wheelBuffers.set(module, {
6034
6034
  deltaY: 0, // 누적된 deltaY
6035
- notchDeltaY: 0, // 일반 마우스 휠용 계단식 zoom 누적값
6036
6035
  lastClientX: 0, // 마지막 마우스 X 위치
6037
6036
  lastClientY: 0, // 마지막 마우스 Y 위치
6038
6037
  pending: false, // rAF 대기 중 여부
6039
- notchPending: false, // 계단식 zoom rAF 대기 중 여부
6040
6038
  frameId: null, // rAF ID
6041
6039
  eventCount: 0
6042
6040
  });
@@ -6079,9 +6077,6 @@ window.MindMapInteractions = (function () {
6079
6077
  const WHEEL_ZOOM_MAX_STEP = 0.42;
6080
6078
  const WHEEL_ZOOM_TRACKPAD_DELTA = 24;
6081
6079
  const WHEEL_ZOOM_TRACKPAD_BOOST = 1.3;
6082
- const WHEEL_ZOOM_NOTCH_DELTA = 90;
6083
- const WHEEL_ZOOM_NOTCH_STEP = 0.24;
6084
- const WHEEL_ZOOM_MAX_NOTCHES_PER_FRAME = 2;
6085
6080
  const TRACKPAD_PAN_SENSITIVITY = 0.0014;
6086
6081
  const TRACKPAD_PIXEL_DELTA_MAX = 32;
6087
6082
  const GESTURE_SCALE_EPSILON = 0.001;
@@ -6337,53 +6332,6 @@ window.MindMapInteractions = (function () {
6337
6332
  });
6338
6333
  }
6339
6334
 
6340
- function flushSteppedWheelZoomBuffer(module, wheelBuffer) {
6341
- const nextAbsDelta = Math.abs(Number(wheelBuffer?.notchDeltaY || 0));
6342
- if (nextAbsDelta < WHEEL_ZOOM_NOTCH_DELTA) {
6343
- return;
6344
- }
6345
-
6346
- const direction = Math.sign(wheelBuffer.notchDeltaY);
6347
- const notchCount = Math.min(
6348
- WHEEL_ZOOM_MAX_NOTCHES_PER_FRAME,
6349
- Math.max(1, Math.floor(nextAbsDelta / WHEEL_ZOOM_NOTCH_DELTA))
6350
- );
6351
- wheelBuffer.notchDeltaY -= direction * notchCount * WHEEL_ZOOM_NOTCH_DELTA;
6352
-
6353
- performCameraZoomBuffered(
6354
- module,
6355
- direction * notchCount * WHEEL_ZOOM_NOTCH_DELTA,
6356
- wheelBuffer.lastClientX,
6357
- wheelBuffer.lastClientY,
6358
- {
6359
- fixedZoomStep: direction * notchCount * WHEEL_ZOOM_NOTCH_STEP,
6360
- coalescedWheelEvents: notchCount
6361
- }
6362
- );
6363
-
6364
- if (Math.abs(Number(wheelBuffer.notchDeltaY || 0)) >= WHEEL_ZOOM_NOTCH_DELTA) {
6365
- scheduleWheelZoomFrame(module, wheelBuffer, () => flushSteppedWheelZoomBuffer(module, wheelBuffer));
6366
- }
6367
- }
6368
-
6369
- function bufferSteppedWheelZoomEvent(module, e, analysis = null) {
6370
- const wheelBuffer = getWheelBuffer(module);
6371
- const normalizedDeltaY = Number((analysis || getWheelEventAnalysis(module, e)).deltaY || 0);
6372
- const notchDeltaY = e?.deltaMode === 0
6373
- ? normalizedDeltaY
6374
- : Math.sign(normalizedDeltaY) * WHEEL_ZOOM_NOTCH_DELTA;
6375
- wheelBuffer.notchDeltaY += notchDeltaY;
6376
- wheelBuffer.lastClientX = e.clientX;
6377
- wheelBuffer.lastClientY = e.clientY;
6378
-
6379
- const absDelta = Math.abs(wheelBuffer.notchDeltaY);
6380
- if (absDelta < WHEEL_ZOOM_NOTCH_DELTA) {
6381
- return;
6382
- }
6383
-
6384
- scheduleWheelZoomFrame(module, wheelBuffer, () => flushSteppedWheelZoomBuffer(module, wheelBuffer));
6385
- }
6386
-
6387
6335
  /**
6388
6336
  * 버퍼된 휠 데이터로 카메라 줌 수행
6389
6337
  * - 기존 performCameraZoom과 동일하지만 event 객체 대신 누적된 값 사용
@@ -6537,12 +6485,7 @@ window.MindMapInteractions = (function () {
6537
6485
  e.preventDefault();
6538
6486
  e.stopPropagation();
6539
6487
  const wheelAnalysis = analysis || getWheelEventAnalysis(module, e);
6540
- if (wheelAnalysis.isTrackpadPinch === true) {
6541
- bufferWheelEvent(module, e, wheelAnalysis);
6542
- return;
6543
- }
6544
-
6545
- bufferSteppedWheelZoomEvent(module, e, wheelAnalysis);
6488
+ bufferWheelEvent(module, e, wheelAnalysis);
6546
6489
  }
6547
6490
 
6548
6491
  function isWheelZoomControlSwapEnabled(module) {
@@ -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-v708" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v708" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-css3d-flat-wheel-v710" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v710" />
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-v708';
582
+ const scriptVersion = '20260620-css3d-flat-wheel-v710';
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": "4mKj1mKm",
2
+ "version": "i5VgbkGW",
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-VlEtNj0oIkvIkgTr1/NcqEQGkNS9SuFKDXsdwxd1nDs=",
81
+ "hash": "sha256-zA1z44n8LRbB570BkhjJ7VS8fEWJ72lUn+PST+8pR0M=",
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-oHhdP4cltwUivQrUKDEMENUIE3cKk29F/IEk2Rg3JPM=",
109
+ "hash": "sha256-o5V0YYMPabf5eB2Z/rGiGB4Ggv3HEaLsCXSq0xY4dPQ=",
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-VL0U4RpYqj0SZ1628QiRWigygszwi/VJUJg1YRqrCvA=",
837
+ "hash": "sha256-jdNq8XWpVAdXAmN23SQljQN3nWt1r1SX2Cfu+te7SmY=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 4mKj1mKm */
1
+ /* Manifest version: i5VgbkGW */
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