@mindexec/cli 0.2.453 → 0.2.454

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 (33) hide show
  1. package/electron/main.cjs +12 -0
  2. package/electron/source-smoke.mjs +15 -0
  3. package/package.json +2 -2
  4. package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
  5. package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
  6. package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
  7. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +210 -244
  8. package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +77 -103
  9. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +5 -7
  10. package/wwwroot/_content/MindExecution.Shared/js/mind-map-logic-workers.js +9 -3
  11. package/wwwroot/_content/MindExecution.Shared/js/mind-map-render-plan.js +294 -12
  12. package/wwwroot/_framework/{MindExecution.Core.9h7x2mjn0w.dll → MindExecution.Core.sxhdhda5s2.dll} +0 -0
  13. package/wwwroot/_framework/{MindExecution.Kernel.8te3ay3qs6.dll → MindExecution.Kernel.j8gyjmvupu.dll} +0 -0
  14. package/wwwroot/_framework/{MindExecution.Plugins.Admin.imt43kggvu.dll → MindExecution.Plugins.Admin.91tk6u6ry5.dll} +0 -0
  15. package/wwwroot/_framework/{MindExecution.Plugins.Business.26yozgyvan.dll → MindExecution.Plugins.Business.b7h6v1eygj.dll} +0 -0
  16. package/wwwroot/_framework/{MindExecution.Plugins.Concept.k7fd1qvmfx.dll → MindExecution.Plugins.Concept.i2zgmkmpwv.dll} +0 -0
  17. package/wwwroot/_framework/{MindExecution.Plugins.Directory.88ng22x3y0.dll → MindExecution.Plugins.Directory.r6is6647n2.dll} +0 -0
  18. package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.ll20yqlc09.dll → MindExecution.Plugins.PlanMaster.s95n9skblk.dll} +0 -0
  19. package/wwwroot/_framework/{MindExecution.Plugins.YouTube.gqu5xngvav.dll → MindExecution.Plugins.YouTube.33l2m0y23q.dll} +0 -0
  20. package/wwwroot/_framework/{MindExecution.Shared.6ivt1fatt3.dll → MindExecution.Shared.hvehzbzkt7.dll} +0 -0
  21. package/wwwroot/_framework/{MindExecution.Web.7tki7xqpt0.dll → MindExecution.Web.krui41i71h.dll} +0 -0
  22. package/wwwroot/_framework/blazor.boot.json +21 -21
  23. package/wwwroot/app-icon-1024.png +0 -0
  24. package/wwwroot/apple-touch-icon.png +0 -0
  25. package/wwwroot/favicon-32x32.png +0 -0
  26. package/wwwroot/favicon.ico +0 -0
  27. package/wwwroot/icon-192.png +0 -0
  28. package/wwwroot/icon-512.png +0 -0
  29. package/wwwroot/index.html +8 -4
  30. package/wwwroot/manifest.webmanifest +21 -19
  31. package/wwwroot/mindexec-favicon-v2.png +0 -0
  32. package/wwwroot/service-worker-assets.js +51 -31
  33. package/wwwroot/service-worker.js +1 -1
package/electron/main.cjs CHANGED
@@ -11,6 +11,7 @@ const DEFAULT_BRIDGE_PORT = 5147;
11
11
  const DEFAULT_REMOTE_HUB_PORT = 5198;
12
12
  const STARTUP_TIMEOUT_MS = 45_000;
13
13
  const HEALTH_POLL_MS = 250;
14
+ const DESKTOP_APP_ID = 'com.mindexec.desktop';
14
15
 
15
16
  let mainWindow = null;
16
17
  let bridgeChild = null;
@@ -20,6 +21,11 @@ let activeBridgePort = DEFAULT_BRIDGE_PORT;
20
21
  let activeRemoteHubPort = DEFAULT_REMOTE_HUB_PORT;
21
22
  let activeWorkspace = '';
22
23
 
24
+ function resolveDesktopIconPath() {
25
+ const iconPath = path.resolve(__dirname, '..', 'wwwroot', 'icon-512.png');
26
+ return fs.existsSync(iconPath) ? iconPath : undefined;
27
+ }
28
+
23
29
  function parsePort(value) {
24
30
  const parsed = Number.parseInt(String(value ?? ''), 10);
25
31
  return Number.isInteger(parsed) && parsed > 0 && parsed <= 65_535 ? parsed : 0;
@@ -199,6 +205,7 @@ function createMainWindow() {
199
205
  autoHideMenuBar: true,
200
206
  backgroundColor: '#0b1020',
201
207
  title: 'MindExec',
208
+ icon: resolveDesktopIconPath(),
202
209
  webPreferences: {
203
210
  contextIsolation: true,
204
211
  nodeIntegration: false,
@@ -211,6 +218,7 @@ function createMainWindow() {
211
218
  action: 'allow',
212
219
  overrideBrowserWindowOptions: {
213
220
  autoHideMenuBar: true,
221
+ icon: resolveDesktopIconPath(),
214
222
  webPreferences: {
215
223
  contextIsolation: true,
216
224
  nodeIntegration: false,
@@ -299,6 +307,10 @@ async function launchDesktop() {
299
307
  }
300
308
  }
301
309
 
310
+ if (process.platform === 'win32') {
311
+ app.setAppUserModelId(DESKTOP_APP_ID);
312
+ }
313
+
302
314
  const hasSingleInstanceLock = app.requestSingleInstanceLock();
303
315
  if (!hasSingleInstanceLock) {
304
316
  app.quit();
@@ -2,6 +2,7 @@ import assert from 'node:assert/strict';
2
2
  import fs from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
+ import sharp from 'sharp';
5
6
 
6
7
  const electronDirectory = path.dirname(fileURLToPath(import.meta.url));
7
8
  const packageRoot = path.resolve(electronDirectory, '..');
@@ -16,6 +17,17 @@ assert.ok(packageJson.files?.includes('electron/'), 'The npm package must includ
16
17
  assert.match(packageJson.scripts?.['desktop:build:win'] || '', /electron-builder/, 'Windows build script is missing.');
17
18
  assert.match(packageJson.scripts?.['test:desktop:win'] || '', /windows-package-smoke/, 'Packaged smoke test is missing.');
18
19
 
20
+ assert.equal(
21
+ packageJson.build?.win?.icon,
22
+ '../MindExecution.Web/wwwroot/app-icon-1024.png',
23
+ 'Electron must build from the canonical 1024px MindExec icon.'
24
+ );
25
+ const builderIconPath = path.resolve(packageRoot, packageJson.build.win.icon);
26
+ assert.ok(fs.existsSync(builderIconPath), `Electron builder icon is missing: ${builderIconPath}`);
27
+ const builderIconMetadata = await sharp(builderIconPath).metadata();
28
+ assert.equal(builderIconMetadata.width, 1024, 'Electron builder icon must be 1024px wide.');
29
+ assert.equal(builderIconMetadata.height, 1024, 'Electron builder icon must be 1024px tall.');
30
+
19
31
  const targets = packageJson.build?.win?.target || [];
20
32
  assert.ok(targets.some((target) => target.target === 'nsis'), 'NSIS target is required.');
21
33
  assert.ok(targets.some((target) => target.target === 'portable'), 'Portable target is required.');
@@ -29,11 +41,14 @@ assert.match(mainSource, /wwwroot.*index\.html/s, 'Electron must verify its bund
29
41
  assert.match(mainSource, /resolveDedicatedPort/, 'Electron must allocate dedicated local ports.');
30
42
  assert.doesNotMatch(mainSource, /adopted|probeBridge/, 'Electron must not adopt an external LocalBridge.');
31
43
  assert.match(mainSource, /MINDEXEC_DESKTOP_SMOKE_RESULT/, 'Packaged runtime smoke contract is missing.');
44
+ assert.match(mainSource, /icon:\s*resolveDesktopIconPath\(\)/, 'Electron windows must use the packaged MindExec icon.');
45
+ assert.match(mainSource, /app\.setAppUserModelId\(DESKTOP_APP_ID\)/, 'Windows taskbar identity must use the stable app id.');
32
46
 
33
47
  console.log(JSON.stringify({
34
48
  ok: true,
35
49
  appId: packageJson.build.appId,
36
50
  version: packageJson.version,
37
51
  runtimeMode: 'bundled',
52
+ icon: packageJson.build.win.icon,
38
53
  targets: targets.map((target) => `${target.target}:${target.arch.join(',')}`)
39
54
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.453",
3
+ "version": "0.2.454",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -118,7 +118,7 @@
118
118
  "node_modules/**/*"
119
119
  ],
120
120
  "win": {
121
- "icon": "../MindExecution.Web/wwwroot/icon-512.png",
121
+ "icon": "../MindExecution.Web/wwwroot/app-icon-1024.png",
122
122
  "executableName": "MindExec",
123
123
  "target": [
124
124
  {