@mindexec/cli 0.2.249 → 0.2.251

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.249",
3
+ "version": "0.2.251",
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-wheel-zoom-theme-freeze-v696';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-flat-css3d-zoom-v698';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -114,6 +114,7 @@
114
114
  const CAMERA_MOTION_WEBGL_CANVAS_TRANSFORM_ENABLED = true;
115
115
  const CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX = 0.25;
116
116
  const CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET = 0.0005;
117
+ const CSS3D_FLAT_CAMERA_MOTION_ENABLED = true;
117
118
  const CAMERA_STATIONARY_INTERACTION_FRAME_DELAY_MS = 48;
118
119
  const CAMERA_ZOOM_END_DELAY_MS = 150;
119
120
  const CAMERA_MOTION_GLOBAL_STYLE_CLASS_ENABLED = false;
@@ -510,6 +511,42 @@
510
511
  );
511
512
  }
512
513
 
514
+ function renderCss3dCameraForCameraNavigation(module, reason = 'camera-navigation') {
515
+ const renderer = module?.cssRenderer || null;
516
+ const camera = module?.camera || null;
517
+ if (!renderer || !camera) {
518
+ return false;
519
+ }
520
+
521
+ const renderDebugFlags = module.renderDebugFlags || getRenderDebugFlagsSnapshot();
522
+ if (renderDebugFlags.enableCss3d === false) {
523
+ return false;
524
+ }
525
+
526
+ if (CSS3D_FLAT_CAMERA_MOTION_ENABLED === true &&
527
+ renderDebugFlags.enableFlatCss3dCameraMotion !== false &&
528
+ typeof renderer.renderFlatCamera === 'function') {
529
+ const usedFlatCamera = renderer.renderFlatCamera(camera, {
530
+ translateBucketPx: CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX,
531
+ scaleBucket: CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET
532
+ });
533
+ if (usedFlatCamera === true) {
534
+ module._lastCss3dCameraMotionMode = 'flat';
535
+ module._lastCss3dCameraMotionReason = reason;
536
+ return true;
537
+ }
538
+ }
539
+
540
+ if (typeof renderer.renderCamera === 'function') {
541
+ renderer.renderCamera(camera);
542
+ module._lastCss3dCameraMotionMode = 'matrix3d';
543
+ module._lastCss3dCameraMotionReason = reason;
544
+ return true;
545
+ }
546
+
547
+ return false;
548
+ }
549
+
513
550
  function markWebglSurfaceFrozenForZoom(module, mode) {
514
551
  if (!module) {
515
552
  return false;
@@ -1675,7 +1712,7 @@
1675
1712
 
1676
1713
  module._syncMotionGridLayerForCameraNavigation?.(usedWebglCanvasCameraTransform);
1677
1714
  module._syncLocalSnapGridPositionOnly?.(true);
1678
- module.cssRenderer.renderCamera(module.camera);
1715
+ renderCss3dCameraForCameraNavigation(module, 'ua-ultra-camera-only');
1679
1716
 
1680
1717
  syncBusinessAutomationEdgesForCameraNavigation(module);
1681
1718
 
@@ -1898,7 +1935,7 @@
1898
1935
  module._syncMotionGridLayerForCameraNavigation?.(usedWebglCanvasCameraTransform);
1899
1936
  module._syncLocalSnapGridPositionOnly?.(true);
1900
1937
  if (canRenderCss3dCamera === true) {
1901
- module.cssRenderer.renderCamera(module.camera);
1938
+ renderCss3dCameraForCameraNavigation(module, 'ua-ultra-resident-camera-only');
1902
1939
  }
1903
1940
 
1904
1941
  syncBusinessAutomationEdgesForCameraNavigation(module);
@@ -3947,7 +3984,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3947
3984
  layer.style.willChange = 'transform, opacity';
3948
3985
  layer.style.transform = 'translate3d(0, 0, 0)';
3949
3986
  layer.style.transition = 'opacity 90ms linear';
3950
- const mask = 'radial-gradient(circle at center, rgba(0,0,0,0.96) 0%, rgba(0,0,0,0.82) 34%, rgba(0,0,0,0.38) 62%, rgba(0,0,0,0.10) 80%, transparent 100%)';
3987
+ const mask = 'radial-gradient(circle at center, rgba(0,0,0,0.98) 0%, rgba(0,0,0,0.86) 32%, rgba(0,0,0,0.42) 58%, rgba(0,0,0,0.08) 78%, transparent 100%)';
3951
3988
  layer.style.maskImage = mask;
3952
3989
  layer.style.webkitMaskImage = mask;
3953
3990
 
@@ -5024,9 +5061,16 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5024
5061
  }
5025
5062
  this._syncMotionGridLayer(false);
5026
5063
  this._syncLocalSnapGridLayer(false);
5027
- this.currentThemeObject = newTheme.create(this.scene, this.renderer);
5028
- if (this.currentThemeObject) this.scene.add(this.currentThemeObject);
5029
5064
  this.currentThemeName = themeName;
5065
+ this.currentThemeObject = newTheme.create(this.scene, this.renderer);
5066
+ const isLocalSnapGridOnlyTheme = this.currentThemeObject?.userData?.localSnapGrid === true;
5067
+ if (this.currentThemeObject && isLocalSnapGridOnlyTheme !== true) {
5068
+ this.scene.add(this.currentThemeObject);
5069
+ }
5070
+ if (isLocalSnapGridOnlyTheme === true) {
5071
+ this.currentThemeObject.visible = false;
5072
+ this._syncLocalSnapGridLayer(true);
5073
+ }
5030
5074
  this._forceThemeAnimationFrame = true;
5031
5075
  this._forceUpdateFrames = Math.max(this._forceUpdateFrames || 0, 2);
5032
5076
  }
@@ -6635,7 +6679,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6635
6679
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformImmediate);
6636
6680
  this._syncLocalSnapGridPositionOnly(true);
6637
6681
 
6638
- this.cssRenderer.renderCamera(this.camera);
6682
+ renderCss3dCameraForCameraNavigation(this, 'ua-visual-only-motion');
6639
6683
  const shouldSyncPassiveOverlayTransformDuringMotion =
6640
6684
  isPassiveDomOverlayRuntimeEnabled === true;
6641
6685
  if (shouldSyncPassiveOverlayTransformDuringMotion &&
@@ -6810,7 +6854,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6810
6854
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformStationary);
6811
6855
  this._syncLocalSnapGridPositionOnly(true);
6812
6856
  if (this.cssRenderer && typeof this.cssRenderer.renderCamera === 'function') {
6813
- this.cssRenderer.renderCamera(this.camera);
6857
+ renderCss3dCameraForCameraNavigation(this, 'ua-stationary-visual-motion');
6814
6858
  }
6815
6859
  syncBusinessAutomationEdgesForCameraNavigation(this, { allowDraftRender: true });
6816
6860
 
@@ -7000,7 +7044,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7000
7044
 
7001
7045
  this._syncLocalSnapGridPositionOnly(true);
7002
7046
  if (shouldRenderCss3dInLodForUaResidentCameraOnly === true) {
7003
- this.cssRenderer.renderCamera(this.camera);
7047
+ renderCss3dCameraForCameraNavigation(this, 'ua-resident-visual-only-motion');
7004
7048
  }
7005
7049
  syncBusinessAutomationEdgesForCameraNavigation(this, { allowDraftRender: true });
7006
7050
  _profileSection('uaResidentVisualOnlyMotion');
@@ -7246,7 +7290,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7246
7290
  }
7247
7291
 
7248
7292
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformEarly);
7249
- this.cssRenderer.renderCamera(this.camera);
7293
+ renderCss3dCameraForCameraNavigation(this, 'ua-early-camera-only');
7250
7294
  _profileSection('uaEarlyCameraOnly');
7251
7295
 
7252
7296
  const frameEnd = performance.now();
@@ -8173,7 +8217,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8173
8217
  if (canUseCss3dCameraFastPath) {
8174
8218
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransform);
8175
8219
  recordCameraMotionFastPathStatus(this, 'hit', 'css3d-camera-fast');
8176
- this.cssRenderer.renderCamera(this.camera);
8220
+ renderCss3dCameraForCameraNavigation(this, 'css3d-camera-fast');
8177
8221
  }
8178
8222
  _profileSection('css3dCamera');
8179
8223
  // ▲▲▲ [FIX] ▲▲▲
@@ -30,10 +30,10 @@
30
30
  }
31
31
  }
32
32
 
33
- function CSS3DRenderer(){
34
- var _width, _height; var _widthHalf, _heightHalf; var cache = { camera:{ fov:0, style:'' }, objects: new WeakMap() };
35
- var domElement = document.createElement('div'); domElement.style.overflow = 'hidden'; this.domElement = domElement;
36
- var cameraElement = document.createElement('div'); cameraElement.style.webkitTransformStyle = cameraElement.style.transformStyle = 'preserve-3d'; cameraElement.style.pointerEvents = 'none'; domElement.appendChild(cameraElement);
33
+ function CSS3DRenderer(){
34
+ var _width, _height; var _widthHalf, _heightHalf; var cache = { camera:{ fov:0, style:'' }, objects: new WeakMap() };
35
+ var domElement = document.createElement('div'); domElement.style.overflow = 'hidden'; this.domElement = domElement;
36
+ var cameraElement = document.createElement('div'); cameraElement.style.webkitTransformStyle = cameraElement.style.transformStyle = 'preserve-3d'; cameraElement.style.pointerEvents = 'none'; cameraElement.style.webkitTransformOrigin = cameraElement.style.transformOrigin = '0 0'; domElement.appendChild(cameraElement);
37
37
 
38
38
  this.getSize = function(){ return { width:_width, height:_height }; };
39
39
  this.getCameraElement = function(){ return cameraElement; };
@@ -42,9 +42,41 @@
42
42
  function getObjectCSSMatrix(matrix){ var e=matrix.elements; var m='matrix3d('+epsilon(e[0])+','+epsilon(e[1])+','+epsilon(e[2])+','+epsilon(e[3])+','+epsilon(-e[4])+','+epsilon(-e[5])+','+epsilon(-e[6])+','+epsilon(-e[7])+','+epsilon(e[8])+','+epsilon(e[9])+','+epsilon(e[10])+','+epsilon(e[11])+','+epsilon(e[12])+','+epsilon(e[13])+','+epsilon(e[14])+','+epsilon(e[15])+')'; return m; }
43
43
  function renderObject(object, scene, camera, cameraCSSMatrix){ if (object.isCSS3DObject){ var style=getObjectCSSMatrix(object.matrixWorld); var display=object.visible ? '' : 'none'; var element=object.element; var cached=cache.objects.get(object); if (cached===undefined || cached.style!==style){ element.style.webkitTransform=element.style.transform=style; } if (cached===undefined || cached.display!==display){ element.style.display=display; } if (cached===undefined || cached.style!==style || cached.display!==display){ cache.objects.set(object, { style, display }); } if (element.parentNode !== cameraElement){ cameraElement.appendChild(element); } } for (var i=0,l=object.children.length;i<l;i++){ renderObject(object.children[i], scene, camera, cameraCSSMatrix); } }
44
44
  function renderCameraOnly(renderer, camera){ var fov=camera.projectionMatrix.elements[5]*_heightHalf; if (cache.camera.fov!==fov){ renderer.domElement.style.webkitPerspective=renderer.domElement.style.perspective=fov+'px'; cache.camera.fov=fov; } if (camera.parent===null && camera.matrixWorldNeedsUpdate===true) camera.updateMatrixWorld(); var cameraCSSMatrix='translateZ('+fov+'px)'+getCameraCSSMatrix(camera.matrixWorldInverse); var style=cameraCSSMatrix+'translate('+_widthHalf+'px,'+_heightHalf+'px)'; if (cache.camera.style!==style){ cameraElement.style.webkitTransform=cameraElement.style.transform=style; cache.camera.style=style; } return cameraCSSMatrix; }
45
+ function renderFlatCameraOnly(renderer, camera, options){
46
+ if (!camera || !_width || !_height || !camera.isPerspectiveCamera) return false;
47
+ var position = camera.position || {};
48
+ var rotation = camera.rotation || {};
49
+ var cameraZ = Math.max(1, Number(position.z || 1));
50
+ var cameraX = Number(position.x || 0);
51
+ var cameraY = Number(position.y || 0);
52
+ var fov = Number(camera.fov || 45);
53
+ if (!Number.isFinite(cameraX) || !Number.isFinite(cameraY) || !Number.isFinite(cameraZ) || !Number.isFinite(fov)) return false;
54
+ if (Math.abs(Number(rotation.x || 0)) > 1e-5 || Math.abs(Number(rotation.y || 0)) > 1e-5 || Math.abs(Number(rotation.z || 0)) > 1e-5) return false;
55
+ var vfov = fov * Math.PI / 180;
56
+ var viewHeight = 2 * Math.tan(vfov / 2) * cameraZ;
57
+ var scale = _height / Math.max(1, viewHeight);
58
+ var translateX = _widthHalf - cameraX * scale;
59
+ var translateY = _heightHalf + cameraY * scale;
60
+ var translateBucket = Math.max(0.001, Number(options && options.translateBucketPx || 0.25));
61
+ var scaleBucket = Math.max(0.000001, Number(options && options.scaleBucket || 0.0005));
62
+ var tx = Math.round(translateX / translateBucket) * translateBucket;
63
+ var ty = Math.round(translateY / translateBucket) * translateBucket;
64
+ var s = Math.round(scale / scaleBucket) * scaleBucket;
65
+ var style = 'flat|'+Math.round(_width)+'|'+Math.round(_height)+'|'+Math.round(tx / translateBucket)+'|'+Math.round(ty / translateBucket)+'|'+Math.round(s / scaleBucket);
66
+ if (cache.camera.fov !== 0){
67
+ renderer.domElement.style.webkitPerspective = renderer.domElement.style.perspective = '';
68
+ cache.camera.fov = 0;
69
+ }
70
+ if (cache.camera.style !== style){
71
+ cameraElement.style.webkitTransform = cameraElement.style.transform = 'translate3d('+tx.toFixed(3)+'px,'+ty.toFixed(3)+'px,0) scale('+s.toFixed(6)+','+(-s).toFixed(6)+')';
72
+ cache.camera.style = style;
73
+ }
74
+ return true;
75
+ }
45
76
  this.renderCamera = function(camera){ renderCameraOnly(this, camera); };
77
+ this.renderFlatCamera = function(camera, options){ return renderFlatCameraOnly(this, camera, options); };
46
78
  this.render = function(scene, camera){ if (scene.autoUpdate===true) scene.updateMatrixWorld(); var cameraCSSMatrix=renderCameraOnly(this, camera); renderObject(scene, scene, camera, cameraCSSMatrix); };
47
- }
79
+ }
48
80
 
49
81
  window.CSS3DObject = CSS3DObject; window.CSS3DSprite = CSS3DSprite; window.CSS3DRenderer = CSS3DRenderer;
50
82
  })();
@@ -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-wheel-zoom-theme-freeze-v696" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-wheel-zoom-theme-freeze-v696" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-flat-css3d-zoom-v698" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-flat-css3d-zoom-v698" />
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-wheel-zoom-theme-freeze-v696';
582
+ const scriptVersion = '20260620-flat-css3d-zoom-v698';
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": "2DFGZ6E2",
2
+ "version": "33ownALV",
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-356I4fHy6ByNlYBqA8rC+TXcf6xUr1k8vVBhC775oqk=",
81
+ "hash": "sha256-jDu+wKwx2c3EsR3/k3iRzYlFnMJDioCOC1NpETVqRnA=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -182,7 +182,7 @@
182
182
  "url": "_content/MindExecution.Shared/js/plan-master.js"
183
183
  },
184
184
  {
185
- "hash": "sha256-qTb3vyeMwLW+3M8vggSRX6DynwZcCl5DTLM3yV0toDI=",
185
+ "hash": "sha256-zZ6nh8fh4HnO5rV//tfE4WB119Ez9Gjg26P7k0idcIE=",
186
186
  "url": "_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js"
187
187
  },
188
188
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-v4rz25fB9OXXL/cR+v854AmR0oLaCK9ysKZXr/pKvaY=",
837
+ "hash": "sha256-kRfC28AL9LLXfW4M5tmMqFgRUHQ2nVhJSKnxZnA8Hec=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 2DFGZ6E2 */
1
+ /* Manifest version: 33ownALV */
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