@mindexec/cli 0.2.26 → 0.2.27
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/js/mind-map-core.js +56 -17
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +4 -0
- package/wwwroot/index.html +1 -1
- package/wwwroot/service-worker-assets.js +4 -4
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -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 = '
|
|
8
|
+
const MINDMAP_CORE_BUILD_ID = '20260613-cursor-blink-v206';
|
|
9
9
|
const CanvasPhase = Object.freeze({
|
|
10
10
|
Booting: 'booting',
|
|
11
11
|
BoardFileLoading: 'board-file-loading',
|
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
const PASSIVE_OVERLAY_INTERACTIVE_DENSE_VISIBLE_THRESHOLD = 40;
|
|
84
84
|
const PASSIVE_OVERLAY_IDLE_DELAY_MS = 500;
|
|
85
85
|
const PASSIVE_OVERLAY_PAN_IDLE_DELAY_MS = 500;
|
|
86
|
+
const CURSOR_BLINK_INTERVAL_MS = 500;
|
|
86
87
|
const HOME_CAMERA_NORMAL_MID_Z = 8250;
|
|
87
88
|
const HOME_DENSE_CLUSTER_MIN_CELL_SIZE = 1200;
|
|
88
89
|
const HOME_DENSE_CLUSTER_MAX_CELL_SIZE = 3600;
|
|
@@ -2497,6 +2498,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
2497
2498
|
this.cursorMesh = null;
|
|
2498
2499
|
this.cursorMaterial = null;
|
|
2499
2500
|
this.cursorLineMaterial = null;
|
|
2501
|
+
this._cursorBlinkVisible = true;
|
|
2502
|
+
this._lastCursorBlinkAt = 0;
|
|
2500
2503
|
this._viewStatePersistTimer = null;
|
|
2501
2504
|
this._pendingViewStateSnapshot = null;
|
|
2502
2505
|
this._pendingViewStateKey = null;
|
|
@@ -5062,21 +5065,37 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
5062
5065
|
// 5. Cursor Animation
|
|
5063
5066
|
// ----------------------------------------------------------------
|
|
5064
5067
|
let cursorAnimatedThisFrame = false;
|
|
5065
|
-
|
|
5066
|
-
|
|
5067
|
-
|
|
5068
|
-
|
|
5069
|
-
|
|
5070
|
-
|
|
5071
|
-
|
|
5072
|
-
|
|
5073
|
-
);
|
|
5074
|
-
|
|
5075
|
-
|
|
5076
|
-
|
|
5077
|
-
|
|
5078
|
-
|
|
5079
|
-
|
|
5068
|
+
let cursorBlinkWakeDelayMs = Number.POSITIVE_INFINITY;
|
|
5069
|
+
const hasCursorBlinkTarget = !!(this.cursorMesh && this.cursorMaterial);
|
|
5070
|
+
if (hasCursorBlinkTarget) {
|
|
5071
|
+
if (this.cursorMesh.visible !== (this._cursorBlinkVisible === true)) {
|
|
5072
|
+
this.cursorMesh.visible = this._cursorBlinkVisible === true;
|
|
5073
|
+
cursorAnimatedThisFrame = true;
|
|
5074
|
+
}
|
|
5075
|
+
|
|
5076
|
+
const previousBlinkAt = Number(this._lastCursorBlinkAt || 0);
|
|
5077
|
+
if (!Number.isFinite(previousBlinkAt) || previousBlinkAt <= 0) {
|
|
5078
|
+
this._lastCursorBlinkAt = frameStart;
|
|
5079
|
+
this._cursorBlinkVisible = true;
|
|
5080
|
+
if (this.cursorMesh.visible !== true) {
|
|
5081
|
+
this.cursorMesh.visible = true;
|
|
5082
|
+
cursorAnimatedThisFrame = true;
|
|
5083
|
+
}
|
|
5084
|
+
} else {
|
|
5085
|
+
const elapsedBlinkMs = Math.max(0, frameStart - previousBlinkAt);
|
|
5086
|
+
if (elapsedBlinkMs >= CURSOR_BLINK_INTERVAL_MS) {
|
|
5087
|
+
const elapsedBlinkSteps = Math.max(1, Math.floor(elapsedBlinkMs / CURSOR_BLINK_INTERVAL_MS));
|
|
5088
|
+
if ((elapsedBlinkSteps % 2) === 1) {
|
|
5089
|
+
this._cursorBlinkVisible = this._cursorBlinkVisible !== true;
|
|
5090
|
+
}
|
|
5091
|
+
this._lastCursorBlinkAt = previousBlinkAt + (elapsedBlinkSteps * CURSOR_BLINK_INTERVAL_MS);
|
|
5092
|
+
this.cursorMesh.visible = this._cursorBlinkVisible === true;
|
|
5093
|
+
cursorAnimatedThisFrame = true;
|
|
5094
|
+
}
|
|
5095
|
+
}
|
|
5096
|
+
|
|
5097
|
+
const nextBlinkInMs = CURSOR_BLINK_INTERVAL_MS - Math.max(0, frameStart - Number(this._lastCursorBlinkAt || frameStart));
|
|
5098
|
+
cursorBlinkWakeDelayMs = Math.max(1, Math.min(CURSOR_BLINK_INTERVAL_MS, Math.ceil(nextBlinkInMs)));
|
|
5080
5099
|
}
|
|
5081
5100
|
|
|
5082
5101
|
// 6. Theme Animation
|
|
@@ -5475,12 +5494,32 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
5475
5494
|
shouldSyncTextOverlays !== true &&
|
|
5476
5495
|
hasPendingAnimationWakeWork !== true;
|
|
5477
5496
|
if (shouldParkIdleAnimationLoop) {
|
|
5497
|
+
if (hasCursorBlinkTarget) {
|
|
5498
|
+
nextAnimationLoopDelayMs = cursorBlinkWakeDelayMs;
|
|
5499
|
+
this._lastAnimationLoopDelayMs = nextAnimationLoopDelayMs;
|
|
5500
|
+
this._animationLoopExecuting = false;
|
|
5501
|
+
this._scheduleAnimationLoop(loop, nextAnimationLoopDelayMs);
|
|
5502
|
+
return;
|
|
5503
|
+
}
|
|
5504
|
+
|
|
5478
5505
|
this._lastAnimationLoopDelayMs = -1;
|
|
5479
5506
|
this._animationLoopExecuting = false;
|
|
5480
5507
|
return;
|
|
5481
5508
|
}
|
|
5482
5509
|
|
|
5483
|
-
|
|
5510
|
+
const shouldDelayAfterCursorOnlyFrame =
|
|
5511
|
+
cursorAnimatedThisFrame === true &&
|
|
5512
|
+
shouldCaptureFramePerf !== true &&
|
|
5513
|
+
isBoardLoading !== true &&
|
|
5514
|
+
isInteractiveFrame !== true &&
|
|
5515
|
+
shouldUpdate !== true &&
|
|
5516
|
+
themeAnimatedThisFrame !== true &&
|
|
5517
|
+
hasContinuousThemeAnimationFrame !== true &&
|
|
5518
|
+
shouldRenderCss3dFrame !== true &&
|
|
5519
|
+
shouldSyncTextOverlays !== true &&
|
|
5520
|
+
hasPendingAnimationWakeWork !== true &&
|
|
5521
|
+
hasCursorBlinkTarget === true;
|
|
5522
|
+
nextAnimationLoopDelayMs = shouldDelayAfterCursorOnlyFrame ? cursorBlinkWakeDelayMs : 0;
|
|
5484
5523
|
this._lastAnimationLoopDelayMs = nextAnimationLoopDelayMs;
|
|
5485
5524
|
this._animationLoopExecuting = false;
|
|
5486
5525
|
this._scheduleAnimationLoop(loop, nextAnimationLoopDelayMs);
|
|
@@ -6182,6 +6182,10 @@
|
|
|
6182
6182
|
|
|
6183
6183
|
function getMemoIconKey(nodeModel) {
|
|
6184
6184
|
const semanticType = getNodeSemanticType(nodeModel);
|
|
6185
|
+
if (semanticType === REMOTE_FLEET_SEMANTIC_TYPE) {
|
|
6186
|
+
return 'network-wired';
|
|
6187
|
+
}
|
|
6188
|
+
|
|
6185
6189
|
if (semanticType === 'MindCanvasAgent' || semanticType === 'AgentCommand') {
|
|
6186
6190
|
return 'robot';
|
|
6187
6191
|
}
|
package/wwwroot/index.html
CHANGED
|
@@ -558,7 +558,7 @@
|
|
|
558
558
|
}
|
|
559
559
|
|
|
560
560
|
const base = '_content/MindExecution.Shared/js/';
|
|
561
|
-
const scriptVersion = '20260613-remote-
|
|
561
|
+
const scriptVersion = '20260613-cursor-blink-remote-icon-v493';
|
|
562
562
|
const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
|
|
563
563
|
console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
|
|
564
564
|
const criticalScripts = [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
self.assetsManifest = {
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "dzmlSBJx",
|
|
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-
|
|
81
|
+
"hash": "sha256-LtkB8IRvIm+FJDH5Kx4zNth2hyesdL4YqTPJylSkcHY=",
|
|
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-wZrUQUYTsiH7hkHaZPeEBdqG+r+e2UDR9vqZmyARSFg=",
|
|
90
90
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -834,7 +834,7 @@
|
|
|
834
834
|
"url": "image-manifest.json"
|
|
835
835
|
},
|
|
836
836
|
{
|
|
837
|
-
"hash": "sha256-
|
|
837
|
+
"hash": "sha256-6JYaZ2X3Gg9XoAZomsa4QjcmaQDb7YpKcGVGvxLSXTg=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|