@mindexec/cli 0.2.147 → 0.2.148
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/scripts/remote-fleet-render-smoke.mjs +28 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +58 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-overlay-v2.js +40 -1
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +4 -4
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -434,6 +434,7 @@ async function loadCss3DManager() {
|
|
|
434
434
|
const runtimeTrace = [];
|
|
435
435
|
const webSocketConnections = [];
|
|
436
436
|
const webSocketSends = [];
|
|
437
|
+
const textOverlayInvalidations = [];
|
|
437
438
|
class SmokeURL extends URL {}
|
|
438
439
|
SmokeURL.createObjectURL = blob => {
|
|
439
440
|
objectUrlCalls.push(blob);
|
|
@@ -536,6 +537,15 @@ async function loadCss3DManager() {
|
|
|
536
537
|
runtimeTrace.push({ type, ...data });
|
|
537
538
|
}
|
|
538
539
|
},
|
|
540
|
+
MindMapTextOverlayV2: {
|
|
541
|
+
invalidateReadonlySource(module, nodeId, reason) {
|
|
542
|
+
textOverlayInvalidations.push({ module, nodeId, reason });
|
|
543
|
+
return true;
|
|
544
|
+
},
|
|
545
|
+
invalidateNode(module, nodeId, reason) {
|
|
546
|
+
textOverlayInvalidations.push({ module, nodeId, reason, fallback: true });
|
|
547
|
+
}
|
|
548
|
+
},
|
|
539
549
|
Promise
|
|
540
550
|
};
|
|
541
551
|
context.window = context;
|
|
@@ -552,7 +562,8 @@ async function loadCss3DManager() {
|
|
|
552
562
|
fetchCalls,
|
|
553
563
|
runtimeTrace,
|
|
554
564
|
webSocketConnections,
|
|
555
|
-
webSocketSends
|
|
565
|
+
webSocketSends,
|
|
566
|
+
textOverlayInvalidations
|
|
556
567
|
}
|
|
557
568
|
};
|
|
558
569
|
}
|
|
@@ -891,6 +902,9 @@ try {
|
|
|
891
902
|
document.body.appendChild(moduleRef._textOverlayV2State.layer);
|
|
892
903
|
|
|
893
904
|
manager.renderRemoteFleetMonitorForTest(bodyView, monitorNode);
|
|
905
|
+
const { nodeShell: mirrorShell, bodyView: mirrorBodyView } = createRemoteFleetTemplateShell(document, focusedDevice.DeviceId);
|
|
906
|
+
document.body.appendChild(mirrorShell);
|
|
907
|
+
mirrorBodyView.dataset.remoteFleetDensity = 'cards';
|
|
894
908
|
|
|
895
909
|
let cards = bodyView.querySelectorAll('article[data-device-id]');
|
|
896
910
|
assert.equal(cards.length, connectedCount);
|
|
@@ -935,9 +949,22 @@ try {
|
|
|
935
949
|
sizeControls.querySelector('[data-remote-fleet-action="monitor-size-up"]').dispatchEvent({ type: 'click' });
|
|
936
950
|
assert.equal(bodyView.dataset.remoteFleetDensity, 'large');
|
|
937
951
|
assert.match(bodyView.querySelector('[data-remote-fleet-device-grid="true"]')?.style.cssText || '', /minmax\(168px,\s*1fr\)/);
|
|
952
|
+
assert.equal(mirrorBodyView.dataset.remoteFleetDensity, 'large');
|
|
953
|
+
assert.match(mirrorBodyView.querySelector('[data-remote-fleet-device-grid="true"]')?.style.cssText || '', /minmax\(168px,\s*1fr\)/);
|
|
954
|
+
assert.ok(diagnostics.textOverlayInvalidations.some(entry =>
|
|
955
|
+
entry.nodeId === 'remote-fleet-render-smoke'
|
|
956
|
+
&& entry.reason === 'remote-monitor-size'));
|
|
957
|
+
assert.ok(diagnostics.runtimeTrace.some(entry =>
|
|
958
|
+
entry.type === 'remote.monitor.sizeChanged'
|
|
959
|
+
&& entry.nodeId === 'remote-fleet-render-smoke'
|
|
960
|
+
&& entry.density === 'large'
|
|
961
|
+
&& entry.overlayInvalidated === true));
|
|
938
962
|
bodyView.querySelector('[data-remote-fleet-action="monitor-size-down"]').dispatchEvent({ type: 'click' });
|
|
939
963
|
assert.equal(bodyView.dataset.remoteFleetDensity, 'cards');
|
|
940
964
|
assert.match(bodyView.querySelector('[data-remote-fleet-device-grid="true"]')?.style.cssText || '', /minmax\(132px,\s*1fr\)/);
|
|
965
|
+
assert.equal(mirrorBodyView.dataset.remoteFleetDensity, 'cards');
|
|
966
|
+
assert.match(mirrorBodyView.querySelector('[data-remote-fleet-device-grid="true"]')?.style.cssText || '', /minmax\(132px,\s*1fr\)/);
|
|
967
|
+
mirrorShell.remove();
|
|
941
968
|
cards = bodyView.querySelectorAll('article[data-device-id]');
|
|
942
969
|
const patchTarget = devices.find(device =>
|
|
943
970
|
device.Connected === true
|
|
@@ -13898,6 +13898,60 @@
|
|
|
13898
13898
|
).trim();
|
|
13899
13899
|
}
|
|
13900
13900
|
|
|
13901
|
+
function syncRemoteFleetMonitorSizeSurfaces(nodeId, sizeState, sourceBodyView, nodeModel) {
|
|
13902
|
+
const id = String(nodeId || '').trim();
|
|
13903
|
+
const density = normalizeRemoteFleetMonitorSize(sizeState);
|
|
13904
|
+
if (!id || !sourceBodyView) {
|
|
13905
|
+
return 0;
|
|
13906
|
+
}
|
|
13907
|
+
|
|
13908
|
+
const escapedId = cssEscapeValue(id);
|
|
13909
|
+
const bodies = new Set([
|
|
13910
|
+
...Array.from(document.querySelectorAll(`.template-card__remote-fleet-body[data-node-id="${escapedId}"]`)),
|
|
13911
|
+
...Array.from(document.querySelectorAll(`.template-card__remote-fleet-body[data-remote-fleet-monitor-node-id="${escapedId}"]`))
|
|
13912
|
+
]);
|
|
13913
|
+
|
|
13914
|
+
let synced = 0;
|
|
13915
|
+
bodies.forEach(body => {
|
|
13916
|
+
if (!body || body === sourceBodyView) {
|
|
13917
|
+
return;
|
|
13918
|
+
}
|
|
13919
|
+
|
|
13920
|
+
body.dataset.remoteFleetDensity = density;
|
|
13921
|
+
renderRemoteFleetMonitor(body, nodeModel);
|
|
13922
|
+
synced += 1;
|
|
13923
|
+
});
|
|
13924
|
+
|
|
13925
|
+
return synced;
|
|
13926
|
+
}
|
|
13927
|
+
|
|
13928
|
+
function invalidateRemoteFleetMonitorProjection(nodeId, sizeState, reason = 'size') {
|
|
13929
|
+
const id = String(nodeId || '').trim();
|
|
13930
|
+
if (!_module || !id) {
|
|
13931
|
+
return false;
|
|
13932
|
+
}
|
|
13933
|
+
|
|
13934
|
+
const overlay = window.MindMapTextOverlayV2;
|
|
13935
|
+
let invalidated = false;
|
|
13936
|
+
if (typeof overlay?.invalidateReadonlySource === 'function') {
|
|
13937
|
+
invalidated = overlay.invalidateReadonlySource(_module, id, `remote-monitor-${reason}`) === true;
|
|
13938
|
+
} else if (typeof overlay?.invalidateNode === 'function') {
|
|
13939
|
+
overlay.invalidateNode(_module, id, 'layout');
|
|
13940
|
+
invalidated = true;
|
|
13941
|
+
}
|
|
13942
|
+
|
|
13943
|
+
_module._forceUpdateFrames = Math.max(Number(_module._forceUpdateFrames || 0), 2);
|
|
13944
|
+
_module._css3dVisualChangedThisFrame = true;
|
|
13945
|
+
_module._css3dVisualChangedSinceLastRender = true;
|
|
13946
|
+
wakeRemoteFleetModuleAnimation(_module, `remote-monitor-${reason}`);
|
|
13947
|
+
window.RuntimeTrace?.emit?.('remote.monitor.sizeChanged', {
|
|
13948
|
+
nodeId: id,
|
|
13949
|
+
density: normalizeRemoteFleetMonitorSize(sizeState),
|
|
13950
|
+
overlayInvalidated: invalidated
|
|
13951
|
+
});
|
|
13952
|
+
return invalidated;
|
|
13953
|
+
}
|
|
13954
|
+
|
|
13901
13955
|
function getRemoteFleetBodyFromPreview(preview) {
|
|
13902
13956
|
if (!preview) {
|
|
13903
13957
|
return null;
|
|
@@ -18105,8 +18159,11 @@
|
|
|
18105
18159
|
return;
|
|
18106
18160
|
}
|
|
18107
18161
|
|
|
18108
|
-
|
|
18162
|
+
const nextDensity = REMOTE_FLEET_MONITOR_SIZE_LEVELS[nextIndex];
|
|
18163
|
+
bodyView.dataset.remoteFleetDensity = nextDensity;
|
|
18164
|
+
syncRemoteFleetMonitorSizeSurfaces(nodeId, nextDensity, bodyView, nodeModel);
|
|
18109
18165
|
renderRemoteFleetMonitor(bodyView, nodeModel);
|
|
18166
|
+
invalidateRemoteFleetMonitorProjection(nodeId, nextDensity, 'size');
|
|
18110
18167
|
};
|
|
18111
18168
|
|
|
18112
18169
|
bodyView.querySelectorAll('[data-remote-fleet-action]').forEach(button => {
|
|
@@ -3706,6 +3706,44 @@
|
|
|
3706
3706
|
module._lastOverlayKey = '';
|
|
3707
3707
|
}
|
|
3708
3708
|
|
|
3709
|
+
function invalidateReadonlySource(module, nodeId = '', reason = 'source') {
|
|
3710
|
+
const state = ensureState(module);
|
|
3711
|
+
if (!state) {
|
|
3712
|
+
return false;
|
|
3713
|
+
}
|
|
3714
|
+
|
|
3715
|
+
const id = normalizeId(nodeId);
|
|
3716
|
+
if (id) {
|
|
3717
|
+
state.dirtyNodes.add(id);
|
|
3718
|
+
const card = state.cards.get(selectionCardKey(id)) || null;
|
|
3719
|
+
if (card?.dataset) {
|
|
3720
|
+
card.dataset.contentKey = '';
|
|
3721
|
+
card.dataset.sourceEpoch = '';
|
|
3722
|
+
}
|
|
3723
|
+
} else {
|
|
3724
|
+
state.cards.forEach(card => {
|
|
3725
|
+
if (!card?.dataset) {
|
|
3726
|
+
return;
|
|
3727
|
+
}
|
|
3728
|
+
|
|
3729
|
+
card.dataset.contentKey = '';
|
|
3730
|
+
card.dataset.sourceEpoch = '';
|
|
3731
|
+
});
|
|
3732
|
+
}
|
|
3733
|
+
|
|
3734
|
+
const epoch = bumpReadonlySourceEpoch(module);
|
|
3735
|
+
state.dirtyLayout = true;
|
|
3736
|
+
module._overlayDirty = true;
|
|
3737
|
+
module._lastOverlayKey = '';
|
|
3738
|
+
module.requestAnimationWake?.(`readonly-source:${reason || 'source'}`);
|
|
3739
|
+
window.RuntimeTrace?.emit?.('textOverlay.readonlySourceInvalidated', {
|
|
3740
|
+
nodeId: id,
|
|
3741
|
+
reason: String(reason || 'source'),
|
|
3742
|
+
epoch
|
|
3743
|
+
});
|
|
3744
|
+
return true;
|
|
3745
|
+
}
|
|
3746
|
+
|
|
3709
3747
|
function hidePassiveSelectionCards(module, state = ensureState(module), options = {}) {
|
|
3710
3748
|
if (!module || !state) {
|
|
3711
3749
|
return 0;
|
|
@@ -4459,6 +4497,7 @@
|
|
|
4459
4497
|
suspendSource: suspendSource,
|
|
4460
4498
|
resumeSource: resumeSource,
|
|
4461
4499
|
hasLiveInteractiveOverlay: hasLiveInteractiveOverlay,
|
|
4462
|
-
syncReadonlySourceScroll: syncReadonlySourceScroll
|
|
4500
|
+
syncReadonlySourceScroll: syncReadonlySourceScroll,
|
|
4501
|
+
invalidateReadonlySource: invalidateReadonlySource
|
|
4463
4502
|
};
|
|
4464
4503
|
})();
|
package/wwwroot/index.html
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<title>MindExec | Run your ideas as AI task graphs</title>
|
|
8
8
|
<meta name="description" content="MindExec is an AI execution canvas for solo builders, researchers, developers, and creators. Start with free browser tools, then move serious work into saved MindCanvas projects." />
|
|
9
9
|
<base href="/" />
|
|
10
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-mdm-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-mdm-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-mdm-size-sync-v583" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-mdm-size-sync-v583" />
|
|
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 = '20260617-mdm-
|
|
582
|
+
const scriptVersion = '20260617-mdm-size-sync-v583';
|
|
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": "2KqIRZaB",
|
|
3
3
|
"assets": [
|
|
4
4
|
{
|
|
5
5
|
"hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
|
|
@@ -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-jDvRb/lyHSbYOYjqGqyc0m3AIRkOtfL144gqEyAGHOM=",
|
|
90
90
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
"url": "_content/MindExecution.Shared/js/mind-map-text-lod-system.js"
|
|
155
155
|
},
|
|
156
156
|
{
|
|
157
|
-
"hash": "sha256-
|
|
157
|
+
"hash": "sha256-qwNb+PcesE9rgfkjiJrUOWHz/J2vwDUb6wzJ3j5Zj90=",
|
|
158
158
|
"url": "_content/MindExecution.Shared/js/mind-map-text-overlay-v2.js"
|
|
159
159
|
},
|
|
160
160
|
{
|
|
@@ -834,7 +834,7 @@
|
|
|
834
834
|
"url": "image-manifest.json"
|
|
835
835
|
},
|
|
836
836
|
{
|
|
837
|
-
"hash": "sha256-
|
|
837
|
+
"hash": "sha256-TJzGANRJXvjZ2Tpohu7NwDaJqYaNRaaVMNDegpwN3GI=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|