clean up electron build, merge electron mod into core

This commit is contained in:
Stewart Allen 2025-11-12 23:29:36 -05:00
commit a66d7fe202
12 changed files with 69 additions and 146 deletions

View file

@ -9,8 +9,8 @@ const appDir = path.join(usrDir, 'gapp');
const cnfDir = path.join(appDir, 'conf');
const logDir = path.join(appDir, 'logs');
const datDir = path.join(appDir, 'data');
const debug = process.argv.slice(2).map(v => v.replaceAll('-', '')).contains('debugg');
const devel = process.argv.slice(2).map(v => v.replaceAll('-', '')).contains('devel');
const debug = process.argv.slice(2).map(v => v.replaceAll('-', '')).indexOf('debugg') >= 0;
const devel = process.argv.slice(2).map(v => v.replaceAll('-', '')).indexOf('devel') >= 0;
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = true;
@ -40,21 +40,29 @@ function createWindow() {
width: 1600,
height: 900,
webPreferences: {
// contextIsolation: true,
// nodeIntegration: false,
// sandbox: true,
// preload: undefined
// nodeIntegration: true,
// contextIsolation: false
// preload: path.join(__dirname, 'preload.js')
}
});
const { webContents } = mainWindow;
mainWindow.loadURL('http://localhost:5309/kiri');
// default normal url navigation or page opens to happen outside Electron
mainWindow.webContents.setWindowOpenHandler((details) => {
webContents.setWindowOpenHandler((details) => {
// console.log('EXTERNAL', details);
shell.openExternal(details.url);
return { action: 'deny' }
});
// prevent "other" urls from opening inside Electron (alerts are problematic)
mainWindow.webContents.on('will-navigate', (event, url) => {
webContents.on('will-navigate', (event, url) => {
// console.log('DIVERT', url);
if (url.endsWith('/kiri') || url.endsWith('/kiri/')) {
return;
@ -66,9 +74,13 @@ function createWindow() {
shell.openExternal(url);
});
webContents.on('did-finish-load', () => {
mainWindow.webContents.executeJavaScript(`{ let x = document.getElementById('app-quit'); if (x) { x.onclick = () => window.close() } }; null;`);
});
if (devel) {
console.log("opening developer tools");
mainWindow.webContents.openDevTools();
webContents.openDevTools();
}
}
@ -77,9 +89,7 @@ app.on('ready', () => {
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {

View file

@ -5,6 +5,7 @@ exports.default = async function notarizing(context) {
const { electronPlatformName, appOutDir } = context;
if (process.env.SKIPNOT || electronPlatformName !== 'darwin') {
console.log('SKIP NOTARIZING');
return;
}

View file

@ -4,28 +4,25 @@ const server = require('@gridspace/app-server');
// deref src, web, mod for windows
const srcTmp = path.join('tmp','src');
fs.copySync("src", srcTmp, { dereference: true });
fs.copySync("src", srcTmp, { dereference: true, filter:(src) => {
return src.indexOf('web/pack') < 0;
} });
const webTmp = path.join('tmp','web');
fs.copySync("web", webTmp, { dereference: true });
fs.copySync("web", webTmp, { dereference: true, filter:(src) => {
return src.indexOf('web/boot') < 0;
} });
const modTmp = path.join('tmp','mod');
if (fs.existsSync("mod"))
fs.copySync("mod", modTmp, { dereference: true, filter:(src,dst) => {
const ok =
src === 'mod' ||
src.indexOf('mod/standalone') === 0 ||
src.indexOf('mod/node_modules') === 0;
const ok = src === 'mod' || src.indexOf('mod/standalone') === 0;
return ok;
} });
const modsTmp = path.join('tmp','mods');
fs.copySync("mods", modsTmp, { dereference: true, filter:(src,dst) => {
const ok =
src === 'mods' ||
src.indexOf('mods/bambu') === 0 ||
src.indexOf('mods/electron') === 0 ||
src.indexOf('mods/node_modules') === 0;
const ok = src === 'mods' || src.indexOf('mods/bambu') === 0;
return ok;
} });

View file

@ -1,15 +0,0 @@
if (self.kiri && !self.kiri.electron) {
self.kiri.electron = {};
self.kiri.load(api => {
console.log('ELECTRON MODULE LOADED');
api.event.on('init-done', () => {
$('app-name-text').innerText = "More Info";
$('top-sep').style.display = 'flex';
});
api.stats.set('kiri', api.version + 'e');
});
}
if (self.mesh && self.mesh) {
self.mesh.electron = {};
}

View file

@ -1,9 +0,0 @@
/**
* for electron standalone build support
*/
module.exports = function(server) {
// insert script before all others in kiri client
server.inject("kiri", "electron.js");
// insert scripts into mesh client
server.inject("mesh", "electron.js");
};

View file

@ -82,39 +82,39 @@
"webpack-cli": "^5.1.4"
},
"scripts": {
"setup": "npm run setup-mods && npm i && npm run clean && npm run webpack-ext",
"setup-mods": "cd mods && npm i",
"build": "npm run prebuild && electron-builder",
"build-nopublish": "npm run prebuild && electron-builder --publish never",
"build-debug": "npm run prebuild && DEBUG=electron-builder electron-builder",
"build-linux": "npm run build -- --linux --x64",
"build-linux-arm": "npm run build -- --linux --arm64",
"build-win": "npm run build -- --win --x64",
"build-win-arm": "npm run build -- --win --arm64",
"build-mac": "npm run build -- --mac --arm64",
"build-linux": "npm run build -- --linux --x64",
"build-mac-intel": "npm run build -- --mac --x64",
"bundle": "COMPRESS=1 npm run bundle:prod",
"bundle:dev": "node bin/bundler.mjs",
"build-mac": "npm run build -- --mac --arm64",
"build-nopublish": "npm run prebuild && electron-builder --publish never",
"build-win-arm": "npm run build -- --win --arm64",
"build-win": "npm run build -- --win --x64",
"build": "npm run prebuild && electron-builder",
"bundle:dev": "node bin/bundler.mjs bin/bundle.config.json",
"bundle:prod": "node bin/bundler.mjs bin/bundle-prod.config.json",
"bundle": "COMPRESS=1 npm run bundle:prod",
"clean": "rm -rf alt build data dist src/pack src.old tmp web.old .bcache",
"docs-dev": "docusaurus start --config conf/docusaurus.config.js",
"docs-build": "docusaurus build --config conf/docusaurus.config.js",
"docs-serve": "docusaurus serve --config conf/docusaurus.config.js",
"docs-check": "prettier --config ./conf/prettier.config.js ./docs --check",
"dryrun": "gs-app-server --debug --single --alt --dryrun",
"dev": "npm run pack-dev && gs-app-server --debug --single",
"prod": "npm run pack-prod && gs-app-server",
"start": "npm run prebuild prod && electron .",
"start-dev": "npm run prebuild prod && electron . --devel",
"start-dbg": "npm run prebuild && electron . --debugg",
"start-ddb": "npm run prebuild && electron . --devel --debugg",
"mk-links": "find src web -type l | xargs -I{} sh -c 'echo \"{},$(readlink {})\"' > conf/links.csv",
"docs-build": "docusaurus build --config conf/docusaurus.config.js",
"docs-check": "prettier --config ./conf/prettier.config.js ./docs --check",
"docs-dev": "docusaurus start --config conf/docusaurus.config.js",
"docs-serve": "docusaurus serve --config conf/docusaurus.config.js",
"dryrun": "gs-app-server --debug --single --alt --dryrun",
"mac-verify": "spctl --assess -vv --type install dist/*/*.app",
"prebuild": "npm run setup && npm run webpack-src prod && node bin/electron-pre.js",
"postbuild": "node bin/electron-post.js",
"preinstall": "node bin/install-pre.js",
"mk-links": "find src web -type l | xargs -I{} sh -c 'echo \"{},$(readlink {})\"' > conf/links.csv",
"pack-dev": "npm run dryrun && npm run webpack-src && npm run dryrun && npm run bundle:dev",
"pack-prod": "npm run dryrun && npm run webpack-src prod && npm run dryrun && npm run bundle",
"postbuild": "node bin/electron-post.js",
"prebuild": "npm run setup && npm run pack-dev prod && node bin/electron-pre.js",
"preinstall": "node bin/install-pre.js",
"prod": "npm run pack-prod && gs-app-server",
"setup-mods": "cd mods && npm i",
"setup": "npm run setup-mods && npm i && npm run clean && npm run webpack-ext",
"start-dbg": "npm run prebuild && electron . --debugg",
"start-ddb": "npm run prebuild && electron . --devel --debugg",
"start-dev": "npm run prebuild prod && electron . --devel",
"start": "npm run prebuild prod && electron .",
"webpack-ext": "npm run webpack-three && npm run webpack-zip",
"webpack-src": "node bin/esbuild.config.mjs",
"webpack-three": "npx webpack --config bin/webpack-three-esm.js",
@ -128,52 +128,17 @@
"artifactName": "KiriMoto-${os}-${arch}.${ext}",
"files": [
{
"from": "tmp/src",
"to": "src",
"filter": [
"**/*"
]
},
{
"from": "tmp/web",
"to": "web",
"filter": [
"**/*"
]
},
{
"from": "tmp/mod",
"to": "mod",
"filter": [
"**/*"
]
},
{
"from": "tmp/mod/node_modules",
"to": "mod/node_modules",
"filter": [
"**/*"
]
},
{
"from": "tmp/mods",
"to": "mods",
"filter": [
"**/*"
]
},
{
"from": "tmp/mods/node_modules",
"to": "mods/node_modules",
"from": "tmp",
"to": "",
"filter": [
"**/*"
]
},
"app-el.js",
"app.js",
"bin/*",
"conf/**/*",
"data/cache/**/*",
"app-el.js",
"app.js",
"package.json"
],
"extraFiles": [],

View file

@ -143,6 +143,7 @@ export const api = {
dialog,
doit,
event,
electron: navigator.userAgent.includes('Electron'),
feature,
function: functions,
group,

View file

@ -39,14 +39,19 @@ function checkReady() {
if (document.readyState === 'complete') {
let bootctrl = navigator.serviceWorker.controller;
console.log(`kiri | boot ctrl | ` + (bootctrl ? true : false));
kiri.api = run();
self.$ = kiri.api.web.$;
let api = kiri.api = run();
self.$ = api.web.$;
for (let fn of load) {
safeExec(fn);
}
load = undefined;
kiri.api.event.emit('load-done', stats);
if (bootctrl) {
api.event.emit('load-done', stats);
if (api.electron) {
$('install').classList.add('hide');
$('app-quit').classList.remove('hide');
$('app-name-text').innerText = "More Info";
$('top-sep').style.display = 'flex';
} else if (bootctrl) {
$('install').classList.add('hide');
$('uninstall').classList.remove('hide');
$('uninstall').onclick = () => {

View file

@ -99,6 +99,7 @@ function init() {
// for electron
self.mesh = { api };
self.electron = navigator.userAgent.includes('Electron');
}
// restore space layout and view from previous session

View file

@ -1,37 +0,0 @@
const service_worker = navigator.serviceWorker;
import { version } from '../moto/license.js';
async function start_service_worker() {
function debug() {
console.log(`[${version}]`, ...arguments);
}
// install service worker
debug('service worker registration');
try {
const reg = await navigator
.serviceWorker
.register(`/code/service.js?${version}`, { scope: "/" });
if (reg.installing) {
debug('service worker installing');
} else if (reg.waiting) {
debug('service worker waiting');
} else if (reg.active) {
debug('service worker active');
} else {
debug({ service_worker: reg });
}
if (service_worker.controller) {
service_worker.controller.postMessage('ctrl message');
}
} catch (err) {
debug('service worker registration failed', err);
}
}
if (service_worker && self.enable_service) {
start_service_worker();
}

View file

@ -238,6 +238,10 @@
<label lk="uninstall">uninstall</label>
<span><i class="fa-solid fa-trash"></i></span>
</div>
<div id="app-quit" class="hide">
<label lk="quit">quit</label>
<span></span>
</div>
</div>
</div>
</span>