@mindexec/cli 0.2.305 → 0.2.307

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.307",
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;
@@ -3387,13 +3407,13 @@ html body .css3d-resolution-wrapper.node-type-embed .map-node.selected {
3387
3407
  outline-offset: 0 !important;
3388
3408
  }
3389
3409
 
3390
- /* Text nodes need a visible hard edge now that decorative glow/shadow is gone.
3410
+ /* Text nodes keep a visible but alpha-soft edge now that decorative glow/shadow is gone.
3391
3411
  Keep this scoped away from template, MDM, media, CSV, and remote-control cards. */
3392
3412
  html body .css3d-resolution-wrapper > .map-node-bubble,
3393
3413
  html body .css3d-resolution-wrapper > .map-node-note,
3394
3414
  html body .css3d-resolution-wrapper > .map-node-code,
3395
3415
  html body .css3d-resolution-wrapper > .map-node-memo:not(.map-node-agent):not(.map-node-automation):not(.map-node-template-card):not(.map-node-remote-fleet) {
3396
- border: 1px solid rgba(17, 24, 39, 0.88) !important;
3416
+ border: 1px solid rgba(17, 24, 39, 0.42) !important;
3397
3417
  -webkit-box-shadow: none !important;
3398
3418
  box-shadow: none !important;
3399
3419
  -webkit-filter: none !important;
@@ -3434,7 +3454,7 @@ html body .css3d-resolution-wrapper > .map-node-automation:focus-within:not(.map
3434
3454
  }
3435
3455
 
3436
3456
  /* Final node edge policy:
3437
- - unselected text-like surfaces use a hard dark edge because glow is removed
3457
+ - unselected text-like surfaces use a soft dark edge because glow is removed
3438
3458
  - selected nodes, including AI task nodes, use the same blue edge as notes */
3439
3459
  html body .css3d-resolution-wrapper.node-type-text > .map-node,
3440
3460
  html body .css3d-resolution-wrapper.node-type-markdown > .map-node,
@@ -3444,7 +3464,7 @@ html body .css3d-resolution-wrapper > .map-node-agent:not(.map-node-template-car
3444
3464
  html body .css3d-resolution-wrapper > .map-node-automation:not(.map-node-template-card):not(.map-node-remote-fleet),
3445
3465
  html body .mind-map-text-overlay-v2-shell.type-text,
3446
3466
  html body .mind-map-text-overlay-v2-shell.type-markdown {
3447
- border: 1px solid rgba(17, 24, 39, 0.88) !important;
3467
+ border: 1px solid rgba(17, 24, 39, 0.42) !important;
3448
3468
  -webkit-box-shadow: none !important;
3449
3469
  box-shadow: none !important;
3450
3470
  -webkit-filter: none !important;
@@ -3467,3 +3487,96 @@ 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-memo__automation-pins,
3538
+ html body .css3d-resolution-wrapper.lod-low .map-node-memo__automation-pin,
3539
+ html body .css3d-resolution-wrapper.lod-low .map-node-memo__automation-pin-dot,
3540
+ html body .css3d-resolution-wrapper.lod-low .map-node-memo__automation-pin-label,
3541
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent .map-node-memo__header,
3542
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation .map-node-memo__header,
3543
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent .map-node-memo__automation-pins,
3544
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent .map-node-memo__automation-pin,
3545
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation .map-node-memo__automation-pins,
3546
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation .map-node-memo__automation-pin,
3547
+ html body .css3d-resolution-wrapper.lod-low .css3d-resize-hit-layer {
3548
+ display: none !important;
3549
+ }
3550
+
3551
+ html body .css3d-resolution-wrapper.lod-low.node-type-text .node-content-wrapper,
3552
+ html body .css3d-resolution-wrapper.lod-low.node-type-markdown .node-content-wrapper,
3553
+ html body .css3d-resolution-wrapper.lod-low.node-type-note .node-content-wrapper,
3554
+ html body .css3d-resolution-wrapper.lod-low.node-type-code .node-content-wrapper,
3555
+ html body .css3d-resolution-wrapper.lod-low.node-type-memo .map-node-memo__shell,
3556
+ html body .css3d-resolution-wrapper.lod-low > .map-node-agent .map-node-memo__shell,
3557
+ html body .css3d-resolution-wrapper.lod-low > .map-node-automation .map-node-memo__shell {
3558
+ background: transparent !important;
3559
+ padding: 0 !important;
3560
+ border: 0 !important;
3561
+ overflow: hidden !important;
3562
+ }
3563
+
3564
+ html body .css3d-resolution-wrapper.lod-low.node-type-video > .map-node {
3565
+ background: rgba(255, 255, 255, 0.9) !important;
3566
+ border: 0 !important;
3567
+ -webkit-box-shadow: none !important;
3568
+ box-shadow: none !important;
3569
+ outline: 0 !important;
3570
+ overflow: hidden !important;
3571
+ }
3572
+
3573
+ html body .css3d-resolution-wrapper.lod-low.node-type-video .node-response,
3574
+ html body .css3d-resolution-wrapper.lod-low.node-type-video .ai-loading-row,
3575
+ html body .css3d-resolution-wrapper.lod-low.node-type-video video,
3576
+ html body .css3d-resolution-wrapper.lod-low.node-type-video canvas.mind-map-video-proxy,
3577
+ html body .css3d-resolution-wrapper.lod-low.node-type-video .video-content > video,
3578
+ html body .css3d-resolution-wrapper.lod-low.node-type-video .video-content > canvas.mind-map-video-proxy {
3579
+ display: none !important;
3580
+ opacity: 0 !important;
3581
+ pointer-events: none !important;
3582
+ }
@@ -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-soft-fullres-edge-v780';
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,52 +866,94 @@
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) {
878
874
  const model = entry?.model || {};
879
875
  const type = String(model.contentType ?? model.ContentType ?? '').trim().toLowerCase();
880
- if (!CSS3D_SETTLED_TEXT_FLAT_SAFE_TYPES.has(type)) {
876
+ const element = entry?.cssObject?.element || null;
877
+ const classList = element?.classList || null;
878
+ const isLowDetailVideoProxy =
879
+ type === 'video' &&
880
+ classList?.contains?.('node-type-video') === true &&
881
+ classList?.contains?.('lod-low') === true;
882
+
883
+ if (!CSS3D_SETTLED_TEXT_FLAT_SAFE_TYPES.has(type) && isLowDetailVideoProxy !== true) {
881
884
  return true;
882
885
  }
883
886
 
884
- if (type === 'image' ||
885
- type === 'video' ||
886
- type === 'embed' ||
887
+ if ((type === 'video' && isLowDetailVideoProxy !== true) ||
887
888
  type === 'csv-table' ||
888
889
  type === 'templatelauncher') {
889
890
  return true;
890
891
  }
891
892
 
892
- const element = entry?.cssObject?.element || null;
893
893
  if (!element) {
894
894
  return true;
895
895
  }
896
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 ||
897
+ if ((classList?.contains?.('node-type-video') === true && isLowDetailVideoProxy !== true) ||
901
898
  classList?.contains?.('node-type-csv-table') === true ||
902
899
  classList?.contains?.('node-type-templatelauncher') === true) {
903
900
  return true;
904
901
  }
905
902
 
903
+ if (isLowDetailVideoProxy === true) {
904
+ return false;
905
+ }
906
+
906
907
  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
+ 'iframe, video, canvas, .map-node-template-card, .map-node-remote-fleet, .csv-table-scroll, [data-remote-fleet-resize-handle="true"]'
908
909
  );
909
910
  }
910
911
 
912
+ function collectVisibleCss3dEntriesForSettledFlatScene(module) {
913
+ const nodeObjectsById = module?.nodeObjectsById || null;
914
+ if (!(nodeObjectsById instanceof Map)) {
915
+ return { entries: [], usedVisibleSet: false };
916
+ }
917
+
918
+ const visibleIds = module._visibleIds instanceof Set && module._visibleIds.size > 0
919
+ ? module._visibleIds
920
+ : (module._prevVisibleIds instanceof Set && module._prevVisibleIds.size > 0
921
+ ? module._prevVisibleIds
922
+ : null);
923
+ if (visibleIds) {
924
+ const entries = [];
925
+ visibleIds.forEach(nodeId => {
926
+ const entry = nodeObjectsById.get(nodeId);
927
+ if (isCss3dEntryRenderableForFlatScene(entry) === true) {
928
+ entries.push(entry);
929
+ }
930
+ });
931
+ return { entries, usedVisibleSet: true };
932
+ }
933
+
934
+ const entries = [];
935
+ nodeObjectsById.forEach(entry => {
936
+ if (isCss3dEntryRenderableForFlatScene(entry) === true) {
937
+ entries.push(entry);
938
+ }
939
+ });
940
+ return { entries, usedVisibleSet: false };
941
+ }
942
+
943
+ function syncVisibleCss3dDetailLevelForFlatScene(module, entries) {
944
+ const lodRenderer = module?.lodRenderer || null;
945
+ if (!lodRenderer ||
946
+ typeof lodRenderer._setCss3dLodClass !== 'function' ||
947
+ typeof lodRenderer._shouldUseHighCss3dDetail !== 'function' ||
948
+ !Array.isArray(entries)) {
949
+ return;
950
+ }
951
+
952
+ for (const entry of entries) {
953
+ lodRenderer._setCss3dLodClass(entry, lodRenderer._shouldUseHighCss3dDetail(entry, module));
954
+ }
955
+ }
956
+
911
957
  function canUseSettledTextFlatCss3dSceneRender(module, scene, camera, renderDebugFlags = null) {
912
958
  const renderer = module?.cssRenderer || null;
913
959
  if (CSS3D_SETTLED_TEXT_FLAT_RENDER_ENABLED !== true ||
@@ -923,34 +969,27 @@
923
969
  return { ok: false, reason: 'automation-edge-active', visibleCount: 0, unsafeCount: 0 };
924
970
  }
925
971
 
926
- const entries = module.nodeObjectsById instanceof Map
927
- ? Array.from(module.nodeObjectsById.values())
928
- : [];
972
+ const visibleEntries = collectVisibleCss3dEntriesForSettledFlatScene(module);
973
+ const entries = visibleEntries.entries;
974
+ syncVisibleCss3dDetailLevelForFlatScene(module, entries);
929
975
  let visibleCount = 0;
930
976
  let unsafeCount = 0;
931
977
  for (const entry of entries) {
932
- if (isCss3dEntryVisibleForFlatScene(entry) !== true) {
933
- continue;
934
- }
935
-
936
978
  visibleCount++;
937
979
  if (isCss3dEntryUnsafeForSettledFlatScene(entry) === true) {
938
980
  unsafeCount++;
939
- if (unsafeCount > 0) {
940
- break;
941
- }
942
981
  }
943
982
  }
944
983
 
945
984
  if (visibleCount <= 0) {
946
- return { ok: false, reason: 'no-visible-css3d', visibleCount, unsafeCount };
985
+ return { ok: false, reason: 'no-visible-css3d', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
947
986
  }
948
987
 
949
988
  if (unsafeCount > 0) {
950
- return { ok: false, reason: 'unsafe-live-css3d-surface', visibleCount, unsafeCount };
989
+ return { ok: false, reason: 'unsafe-live-css3d-surface', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
951
990
  }
952
991
 
953
- return { ok: true, reason: 'text-only-css3d', visibleCount, unsafeCount };
992
+ return { ok: true, reason: 'text-only-css3d', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
954
993
  }
955
994
 
956
995
  function syncBusinessAutomationEdgesForCameraNavigation(module, transformOnly = false, allowDraftRender = false) {
@@ -9253,7 +9292,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
9253
9292
  const shouldUseAnimationCadenceForWebglFrame =
9254
9293
  isCameraNavigationOnlyInteractiveFrame === true
9255
9294
  ? false
9256
- : (shouldUseAnimation60Fps === true || shouldUseAnimationLowFpsFrame === true);
9295
+ : shouldUseAnimation60Fps === true;
9257
9296
  const shouldHoldWebglCanvasTransformDuringCameraNavigation = !!(
9258
9297
  isWebglRenderEnabled &&
9259
9298
  isCameraNavigationOnlyInteractiveFrame === true &&
@@ -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-soft-fullres-edge-v780';
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-soft-fullres-edge-v780" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-soft-fullres-edge-v780" />
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-soft-fullres-edge-v780';
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": "087bIbjC",
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-HlPWvXUm8UFkLAf1uuozOcAqpuOcRhX3a+SfAIkEwsA=",
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-HteTygKSo5gNms4y1Ut5uxyKTA++GF7xgkaoAzm/6OA=",
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-mL3Q1c1XFya6P4MFDYyZPNqKE74qwLxWkTZGbeij0rc=",
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-am6VNZK+U0a3vIEZvec0UOBP2dLEqtLhlankGTlaD88=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: MbOfumRW */
1
+ /* Manifest version: 087bIbjC */
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