@mindexec/cli 0.2.304 → 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 +1 -1
- package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +89 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +171 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +10 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +18 -2
- package/wwwroot/index.html +14 -14
- package/wwwroot/service-worker-assets.js +6 -6
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -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-
|
|
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',
|
|
@@ -118,6 +118,16 @@
|
|
|
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
|
+
'image',
|
|
129
|
+
'embed'
|
|
130
|
+
]);
|
|
121
131
|
const CAMERA_STATIONARY_INTERACTION_FRAME_DELAY_MS = 48;
|
|
122
132
|
const CAMERA_ZOOM_END_DELAY_MS = 150;
|
|
123
133
|
const CAMERA_MOTION_GLOBAL_STYLE_CLASS_ENABLED = false;
|
|
@@ -673,11 +683,40 @@
|
|
|
673
683
|
return false;
|
|
674
684
|
}
|
|
675
685
|
|
|
686
|
+
const flatScene = canUseSettledTextFlatCss3dSceneRender(module, scene, camera, renderDebugFlags);
|
|
687
|
+
if (flatScene.ok === true && typeof renderer.renderFlat === 'function') {
|
|
688
|
+
syncCss3dViewportForSceneRender(module, renderer, camera);
|
|
689
|
+
const renderedFlat = renderer.renderFlat(scene, camera, {
|
|
690
|
+
translateBucketPx: CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX,
|
|
691
|
+
scaleBucket: CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET
|
|
692
|
+
}) === true;
|
|
693
|
+
if (renderedFlat === true) {
|
|
694
|
+
module._lastCss3dCameraMotionMode = 'flat-settled';
|
|
695
|
+
module._lastCss3dCameraMotionReason = reason;
|
|
696
|
+
module._lastCss3dSceneRenderInfo = {
|
|
697
|
+
mode: 'flat-settled',
|
|
698
|
+
reason,
|
|
699
|
+
visibleCount: flatScene.visibleCount,
|
|
700
|
+
unsafeCount: flatScene.unsafeCount,
|
|
701
|
+
visibleSource: flatScene.usedVisibleSet === true ? 'visible-set' : 'fallback-scan'
|
|
702
|
+
};
|
|
703
|
+
return true;
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
|
|
676
707
|
if (typeof renderer.render === 'function') {
|
|
677
708
|
syncCss3dViewportForSceneRender(module, renderer, camera);
|
|
678
709
|
renderer.render(scene, camera);
|
|
679
710
|
module._lastCss3dCameraMotionMode = 'matrix3d';
|
|
680
711
|
module._lastCss3dCameraMotionReason = reason;
|
|
712
|
+
module._lastCss3dSceneRenderInfo = {
|
|
713
|
+
mode: 'matrix3d',
|
|
714
|
+
reason,
|
|
715
|
+
flatSkipReason: flatScene.reason,
|
|
716
|
+
visibleCount: flatScene.visibleCount,
|
|
717
|
+
unsafeCount: flatScene.unsafeCount,
|
|
718
|
+
visibleSource: flatScene.usedVisibleSet === true ? 'visible-set' : 'fallback-scan'
|
|
719
|
+
};
|
|
681
720
|
return true;
|
|
682
721
|
}
|
|
683
722
|
|
|
@@ -816,6 +855,134 @@
|
|
|
816
855
|
Math.abs(Number(rotation.z || 0)) <= 1e-5;
|
|
817
856
|
}
|
|
818
857
|
|
|
858
|
+
function isCss3dEntryRenderableForFlatScene(entry) {
|
|
859
|
+
const cssObject = entry?.cssObject || null;
|
|
860
|
+
const element = cssObject?.element || null;
|
|
861
|
+
if (!cssObject || !element) {
|
|
862
|
+
return false;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
if (cssObject.visible !== true && entry?.currentType !== 'CSS') {
|
|
866
|
+
return false;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
return element.style.display !== 'none' &&
|
|
870
|
+
element.style.visibility !== 'hidden';
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
function isCss3dEntryUnsafeForSettledFlatScene(entry) {
|
|
874
|
+
const model = entry?.model || {};
|
|
875
|
+
const type = String(model.contentType ?? model.ContentType ?? '').trim().toLowerCase();
|
|
876
|
+
if (!CSS3D_SETTLED_TEXT_FLAT_SAFE_TYPES.has(type)) {
|
|
877
|
+
return true;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
if (type === 'video' ||
|
|
881
|
+
type === 'csv-table' ||
|
|
882
|
+
type === 'templatelauncher') {
|
|
883
|
+
return true;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
const element = entry?.cssObject?.element || null;
|
|
887
|
+
if (!element) {
|
|
888
|
+
return true;
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
const classList = element.classList;
|
|
892
|
+
if (classList?.contains?.('node-type-video') === true ||
|
|
893
|
+
classList?.contains?.('node-type-csv-table') === true ||
|
|
894
|
+
classList?.contains?.('node-type-templatelauncher') === true) {
|
|
895
|
+
return true;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
return !!element.querySelector?.(
|
|
899
|
+
'iframe, video, canvas, .map-node-template-card, .map-node-remote-fleet, .csv-table-scroll, [data-remote-fleet-resize-handle="true"]'
|
|
900
|
+
);
|
|
901
|
+
}
|
|
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
|
+
|
|
948
|
+
function canUseSettledTextFlatCss3dSceneRender(module, scene, camera, renderDebugFlags = null) {
|
|
949
|
+
const renderer = module?.cssRenderer || null;
|
|
950
|
+
if (CSS3D_SETTLED_TEXT_FLAT_RENDER_ENABLED !== true ||
|
|
951
|
+
!module ||
|
|
952
|
+
!scene ||
|
|
953
|
+
!renderer ||
|
|
954
|
+
typeof renderer.renderFlat !== 'function' ||
|
|
955
|
+
canUseFlatCss3dCameraMotion(module, renderer, camera, renderDebugFlags) !== true) {
|
|
956
|
+
return { ok: false, reason: 'not-eligible', visibleCount: 0, unsafeCount: 0 };
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
if (hasBusinessAutomationDraftOrTransformMotionWork(module) === true) {
|
|
960
|
+
return { ok: false, reason: 'automation-edge-active', visibleCount: 0, unsafeCount: 0 };
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
const visibleEntries = collectVisibleCss3dEntriesForSettledFlatScene(module);
|
|
964
|
+
const entries = visibleEntries.entries;
|
|
965
|
+
syncVisibleCss3dDetailLevelForFlatScene(module, entries);
|
|
966
|
+
let visibleCount = 0;
|
|
967
|
+
let unsafeCount = 0;
|
|
968
|
+
for (const entry of entries) {
|
|
969
|
+
visibleCount++;
|
|
970
|
+
if (isCss3dEntryUnsafeForSettledFlatScene(entry) === true) {
|
|
971
|
+
unsafeCount++;
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
if (visibleCount <= 0) {
|
|
976
|
+
return { ok: false, reason: 'no-visible-css3d', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
if (unsafeCount > 0) {
|
|
980
|
+
return { ok: false, reason: 'unsafe-live-css3d-surface', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
return { ok: true, reason: 'text-only-css3d', visibleCount, unsafeCount, usedVisibleSet: visibleEntries.usedVisibleSet };
|
|
984
|
+
}
|
|
985
|
+
|
|
819
986
|
function syncBusinessAutomationEdgesForCameraNavigation(module, transformOnly = false, allowDraftRender = false) {
|
|
820
987
|
transformOnly = transformOnly === true;
|
|
821
988
|
allowDraftRender = allowDraftRender === true;
|
|
@@ -2480,6 +2647,9 @@
|
|
|
2480
2647
|
overlayContentChanged: moduleInstance._overlayDebugContentChanged === true,
|
|
2481
2648
|
overlayForceRefresh: moduleInstance._overlayDebugForceRefresh === true,
|
|
2482
2649
|
cameraMotionFastPathStatus: moduleInstance._cameraMotionFastPathStatus || null,
|
|
2650
|
+
lastCss3dCameraMotionMode: String(moduleInstance._lastCss3dCameraMotionMode || ''),
|
|
2651
|
+
lastCss3dCameraMotionReason: String(moduleInstance._lastCss3dCameraMotionReason || ''),
|
|
2652
|
+
lastCss3dSceneRenderInfo: moduleInstance._lastCss3dSceneRenderInfo || null,
|
|
2483
2653
|
metricsSnapshotMs: Number(metricsSnapshotMs.toFixed(2)),
|
|
2484
2654
|
metricsSnapshotCached: false,
|
|
2485
2655
|
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 =
|
|
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;
|
|
@@ -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
|
-
|
|
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,
|
|
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.
|
package/wwwroot/index.html
CHANGED
|
@@ -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-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-
|
|
12
|
-
<!--
|
|
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
|
+
<!-- ??좎뜦堉??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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
287
|
+
// ??좎뜦堉??[Change] Remove/avoid stopPropagation (do not disrupt event flow) ??좎뜦堉??
|
|
288
288
|
// e.stopPropagation();
|
|
289
|
-
//
|
|
289
|
+
// ??좎뜦堉??[Change] ??좎뜦堉??
|
|
290
290
|
|
|
291
|
-
//
|
|
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
|
-
<!--
|
|
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-
|
|
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 = [
|
|
@@ -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
|
-
<!--
|
|
725
|
+
<!-- ??좎뜦堉??[Upgrade] ??좎뜦堉??-->
|
|
726
726
|
</body>
|
|
727
727
|
|
|
728
728
|
</html>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
self.assetsManifest = {
|
|
2
|
-
"version": "
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
837
|
+
"hash": "sha256-Sp1f8uVvLis0unU3xP8nl5340QG8tNoGJcsSIEQZfsU=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|