@mindexec/cli 0.2.72 → 0.2.74
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
|
@@ -715,6 +715,10 @@ try {
|
|
|
715
715
|
assert.ok(bodyChildOrder.endsWith('remoteFleetStatusRail'), bodyChildOrder);
|
|
716
716
|
assert.ok(statusFooter.style.cssText.includes('flex-direction: row'));
|
|
717
717
|
assert.ok(statusFooter.style.cssText.includes('justify-content: flex-end'));
|
|
718
|
+
const sizeControls = statusFooter.querySelector('[data-remote-fleet-size-controls="true"]');
|
|
719
|
+
assert.ok(sizeControls);
|
|
720
|
+
assert.equal(sizeControls.querySelector('[data-remote-fleet-action="monitor-size-down"]')?.textContent, '-');
|
|
721
|
+
assert.equal(sizeControls.querySelector('[data-remote-fleet-action="monitor-size-up"]')?.textContent, '+');
|
|
718
722
|
assert.match(statusFooter.style.cssText, /box-sizing:\s*border-box;/);
|
|
719
723
|
assert.equal(statusFooter.querySelectorAll('[data-remote-fleet-status-item]').length, 5);
|
|
720
724
|
assert.ok(statusFooter.querySelector('[data-remote-fleet-status-item="route"]'));
|
|
@@ -733,6 +737,14 @@ try {
|
|
|
733
737
|
assert.ok(initialDetailPanel?.textContent.includes('Load'));
|
|
734
738
|
assert.ok(cards[0]?.querySelector('[data-remote-fleet-device-preview="tile"]'));
|
|
735
739
|
assert.equal(/\b(Seen|Uptime|Mem|Load)\b/.test(cards[0]?.textContent || ''), false);
|
|
740
|
+
assert.match(deviceGrid.style.cssText, /minmax\(132px,\s*1fr\)/);
|
|
741
|
+
sizeControls.querySelector('[data-remote-fleet-action="monitor-size-up"]').dispatchEvent({ type: 'click' });
|
|
742
|
+
assert.equal(bodyView.dataset.remoteFleetDensity, 'large');
|
|
743
|
+
assert.match(bodyView.querySelector('[data-remote-fleet-device-grid="true"]')?.style.cssText || '', /minmax\(168px,\s*1fr\)/);
|
|
744
|
+
bodyView.querySelector('[data-remote-fleet-action="monitor-size-down"]').dispatchEvent({ type: 'click' });
|
|
745
|
+
assert.equal(bodyView.dataset.remoteFleetDensity, 'cards');
|
|
746
|
+
assert.match(bodyView.querySelector('[data-remote-fleet-device-grid="true"]')?.style.cssText || '', /minmax\(132px,\s*1fr\)/);
|
|
747
|
+
cards = bodyView.querySelectorAll('article[data-device-id]');
|
|
736
748
|
const patchTarget = devices.find(device => device.ThumbnailEnabled === true && device.LiveStreamActive !== true);
|
|
737
749
|
assert.ok(patchTarget);
|
|
738
750
|
const patchCard = Array.from(cards).find(card => card.dataset.deviceId === patchTarget.DeviceId);
|
|
@@ -793,17 +805,7 @@ try {
|
|
|
793
805
|
assert.equal(bodyView.textContent.includes('Host: Active'), false);
|
|
794
806
|
assert.equal(nodeShell.querySelector('[data-remote-fleet-host-indicator="true"]')?.dataset.remoteFleetHostActive, 'true');
|
|
795
807
|
assert.equal(nodeShell.querySelector('[data-remote-fleet-action="set-host"]')?.textContent, 'Set Host');
|
|
796
|
-
|
|
797
|
-
assert.ok(stopHostButton);
|
|
798
|
-
const stopHostStart = dotNetCalls.length;
|
|
799
|
-
stopHostButton.dispatchEvent({ type: 'click' });
|
|
800
|
-
await wait();
|
|
801
|
-
const stopHostCall = dotNetCalls
|
|
802
|
-
.slice(stopHostStart)
|
|
803
|
-
.find(call => call.methodName === 'SetRemoteFleetHostFromJs');
|
|
804
|
-
assert.ok(stopHostCall);
|
|
805
|
-
assert.equal(stopHostCall.args[0], 'remote-fleet-render-smoke');
|
|
806
|
-
assert.equal(stopHostCall.args[1], false);
|
|
808
|
+
assert.equal(nodeShell.querySelector('[data-remote-fleet-action="stop-host"]'), null);
|
|
807
809
|
hub.setHostTarget({
|
|
808
810
|
nodeId: 'remote-fleet-render-smoke',
|
|
809
811
|
enabled: false
|
|
@@ -3429,6 +3429,12 @@
|
|
|
3429
3429
|
const REMOTE_FLEET_MONITOR_TILE_GAP_PX = 8;
|
|
3430
3430
|
const REMOTE_FLEET_EMPTY_SCREEN_MIN_WIDTH = 132;
|
|
3431
3431
|
const REMOTE_FLEET_EMPTY_SCREEN_MIN_HEIGHT = 72;
|
|
3432
|
+
const REMOTE_FLEET_MONITOR_SIZE_LEVELS = Object.freeze(['dense', 'cards', 'large']);
|
|
3433
|
+
const REMOTE_FLEET_MONITOR_TILE_METRICS = Object.freeze({
|
|
3434
|
+
dense: Object.freeze({ tileMinWidth: 104, tileMinHeight: 66, emptyMinWidth: 104, emptyMinHeight: 58 }),
|
|
3435
|
+
cards: Object.freeze({ tileMinWidth: 132, tileMinHeight: 84, emptyMinWidth: 132, emptyMinHeight: 72 }),
|
|
3436
|
+
large: Object.freeze({ tileMinWidth: 168, tileMinHeight: 106, emptyMinWidth: 168, emptyMinHeight: 94 })
|
|
3437
|
+
});
|
|
3432
3438
|
const AUTOMATION_NODE_KIND_METADATA_KEY = 'AutomationNodeKind';
|
|
3433
3439
|
const AUTOMATION_NODE_LABEL_METADATA_KEY = 'AutomationNodeLabel';
|
|
3434
3440
|
const AUTOMATION_NODE_DESCRIPTION_METADATA_KEY = 'AutomationNodeDescription';
|
|
@@ -12504,7 +12510,72 @@
|
|
|
12504
12510
|
return item;
|
|
12505
12511
|
}
|
|
12506
12512
|
|
|
12507
|
-
function
|
|
12513
|
+
function normalizeRemoteFleetMonitorSize(value) {
|
|
12514
|
+
const normalized = String(value || '').trim().toLowerCase();
|
|
12515
|
+
return REMOTE_FLEET_MONITOR_SIZE_LEVELS.includes(normalized)
|
|
12516
|
+
? normalized
|
|
12517
|
+
: 'cards';
|
|
12518
|
+
}
|
|
12519
|
+
|
|
12520
|
+
function getRemoteFleetMonitorSizeIndex(value) {
|
|
12521
|
+
return Math.max(0, REMOTE_FLEET_MONITOR_SIZE_LEVELS.indexOf(normalizeRemoteFleetMonitorSize(value)));
|
|
12522
|
+
}
|
|
12523
|
+
|
|
12524
|
+
function getRemoteFleetTileMetrics(value) {
|
|
12525
|
+
const size = normalizeRemoteFleetMonitorSize(value);
|
|
12526
|
+
return REMOTE_FLEET_MONITOR_TILE_METRICS[size] || REMOTE_FLEET_MONITOR_TILE_METRICS.cards;
|
|
12527
|
+
}
|
|
12528
|
+
|
|
12529
|
+
function createRemoteFleetMonitorSizeControls(sizeState) {
|
|
12530
|
+
const sizeIndex = getRemoteFleetMonitorSizeIndex(sizeState);
|
|
12531
|
+
const controls = document.createElement('div');
|
|
12532
|
+
controls.dataset.remoteFleetSizeControls = 'true';
|
|
12533
|
+
controls.style.cssText = `
|
|
12534
|
+
flex: 0 0 auto;
|
|
12535
|
+
display: inline-flex;
|
|
12536
|
+
align-items: center;
|
|
12537
|
+
gap: 4px;
|
|
12538
|
+
margin-right: auto;
|
|
12539
|
+
min-width: 0;
|
|
12540
|
+
pointer-events: auto;
|
|
12541
|
+
`;
|
|
12542
|
+
|
|
12543
|
+
const createButton = (label, title, action, disabled) => {
|
|
12544
|
+
const button = document.createElement('button');
|
|
12545
|
+
button.type = 'button';
|
|
12546
|
+
button.dataset.remoteFleetAction = action;
|
|
12547
|
+
button.textContent = label;
|
|
12548
|
+
button.title = title;
|
|
12549
|
+
button.setAttribute('aria-label', title);
|
|
12550
|
+
button.disabled = disabled === true;
|
|
12551
|
+
button.style.cssText = `
|
|
12552
|
+
flex: 0 0 24px;
|
|
12553
|
+
width: 24px;
|
|
12554
|
+
height: 22px;
|
|
12555
|
+
display: inline-flex;
|
|
12556
|
+
align-items: center;
|
|
12557
|
+
justify-content: center;
|
|
12558
|
+
padding: 0;
|
|
12559
|
+
border-radius: 999px;
|
|
12560
|
+
border: 1px solid rgba(148, 163, 184, 0.24);
|
|
12561
|
+
background: ${disabled ? 'rgba(241, 245, 249, 0.70)' : 'rgba(255, 255, 255, 0.92)'};
|
|
12562
|
+
color: ${disabled ? '#94a3b8' : '#0f172a'};
|
|
12563
|
+
font-size: 13px;
|
|
12564
|
+
font-weight: 950;
|
|
12565
|
+
line-height: 1;
|
|
12566
|
+
letter-spacing: 0;
|
|
12567
|
+
cursor: ${disabled ? 'default' : 'pointer'};
|
|
12568
|
+
pointer-events: ${disabled ? 'none' : 'auto'};
|
|
12569
|
+
`;
|
|
12570
|
+
return button;
|
|
12571
|
+
};
|
|
12572
|
+
|
|
12573
|
+
controls.appendChild(createButton('-', 'Smaller screens', 'monitor-size-down', sizeIndex <= 0));
|
|
12574
|
+
controls.appendChild(createButton('+', 'Larger screens', 'monitor-size-up', sizeIndex >= REMOTE_FLEET_MONITOR_SIZE_LEVELS.length - 1));
|
|
12575
|
+
return controls;
|
|
12576
|
+
}
|
|
12577
|
+
|
|
12578
|
+
function createRemoteFleetStatusRail(items, errorMessage = '', leadingControl = null) {
|
|
12508
12579
|
const rail = document.createElement('aside');
|
|
12509
12580
|
rail.dataset.remoteFleetStatusRail = 'true';
|
|
12510
12581
|
rail.style.cssText = `
|
|
@@ -12527,6 +12598,10 @@
|
|
|
12527
12598
|
background: rgba(255, 255, 255, 0.70);
|
|
12528
12599
|
`;
|
|
12529
12600
|
|
|
12601
|
+
if (leadingControl) {
|
|
12602
|
+
rail.appendChild(leadingControl);
|
|
12603
|
+
}
|
|
12604
|
+
|
|
12530
12605
|
const normalizedError = String(errorMessage || '').trim();
|
|
12531
12606
|
if (normalizedError) {
|
|
12532
12607
|
const error = document.createElement('div');
|
|
@@ -12735,7 +12810,7 @@
|
|
|
12735
12810
|
return button;
|
|
12736
12811
|
}
|
|
12737
12812
|
|
|
12738
|
-
function attachRemoteFleetTitleActions(bodyView, hostButton,
|
|
12813
|
+
function attachRemoteFleetTitleActions(bodyView, hostButton, hostState) {
|
|
12739
12814
|
const container = bodyView?.closest?.('.map-node-remote-fleet');
|
|
12740
12815
|
const header = container?.querySelector?.('.template-card__header')
|
|
12741
12816
|
|| container?.querySelector?.('.map-node-memo__header')
|
|
@@ -12771,9 +12846,6 @@
|
|
|
12771
12846
|
|
|
12772
12847
|
titleActions.appendChild(indicator);
|
|
12773
12848
|
titleActions.appendChild(hostButton);
|
|
12774
|
-
if (stopHostButton) {
|
|
12775
|
-
titleActions.appendChild(stopHostButton);
|
|
12776
|
-
}
|
|
12777
12849
|
|
|
12778
12850
|
if (header) {
|
|
12779
12851
|
header.style.gridTemplateColumns = header.classList?.contains?.('template-card__header')
|
|
@@ -12788,17 +12860,19 @@
|
|
|
12788
12860
|
return titleActions;
|
|
12789
12861
|
}
|
|
12790
12862
|
|
|
12791
|
-
function getRemoteFleetEmptyScreenCount(nodeModel) {
|
|
12863
|
+
function getRemoteFleetEmptyScreenCount(nodeModel, sizeState = 'cards') {
|
|
12864
|
+
const metrics = getRemoteFleetTileMetrics(sizeState);
|
|
12792
12865
|
const width = Number(nodeModel?.width ?? nodeModel?.Width ?? 960);
|
|
12793
12866
|
const height = Number(nodeModel?.height ?? nodeModel?.Height ?? 620);
|
|
12794
12867
|
const usableWidth = Number.isFinite(width) ? Math.max(360, width - 44) : 916;
|
|
12795
12868
|
const usableHeight = Number.isFinite(height) ? Math.max(260, height - 128) : 492;
|
|
12796
|
-
const columns = Math.max(3, Math.floor((usableWidth + REMOTE_FLEET_MONITOR_TILE_GAP_PX) / (
|
|
12797
|
-
const rows = Math.max(3, Math.ceil((usableHeight + REMOTE_FLEET_MONITOR_TILE_GAP_PX) / (
|
|
12869
|
+
const columns = Math.max(3, Math.floor((usableWidth + REMOTE_FLEET_MONITOR_TILE_GAP_PX) / (metrics.emptyMinWidth + REMOTE_FLEET_MONITOR_TILE_GAP_PX)));
|
|
12870
|
+
const rows = Math.max(3, Math.ceil((usableHeight + REMOTE_FLEET_MONITOR_TILE_GAP_PX) / (metrics.emptyMinHeight + REMOTE_FLEET_MONITOR_TILE_GAP_PX)));
|
|
12798
12871
|
return Math.max(12, Math.min(80, columns * rows));
|
|
12799
12872
|
}
|
|
12800
12873
|
|
|
12801
|
-
function createRemoteFleetEmptyScreens(nodeModel) {
|
|
12874
|
+
function createRemoteFleetEmptyScreens(nodeModel, sizeState = 'cards') {
|
|
12875
|
+
const metrics = getRemoteFleetTileMetrics(sizeState);
|
|
12802
12876
|
const shell = document.createElement('section');
|
|
12803
12877
|
shell.dataset.remoteFleetEmptyScreens = 'true';
|
|
12804
12878
|
shell.style.cssText = `
|
|
@@ -12807,7 +12881,7 @@
|
|
|
12807
12881
|
overflow-y: auto;
|
|
12808
12882
|
overflow-x: hidden;
|
|
12809
12883
|
display: grid;
|
|
12810
|
-
grid-template-columns: repeat(auto-fill, minmax(${
|
|
12884
|
+
grid-template-columns: repeat(auto-fill, minmax(${metrics.emptyMinWidth}px, 1fr));
|
|
12811
12885
|
grid-auto-rows: max-content;
|
|
12812
12886
|
align-content: start;
|
|
12813
12887
|
align-items: start;
|
|
@@ -12822,7 +12896,7 @@
|
|
|
12822
12896
|
padding: 2px 4px 6px 4px;
|
|
12823
12897
|
`;
|
|
12824
12898
|
|
|
12825
|
-
const screenCount = getRemoteFleetEmptyScreenCount(nodeModel);
|
|
12899
|
+
const screenCount = getRemoteFleetEmptyScreenCount(nodeModel, sizeState);
|
|
12826
12900
|
for (let index = 0; index < screenCount; index += 1) {
|
|
12827
12901
|
const screen = document.createElement('div');
|
|
12828
12902
|
screen.dataset.remoteFleetEmptyScreen = 'true';
|
|
@@ -12830,7 +12904,7 @@
|
|
|
12830
12904
|
width: 100%;
|
|
12831
12905
|
height: auto;
|
|
12832
12906
|
aspect-ratio: 16 / 9;
|
|
12833
|
-
min-height: ${
|
|
12907
|
+
min-height: ${metrics.emptyMinHeight}px;
|
|
12834
12908
|
box-sizing: border-box;
|
|
12835
12909
|
border-radius: 8px;
|
|
12836
12910
|
border: 1px solid rgba(203, 213, 225, 0.72);
|
|
@@ -14924,7 +14998,7 @@
|
|
|
14924
14998
|
const filterState = bodyView.dataset.remoteFleetFilter || 'all';
|
|
14925
14999
|
const sortState = bodyView.dataset.remoteFleetSort || 'status';
|
|
14926
15000
|
const groupState = bodyView.dataset.remoteFleetGroup || 'none';
|
|
14927
|
-
const densityState = bodyView.dataset.remoteFleetDensity || 'cards';
|
|
15001
|
+
const densityState = normalizeRemoteFleetMonitorSize(bodyView.dataset.remoteFleetDensity || 'cards');
|
|
14928
15002
|
const aiAssistState = bodyView.dataset.remoteFleetAiAssist === 'true';
|
|
14929
15003
|
const autoMonitorState = bodyView.dataset.remoteFleetAutoMonitor !== 'false';
|
|
14930
15004
|
const focusState = bodyView.dataset.remoteFleetFocusDeviceId || '';
|
|
@@ -14985,6 +15059,7 @@
|
|
|
14985
15059
|
|
|
14986
15060
|
bodyView.dataset.src = `remote-fleet:${refreshedAt}:${devices.length}:${connected}`;
|
|
14987
15061
|
bodyView.dataset.remoteFleetHostState = hostTargetState;
|
|
15062
|
+
bodyView.dataset.remoteFleetDensity = densityState;
|
|
14988
15063
|
bodyView.classList.add('map-node-remote-fleet__body');
|
|
14989
15064
|
bodyView.innerHTML = '';
|
|
14990
15065
|
bodyView.style.cssText = `
|
|
@@ -15011,15 +15086,7 @@
|
|
|
15011
15086
|
hostButton.style.borderColor = isHostingTarget ? 'rgba(37, 99, 235, 0.44)' : 'rgba(37, 99, 235, 0.32)';
|
|
15012
15087
|
hostButton.style.background = isHostingTarget ? 'rgba(239, 246, 255, 0.98)' : '#ffffff';
|
|
15013
15088
|
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);
|
|
15089
|
+
attachRemoteFleetTitleActions(bodyView, hostButton, hostTargetState);
|
|
15023
15090
|
|
|
15024
15091
|
const statusRail = createRemoteFleetStatusRail([
|
|
15025
15092
|
{
|
|
@@ -15053,7 +15120,7 @@
|
|
|
15053
15120
|
tone: routeInfo.tone,
|
|
15054
15121
|
title: routeInfo.title
|
|
15055
15122
|
}
|
|
15056
|
-
], lastError);
|
|
15123
|
+
], lastError, createRemoteFleetMonitorSizeControls(densityState));
|
|
15057
15124
|
|
|
15058
15125
|
const filterRow = document.createElement('div');
|
|
15059
15126
|
filterRow.style.cssText = `
|
|
@@ -15115,8 +15182,9 @@
|
|
|
15115
15182
|
], groupState, 'Device grouping');
|
|
15116
15183
|
|
|
15117
15184
|
const densitySelect = createRemoteFleetSelect([
|
|
15185
|
+
{ value: 'dense', label: 'Dense' },
|
|
15118
15186
|
{ value: 'cards', label: 'Cards' },
|
|
15119
|
-
{ value: '
|
|
15187
|
+
{ value: 'large', label: 'Large' }
|
|
15120
15188
|
], densityState, 'Device density');
|
|
15121
15189
|
|
|
15122
15190
|
const matchCount = document.createElement('div');
|
|
@@ -15826,8 +15894,9 @@
|
|
|
15826
15894
|
return panel;
|
|
15827
15895
|
};
|
|
15828
15896
|
|
|
15829
|
-
const
|
|
15830
|
-
const
|
|
15897
|
+
const tileMetrics = getRemoteFleetTileMetrics(densityState);
|
|
15898
|
+
const tileMinWidth = tileMetrics.tileMinWidth;
|
|
15899
|
+
const tileMinHeight = tileMetrics.tileMinHeight;
|
|
15831
15900
|
const tileGap = REMOTE_FLEET_MONITOR_TILE_GAP_PX;
|
|
15832
15901
|
|
|
15833
15902
|
const monitorWorkspace = document.createElement('div');
|
|
@@ -16022,7 +16091,7 @@
|
|
|
16022
16091
|
if (devices.length === 0) {
|
|
16023
16092
|
monitorWorkspace.style.display = 'flex';
|
|
16024
16093
|
monitorWorkspace.style.flexDirection = 'column';
|
|
16025
|
-
monitorWorkspace.appendChild(createRemoteFleetEmptyScreens(nodeModel));
|
|
16094
|
+
monitorWorkspace.appendChild(createRemoteFleetEmptyScreens(nodeModel, densityState));
|
|
16026
16095
|
} else {
|
|
16027
16096
|
monitorWorkspace.appendChild(grid);
|
|
16028
16097
|
monitorWorkspace.appendChild(createSelectedDevicePanel(selectedDevice));
|
|
@@ -16274,7 +16343,7 @@
|
|
|
16274
16343
|
control.addEventListener(eventName, event => event.stopPropagation());
|
|
16275
16344
|
});
|
|
16276
16345
|
});
|
|
16277
|
-
[hostButton
|
|
16346
|
+
[hostButton].forEach(control => {
|
|
16278
16347
|
if (!control) return;
|
|
16279
16348
|
['mousedown', 'mouseup', 'click', 'dblclick', 'keydown'].forEach(eventName => {
|
|
16280
16349
|
control.addEventListener(eventName, event => event.stopPropagation());
|
|
@@ -16384,7 +16453,7 @@
|
|
|
16384
16453
|
const setRemoteFleetHostTarget = async (enabled, options = {}) => {
|
|
16385
16454
|
const quiet = options?.quiet === true;
|
|
16386
16455
|
const renew = options?.renew === true || quiet;
|
|
16387
|
-
const activeButton = enabled ? hostButton :
|
|
16456
|
+
const activeButton = enabled ? hostButton : null;
|
|
16388
16457
|
if (!quiet && activeButton) {
|
|
16389
16458
|
activeButton.disabled = true;
|
|
16390
16459
|
}
|
|
@@ -16434,13 +16503,33 @@
|
|
|
16434
16503
|
await setRemoteFleetHostTarget(true);
|
|
16435
16504
|
});
|
|
16436
16505
|
|
|
16437
|
-
|
|
16438
|
-
|
|
16506
|
+
const setRemoteFleetMonitorSize = direction => {
|
|
16507
|
+
const currentIndex = getRemoteFleetMonitorSizeIndex(bodyView.dataset.remoteFleetDensity || densityState);
|
|
16508
|
+
const nextIndex = Math.max(
|
|
16509
|
+
0,
|
|
16510
|
+
Math.min(REMOTE_FLEET_MONITOR_SIZE_LEVELS.length - 1, currentIndex + direction));
|
|
16511
|
+
if (nextIndex === currentIndex) {
|
|
16512
|
+
return;
|
|
16513
|
+
}
|
|
16514
|
+
|
|
16515
|
+
bodyView.dataset.remoteFleetDensity = REMOTE_FLEET_MONITOR_SIZE_LEVELS[nextIndex];
|
|
16516
|
+
renderRemoteFleetMonitor(bodyView, nodeModel);
|
|
16517
|
+
};
|
|
16518
|
+
|
|
16519
|
+
bodyView.querySelectorAll('[data-remote-fleet-action]').forEach(button => {
|
|
16520
|
+
const action = String(button.dataset.remoteFleetAction || '');
|
|
16521
|
+
if (action !== 'monitor-size-down' && action !== 'monitor-size-up') {
|
|
16522
|
+
return;
|
|
16523
|
+
}
|
|
16524
|
+
['mousedown', 'mouseup', 'click', 'dblclick', 'keydown'].forEach(eventName => {
|
|
16525
|
+
button.addEventListener(eventName, event => event.stopPropagation());
|
|
16526
|
+
});
|
|
16527
|
+
button.addEventListener('click', event => {
|
|
16439
16528
|
event.preventDefault();
|
|
16440
16529
|
event.stopPropagation();
|
|
16441
|
-
|
|
16530
|
+
setRemoteFleetMonitorSize(action === 'monitor-size-up' ? 1 : -1);
|
|
16442
16531
|
});
|
|
16443
|
-
}
|
|
16532
|
+
});
|
|
16444
16533
|
|
|
16445
16534
|
bodyView.querySelectorAll('[data-remote-fleet-action="pin-device"]').forEach(button => {
|
|
16446
16535
|
button.addEventListener('click', async event => {
|
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-remote-monitor-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260614-remote-monitor-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260614-remote-monitor-size-controls-v529" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260614-remote-monitor-size-controls-v529" />
|
|
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-remote-monitor-
|
|
582
|
+
const scriptVersion = '20260614-remote-monitor-size-controls-v529';
|
|
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": "D4Pf0guw",
|
|
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-hzl6gNvjb9faAA2tUeCfriNvdohhGaDtasnYOCMum7E=",
|
|
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-6okf9Y0Fpz1uWtjB0xMwIlfltrQLSgbPn8PBj3QW/5Y=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|