@mindexec/cli 0.2.296 → 0.2.298
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 +16 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +2 -2
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +103 -9
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +5 -5
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -95,6 +95,22 @@ body.mind-map-scroll-locked {
|
|
|
95
95
|
transform: translateZ(0);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
.css3d-resolution-wrapper > .map-node,
|
|
99
|
+
.css3d-resolution-wrapper > .map-node-bubble,
|
|
100
|
+
.css3d-resolution-wrapper > .map-node-note,
|
|
101
|
+
.css3d-resolution-wrapper > .map-node-memo,
|
|
102
|
+
.css3d-resolution-wrapper > .map-node-file,
|
|
103
|
+
.css3d-resolution-wrapper > .map-node-image,
|
|
104
|
+
.css3d-resolution-wrapper > .map-node-code {
|
|
105
|
+
contain: layout style !important;
|
|
106
|
+
content-visibility: visible !important;
|
|
107
|
+
contain-intrinsic-size: auto !important;
|
|
108
|
+
transform: none !important;
|
|
109
|
+
will-change: auto !important;
|
|
110
|
+
-webkit-backface-visibility: visible !important;
|
|
111
|
+
backface-visibility: visible !important;
|
|
112
|
+
}
|
|
113
|
+
|
|
98
114
|
.css3d-resolution-wrapper.node-type-image img,
|
|
99
115
|
.css3d-resolution-wrapper.node-type-video video,
|
|
100
116
|
.css3d-resolution-wrapper.node-type-embed iframe,
|
|
@@ -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-
|
|
8
|
+
const MINDMAP_CORE_BUILD_ID = '20260620-fullres-handoff-aa-v756';
|
|
9
9
|
const CanvasPhase = Object.freeze({
|
|
10
10
|
Booting: 'booting',
|
|
11
11
|
BoardFileLoading: 'board-file-loading',
|
|
@@ -2526,7 +2526,7 @@
|
|
|
2526
2526
|
}
|
|
2527
2527
|
});
|
|
2528
2528
|
|
|
2529
|
-
module.lodRenderer?.
|
|
2529
|
+
module.lodRenderer?.requestResidentSchemaSync?.('render-debug-flags');
|
|
2530
2530
|
|
|
2531
2531
|
if ((!flags.enableCss3dWillChange || !flags.enableCss3d) && window.MindMapCss3DManager?.setWillChange) {
|
|
2532
2532
|
window.MindMapCss3DManager.setWillChange(false, module);
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
// ▲▲▲ [Usage] ▲▲▲
|
|
52
52
|
|
|
53
53
|
// Procedural line rendering settings
|
|
54
|
-
const LOD_RENDERER_BUILD_ID = '20260620-
|
|
54
|
+
const LOD_RENDERER_BUILD_ID = '20260620-fullres-handoff-aa-v756';
|
|
55
55
|
const DirtyKind = Object.freeze({
|
|
56
56
|
ResidentFullRebuild: 'resident-full-rebuild',
|
|
57
57
|
ResidentPatch: 'resident-patch',
|
|
@@ -943,6 +943,7 @@
|
|
|
943
943
|
this._fullResHandoffMinCoverage = 0.92;
|
|
944
944
|
this._fullResHandoffMaxMs = 1400;
|
|
945
945
|
this._fullResPanHandoffMaxMs = 1200;
|
|
946
|
+
this._fullResHandoffHardMaxMs = 2600;
|
|
946
947
|
this._tmpWorldPos = new THREE.Vector3();
|
|
947
948
|
this._tmpWorldQuat = new THREE.Quaternion();
|
|
948
949
|
this._tmpWorldScale = new THREE.Vector3();
|
|
@@ -974,6 +975,7 @@
|
|
|
974
975
|
this._residentBuilt = false;
|
|
975
976
|
this._residentFullBuildCount = 0;
|
|
976
977
|
this._lastResidentFullBuildReason = '';
|
|
978
|
+
this._lastAppliedResidentSchemaSignature = '';
|
|
977
979
|
this._lastBlockedResidentRebuildReason = '';
|
|
978
980
|
this._lastBlockedResidentRebuildAt = 0;
|
|
979
981
|
this._postLoadVisualSyncPending = false;
|
|
@@ -2559,6 +2561,12 @@
|
|
|
2559
2561
|
return;
|
|
2560
2562
|
}
|
|
2561
2563
|
|
|
2564
|
+
emitMindCanvasTrace('lod.fullResHandoff.finish', this._module, {
|
|
2565
|
+
reason: String(reason || 'unknown'),
|
|
2566
|
+
build: LOD_RENDERER_BUILD_ID,
|
|
2567
|
+
previousBand: this._fullResHandoffPreviousBand || null,
|
|
2568
|
+
ageMs: Math.max(0, performance.now() - Number(this._fullResHandoffStartedAt || performance.now()))
|
|
2569
|
+
});
|
|
2562
2570
|
this._fullResHandoffActive = false;
|
|
2563
2571
|
this._fullResHandoffStartedAt = 0;
|
|
2564
2572
|
this._fullResHandoffUntil = 0;
|
|
@@ -2581,11 +2589,13 @@
|
|
|
2581
2589
|
let visibleCssCount = 0;
|
|
2582
2590
|
let pendingCssCount = 0;
|
|
2583
2591
|
let pendingImageCssCount = 0;
|
|
2592
|
+
let pendingNonImageCssCount = 0;
|
|
2584
2593
|
for (const nodeId of visibleIds) {
|
|
2585
2594
|
const entry = nodeObjectsById.get(nodeId);
|
|
2586
2595
|
if (!entry || !supportsCss3dNodeModel(entry.model)) continue;
|
|
2587
2596
|
|
|
2588
2597
|
eligibleCount++;
|
|
2598
|
+
const contentType = getNodeContentType(entry.model);
|
|
2589
2599
|
const element = entry.cssObject?.element;
|
|
2590
2600
|
const cssVisible =
|
|
2591
2601
|
this._nearCssVisibleIds.has(nodeId) &&
|
|
@@ -2594,13 +2604,15 @@
|
|
|
2594
2604
|
element.style.display !== 'none';
|
|
2595
2605
|
if (!cssVisible) {
|
|
2596
2606
|
pendingCssCount++;
|
|
2597
|
-
if (
|
|
2607
|
+
if (contentType === 'image') {
|
|
2598
2608
|
pendingImageCssCount++;
|
|
2609
|
+
} else {
|
|
2610
|
+
pendingNonImageCssCount++;
|
|
2599
2611
|
}
|
|
2600
2612
|
continue;
|
|
2601
2613
|
}
|
|
2602
2614
|
|
|
2603
|
-
if (
|
|
2615
|
+
if (contentType === 'image') {
|
|
2604
2616
|
if (this._isCssImageReady(entry)) {
|
|
2605
2617
|
visibleCssCount++;
|
|
2606
2618
|
} else {
|
|
@@ -2622,15 +2634,30 @@
|
|
|
2622
2634
|
this._css3dProcessing !== true &&
|
|
2623
2635
|
this._nearEntryBoostFrames <= 0;
|
|
2624
2636
|
const hasPendingCss = pendingCssCount > 0;
|
|
2625
|
-
const
|
|
2637
|
+
const now = performance.now();
|
|
2638
|
+
const timedOut = now >= this._fullResHandoffUntil;
|
|
2639
|
+
const handoffAgeMs = Math.max(0, now - Number(this._fullResHandoffStartedAt || now));
|
|
2640
|
+
const hardTimedOut = handoffAgeMs >= this._fullResHandoffHardMaxMs;
|
|
2626
2641
|
const hasPendingImageCss = pendingImageCssCount > 0;
|
|
2627
|
-
const
|
|
2642
|
+
const hasPendingNonImageCss = pendingNonImageCssCount > 0;
|
|
2643
|
+
const coverageReady = coverage >= this._fullResHandoffMinCoverage && !hasPendingNonImageCss;
|
|
2628
2644
|
const idleReady = queueIdle && !hasPendingCss && !hasPendingImageCss;
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2645
|
+
const imageOnlyTimeoutReady = timedOut &&
|
|
2646
|
+
hasPendingImageCss &&
|
|
2647
|
+
!hasPendingNonImageCss &&
|
|
2648
|
+
visibleCssCount > 0;
|
|
2649
|
+
const hardTimeoutReady = hardTimedOut &&
|
|
2650
|
+
(coverage >= 0.5 || visibleCssCount > 0 || queueIdle);
|
|
2651
|
+
|
|
2652
|
+
if (coverageReady || idleReady || imageOnlyTimeoutReady || hardTimeoutReady) {
|
|
2653
|
+
this._finishFullResHandoff(
|
|
2654
|
+
idleReady ? 'queue-idle-all-css-visible' :
|
|
2655
|
+
imageOnlyTimeoutReady ? 'timeout-image-css' :
|
|
2656
|
+
hardTimeoutReady ? 'hard-timeout' :
|
|
2657
|
+
'coverage'
|
|
2658
|
+
);
|
|
2632
2659
|
} else {
|
|
2633
|
-
if (timedOut && hasPendingCss) {
|
|
2660
|
+
if (timedOut && hasPendingCss && !hardTimedOut) {
|
|
2634
2661
|
this._fullResHandoffUntil = Math.max(
|
|
2635
2662
|
Number(this._fullResHandoffUntil || 0),
|
|
2636
2663
|
performance.now() + this._fullResPanHandoffMaxMs
|
|
@@ -3072,6 +3099,7 @@
|
|
|
3072
3099
|
this._residentBuildPhase = 'ready';
|
|
3073
3100
|
this._residentFullBuildCount = Number(this._residentFullBuildCount || 0) + 1;
|
|
3074
3101
|
this._lastResidentFullBuildReason = String(reason || 'unknown');
|
|
3102
|
+
this._lastAppliedResidentSchemaSignature = this._buildResidentSchemaSignature(this._module);
|
|
3075
3103
|
emitMindCanvasTrace('lod.fullBuild', this._module, {
|
|
3076
3104
|
reason: this._lastResidentFullBuildReason,
|
|
3077
3105
|
count: Number(this._residentFullBuildCount || 0),
|
|
@@ -3112,6 +3140,67 @@
|
|
|
3112
3140
|
}
|
|
3113
3141
|
}
|
|
3114
3142
|
|
|
3143
|
+
_buildResidentSchemaSignature(module = this._module) {
|
|
3144
|
+
const flags = module?.renderDebugFlags || {};
|
|
3145
|
+
return [
|
|
3146
|
+
LOD_RENDERER_BUILD_ID,
|
|
3147
|
+
isCss3dRendererEnabled(module) ? 'css3d:on' : 'css3d:off',
|
|
3148
|
+
flags.enableCssImageLodFallback === true ? 'css-image-fallback:on' : 'css-image-fallback:off'
|
|
3149
|
+
].join('|');
|
|
3150
|
+
}
|
|
3151
|
+
|
|
3152
|
+
_tryApplyResidentSchemaSyncNoop(reason = 'resident-schema-change') {
|
|
3153
|
+
const lodBand = this._currentLodBand || this._getActiveLodBand?.() || null;
|
|
3154
|
+
const nextSignature = this._buildResidentSchemaSignature(this._module);
|
|
3155
|
+
const canSkip =
|
|
3156
|
+
FORCE_RESIDENT_INSTANCES_IN_MID_FAR === true &&
|
|
3157
|
+
this._residentBuilt === true &&
|
|
3158
|
+
this._hasResidentLodInstances() === true &&
|
|
3159
|
+
this._instancesDirty !== true &&
|
|
3160
|
+
this._isNodeArrayDirty !== true &&
|
|
3161
|
+
this._lastAppliedResidentSchemaSignature === nextSignature;
|
|
3162
|
+
|
|
3163
|
+
if (!canSkip) {
|
|
3164
|
+
return false;
|
|
3165
|
+
}
|
|
3166
|
+
|
|
3167
|
+
this._syncInstancedImageMeshVisibility();
|
|
3168
|
+
this._markCss3dSyncNeeded(false);
|
|
3169
|
+
this._lastAppliedResidentSchemaSignature = nextSignature;
|
|
3170
|
+
if (this._module) {
|
|
3171
|
+
this._module._forceUpdateFrames = Math.max(Number(this._module._forceUpdateFrames || 0), 1);
|
|
3172
|
+
}
|
|
3173
|
+
emitMindCanvasTrace('patch.applied', this._module, {
|
|
3174
|
+
kind: DirtyKind.ResidentPatch,
|
|
3175
|
+
reason: String(reason || 'resident-schema-change'),
|
|
3176
|
+
normalizedReason: 'resident-schema-change',
|
|
3177
|
+
mode: 'resident-schema-noop',
|
|
3178
|
+
lodBand,
|
|
3179
|
+
schemaSignature: nextSignature
|
|
3180
|
+
});
|
|
3181
|
+
return true;
|
|
3182
|
+
}
|
|
3183
|
+
|
|
3184
|
+
requestResidentSchemaSync(reason = 'resident-schema-change') {
|
|
3185
|
+
const requestReason = String(reason || 'resident-schema-change');
|
|
3186
|
+
if (this._tryApplyResidentSchemaSyncNoop(requestReason)) {
|
|
3187
|
+
return true;
|
|
3188
|
+
}
|
|
3189
|
+
|
|
3190
|
+
this._setInstancesDirty('resident-schema-change');
|
|
3191
|
+
this._markLodResyncNeeded(false);
|
|
3192
|
+
if (this._module) {
|
|
3193
|
+
this._module._forceUpdateFrames = Math.max(Number(this._module._forceUpdateFrames || 0), 2);
|
|
3194
|
+
}
|
|
3195
|
+
emitMindCanvasTrace('lod.patch.request', this._module, {
|
|
3196
|
+
reason: requestReason,
|
|
3197
|
+
normalizedReason: 'resident-schema-change',
|
|
3198
|
+
mode: 'resident-schema-sync',
|
|
3199
|
+
lodBand: this._currentLodBand || null
|
|
3200
|
+
});
|
|
3201
|
+
return true;
|
|
3202
|
+
}
|
|
3203
|
+
|
|
3115
3204
|
_hasPendingLineDetailRestore(lodBand = this._currentLodBand) {
|
|
3116
3205
|
return ENABLE_INSTANCED_TEXT_LINES === true &&
|
|
3117
3206
|
this._lineDetailsPatchPending === true &&
|
|
@@ -9350,6 +9439,7 @@
|
|
|
9350
9439
|
this._residentBuilt = false;
|
|
9351
9440
|
this._residentFullBuildCount = 0;
|
|
9352
9441
|
this._lastResidentFullBuildReason = '';
|
|
9442
|
+
this._lastAppliedResidentSchemaSignature = '';
|
|
9353
9443
|
this._lastBlockedResidentRebuildReason = '';
|
|
9354
9444
|
this._lastBlockedResidentRebuildAt = 0;
|
|
9355
9445
|
this._nearPriorityBuffer = [];
|
|
@@ -9643,6 +9733,10 @@
|
|
|
9643
9733
|
|
|
9644
9734
|
requestResidentPatch(reason = 'resident-patch', nodeIds = null) {
|
|
9645
9735
|
const normalizedReason = String(reason || 'resident-patch');
|
|
9736
|
+
if (normalizedReason === 'resident-schema-change') {
|
|
9737
|
+
return this.requestResidentSchemaSync(normalizedReason);
|
|
9738
|
+
}
|
|
9739
|
+
|
|
9646
9740
|
if ((normalizedReason === 'add-node' || normalizedReason === 'remove-node' || normalizedReason === 'update-node') &&
|
|
9647
9741
|
this._tryApplyResidentStructureDelta(normalizedReason, nodeIds)) {
|
|
9648
9742
|
return true;
|
package/wwwroot/index.html
CHANGED
|
@@ -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-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-fullres-handoff-aa-v756" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-fullres-handoff-aa-v756" />
|
|
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-
|
|
582
|
+
const scriptVersion = '20260620-fullres-handoff-aa-v756';
|
|
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": "
|
|
2
|
+
"version": "hjUfORzu",
|
|
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-0hG8T14JPmgbOP1xbPzWCQEhkDC3SXrqlx8HoJM9e3s=",
|
|
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-+7nR5UKQCHuP9metel5kUUQH3ymykf+dYJaI+h9qHao=",
|
|
82
82
|
"url": "_content/MindExecution.Shared/js/mind-map-core.js"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
@@ -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-kmCskZhRIl7SKSFNOyOeWYPFe7pQihKx+ckVRPs++fA=",
|
|
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-dXqSHxd8CnNzgsM5/6qkUJu1w+EwxOOcmwpMN+dTU5c=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|