@mindexec/cli 0.2.71 → 0.2.73
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
|
@@ -714,11 +714,16 @@ try {
|
|
|
714
714
|
Object.keys(child.dataset || {}).join(',') || child.tagName).join('|');
|
|
715
715
|
assert.ok(bodyChildOrder.endsWith('remoteFleetStatusRail'), bodyChildOrder);
|
|
716
716
|
assert.ok(statusFooter.style.cssText.includes('flex-direction: row'));
|
|
717
|
+
assert.ok(statusFooter.style.cssText.includes('justify-content: flex-end'));
|
|
717
718
|
assert.match(statusFooter.style.cssText, /box-sizing:\s*border-box;/);
|
|
718
719
|
assert.equal(statusFooter.querySelectorAll('[data-remote-fleet-status-item]').length, 5);
|
|
719
720
|
assert.ok(statusFooter.querySelector('[data-remote-fleet-status-item="route"]'));
|
|
720
721
|
const initialDetailPanel = bodyView.querySelector('[data-remote-fleet-detail-panel="true"]');
|
|
721
722
|
assert.equal(initialDetailPanel?.dataset.deviceId, focusedDevice.DeviceId);
|
|
723
|
+
const initialSelectedCard = bodyView.querySelector(`article[data-device-id="${focusedDevice.DeviceId}"]`);
|
|
724
|
+
assert.equal(initialSelectedCard?.dataset.remoteFleetSelected, 'true');
|
|
725
|
+
assert.equal(initialSelectedCard?.getAttribute('aria-pressed'), 'true');
|
|
726
|
+
assert.ok(initialSelectedCard?.querySelector('[data-remote-fleet-selected-indicator="true"]'));
|
|
722
727
|
assert.equal(bodyView.querySelectorAll('[data-remote-fleet-action="pin-device"]').length, 1);
|
|
723
728
|
assert.equal(bodyView.querySelectorAll('[data-remote-fleet-action="task-device"]').length, 0);
|
|
724
729
|
assert.equal(bodyView.querySelectorAll('[data-remote-fleet-action="thumbnail-device"]').length, focusedDevice.Connected && focusedDevice.ThumbnailEnabled ? 1 : 0);
|
|
@@ -755,6 +760,10 @@ try {
|
|
|
755
760
|
alternateCard.dispatchEvent({ type: 'click' });
|
|
756
761
|
assert.equal(bodyView.dataset.remoteFleetSelectedDeviceId, alternateDevice.DeviceId);
|
|
757
762
|
assert.equal(bodyView.querySelector('[data-remote-fleet-detail-panel="true"]')?.dataset.deviceId, alternateDevice.DeviceId);
|
|
763
|
+
const selectedAfterClick = bodyView.querySelector(`article[data-device-id="${alternateDevice.DeviceId}"]`);
|
|
764
|
+
assert.equal(selectedAfterClick?.dataset.remoteFleetSelected, 'true');
|
|
765
|
+
assert.equal(selectedAfterClick?.getAttribute('aria-pressed'), 'true');
|
|
766
|
+
assert.ok(selectedAfterClick?.querySelector('[data-remote-fleet-selected-indicator="true"]'));
|
|
758
767
|
const livePanel = bodyView.querySelector('[data-remote-fleet-live-panel="true"]');
|
|
759
768
|
assert.equal(livePanel?.dataset.deviceId, focusedDevice.DeviceId);
|
|
760
769
|
assert.equal(bodyView.querySelector('[data-remote-fleet-action="task-visible"]'), null);
|
|
@@ -784,17 +793,7 @@ try {
|
|
|
784
793
|
assert.equal(bodyView.textContent.includes('Host: Active'), false);
|
|
785
794
|
assert.equal(nodeShell.querySelector('[data-remote-fleet-host-indicator="true"]')?.dataset.remoteFleetHostActive, 'true');
|
|
786
795
|
assert.equal(nodeShell.querySelector('[data-remote-fleet-action="set-host"]')?.textContent, 'Set Host');
|
|
787
|
-
|
|
788
|
-
assert.ok(stopHostButton);
|
|
789
|
-
const stopHostStart = dotNetCalls.length;
|
|
790
|
-
stopHostButton.dispatchEvent({ type: 'click' });
|
|
791
|
-
await wait();
|
|
792
|
-
const stopHostCall = dotNetCalls
|
|
793
|
-
.slice(stopHostStart)
|
|
794
|
-
.find(call => call.methodName === 'SetRemoteFleetHostFromJs');
|
|
795
|
-
assert.ok(stopHostCall);
|
|
796
|
-
assert.equal(stopHostCall.args[0], 'remote-fleet-render-smoke');
|
|
797
|
-
assert.equal(stopHostCall.args[1], false);
|
|
796
|
+
assert.equal(nodeShell.querySelector('[data-remote-fleet-action="stop-host"]'), null);
|
|
798
797
|
hub.setHostTarget({
|
|
799
798
|
nodeId: 'remote-fleet-render-smoke',
|
|
800
799
|
enabled: false
|
|
@@ -12513,7 +12513,7 @@
|
|
|
12513
12513
|
display: flex;
|
|
12514
12514
|
flex-direction: row;
|
|
12515
12515
|
align-items: center;
|
|
12516
|
-
justify-content:
|
|
12516
|
+
justify-content: flex-end;
|
|
12517
12517
|
gap: 6px;
|
|
12518
12518
|
width: calc(100% - ${REMOTE_FLEET_CENTER_NUDGE_PX * 2}px);
|
|
12519
12519
|
max-width: 100%;
|
|
@@ -12735,7 +12735,7 @@
|
|
|
12735
12735
|
return button;
|
|
12736
12736
|
}
|
|
12737
12737
|
|
|
12738
|
-
function attachRemoteFleetTitleActions(bodyView, hostButton,
|
|
12738
|
+
function attachRemoteFleetTitleActions(bodyView, hostButton, hostState) {
|
|
12739
12739
|
const container = bodyView?.closest?.('.map-node-remote-fleet');
|
|
12740
12740
|
const header = container?.querySelector?.('.template-card__header')
|
|
12741
12741
|
|| container?.querySelector?.('.map-node-memo__header')
|
|
@@ -12771,9 +12771,6 @@
|
|
|
12771
12771
|
|
|
12772
12772
|
titleActions.appendChild(indicator);
|
|
12773
12773
|
titleActions.appendChild(hostButton);
|
|
12774
|
-
if (stopHostButton) {
|
|
12775
|
-
titleActions.appendChild(stopHostButton);
|
|
12776
|
-
}
|
|
12777
12774
|
|
|
12778
12775
|
if (header) {
|
|
12779
12776
|
header.style.gridTemplateColumns = header.classList?.contains?.('template-card__header')
|
|
@@ -15011,15 +15008,7 @@
|
|
|
15011
15008
|
hostButton.style.borderColor = isHostingTarget ? 'rgba(37, 99, 235, 0.44)' : 'rgba(37, 99, 235, 0.32)';
|
|
15012
15009
|
hostButton.style.background = isHostingTarget ? 'rgba(239, 246, 255, 0.98)' : '#ffffff';
|
|
15013
15010
|
hostButton.style.color = '#1d4ed8';
|
|
15014
|
-
|
|
15015
|
-
if (isHostingTarget) {
|
|
15016
|
-
stopHostButton = createRemoteFleetButton('Stop', 'Stop using this monitor as the host target.', 'stop-host');
|
|
15017
|
-
stopHostButton.style.height = '30px';
|
|
15018
|
-
stopHostButton.style.borderColor = 'rgba(239, 68, 68, 0.30)';
|
|
15019
|
-
stopHostButton.style.color = '#b91c1c';
|
|
15020
|
-
stopHostButton.style.background = 'rgba(254, 242, 242, 0.94)';
|
|
15021
|
-
}
|
|
15022
|
-
attachRemoteFleetTitleActions(bodyView, hostButton, stopHostButton, hostTargetState);
|
|
15011
|
+
attachRemoteFleetTitleActions(bodyView, hostButton, hostTargetState);
|
|
15023
15012
|
|
|
15024
15013
|
const statusRail = createRemoteFleetStatusRail([
|
|
15025
15014
|
{
|
|
@@ -15948,6 +15937,7 @@
|
|
|
15948
15937
|
card.dataset.remoteFleetSelected = isSelected ? 'true' : 'false';
|
|
15949
15938
|
card.dataset.remoteFleetAction = 'select-device';
|
|
15950
15939
|
card.setAttribute('role', 'button');
|
|
15940
|
+
card.setAttribute('aria-pressed', isSelected ? 'true' : 'false');
|
|
15951
15941
|
card.setAttribute('aria-label', `Show details for ${name}`);
|
|
15952
15942
|
card.tabIndex = 0;
|
|
15953
15943
|
card.title = name;
|
|
@@ -15972,6 +15962,30 @@
|
|
|
15972
15962
|
user-select: none;
|
|
15973
15963
|
`;
|
|
15974
15964
|
card.appendChild(createDevicePreview(device, 'tile'));
|
|
15965
|
+
if (isSelected) {
|
|
15966
|
+
const selectedIndicator = document.createElement('span');
|
|
15967
|
+
selectedIndicator.dataset.remoteFleetSelectedIndicator = 'true';
|
|
15968
|
+
selectedIndicator.innerHTML = '<i class="fa-solid fa-check" aria-hidden="true"></i>';
|
|
15969
|
+
selectedIndicator.title = 'Selected screen';
|
|
15970
|
+
selectedIndicator.style.cssText = `
|
|
15971
|
+
position: absolute;
|
|
15972
|
+
right: 6px;
|
|
15973
|
+
top: 6px;
|
|
15974
|
+
width: 18px;
|
|
15975
|
+
height: 18px;
|
|
15976
|
+
display: inline-flex;
|
|
15977
|
+
align-items: center;
|
|
15978
|
+
justify-content: center;
|
|
15979
|
+
border-radius: 999px;
|
|
15980
|
+
background: #2563eb;
|
|
15981
|
+
color: #ffffff;
|
|
15982
|
+
font-size: 9px;
|
|
15983
|
+
line-height: 1;
|
|
15984
|
+
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.16), 0 8px 16px rgba(15, 23, 42, 0.16);
|
|
15985
|
+
pointer-events: none;
|
|
15986
|
+
`;
|
|
15987
|
+
card.appendChild(selectedIndicator);
|
|
15988
|
+
}
|
|
15975
15989
|
grid.appendChild(card);
|
|
15976
15990
|
});
|
|
15977
15991
|
|
|
@@ -16249,7 +16263,7 @@
|
|
|
16249
16263
|
control.addEventListener(eventName, event => event.stopPropagation());
|
|
16250
16264
|
});
|
|
16251
16265
|
});
|
|
16252
|
-
[hostButton
|
|
16266
|
+
[hostButton].forEach(control => {
|
|
16253
16267
|
if (!control) return;
|
|
16254
16268
|
['mousedown', 'mouseup', 'click', 'dblclick', 'keydown'].forEach(eventName => {
|
|
16255
16269
|
control.addEventListener(eventName, event => event.stopPropagation());
|
|
@@ -16359,7 +16373,7 @@
|
|
|
16359
16373
|
const setRemoteFleetHostTarget = async (enabled, options = {}) => {
|
|
16360
16374
|
const quiet = options?.quiet === true;
|
|
16361
16375
|
const renew = options?.renew === true || quiet;
|
|
16362
|
-
const activeButton = enabled ? hostButton :
|
|
16376
|
+
const activeButton = enabled ? hostButton : null;
|
|
16363
16377
|
if (!quiet && activeButton) {
|
|
16364
16378
|
activeButton.disabled = true;
|
|
16365
16379
|
}
|
|
@@ -16409,14 +16423,6 @@
|
|
|
16409
16423
|
await setRemoteFleetHostTarget(true);
|
|
16410
16424
|
});
|
|
16411
16425
|
|
|
16412
|
-
if (stopHostButton) {
|
|
16413
|
-
stopHostButton.addEventListener('click', async event => {
|
|
16414
|
-
event.preventDefault();
|
|
16415
|
-
event.stopPropagation();
|
|
16416
|
-
await setRemoteFleetHostTarget(false);
|
|
16417
|
-
});
|
|
16418
|
-
}
|
|
16419
|
-
|
|
16420
16426
|
bodyView.querySelectorAll('[data-remote-fleet-action="pin-device"]').forEach(button => {
|
|
16421
16427
|
button.addEventListener('click', async event => {
|
|
16422
16428
|
event.preventDefault();
|
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=20260614-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260614-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260614-remote-monitor-no-stop-v528" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260614-remote-monitor-no-stop-v528" />
|
|
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 = '20260614-
|
|
582
|
+
const scriptVersion = '20260614-remote-monitor-no-stop-v528';
|
|
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": "d4LRzdfE",
|
|
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-DjKISYGUi+3HQOa9MQJYjRG1GbKw9oubNALH0YjyDzU=",
|
|
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-0kYKq5leJEhEiWAGy8flD4R+Ip+L1HNwLTpiz9XKKbc=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|