@mindexec/cli 0.2.118 → 0.2.119

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.118",
3
+ "version": "0.2.119",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -12221,11 +12221,119 @@
12221
12221
  }
12222
12222
  }
12223
12223
 
12224
+ function isTemplateCardCanvasControlTarget(target) {
12225
+ return !!target?.closest?.([
12226
+ 'button',
12227
+ 'a',
12228
+ 'input',
12229
+ 'textarea',
12230
+ 'select',
12231
+ '[contenteditable="true"]',
12232
+ '[data-template-card-interactive="true"]',
12233
+ '[data-template-card-action]',
12234
+ '[data-template-option-id]',
12235
+ '[data-remote-fleet-action]',
12236
+ '[data-remote-fleet-control-popup]',
12237
+ '[data-remote-fleet-task-input]',
12238
+ '[data-remote-fleet-ai-toggle]',
12239
+ '[data-remote-fleet-search]',
12240
+ '.csv-table-scroll',
12241
+ '.csv-table-header-button',
12242
+ '.csv-table-cell'
12243
+ ].join(', '));
12244
+ }
12245
+
12246
+ function routeTemplateCardWheelToCanvas(event) {
12247
+ if (!_module || !event) {
12248
+ return false;
12249
+ }
12250
+
12251
+ if (typeof window.MindMapInteractions?.routeCanvasWheelEvent === 'function') {
12252
+ window.MindMapInteractions.routeCanvasWheelEvent(_module, event);
12253
+ return true;
12254
+ }
12255
+
12256
+ if (window.MindMapInteractions?.shouldTreatWheelAsZoom?.(_module, event) === true) {
12257
+ window.MindMapInteractions?.routeWheelEventToZoom?.(_module, event);
12258
+ } else {
12259
+ window.MindMapInteractions?.routeCtrlWheelEventToVerticalScroll?.(_module, event);
12260
+ }
12261
+ return true;
12262
+ }
12263
+
12264
+ function bindTemplateCardCanvasNavigation(container, nodeModel) {
12265
+ const card = container?.classList?.contains?.('map-node-template-card')
12266
+ ? container
12267
+ : container?.querySelector?.('.map-node-template-card');
12268
+ if (!card || typeof card.addEventListener !== 'function') {
12269
+ return;
12270
+ }
12271
+
12272
+ if (card._templateCardCanvasNavigationModule === _module
12273
+ && card._templateCardWheelNavigationHandler
12274
+ && card._templateCardPanNavigationHandler) {
12275
+ return;
12276
+ }
12277
+
12278
+ if (card._templateCardWheelNavigationHandler) {
12279
+ card.removeEventListener('wheel', card._templateCardWheelNavigationHandler, true);
12280
+ }
12281
+ if (card._templateCardPanNavigationHandler) {
12282
+ card.removeEventListener('mousedown', card._templateCardPanNavigationHandler, true);
12283
+ }
12284
+
12285
+ const nodeId = String(getNodeId(nodeModel) || card.dataset?.nodeId || '').trim();
12286
+ const isRemoteFleetCard = isRemoteFleetMonitorNode(nodeModel);
12287
+
12288
+ const wheelHandler = event => {
12289
+ routeTemplateCardWheelToCanvas(event);
12290
+ };
12291
+
12292
+ const panHandler = event => {
12293
+ const button = Number(event?.button);
12294
+ if (button === 1 || button === 2) {
12295
+ const started = window.MindMapInteractions?.beginPanFromMouseEvent?.(
12296
+ _module,
12297
+ event,
12298
+ card
12299
+ ) === true;
12300
+ if (started) {
12301
+ event.stopImmediatePropagation?.();
12302
+ }
12303
+ return;
12304
+ }
12305
+
12306
+ if (button !== 0 || isRemoteFleetCard || !nodeId || isTemplateCardCanvasControlTarget(event.target)) {
12307
+ return;
12308
+ }
12309
+
12310
+ const started = window.MindMapInteractions?.startNodeDragFromDom?.(
12311
+ _module,
12312
+ event,
12313
+ nodeId,
12314
+ { source: 'template-card' }
12315
+ ) === true;
12316
+ if (started) {
12317
+ event.stopImmediatePropagation?.();
12318
+ }
12319
+ };
12320
+
12321
+ card._templateCardCanvasNavigationModule = _module;
12322
+ card._templateCardWheelNavigationHandler = wheelHandler;
12323
+ card._templateCardPanNavigationHandler = panHandler;
12324
+ card.addEventListener('wheel', wheelHandler, { passive: false, capture: true });
12325
+ card.addEventListener('mousedown', panHandler, { passive: false, capture: true });
12326
+ }
12327
+
12224
12328
  function bindTemplateLauncherNodeEvents(container, nodeModel) {
12225
12329
  const card = container?.classList?.contains?.('map-node-template-card')
12226
12330
  ? container
12227
12331
  : container?.querySelector?.('.map-node-template-card');
12228
- if (!card || card.dataset.templateCardEventsBound === 'true') return;
12332
+ if (!card) return;
12333
+
12334
+ bindTemplateCardCanvasNavigation(card, nodeModel);
12335
+
12336
+ if (card.dataset.templateCardEventsBound === 'true') return;
12229
12337
 
12230
12338
  card.dataset.templateCardEventsBound = 'true';
12231
12339
  card._templateCardConfig = getTemplateCardConfig(nodeModel);
@@ -16256,6 +16364,15 @@
16256
16364
  if (bodyView._remoteFleetNodeSelectionBound !== true) {
16257
16365
  bodyView._remoteFleetNodeSelectionBound = true;
16258
16366
  bodyView.addEventListener('mousedown', event => {
16367
+ if (event.button === 1 || event.button === 2) {
16368
+ window.MindMapInteractions?.beginPanFromMouseEvent?.(_module, event, bodyView);
16369
+ return;
16370
+ }
16371
+
16372
+ if (event.button !== 0) {
16373
+ return;
16374
+ }
16375
+
16259
16376
  const controlTarget = event.target?.closest?.('button, input, textarea, select, [contenteditable="true"]');
16260
16377
  if (controlTarget) {
16261
16378
  return;
@@ -17297,7 +17414,16 @@
17297
17414
  });
17298
17415
  getDeviceCards().forEach(card => {
17299
17416
  ['mousedown', 'mouseup', 'dblclick'].forEach(eventName => {
17300
- card.addEventListener(eventName, event => event.stopPropagation());
17417
+ card.addEventListener(eventName, event => {
17418
+ if (event.button === 1 || event.button === 2) {
17419
+ if (eventName === 'mousedown') {
17420
+ window.MindMapInteractions?.beginPanFromMouseEvent?.(_module, event, card);
17421
+ }
17422
+ return;
17423
+ }
17424
+
17425
+ event.stopPropagation();
17426
+ });
17301
17427
  });
17302
17428
  card.addEventListener('dblclick', event => {
17303
17429
  event.preventDefault();
@@ -20882,6 +21008,9 @@
20882
21008
  && !isRemoteFleetMonitorNode(nodeModel)) {
20883
21009
  bindTemplateLauncherNodeEvents(clonedElement, nodeModel);
20884
21010
  }
21011
+ if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() === 'templatelauncher') {
21012
+ bindTemplateCardCanvasNavigation(clonedElement, nodeModel);
21013
+ }
20885
21014
  wrapper.appendChild(clonedElement);
20886
21015
  if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() !== 'templatelauncher'
20887
21016
  || isRemoteFleetMonitorNode(nodeModel)) {
@@ -21115,6 +21244,7 @@
21115
21244
 
21116
21245
  const bodyView = card.querySelector('.template-card__remote-fleet-body');
21117
21246
  renderRemoteFleetMonitor(bodyView, nodeModel);
21247
+ bindTemplateCardCanvasNavigation(card, nodeModel);
21118
21248
  return;
21119
21249
  }
21120
21250
 
@@ -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=20260616-remote-ws-control-frames-v573" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260616-remote-ws-control-frames-v573" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260616-template-mdm-input-routing-v574" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260616-template-mdm-input-routing-v574" />
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 = '20260616-remote-ws-control-frames-v573';
582
+ const scriptVersion = '20260616-template-mdm-input-routing-v574';
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": "31UVI5Fx",
2
+ "version": "j2+Rgs1I",
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-vpLVZnaAN2JQkbnKVrjBOCGkbHU0uveNB4vqR1sMyHg=",
89
+ "hash": "sha256-x6IqfFnk+HJevHd67L05oQLv68rKhUOs+PFwvnpYjp4=",
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-VJOyHChPIe+gqQk3r5g4qTjsKYTrLXoP6I5L+o4ZYzE=",
837
+ "hash": "sha256-A1rOSgC5wEjKNEOppREqJ/PkL33qbguPos0pVcG6L/4=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 31UVI5Fx */
1
+ /* Manifest version: j2+Rgs1I */
2
2
  // Hosted deployments should prefer the network over stale offline caches.
3
3
  // This service worker immediately clears old Blazor offline caches and unregisters itself.
4
4