@mindexec/cli 0.2.499 → 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.
Files changed (22) hide show
  1. package/package.json +1 -1
  2. package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
  3. package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
  4. package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
  5. package/scripts/remote-registry-follower-smoke.mjs +4 -8
  6. package/wwwroot/_content/MindExecution.Shared/css/native-hybrid.css +98 -0
  7. package/wwwroot/_content/MindExecution.Shared/js/mind-map-native-render-mirror.js +27 -0
  8. package/wwwroot/_content/MindExecution.Shared/js/mind-map-native-render-webview2.js +1275 -0
  9. package/wwwroot/_framework/{MindExecution.Core.s6sxjy1v7h.dll → MindExecution.Core.tzma6emhy9.dll} +0 -0
  10. package/wwwroot/_framework/{MindExecution.Kernel.yta9wud6wh.dll → MindExecution.Kernel.8uq80sy1fj.dll} +0 -0
  11. package/wwwroot/_framework/{MindExecution.Plugins.Admin.7aytj09ejo.dll → MindExecution.Plugins.Admin.9wa3rcqkgd.dll} +0 -0
  12. package/wwwroot/_framework/{MindExecution.Plugins.Business.wzj1pi81by.dll → MindExecution.Plugins.Business.9dppflwwaw.dll} +0 -0
  13. package/wwwroot/_framework/{MindExecution.Plugins.Concept.o6eyyttldg.dll → MindExecution.Plugins.Concept.vzlljp6zpk.dll} +0 -0
  14. package/wwwroot/_framework/{MindExecution.Plugins.Directory.rkqhevehjj.dll → MindExecution.Plugins.Directory.vygyxe6pw5.dll} +0 -0
  15. package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.qfmuwz1kj6.dll → MindExecution.Plugins.PlanMaster.i8uxoahd9m.dll} +0 -0
  16. package/wwwroot/_framework/{MindExecution.Plugins.YouTube.p6hp1w5nfq.dll → MindExecution.Plugins.YouTube.z0ibm6ffx5.dll} +0 -0
  17. package/wwwroot/_framework/{MindExecution.Shared.b4arhy9bqr.dll → MindExecution.Shared.cdr8vpcn5m.dll} +0 -0
  18. package/wwwroot/_framework/{MindExecution.Web.hlrui65yuu.dll → MindExecution.Web.8l14n1gl76.dll} +0 -0
  19. package/wwwroot/_framework/blazor.boot.json +21 -21
  20. package/wwwroot/index.html +3 -1
  21. package/wwwroot/service-worker-assets.js +32 -24
  22. package/wwwroot/service-worker.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.499",
3
+ "version": "0.2.501",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -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;
@@ -0,0 +1,98 @@
1
+ /*
2
+ * MindExec native hybrid comparison surface.
3
+ *
4
+ * The selectors stay dormant unless the trusted WebView2 bridge marks the
5
+ * document as hybrid-compare. The web layer remains the default/fallback;
6
+ * native or overlay pixels are exposed only after the current owner snapshot
7
+ * has been acknowledged by the C++ host.
8
+ */
9
+
10
+ html[data-mindexec-native-desktop-stage="hybrid-compare"] {
11
+ --mindexec-native-web-transferred-edge-opacity: 1;
12
+ --mindexec-native-web-node-opacity: 1;
13
+ }
14
+
15
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="web"] {
16
+ --mindexec-native-web-transferred-edge-opacity: 1;
17
+ --mindexec-native-web-node-opacity: 1;
18
+ }
19
+
20
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"] {
21
+ --mindexec-native-web-transferred-edge-opacity: 0.34;
22
+ --mindexec-native-web-node-opacity: 0.78;
23
+ }
24
+
25
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] {
26
+ --mindexec-native-web-transferred-edge-opacity: 0;
27
+ --mindexec-native-web-node-opacity: 1;
28
+ }
29
+
30
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"],
31
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"],
32
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"] body,
33
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] body,
34
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"] #app-container,
35
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] #app-container,
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,
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 {
40
+ background: transparent !important;
41
+ background-color: transparent !important;
42
+ }
43
+
44
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"] #mind-map-viewport,
45
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"] #mind-map-viewport {
46
+ background: transparent !important;
47
+ background-color: transparent !important;
48
+ background-image: none !important;
49
+ }
50
+
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;
61
+ }
62
+
63
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="overlay"]
64
+ #css3d-dom-wrapper .map-node {
65
+ opacity: var(--mindexec-native-web-node-opacity) !important;
66
+ }
67
+
68
+ /*
69
+ * Native mode transfers only node shells and edges. Text, editing, IME,
70
+ * images, video, embeds, controls and selection stay in WebView2. Remove the
71
+ * outer shell paint without hiding any descendants that carry that content.
72
+ */
73
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"]
74
+ #css3d-dom-wrapper .map-node {
75
+ background: transparent !important;
76
+ background-color: transparent !important;
77
+ border-color: transparent !important;
78
+ box-shadow: none !important;
79
+ }
80
+
81
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"]
82
+ #css3d-dom-wrapper .map-node-memo__shell,
83
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"]
84
+ #css3d-dom-wrapper .map-node-memo__header,
85
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"]
86
+ #css3d-dom-wrapper .map-node-memo__body,
87
+ html[data-mindexec-native-desktop-stage="hybrid-compare"][data-mindexec-native-compare-layer="native"]
88
+ #css3d-dom-wrapper .map-node-memo__body-view {
89
+ background-color: transparent !important;
90
+ }
91
+
92
+ @media (prefers-reduced-motion: no-preference) {
93
+ html[data-mindexec-native-desktop-stage="hybrid-compare"]
94
+ #mind-map-viewport .mind-map-business-automation-edge-layer.is-visual,
95
+ html[data-mindexec-native-desktop-stage="hybrid-compare"] #css3d-dom-wrapper .map-node {
96
+ transition: opacity 120ms linear;
97
+ }
98
+ }
@@ -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 });