@mindexec/cli 0.2.305 → 0.2.306

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.305",
3
+ "version": "0.2.306",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -1417,6 +1417,26 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
1417
1417
  display: block !important;
1418
1418
  }
1419
1419
 
1420
+ .css3d-resolution-wrapper.lod-low .markdown-content,
1421
+ .css3d-resolution-wrapper.lod-low .map-node-memo__body,
1422
+ .css3d-resolution-wrapper.lod-low .map-node-memo__body-view,
1423
+ .css3d-resolution-wrapper.lod-low .map-node-memo__agent-plan-body,
1424
+ .css3d-resolution-wrapper.lod-low .map-node-memo__agent-console-body,
1425
+ .css3d-resolution-wrapper.lod-low .node-response,
1426
+ .css3d-resolution-wrapper.lod-low .note-content,
1427
+ .css3d-resolution-wrapper.lod-low .code-content,
1428
+ .css3d-resolution-wrapper.lod-low .text-content {
1429
+ display: none !important;
1430
+ }
1431
+
1432
+ .css3d-resolution-wrapper.lod-low .simple-content {
1433
+ display: block !important;
1434
+ }
1435
+
1436
+ .css3d-resolution-wrapper.lod-low {
1437
+ --mind-node-detail-opacity: 0.72;
1438
+ }
1439
+
1420
1440
  .mind-map-text-overlay-v2-layer {
1421
1441
  position: absolute;
1422
1442
  inset: 0;
@@ -3467,3 +3487,72 @@ html body .css3d-resolution-wrapper > .map-node-automation:focus-within:not(.map
3467
3487
  -webkit-filter: none !important;
3468
3488
  filter: none !important;
3469
3489
  }
3490
+
3491
+ /* Low-detail CSS3D proxy policy.
3492
+ NORMAL/MID overview cards are not a readable text surface. Keeping the full
3493
+ DOM body or a hard 1px edge at that scale turns content into aliasing noise,
3494
+ so non-selected low-detail text-like nodes collapse to a plain lightweight
3495
+ surface. NEAR and selected nodes remain high-detail. */
3496
+ html body .css3d-resolution-wrapper.lod-low.node-type-text > .map-node,
3497
+ html body .css3d-resolution-wrapper.lod-low.node-type-markdown > .map-node,
3498
+ html body .css3d-resolution-wrapper.lod-low.node-type-note > .map-node-note,
3499
+ html body .css3d-resolution-wrapper.lod-low.node-type-code > .map-node-code,
3500
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo > .map-node-memo:not(.map-node-template-card):not(.map-node-remote-fleet),
3501
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent:not(.map-node-template-card):not(.map-node-remote-fleet),
3502
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation:not(.map-node-template-card):not(.map-node-remote-fleet) {
3503
+ background: rgba(255, 255, 255, 0.92) !important;
3504
+ border: 0 !important;
3505
+ outline: 0 !important;
3506
+ -webkit-box-shadow: none !important;
3507
+ box-shadow: none !important;
3508
+ -webkit-filter: none !important;
3509
+ filter: none !important;
3510
+ }
3511
+
3512
+ html body .css3d-resolution-wrapper.lod-low.node-type-text .node-prompt-row,
3513
+ html body .css3d-resolution-wrapper.lod-low.node-type-markdown .node-prompt-row,
3514
+ html body .css3d-resolution-wrapper.lod-low.node-type-note .node-prompt-row,
3515
+ html body .css3d-resolution-wrapper.lod-low.node-type-code .node-prompt-row,
3516
+ html body .css3d-resolution-wrapper.lod-low.node-type-text .node-prompt,
3517
+ html body .css3d-resolution-wrapper.lod-low.node-type-markdown .node-prompt,
3518
+ html body .css3d-resolution-wrapper.lod-low.node-type-note .node-prompt,
3519
+ html body .css3d-resolution-wrapper.lod-low.node-type-code .node-prompt,
3520
+ html body .css3d-resolution-wrapper.lod-low.node-type-text .ai-loading-row,
3521
+ html body .css3d-resolution-wrapper.lod-low.node-type-markdown .ai-loading-row,
3522
+ html body .css3d-resolution-wrapper.lod-low.node-type-note .ai-loading-row,
3523
+ html body .css3d-resolution-wrapper.lod-low.node-type-code .ai-loading-row,
3524
+ html body .css3d-resolution-wrapper.lod-low.node-type-text hr,
3525
+ html body .css3d-resolution-wrapper.lod-low.node-type-markdown hr,
3526
+ html body .css3d-resolution-wrapper.lod-low.node-type-note hr,
3527
+ html body .css3d-resolution-wrapper.lod-low.node-type-code hr,
3528
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__header,
3529
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__body,
3530
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__body-view,
3531
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__agent-actions,
3532
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__agent-plan-panel,
3533
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__agent-console-panel,
3534
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__agent-results,
3535
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__automation-pins,
3536
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__automation-pin,
3537
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent .map-node-memo__header,
3538
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation .map-node-memo__header,
3539
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent .map-node-memo__automation-pins,
3540
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent .map-node-memo__automation-pin,
3541
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation .map-node-memo__automation-pins,
3542
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation .map-node-memo__automation-pin,
3543
+ html body .css3d-resolution-wrapper.lod-low .css3d-resize-hit-layer {
3544
+ display: none !important;
3545
+ }
3546
+
3547
+ html body .css3d-resolution-wrapper.lod-low.node-type-text .node-content-wrapper,
3548
+ html body .css3d-resolution-wrapper.lod-low.node-type-markdown .node-content-wrapper,
3549
+ html body .css3d-resolution-wrapper.lod-low.node-type-note .node-content-wrapper,
3550
+ html body .css3d-resolution-wrapper.lod-low.node-type-code .node-content-wrapper,
3551
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__shell,
3552
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent .map-node-memo__shell,
3553
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation .map-node-memo__shell {
3554
+ background: transparent !important;
3555
+ padding: 0 !important;
3556
+ border: 0 !important;
3557
+ overflow: hidden !important;
3558
+ }
@@ -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-native-text-css3d-v768';
8
+ const MINDMAP_CORE_BUILD_ID = '20260621-low-detail-proxy-css3d-v776';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -124,7 +124,9 @@
124
124
  'note',
125
125
  'memo',
126
126
  'markdown',
127
- 'code'
127
+ 'code',
128
+ 'image',
129
+ 'embed'
128
130
  ]);
129
131
  const CAMERA_STATIONARY_INTERACTION_FRAME_DELAY_MS = 48;
130
132
  const CAMERA_ZOOM_END_DELAY_MS = 150;
@@ -695,7 +697,8 @@
695
697
  mode: 'flat-settled',
696
698
  reason,
697
699
  visibleCount: flatScene.visibleCount,
698
- unsafeCount: flatScene.unsafeCount
700
+ unsafeCount: flatScene.unsafeCount,
701
+ visibleSource: flatScene.usedVisibleSet === true ? 'visible-set' : 'fallback-scan'
699
702
  };
700
703
  return true;
701
704
  }
@@ -711,7 +714,8 @@
711
714
  reason,
712
715
  flatSkipReason: flatScene.reason,
713
716
  visibleCount: flatScene.visibleCount,
714
- unsafeCount: flatScene.unsafeCount
717
+ unsafeCount: flatScene.unsafeCount,
718
+ visibleSource: flatScene.usedVisibleSet === true ? 'visible-set' : 'fallback-scan'
715
719
  };
716
720
  return true;
717
721
  }
@@ -851,7 +855,7 @@
851
855
  Math.abs(Number(rotation.z || 0)) <= 1e-5;
852
856
  }
853
857
 
854
- function isCss3dEntryVisibleForFlatScene(entry) {
858
+ function isCss3dEntryRenderableForFlatScene(entry) {
855
859
  const cssObject = entry?.cssObject || null;
856
860
  const element = cssObject?.element || null;
857
861
  if (!cssObject || !element) {
@@ -862,16 +866,8 @@
862
866
  return false;
863
867
  }
864
868
 
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;
869
+ return element.style.display !== 'none' &&
870
+ element.style.visibility !== 'hidden';
875
871
  }
876
872
 
877
873
  function isCss3dEntryUnsafeForSettledFlatScene(entry) {
@@ -881,9 +877,7 @@
881
877
  return true;
882
878
  }
883
879
 
884
- if (type === 'image' ||
885
- type === 'video' ||
886
- type === 'embed' ||
880
+ if (type === 'video' ||
887
881
  type === 'csv-table' ||
888
882
  type === 'templatelauncher') {
889
883
  return true;
@@ -895,19 +889,62 @@
895
889
  }
896
890
 
897
891
  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 ||
892
+ if (classList?.contains?.('node-type-video') === true ||
901
893
  classList?.contains?.('node-type-csv-table') === true ||
902
894
  classList?.contains?.('node-type-templatelauncher') === true) {
903
895
  return true;
904
896
  }
905
897
 
906
898
  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"]'
899
+ 'iframe, video, canvas, .map-node-template-card, .map-node-remote-fleet, .csv-table-scroll, [data-remote-fleet-resize-handle="true"]'
908
900
  );
909
901
  }
910
902
 
903
+ function collectVisibleCss3dEntriesForSettledFlatScene(module) {
904
+ const nodeObjectsById = module?.nodeObjectsById || null;
905
+ if (!(nodeObjectsById instanceof Map)) {
906
+ return { entries: [], usedVisibleSet: false };
907
+ }
908
+
909
+ const visibleIds = module._visibleIds instanceof Set && module._visibleIds.size > 0
910
+ ? module._visibleIds
911
+ : (module._prevVisibleIds instanceof Set && module._prevVisibleIds.size > 0
912
+ ? module._prevVisibleIds
913
+ : null);
914
+ if (visibleIds) {
915
+ const entries = [];
916
+ visibleIds.forEach(nodeId => {
917
+ const entry = nodeObjectsById.get(nodeId);
918
+ if (isCss3dEntryRenderableForFlatScene(entry) === true) {
919
+ entries.push(entry);
920
+ }
921
+ });
922
+ return { entries, usedVisibleSet: true };
923
+ }
924
+
925
+ const entries = [];
926
+ nodeObjectsById.forEach(entry => {
927
+ if (isCss3dEntryRenderableForFlatScene(entry) === true) {
928
+ entries.push(entry);
929
+ }
930
+ });
931
+ return { entries, usedVisibleSet: false };
932
+ }
933
+
934
+ function syncVisibleCss3dDetailLevelForFlatScene(module, entries) {
935
+ const lodRenderer = module?.lodRenderer || null;
936
+ if (!lodRenderer ||
937
+ typeof lodRenderer._setCss3dLodClass !== 'function' ||
938
+ typeof lodRenderer._shouldUseHighCss3dDetail !== 'function' ||
939
+ !Array.isArray(entries)) {
940
+ return;
941
+ }
942
+
943
+ for (const entry of entries) {
944
+ lodRenderer._setCss3dLodClass(entry, lodRenderer._shouldUseHighCss3dDetail(entry, module));
945
+ }
946
+ }
947
+
911
948
  function canUseSettledTextFlatCss3dSceneRender(module, scene, camera, renderDebugFlags = null) {
912
949
  const renderer = module?.cssRenderer || null;
913
950
  if (CSS3D_SETTLED_TEXT_FLAT_RENDER_ENABLED !== true ||
@@ -923,34 +960,27 @@
923
960
  return { ok: false, reason: 'automation-edge-active', visibleCount: 0, unsafeCount: 0 };
924
961
  }
925
962
 
926
- const entries = module.nodeObjectsById instanceof Map
927
- ? Array.from(module.nodeObjectsById.values())
928
- : [];
963
+ const visibleEntries = collectVisibleCss3dEntriesForSettledFlatScene(module);
964
+ const entries = visibleEntries.entries;
965
+ syncVisibleCss3dDetailLevelForFlatScene(module, entries);
929
966
  let visibleCount = 0;
930
967
  let unsafeCount = 0;
931
968
  for (const entry of entries) {
932
- if (isCss3dEntryVisibleForFlatScene(entry) !== true) {
933
- continue;
934
- }
935
-
936
969
  visibleCount++;
937
970
  if (isCss3dEntryUnsafeForSettledFlatScene(entry) === true) {
938
971
  unsafeCount++;
939
- if (unsafeCount > 0) {
940
- break;
941
- }
942
972
  }
943
973
  }
944
974
 
945
975
  if (visibleCount <= 0) {
946
- return { ok: false, reason: 'no-visible-css3d', visibleCount, unsafeCount };
976
+ return { ok: false, reason: 'no-visible-css3d', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
947
977
  }
948
978
 
949
979
  if (unsafeCount > 0) {
950
- return { ok: false, reason: 'unsafe-live-css3d-surface', visibleCount, unsafeCount };
980
+ return { ok: false, reason: 'unsafe-live-css3d-surface', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
951
981
  }
952
982
 
953
- return { ok: true, reason: 'text-only-css3d', visibleCount, unsafeCount };
983
+ return { ok: true, reason: 'text-only-css3d', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
954
984
  }
955
985
 
956
986
  function syncBusinessAutomationEdgesForCameraNavigation(module, transformOnly = false, allowDraftRender = false) {
@@ -577,6 +577,15 @@
577
577
  pointer-events: auto !important;
578
578
  }
579
579
 
580
+ .css3d-resolution-wrapper.lod-low.node-type-note .note-content,
581
+ .css3d-resolution-wrapper.lod-low.node-type-note .node-response.note-content,
582
+ .css3d-resolution-wrapper.lod-low.node-type-note .markdown-body,
583
+ .css3d-resolution-wrapper.lod-low.node-type-note .map-node-memo__automation-pins,
584
+ .css3d-resolution-wrapper.lod-low.node-type-note .map-node-memo__automation-pin {
585
+ display: none !important;
586
+ pointer-events: none !important;
587
+ }
588
+
580
589
  .note-textarea::-webkit-scrollbar,
581
590
  .note-content::-webkit-scrollbar,
582
591
  .markdown-body::-webkit-scrollbar,
@@ -51,7 +51,7 @@
51
51
  // ▲▲▲ [Usage] ▲▲▲
52
52
 
53
53
  // Procedural line rendering settings
54
- const LOD_RENDERER_BUILD_ID = '20260621-native-text-css3d-v768';
54
+ const LOD_RENDERER_BUILD_ID = '20260621-low-detail-proxy-css3d-v776';
55
55
  const DirtyKind = Object.freeze({
56
56
  ResidentFullRebuild: 'resident-full-rebuild',
57
57
  ResidentPatch: 'resident-patch',
@@ -4478,6 +4478,22 @@
4478
4478
  this._setNodeDetailLevel(entry, isHigh ? 'HIGH' : 'LOW');
4479
4479
  }
4480
4480
 
4481
+ _shouldUseHighCss3dDetail(entry, module) {
4482
+ const cameraZ = Number(module?.camera?.position?.z || 0);
4483
+ const lodBand = this._currentLodBand || getLodBandForCameraZ(cameraZ);
4484
+ if (lodBand === 'NEAR') {
4485
+ return true;
4486
+ }
4487
+
4488
+ const nodeId = String(entry?.model?.id || entry?.model?.Id || entry?.glObject?.userData?.nodeId || '').trim();
4489
+ const selectedNodeId = String(module?.selectedNodeIdJs || module?.selectedNodeId || '').trim();
4490
+ if (nodeId && selectedNodeId && nodeId === selectedNodeId) {
4491
+ return true;
4492
+ }
4493
+
4494
+ return false;
4495
+ }
4496
+
4481
4497
  _shouldKeepMountedEmbedResident(entry) {
4482
4498
  return getNodeContentType(entry?.model) === 'embed' &&
4483
4499
  window.MindMapCss3DManager?.hasMountedEmbedIframe?.(entry.cssObject) === true;
@@ -4759,7 +4775,7 @@
4759
4775
  }
4760
4776
  // ▲▲▲ [FIX] ▲▲▲
4761
4777
 
4762
- this._setCss3dLodClass(entry, true);
4778
+ this._setCss3dLodClass(entry, this._shouldUseHighCss3dDetail(entry, module));
4763
4779
 
4764
4780
  // ▼▼▼ [CRITICAL] Sync content BEFORE making CSS visible ▼▼▼
4765
4781
  // Prevents one-frame display of stale/blurred text while dirty DOM is being updated.
@@ -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=20260621-native-text-css3d-v768" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-native-text-css3d-v768" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260621-low-detail-proxy-css3d-v776" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-low-detail-proxy-css3d-v776" />
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 = '20260621-native-text-css3d-v768';
582
+ const scriptVersion = '20260621-low-detail-proxy-css3d-v776';
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": "MbOfumRW",
2
+ "version": "MbpJnc8v",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -42,7 +42,7 @@
42
42
  "url": "_content/MindExecution.Shared/css/app.css"
43
43
  },
44
44
  {
45
- "hash": "sha256-7nQpXb37sKR3RZmQKw2aOgyHiJhZIeD0ZjND2r6kPQA=",
45
+ "hash": "sha256-LJ0d20aCwq93DVCUqLyvJNX+mNcrsdfFaCVIH9yV2fI=",
46
46
  "url": "_content/MindExecution.Shared/css/mind-map-overrides.css"
47
47
  },
48
48
  {
@@ -78,7 +78,7 @@
78
78
  "url": "_content/MindExecution.Shared/js/marked.min.js"
79
79
  },
80
80
  {
81
- "hash": "sha256-MQlbxaL9dPkFLXMKym66rO86KqrhAENJ2as1RigkaAg=",
81
+ "hash": "sha256-mpLsxGYtGGy/YqbZwr5Ex7q31qt7q9BayMYC6nRCXzg=",
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-47AXeYQsA/oib+SKpGtdZvNe46zeqUJIVjSSCWQh+R4=",
89
+ "hash": "sha256-Fqn/yDEDcOO23DxXXIBdQgS4u6ukCYTkfNfn8xYMAwM=",
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-jZXZkbCTSbx0/SeGrY8w8ftkqVJyxsoIVqPQY5VlxYI=",
117
+ "hash": "sha256-inS/Wi5+LJCbvq9pUqv0SL85qgeXAK3mKPwOdYR5zXw=",
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-k7kHDdZrrGs696vtUiMDao5o91j7fMxKEO5ZbrR+vxM=",
837
+ "hash": "sha256-Sp1f8uVvLis0unU3xP8nl5340QG8tNoGJcsSIEQZfsU=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: MbOfumRW */
1
+ /* Manifest version: MbpJnc8v */
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