kingkont 0.7.29 → 0.7.31

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/assets/icon.png CHANGED
Binary file
Binary file
Binary file
Binary file
package/assets/logo.icns CHANGED
Binary file
package/main.js CHANGED
@@ -418,15 +418,22 @@ ipcMain.handle('updates:check', async () => {
418
418
  // ручного запуска с sudo. spawn уже импортирован в начале файла.
419
419
  ipcMain.handle('updates:install', async (e, target = 'latest') => {
420
420
  return new Promise((resolve, reject) => {
421
- const shell = process.env.SHELL || '/bin/bash';
422
- // --prefer-online принуждает npm рефрешить metadata из registry, минуя
423
- // локальный stale-cache (иначе ETARGET для свежеопубликованных версий
424
- // npm packument.json кэшируется на 5-10 минут).
425
- // --loglevel=error подавляет deprecation-warnings (типа boolean@3.2.0
426
- // от global-agent) и funding-сообщения — в окне install видны только
427
- // реальные ошибки.
421
+ // Раньше использовали login-shell ($SHELL -lc cmd). На некоторых
422
+ // setup'ах SHELL пустой/невалидный или /bin/bash отсутствует
423
+ // Electron бросал spawn ENOENT. Безопаснее: shell:true (Node сам
424
+ // выберет /bin/sh или cmd.exe) + обогащаем PATH типичными префиксами
425
+ // глобального npm (Homebrew/system), чтобы 'npm' резолвился.
426
+ const extraPath = process.platform === 'win32'
427
+ ? ''
428
+ : ':/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin';
429
+ const env = {
430
+ ...process.env,
431
+ PATH: (process.env.PATH || '') + extraPath,
432
+ };
433
+ // --prefer-online: рефреш metadata (иначе ETARGET для свежих версий).
434
+ // --loglevel=error: подавляет deprecation/funding warnings в окне.
428
435
  const cmd = `npm i -g --prefer-online --loglevel=error kingkont@${target}`;
429
- const proc = spawn(shell, ['-lc', cmd]);
436
+ const proc = spawn(cmd, { shell: true, env });
430
437
  let stderr = '';
431
438
  proc.stdout.on('data', d => {
432
439
  const text = d.toString();
@@ -450,14 +457,15 @@ ipcMain.handle('app:relaunch', () => {
450
457
  // `npm i -g`, новая kingkont лежит в global-bin, а не в npx-кэше где сидит
451
458
  // текущий процесс — relaunch снова поднимет старую версию.
452
459
  //
453
- // Решение: spawn новой kingkont через login shell (PATH резолвит global-bin),
454
- // detached + ignored stdio чтобы дочерний процесс пережил наш exit.
455
- const shell = process.env.SHELL || '/bin/bash';
460
+ // Решение: spawn 'kingkont' через shell:true (кросс-платформенно, без
461
+ // зависимости от $SHELL/bash). PATH обогащён типичными префиксами,
462
+ // чтобы global-bin резолвился независимо от env.
463
+ const extraPath = process.platform === 'win32'
464
+ ? ''
465
+ : ':/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin';
466
+ const env = { ...process.env, PATH: (process.env.PATH || '') + extraPath };
456
467
  try {
457
- const child = spawn(shell, ['-lc', 'kingkont'], {
458
- detached: true,
459
- stdio: 'ignore',
460
- });
468
+ const child = spawn('kingkont', { shell: true, env, detached: true, stdio: 'ignore' });
461
469
  child.unref();
462
470
  } catch (e) {
463
471
  console.warn('spawn kingkont failed, fallback на app.relaunch():', e?.message);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kingkont",
3
- "version": "0.7.29",
3
+ "version": "0.7.31",
4
4
  "description": "KingKont \u00b7 Chatium \u2014 \u043d\u043e\u0434-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0446\u0435\u043d \u0441 AI-\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438/\u0432\u0438\u0434\u0435\u043e/\u0433\u043e\u043b\u043e\u0441/SFX/\u043c\u0443\u0437\u044b\u043a\u0430/\u0442\u0435\u043a\u0441\u0442)",
5
5
  "main": "main.js",
6
6
  "bin": {