diff --git a/gui-js/apps/minsky-electron/src/app/api/preload.ts b/gui-js/apps/minsky-electron/src/app/api/preload.ts
index a31bea1fc..5e88f049e 100644
--- a/gui-js/apps/minsky-electron/src/app/api/preload.ts
+++ b/gui-js/apps/minsky-electron/src/app/api/preload.ts
@@ -9,4 +9,5 @@ contextBridge.exposeInMainWorld('electron', {
ipcRendererOff: (channel: string, listener) => ipcRenderer.removeListener(channel, listener),
ipcRenderer: { ...ipcRenderer, send: ipcRenderer.send, sendSync: ipcRenderer.sendSync, invoke: ipcRenderer.invoke },
platform: process.platform,
+ electronVersion: process.versions.electron,
});
diff --git a/gui-js/apps/minsky-electron/src/app/app.ts b/gui-js/apps/minsky-electron/src/app/app.ts
index c328bb74a..1d9c85561 100644
--- a/gui-js/apps/minsky-electron/src/app/app.ts
+++ b/gui-js/apps/minsky-electron/src/app/app.ts
@@ -239,8 +239,11 @@ export default class App {
App.BrowserWindow = browserWindow;
App.application = app;
- App.application.commandLine.appendSwitch('disable-gpu');
// Rendering was not working on some window's machines without disabling gpu
+ if (process.platform === 'win32') {
+ app.commandLine.appendSwitch('disable-gpu');
+ app.commandLine.appendSwitch('disable-direct-composition');
+ }
App.application.commandLine.appendSwitch('high-dpi-support', '1');
// This probably supports high-res fonts, but we don't know exactly what implications it has!
diff --git a/gui-js/libs/core/src/lib/services/electron/electron.service.ts b/gui-js/libs/core/src/lib/services/electron/electron.service.ts
index 269d48329..306fc37ce 100644
--- a/gui-js/libs/core/src/lib/services/electron/electron.service.ts
+++ b/gui-js/libs/core/src/lib/services/electron/electron.service.ts
@@ -14,6 +14,7 @@ export class ElectronService {
minsky: Minsky;
on: (channel: string, listener) => void;
removeListener: (channel: string, listener) => void;
+ electronVersion: string;
constructor() {
this.minsky=new Minsky("minsky");
@@ -21,6 +22,7 @@ export class ElectronService {
if (this.isElectron) {
this.ipcRenderer = window['electron'].ipcRenderer;
this.platform = window['electron'].platform;
+ this.electronVersion = window['electron'].electronVersion;
this.on = window['electron'].ipcRendererOn;
this.removeListener = window['electron'].ipcRendererOff;
diff --git a/gui-js/libs/menu/src/lib/file/about/about.component.html b/gui-js/libs/menu/src/lib/file/about/about.component.html
index d8d918ccc..b537f3ca8 100644
--- a/gui-js/libs/menu/src/lib/file/about/about.component.html
+++ b/gui-js/libs/menu/src/lib/file/about/about.component.html
@@ -8,6 +8,7 @@
| Minsky GUI | {{ frontEndVersion ? frontEndVersion : 'NA' }} |
| Ravel | {{ ravelVersion ? ravelVersion : 'NA' }} |
| Angular | {{ angularVersion }} |
+ | Electron | {{ electronVersion }} |
Minsky is FREE software, distributed under the
GNU General Public
diff --git a/gui-js/libs/menu/src/lib/file/about/about.component.ts b/gui-js/libs/menu/src/lib/file/about/about.component.ts
index 10a645985..bb967dac2 100644
--- a/gui-js/libs/menu/src/lib/file/about/about.component.ts
+++ b/gui-js/libs/menu/src/lib/file/about/about.component.ts
@@ -13,7 +13,8 @@ export class AboutComponent implements OnInit {
minskyVersion: string;
frontEndVersion: string;
ravelVersion: string;
-
+ electronVersion: string
+
constructor(private electronService: ElectronService, private cdRef: ChangeDetectorRef,){}
ngOnInit(): void {
@@ -22,8 +23,10 @@ export class AboutComponent implements OnInit {
this.ravelVersion = await minsky.ravelVersion();
this.minskyVersion = await minsky.minskyVersion();
this.frontEndVersion=version;
+ this.electronVersion=this.electronService.electronVersion;
// Ensure UI updates even if backend calls resolve outside Angular's zone.
- this.cdRef.detectChanges(); })();
+ this.cdRef.detectChanges();
+ })();
}
async closeWindow() {this.electronService.closeWindow();}
diff --git a/gui-js/package-lock.json b/gui-js/package-lock.json
index fbf31c95d..6df374393 100644
--- a/gui-js/package-lock.json
+++ b/gui-js/package-lock.json
@@ -45,7 +45,7 @@
"@nx/js": "^22.6.5",
"@nx/workspace": "^22.6.5",
"@types/jest": "^29.0.0",
- "electron": "^37.0.0",
+ "electron": "^42.0.0",
"electron-builder": "^24.13.3",
"exitzero": "^1.0.1",
"is-electron": "^2.2.2",
@@ -3021,35 +3021,37 @@
}
},
"node_modules/@electron/get": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
- "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-5.0.0.tgz",
+ "integrity": "sha512-pjoBpru1KdEtcExBnuHAP1cAc/5faoedw0hzJkL3o4/IJp7HNF1+fbrdxT3gMYRX2oJfvnA/WXeCTVQpYYxyJA==",
"dev": true,
"license": "MIT",
"dependencies": {
"debug": "^4.1.1",
- "env-paths": "^2.2.0",
- "fs-extra": "^8.1.0",
- "got": "^11.8.5",
+ "env-paths": "^3.0.0",
+ "graceful-fs": "^4.2.11",
"progress": "^2.0.3",
- "semver": "^6.2.0",
+ "semver": "^7.6.3",
"sumchecker": "^3.0.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=22.12.0"
},
"optionalDependencies": {
- "global-agent": "^3.0.0"
+ "undici": "^7.24.4"
}
},
- "node_modules/@electron/get/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "node_modules/@electron/get/node_modules/env-paths": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz",
+ "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==",
"dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@electron/notarize": {
@@ -13542,22 +13544,22 @@
}
},
"node_modules/electron": {
- "version": "37.10.3",
- "resolved": "https://registry.npmjs.org/electron/-/electron-37.10.3.tgz",
- "integrity": "sha512-3IjCGSjQmH50IbW2PFveaTzK+KwcFX9PEhE7KXb9v5IT8cLAiryAN7qezm/XzODhDRlLu0xKG1j8xWBtZ/bx/g==",
+ "version": "42.3.0",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-42.3.0.tgz",
+ "integrity": "sha512-9ZiLdRXk+WDxW1OgIUz8J2rIQ5TYU9o629gCOjU48Q3dQiOmym7osWsH5Ubs/Jh4uuFLn6m6SBD2rmRXLAPz9g==",
"dev": true,
- "hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "@electron/get": "^2.0.0",
- "@types/node": "^22.7.7",
+ "@electron/get": "^5.0.0",
+ "@types/node": "^24.9.0",
"extract-zip": "^2.0.1"
},
"bin": {
- "electron": "cli.js"
+ "electron": "cli.js",
+ "install-electron": "install.js"
},
"engines": {
- "node": ">= 12.20.55"
+ "node": ">= 22.12.0"
}
},
"node_modules/electron-builder": {
@@ -13829,19 +13831,19 @@
}
},
"node_modules/electron/node_modules/@types/node": {
- "version": "22.19.19",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz",
- "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==",
+ "version": "24.12.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz",
+ "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "undici-types": "~6.21.0"
+ "undici-types": "~7.16.0"
}
},
"node_modules/electron/node_modules/undici-types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
"dev": true,
"license": "MIT"
},
@@ -15446,21 +15448,6 @@
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"license": "MIT"
},
- "node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
"node_modules/fs-minipass": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@@ -16166,21 +16153,6 @@
}
}
},
- "node_modules/html-encoding-sniffer/node_modules/@noble/hashes": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.2.0.tgz",
- "integrity": "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">= 20.19.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -19373,21 +19345,6 @@
}
}
},
- "node_modules/jsdom/node_modules/@noble/hashes": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.2.0.tgz",
- "integrity": "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">= 20.19.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
"node_modules/jsdom/node_modules/lru-cache": {
"version": "11.5.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz",
@@ -28780,21 +28737,6 @@
"punycode": "^2.1.0"
}
},
- "node_modules/utf-8-validate": {
- "version": "5.0.10",
- "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
- "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=6.14.2"
- }
- },
"node_modules/utf8": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
@@ -29751,21 +29693,6 @@
}
}
},
- "node_modules/whatwg-url/node_modules/@noble/hashes": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.2.0.tgz",
- "integrity": "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">= 20.19.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/gui-js/package.json b/gui-js/package.json
index c1488df2d..e68b78b96 100644
--- a/gui-js/package.json
+++ b/gui-js/package.json
@@ -176,7 +176,7 @@
"@nx/js": "^22.6.5",
"@nx/workspace": "^22.6.5",
"@types/jest": "^29.0.0",
- "electron": "^37.0.0",
+ "electron": "^42.0.0",
"electron-builder": "^24.13.3",
"exitzero": "^1.0.1",
"is-electron": "^2.2.2",