@mindexec/cli 0.2.500 → 0.2.501
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-registry-follower-smoke.mjs +4 -8
- package/wwwroot/_content/MindExecution.Shared/css/native-hybrid.css +19 -12
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-native-render-mirror.js +27 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-native-render-webview2.js +35 -3
- package/wwwroot/index.html +2 -2
- package/wwwroot/service-worker-assets.js +5 -5
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -529,19 +529,15 @@ async function main() {
|
|
|
529
529
|
assert.equal(quietRenewSetHost.payload?.ok, true, JSON.stringify(quietRenewSetHost.payload));
|
|
530
530
|
assert.equal(quietRenewSetHost.payload?.active, true, JSON.stringify(quietRenewSetHost.payload));
|
|
531
531
|
assert.equal(quietRenewSetHost.payload?.hostTargetTakeover, false, JSON.stringify(quietRenewSetHost.payload));
|
|
532
|
-
const quietRenewPublish = fakeSupabase.requests
|
|
532
|
+
const quietRenewPublish = await waitFor(() => fakeSupabase.requests
|
|
533
533
|
.filter(request =>
|
|
534
534
|
request.method === 'POST'
|
|
535
535
|
&& request.pathname === '/rest/v1/rpc/set_remote_host_target')
|
|
536
536
|
.slice(beforeQuietRenewPublishCount)
|
|
537
|
-
.find(request => request.body?.p_node_id === 'remote-registry-renew-node')
|
|
537
|
+
.find(request => request.body?.p_node_id === 'remote-registry-renew-node') || null,
|
|
538
|
+
8000,
|
|
539
|
+
`quiet host-target renew publish\n${renewHost.details()}`);
|
|
538
540
|
assert.equal(quietRenewPublish?.body?.p_takeover, false, JSON.stringify(quietRenewPublish?.body));
|
|
539
|
-
await waitFor(() => {
|
|
540
|
-
const publishCount = fakeSupabase.requests.filter(request =>
|
|
541
|
-
request.method === 'POST'
|
|
542
|
-
&& request.pathname === '/rest/v1/rpc/set_remote_host_target').length;
|
|
543
|
-
return publishCount >= 2 ? publishCount : null;
|
|
544
|
-
}, 8000, `host-target auto renew publish\n${renewHost.details()}`);
|
|
545
541
|
const beforeResumePublishCount = fakeSupabase.requests.filter(request =>
|
|
546
542
|
request.method === 'POST'
|
|
547
543
|
&& request.pathname === '/rest/v1/rpc/set_remote_host_target').length;
|
|
@@ -8,22 +8,22 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
html[data-mindexec-native-desktop-stage="hybrid-compare"] {
|
|
11
|
-
--mindexec-native-web-
|
|
11
|
+
--mindexec-native-web-transferred-edge-opacity: 1;
|
|
12
12
|
--mindexec-native-web-node-opacity: 1;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="web"] {
|
|
16
|
-
--mindexec-native-web-
|
|
16
|
+
--mindexec-native-web-transferred-edge-opacity: 1;
|
|
17
17
|
--mindexec-native-web-node-opacity: 1;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"] {
|
|
21
|
-
--mindexec-native-web-
|
|
21
|
+
--mindexec-native-web-transferred-edge-opacity: 0.34;
|
|
22
22
|
--mindexec-native-web-node-opacity: 0.78;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] {
|
|
26
|
-
--mindexec-native-web-
|
|
26
|
+
--mindexec-native-web-transferred-edge-opacity: 0;
|
|
27
27
|
--mindexec-native-web-node-opacity: 1;
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -34,7 +34,9 @@ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-c
|
|
|
34
34
|
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"] #app-container,
|
|
35
35
|
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] #app-container,
|
|
36
36
|
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"] #app,
|
|
37
|
-
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] #app
|
|
37
|
+
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] #app,
|
|
38
|
+
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"] #app > main.pointer-events-none,
|
|
39
|
+
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] #app > main.pointer-events-none {
|
|
38
40
|
background: transparent !important;
|
|
39
41
|
background-color: transparent !important;
|
|
40
42
|
}
|
|
@@ -46,10 +48,16 @@ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-c
|
|
|
46
48
|
background-image: none !important;
|
|
47
49
|
}
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
/*
|
|
52
|
+
* MNR1 endpoint-v1 transfers the business-automation edge paint, but it does
|
|
53
|
+
* not transfer the complete WebGL scene. In particular, the single WebGL
|
|
54
|
+
* canvas also owns MID/FAR resident silhouettes, image-atlas proxies, ordinary
|
|
55
|
+
* connectors, grid hints, and selection visuals. Keep that canvas intact and
|
|
56
|
+
* fade only the exact transferred SVG paint.
|
|
57
|
+
*/
|
|
58
|
+
html[data-mindexec-native-desktop-stage="hybrid-compare"]
|
|
59
|
+
#mind-map-viewport .mind-map-business-automation-edge-layer.is-visual {
|
|
60
|
+
opacity: var(--mindexec-native-web-transferred-edge-opacity) !important;
|
|
53
61
|
}
|
|
54
62
|
|
|
55
63
|
html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"]
|
|
@@ -82,9 +90,8 @@ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-c
|
|
|
82
90
|
}
|
|
83
91
|
|
|
84
92
|
@media (prefers-reduced-motion: no-preference) {
|
|
85
|
-
html[data-mindexec-native-desktop-stage="hybrid-compare"]
|
|
86
|
-
|
|
87
|
-
html[data-mindexec-native-desktop-stage="hybrid-compare"] #mind-map-viewport .mind-map-business-automation-edge-layer,
|
|
93
|
+
html[data-mindexec-native-desktop-stage="hybrid-compare"]
|
|
94
|
+
#mind-map-viewport .mind-map-business-automation-edge-layer.is-visual,
|
|
88
95
|
html[data-mindexec-native-desktop-stage="hybrid-compare"] #css3d-dom-wrapper .map-node {
|
|
89
96
|
transition: opacity 120ms linear;
|
|
90
97
|
}
|
|
@@ -425,6 +425,21 @@
|
|
|
425
425
|
};
|
|
426
426
|
}
|
|
427
427
|
|
|
428
|
+
_matchesRetainedSceneOwner(result, owner) {
|
|
429
|
+
const retained = result?.retainedSceneOwner;
|
|
430
|
+
return result?.attachmentRetained === true &&
|
|
431
|
+
result?.cameraRetryAllowed === true &&
|
|
432
|
+
retained?.boardId === owner.boardId &&
|
|
433
|
+
String(retained?.engineGeneration) === String(owner.engineGeneration) &&
|
|
434
|
+
String(retained?.boardEpoch) === String(owner.boardEpoch) &&
|
|
435
|
+
String(retained?.boardRevision) === String(owner.boardRevision) &&
|
|
436
|
+
this.attached &&
|
|
437
|
+
this.boardId === owner.boardId &&
|
|
438
|
+
this.engineGeneration === owner.engineGeneration &&
|
|
439
|
+
this.boardEpoch === owner.boardEpoch &&
|
|
440
|
+
this.boardRevision === owner.boardRevision;
|
|
441
|
+
}
|
|
442
|
+
|
|
428
443
|
_assignHandle(map, id, kind) {
|
|
429
444
|
let handle = map.get(id);
|
|
430
445
|
if (handle) return handle;
|
|
@@ -523,6 +538,18 @@
|
|
|
523
538
|
try {
|
|
524
539
|
const result = await this.api.sendCamera({ owner, camera: this.latestCamera || copyCamera(this.module) });
|
|
525
540
|
if (result?.accepted !== true) {
|
|
541
|
+
if (this._matchesRetainedSceneOwner(result, owner)) {
|
|
542
|
+
publishStatus({ ...result, mode: 'mirror', ready: true });
|
|
543
|
+
emit('native.render.camera.retryable', {
|
|
544
|
+
boardId: owner.boardId,
|
|
545
|
+
engineGeneration: owner.engineGeneration,
|
|
546
|
+
boardEpoch: owner.boardEpoch,
|
|
547
|
+
boardRevision: owner.boardRevision,
|
|
548
|
+
requestSequence: owner.requestSequence,
|
|
549
|
+
reason: String(result?.reason || 'native-render-camera-retryable')
|
|
550
|
+
});
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
526
553
|
throw new Error(result?.reason || result?.lastError || result?.lastRejected?.reason || 'native-render-camera-not-accepted');
|
|
527
554
|
}
|
|
528
555
|
publishStatus({ ...result, mode: 'mirror', ready: true });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(function () {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const BUILD_ID = '20260831-native-render-webview2-
|
|
4
|
+
const BUILD_ID = '20260831-native-render-webview2-v003';
|
|
5
5
|
const WIRE_PREFIX = 'mindexec.native-render.v1';
|
|
6
6
|
const PROTOCOL_MAGIC = 0x31524e4d;
|
|
7
7
|
const PROTOCOL_VERSION = 1;
|
|
@@ -70,9 +70,10 @@
|
|
|
70
70
|
let statusChecked = false;
|
|
71
71
|
let disposed = false;
|
|
72
72
|
let hasAcceptedSnapshot = false;
|
|
73
|
+
let acceptedSnapshotOwner = null;
|
|
73
74
|
let viewportEpoch = 0;
|
|
74
75
|
let viewportAcknowledgementRequired = false;
|
|
75
|
-
let requestedCompareLayer = '
|
|
76
|
+
let requestedCompareLayer = 'web';
|
|
76
77
|
let effectiveCompareLayer = 'web';
|
|
77
78
|
const status = {
|
|
78
79
|
mode: 'mirror',
|
|
@@ -716,6 +717,7 @@
|
|
|
716
717
|
const snapshot = {
|
|
717
718
|
...status,
|
|
718
719
|
desktopStage: 'hybrid-compare',
|
|
720
|
+
requestedCompareLayer,
|
|
719
721
|
compareLayer: effectiveCompareLayer
|
|
720
722
|
};
|
|
721
723
|
return extra ? { ...snapshot, ...extra } : snapshot;
|
|
@@ -748,10 +750,28 @@
|
|
|
748
750
|
|
|
749
751
|
function requireWebFallback() {
|
|
750
752
|
hasAcceptedSnapshot = false;
|
|
753
|
+
acceptedSnapshotOwner = null;
|
|
751
754
|
viewportAcknowledgementRequired = false;
|
|
752
755
|
writeCompareLayer('web');
|
|
753
756
|
}
|
|
754
757
|
|
|
758
|
+
function sameSceneOwner(left, right) {
|
|
759
|
+
return left?.boardId === right?.boardId &&
|
|
760
|
+
left?.engineGeneration === right?.engineGeneration &&
|
|
761
|
+
left?.boardEpoch === right?.boardEpoch &&
|
|
762
|
+
left?.boardRevision === right?.boardRevision;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
function retainedSceneOwner(owner) {
|
|
766
|
+
if (!owner) return null;
|
|
767
|
+
return {
|
|
768
|
+
boardId: owner.boardId,
|
|
769
|
+
engineGeneration: owner.engineGeneration.toString(),
|
|
770
|
+
boardEpoch: owner.boardEpoch.toString(),
|
|
771
|
+
boardRevision: owner.boardRevision.toString()
|
|
772
|
+
};
|
|
773
|
+
}
|
|
774
|
+
|
|
755
775
|
function requireCameraAcknowledgement() {
|
|
756
776
|
if (!hasAcceptedSnapshot) {
|
|
757
777
|
requireWebFallback();
|
|
@@ -805,8 +825,19 @@
|
|
|
805
825
|
}
|
|
806
826
|
|
|
807
827
|
function settleFrameFailure(entry, reason, options = {}) {
|
|
828
|
+
const attachmentRetained = entry.requestType === REQUEST_TYPE.camera &&
|
|
829
|
+
hasAcceptedSnapshot &&
|
|
830
|
+
sameSceneOwner(acceptedSnapshotOwner, entry.owner);
|
|
808
831
|
markFrameFailure(entry.requestType, reason, options);
|
|
809
|
-
entry.resolve(currentStatus({
|
|
832
|
+
entry.resolve(currentStatus({
|
|
833
|
+
accepted: false,
|
|
834
|
+
reason,
|
|
835
|
+
attachmentRetained,
|
|
836
|
+
cameraRetryAllowed: attachmentRetained,
|
|
837
|
+
retainedSceneOwner: attachmentRetained
|
|
838
|
+
? retainedSceneOwner(acceptedSnapshotOwner)
|
|
839
|
+
: null
|
|
840
|
+
}));
|
|
810
841
|
}
|
|
811
842
|
|
|
812
843
|
function invalidateStatus(reason, entry = null) {
|
|
@@ -1087,6 +1118,7 @@
|
|
|
1087
1118
|
status.lastError = '';
|
|
1088
1119
|
if (entry.requestType === REQUEST_TYPE.snapshot) {
|
|
1089
1120
|
hasAcceptedSnapshot = true;
|
|
1121
|
+
acceptedSnapshotOwner = entry.owner;
|
|
1090
1122
|
if (entry.viewportEpoch === viewportEpoch) {
|
|
1091
1123
|
viewportAcknowledgementRequired = false;
|
|
1092
1124
|
}
|
package/wwwroot/index.html
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<link rel="manifest" href="manifest.webmanifest?v=20260815-app-icon-v2" />
|
|
14
14
|
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260629-ai-task-flow-v863" />
|
|
15
15
|
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260822-selection-unified-v857" />
|
|
16
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/native-hybrid.css?v=20260830-hybrid-compare-
|
|
16
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/native-hybrid.css?v=20260830-hybrid-compare-v002" />
|
|
17
17
|
<!-- ??좎뜦堉??Font Awesome (local) ??좎뜦堉??-->
|
|
18
18
|
<link rel="stylesheet" href="_content/MindExecution.Shared/lib/font-awesome/css/all.min.css" />
|
|
19
19
|
<!-- ??좎뜦堉??-->
|
|
@@ -615,7 +615,7 @@
|
|
|
615
615
|
}
|
|
616
616
|
|
|
617
617
|
const base = '_content/MindExecution.Shared/js/';
|
|
618
|
-
const scriptVersion = '20260831-native-hybrid-
|
|
618
|
+
const scriptVersion = '20260831-native-hybrid-recovery-v996';
|
|
619
619
|
const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
|
|
620
620
|
console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
|
|
621
621
|
const criticalScripts = [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
self.assetsManifest = {
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "33CyNy0Q",
|
|
3
3
|
"assets": [
|
|
4
4
|
{
|
|
5
5
|
"hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
|
|
@@ -46,7 +46,7 @@ self.assetsManifest = {
|
|
|
46
46
|
"url": "_content/MindExecution.Shared/css/mind-map-overrides.css"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
"hash": "sha256
|
|
49
|
+
"hash": "sha256-+5BTiY9k1zt6KlLaHxQpAJMts+/PIBsEwDPYFLnI4uc=",
|
|
50
50
|
"url": "_content/MindExecution.Shared/css/native-hybrid.css"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
@@ -170,11 +170,11 @@ self.assetsManifest = {
|
|
|
170
170
|
"url": "_content/MindExecution.Shared/js/mind-map-native-core-bridge.js"
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
|
-
"hash": "sha256-
|
|
173
|
+
"hash": "sha256-IuLCMNtyd+B5dFijme/H72LTZ4krzbV8jFJJ10x1Z8U=",
|
|
174
174
|
"url": "_content/MindExecution.Shared/js/mind-map-native-render-mirror.js"
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
|
-
"hash": "sha256-
|
|
177
|
+
"hash": "sha256-pdVa5FuUcNmIhb+NUBn/yNbqRpQXIeNDddOj/BbthVQ=",
|
|
178
178
|
"url": "_content/MindExecution.Shared/js/mind-map-native-render-webview2.js"
|
|
179
179
|
},
|
|
180
180
|
{
|
|
@@ -966,7 +966,7 @@ self.assetsManifest = {
|
|
|
966
966
|
"url": "icon-512.png"
|
|
967
967
|
},
|
|
968
968
|
{
|
|
969
|
-
"hash": "sha256-
|
|
969
|
+
"hash": "sha256-BUPjQ0zGJVybNJ7TRYs37u1X02hfMHQ/+CCDkenvv78=",
|
|
970
970
|
"url": "index.html"
|
|
971
971
|
},
|
|
972
972
|
{
|