@mindexec/cli 0.2.304 → 0.2.305

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.304",
3
+ "version": "0.2.305",
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 = '20260621-aliasing-layout-v766';
8
+ const MINDMAP_CORE_BUILD_ID = '20260621-native-text-css3d-v768';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -118,6 +118,14 @@
118
118
  const CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX = 0.001;
119
119
  const CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET = 0.000001;
120
120
  const CSS3D_FLAT_CAMERA_MOTION_ENABLED = true;
121
+ const CSS3D_SETTLED_TEXT_FLAT_RENDER_ENABLED = true;
122
+ const CSS3D_SETTLED_TEXT_FLAT_SAFE_TYPES = new Set([
123
+ 'text',
124
+ 'note',
125
+ 'memo',
126
+ 'markdown',
127
+ 'code'
128
+ ]);
121
129
  const CAMERA_STATIONARY_INTERACTION_FRAME_DELAY_MS = 48;
122
130
  const CAMERA_ZOOM_END_DELAY_MS = 150;
123
131
  const CAMERA_MOTION_GLOBAL_STYLE_CLASS_ENABLED = false;
@@ -673,11 +681,38 @@
673
681
  return false;
674
682
  }
675
683
 
684
+ const flatScene = canUseSettledTextFlatCss3dSceneRender(module, scene, camera, renderDebugFlags);
685
+ if (flatScene.ok === true && typeof renderer.renderFlat === 'function') {
686
+ syncCss3dViewportForSceneRender(module, renderer, camera);
687
+ const renderedFlat = renderer.renderFlat(scene, camera, {
688
+ translateBucketPx: CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX,
689
+ scaleBucket: CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET
690
+ }) === true;
691
+ if (renderedFlat === true) {
692
+ module._lastCss3dCameraMotionMode = 'flat-settled';
693
+ module._lastCss3dCameraMotionReason = reason;
694
+ module._lastCss3dSceneRenderInfo = {
695
+ mode: 'flat-settled',
696
+ reason,
697
+ visibleCount: flatScene.visibleCount,
698
+ unsafeCount: flatScene.unsafeCount
699
+ };
700
+ return true;
701
+ }
702
+ }
703
+
676
704
  if (typeof renderer.render === 'function') {
677
705
  syncCss3dViewportForSceneRender(module, renderer, camera);
678
706
  renderer.render(scene, camera);
679
707
  module._lastCss3dCameraMotionMode = 'matrix3d';
680
708
  module._lastCss3dCameraMotionReason = reason;
709
+ module._lastCss3dSceneRenderInfo = {
710
+ mode: 'matrix3d',
711
+ reason,
712
+ flatSkipReason: flatScene.reason,
713
+ visibleCount: flatScene.visibleCount,
714
+ unsafeCount: flatScene.unsafeCount
715
+ };
681
716
  return true;
682
717
  }
683
718
 
@@ -816,6 +851,108 @@
816
851
  Math.abs(Number(rotation.z || 0)) <= 1e-5;
817
852
  }
818
853
 
854
+ function isCss3dEntryVisibleForFlatScene(entry) {
855
+ const cssObject = entry?.cssObject || null;
856
+ const element = cssObject?.element || null;
857
+ if (!cssObject || !element) {
858
+ return false;
859
+ }
860
+
861
+ if (cssObject.visible !== true && entry?.currentType !== 'CSS') {
862
+ return false;
863
+ }
864
+
865
+ const style = typeof globalThis.getComputedStyle === 'function'
866
+ ? globalThis.getComputedStyle(element)
867
+ : null;
868
+ const rect = typeof element.getBoundingClientRect === 'function'
869
+ ? element.getBoundingClientRect()
870
+ : null;
871
+ return style?.display !== 'none' &&
872
+ style?.visibility !== 'hidden' &&
873
+ Number(rect?.width || 0) > 0 &&
874
+ Number(rect?.height || 0) > 0;
875
+ }
876
+
877
+ function isCss3dEntryUnsafeForSettledFlatScene(entry) {
878
+ const model = entry?.model || {};
879
+ const type = String(model.contentType ?? model.ContentType ?? '').trim().toLowerCase();
880
+ if (!CSS3D_SETTLED_TEXT_FLAT_SAFE_TYPES.has(type)) {
881
+ return true;
882
+ }
883
+
884
+ if (type === 'image' ||
885
+ type === 'video' ||
886
+ type === 'embed' ||
887
+ type === 'csv-table' ||
888
+ type === 'templatelauncher') {
889
+ return true;
890
+ }
891
+
892
+ const element = entry?.cssObject?.element || null;
893
+ if (!element) {
894
+ return true;
895
+ }
896
+
897
+ const classList = element.classList;
898
+ if (classList?.contains?.('node-type-image') === true ||
899
+ classList?.contains?.('node-type-video') === true ||
900
+ classList?.contains?.('node-type-embed') === true ||
901
+ classList?.contains?.('node-type-csv-table') === true ||
902
+ classList?.contains?.('node-type-templatelauncher') === true) {
903
+ return true;
904
+ }
905
+
906
+ return !!element.querySelector?.(
907
+ 'iframe, video, canvas.mind-map-video-proxy, .map-node-template-card, .map-node-remote-fleet, .csv-table-scroll, [data-remote-fleet-resize-handle="true"]'
908
+ );
909
+ }
910
+
911
+ function canUseSettledTextFlatCss3dSceneRender(module, scene, camera, renderDebugFlags = null) {
912
+ const renderer = module?.cssRenderer || null;
913
+ if (CSS3D_SETTLED_TEXT_FLAT_RENDER_ENABLED !== true ||
914
+ !module ||
915
+ !scene ||
916
+ !renderer ||
917
+ typeof renderer.renderFlat !== 'function' ||
918
+ canUseFlatCss3dCameraMotion(module, renderer, camera, renderDebugFlags) !== true) {
919
+ return { ok: false, reason: 'not-eligible', visibleCount: 0, unsafeCount: 0 };
920
+ }
921
+
922
+ if (hasBusinessAutomationDraftOrTransformMotionWork(module) === true) {
923
+ return { ok: false, reason: 'automation-edge-active', visibleCount: 0, unsafeCount: 0 };
924
+ }
925
+
926
+ const entries = module.nodeObjectsById instanceof Map
927
+ ? Array.from(module.nodeObjectsById.values())
928
+ : [];
929
+ let visibleCount = 0;
930
+ let unsafeCount = 0;
931
+ for (const entry of entries) {
932
+ if (isCss3dEntryVisibleForFlatScene(entry) !== true) {
933
+ continue;
934
+ }
935
+
936
+ visibleCount++;
937
+ if (isCss3dEntryUnsafeForSettledFlatScene(entry) === true) {
938
+ unsafeCount++;
939
+ if (unsafeCount > 0) {
940
+ break;
941
+ }
942
+ }
943
+ }
944
+
945
+ if (visibleCount <= 0) {
946
+ return { ok: false, reason: 'no-visible-css3d', visibleCount, unsafeCount };
947
+ }
948
+
949
+ if (unsafeCount > 0) {
950
+ return { ok: false, reason: 'unsafe-live-css3d-surface', visibleCount, unsafeCount };
951
+ }
952
+
953
+ return { ok: true, reason: 'text-only-css3d', visibleCount, unsafeCount };
954
+ }
955
+
819
956
  function syncBusinessAutomationEdgesForCameraNavigation(module, transformOnly = false, allowDraftRender = false) {
820
957
  transformOnly = transformOnly === true;
821
958
  allowDraftRender = allowDraftRender === true;
@@ -2480,6 +2617,9 @@
2480
2617
  overlayContentChanged: moduleInstance._overlayDebugContentChanged === true,
2481
2618
  overlayForceRefresh: moduleInstance._overlayDebugForceRefresh === true,
2482
2619
  cameraMotionFastPathStatus: moduleInstance._cameraMotionFastPathStatus || null,
2620
+ lastCss3dCameraMotionMode: String(moduleInstance._lastCss3dCameraMotionMode || ''),
2621
+ lastCss3dCameraMotionReason: String(moduleInstance._lastCss3dCameraMotionReason || ''),
2622
+ lastCss3dSceneRenderInfo: moduleInstance._lastCss3dSceneRenderInfo || null,
2483
2623
  metricsSnapshotMs: Number(metricsSnapshotMs.toFixed(2)),
2484
2624
  metricsSnapshotCached: false,
2485
2625
  metricsSnapshotAgeMs: 0,
@@ -15,7 +15,7 @@
15
15
  const CSS_IMAGE_PROMOTION_BUDGET_MS = 4;
16
16
  const CSS_IMAGE_BLOB_CACHE_LIMIT = 160;
17
17
  const CSS_IMAGE_DISPLAY_MAX_CONCURRENCY = 8;
18
- const CSS3D_TEXT_NODE_RESOLUTION_SCALE = 3.0;
18
+ const CSS3D_TEXT_NODE_RESOLUTION_SCALE = 1.0;
19
19
  const CSS3D_MEDIA_NODE_RESOLUTION_SCALE = 1.0;
20
20
  const LOOPBACK_ASSET_URL_REGEX = /^http:\/\/(?:127(?:\.\d{1,3}){3}|localhost|\[::1\])(?::\d+)?\/assets\//i;
21
21
  let _cssImagePreviewHoldUntil = 0;
@@ -51,7 +51,7 @@
51
51
  // ▲▲▲ [Usage] ▲▲▲
52
52
 
53
53
  // Procedural line rendering settings
54
- const LOD_RENDERER_BUILD_ID = '20260621-aliasing-layout-v766';
54
+ const LOD_RENDERER_BUILD_ID = '20260621-native-text-css3d-v768';
55
55
  const DirtyKind = Object.freeze({
56
56
  ResidentFullRebuild: 'resident-full-rebuild',
57
57
  ResidentPatch: 'resident-patch',
@@ -7,11 +7,11 @@
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=20260621-aliasing-layout-v766" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-aliasing-layout-v766" />
12
- <!-- ?占썩뼹??Font Awesome (local) ?占썩뼹??-->
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260621-native-text-css3d-v768" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-native-text-css3d-v768" />
12
+ <!-- ??좎뜦堉??Font Awesome (local) ??좎뜦堉??-->
13
13
  <link rel="stylesheet" href="_content/MindExecution.Shared/lib/font-awesome/css/all.min.css" />
14
- <!-- ?占썩뼯??-->
14
+ <!-- ??좎뜦堉??-->
15
15
  <style>
16
16
  #app {
17
17
  min-height: 100vh;
@@ -180,7 +180,7 @@
180
180
  function adjustTextareaHeight(element) {
181
181
  if (!element) return;
182
182
 
183
- // ?占썩뼹??[Change] Add jitter-prevention logic ?占썩뼹??
183
+ // ??좎뜦堉??[Change] Add jitter-prevention logic ??좎뜦堉??
184
184
  // Compare the previous text length. When content grows, skip the 'auto' reset.
185
185
  // Only reset to 'auto' when shrinking (during deletion).
186
186
  const currentLength = element.value.length;
@@ -191,7 +191,7 @@
191
191
  }
192
192
 
193
193
  element.dataset.prevLength = currentLength; // store current length
194
- // ?占썩뼯??[Change] ?占썩뼯??
194
+ // ??좎뜦堉??[Change] ??좎뜦堉??
195
195
 
196
196
  const computedStyles = window.getComputedStyle(element);
197
197
  const lineHeight = parseFloat(computedStyles.lineHeight || '24') || 24;
@@ -284,11 +284,11 @@
284
284
  // Prevent default page-level DnD behavior
285
285
  document.addEventListener('dragover', (e) => {
286
286
  e.preventDefault();
287
- // ?占썩뼹??[Change] Remove/avoid stopPropagation (do not disrupt event flow) ?占썩뼹??
287
+ // ??좎뜦堉??[Change] Remove/avoid stopPropagation (do not disrupt event flow) ??좎뜦堉??
288
288
  // e.stopPropagation();
289
- // ?占썩뼯??[Change] ?占썩뼯??
289
+ // ??좎뜦堉??[Change] ??좎뜦堉??
290
290
 
291
- // ?占썩뼹??[Change] Default is 'none', but only apply when not handled by children ?占썩뼹??
291
+ // ??좎뜦堉??[Change] Default is 'none', but only apply when not handled by children ??좎뜦堉??
292
292
  // (If MindMapDnD handles it, this code won't run or will be ignored)
293
293
  // e.dataTransfer.dropEffect = 'none';
294
294
  }, false);
@@ -428,7 +428,7 @@
428
428
  window.__matchesMarketingToolHost(host, location.host || '')
429
429
  );
430
430
  </script>
431
- <!-- ?占썩뼹??[Upgrade] Three.js r168 via ESM ?占썩뼹??-->
431
+ <!-- ??좎뜦堉??[Upgrade] Three.js r168 via ESM ??좎뜦堉??-->
432
432
  <script type="importmap">
433
433
  {
434
434
  "imports": {
@@ -579,7 +579,7 @@
579
579
  }
580
580
 
581
581
  const base = '_content/MindExecution.Shared/js/';
582
- const scriptVersion = '20260621-aliasing-layout-v766';
582
+ const scriptVersion = '20260621-native-text-css3d-v768';
583
583
  const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
584
584
  console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
585
585
  const criticalScripts = [
@@ -590,7 +590,7 @@
590
590
  'background-themes.js',
591
591
  'mind-map-logic-workers.js',
592
592
  // Troika removed
593
- 'texture-worker-manager.js', // ??Web Worker ?占쎌뒪占??占쎌꽦
593
+ 'texture-worker-manager.js', // ??Web Worker ??좎럩?ゅ뜝???좎럩苑?
594
594
  'mind-map-texture-factory.js',
595
595
  'mind-map-glow-shader.js', // ??SDF Glow (no textures, GPU only)
596
596
  'mind-map-css3d-manager.js',
@@ -603,7 +603,7 @@
603
603
  'mind-map-interactions.js',
604
604
  'mind-map-dnd.js',
605
605
  'mind-map-lod-renderer.js',
606
- 'mind-map-text-lod-system.js', // ??Text LOD ?占쎌뒪??(?占쎌쟻 ?占쎌뒪占??占쎌쭏)
606
+ 'mind-map-text-lod-system.js', // ??Text LOD ??좎럩???(??좎럩????좎럩?ゅ뜝???좎럩彛?
607
607
  'mind-map-core.js',
608
608
  'mindmap-toolbar.js',
609
609
  'token-manager.js',
@@ -722,7 +722,7 @@
722
722
  window.showBlazorBootError('The page could not finish loading. Reload and try again.');
723
723
  });
724
724
  </script>
725
- <!-- ?占썩뼯??[Upgrade] ?占썩뼯??-->
725
+ <!-- ??좎뜦堉??[Upgrade] ??좎뜦堉??-->
726
726
  </body>
727
727
 
728
728
  </html>
@@ -1,5 +1,5 @@
1
1
  self.assetsManifest = {
2
- "version": "N53YJ8Yh",
2
+ "version": "MbOfumRW",
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-SuW+Wqw+HzCW/GWoxGRLx+ExoVYPMbYvgFFi15o3syU=",
81
+ "hash": "sha256-MQlbxaL9dPkFLXMKym66rO86KqrhAENJ2as1RigkaAg=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -86,7 +86,7 @@
86
86
  "url": "_content/MindExecution.Shared/js/mind-map-core.js.backup"
87
87
  },
88
88
  {
89
- "hash": "sha256-cCb/rrdw5jFO6rSX9zc3RyarGgzXTMcyAzMkhhMTBMY=",
89
+ "hash": "sha256-47AXeYQsA/oib+SKpGtdZvNe46zeqUJIVjSSCWQh+R4=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -114,7 +114,7 @@
114
114
  "url": "_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js"
115
115
  },
116
116
  {
117
- "hash": "sha256-4b21K9ePzG8aImBHhM2EK22e94BYgAb9TQRn9tBGHdU=",
117
+ "hash": "sha256-jZXZkbCTSbx0/SeGrY8w8ftkqVJyxsoIVqPQY5VlxYI=",
118
118
  "url": "_content/MindExecution.Shared/js/mind-map-lod-renderer.js"
119
119
  },
120
120
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-xATXYssdORHOzOqG2u2kEJPorXqQG0S6JCp4UkWdOFM=",
837
+ "hash": "sha256-k7kHDdZrrGs696vtUiMDao5o91j7fMxKEO5ZbrR+vxM=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: N53YJ8Yh */
1
+ /* Manifest version: MbOfumRW */
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