kingkont 0.7.30 → 0.7.32
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/main.js +23 -15
- package/package.json +1 -1
- package/settings.html +11 -1
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
|
-
|
|
422
|
-
//
|
|
423
|
-
//
|
|
424
|
-
//
|
|
425
|
-
//
|
|
426
|
-
|
|
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(
|
|
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
|
|
454
|
-
//
|
|
455
|
-
|
|
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,
|
|
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.
|
|
3
|
+
"version": "0.7.32",
|
|
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": {
|
package/settings.html
CHANGED
|
@@ -81,7 +81,17 @@
|
|
|
81
81
|
}
|
|
82
82
|
.provider-head .badge { color: var(--muted); font-weight: 400; font-size: 11px; }
|
|
83
83
|
.provider-block { transition: opacity 0.15s; }
|
|
84
|
-
|
|
84
|
+
/* Когда провайдер выключен, тушим визуально, НО оставляем клик по
|
|
85
|
+
provider-head (чекбокс должен включаться обратно). pointer-events:
|
|
86
|
+
none ставим только на input/hint внутри — поле ключа становится
|
|
87
|
+
нередактируемым, но чекбокс активный. */
|
|
88
|
+
.provider-block.disabled { opacity: 0.55; }
|
|
89
|
+
.provider-block.disabled input[type="password"],
|
|
90
|
+
.provider-block.disabled input[type="text"],
|
|
91
|
+
.provider-block.disabled .hint { pointer-events: none; }
|
|
92
|
+
.card.disabled .chatium-state,
|
|
93
|
+
.card.disabled .row,
|
|
94
|
+
.card.disabled .hint { pointer-events: none; }
|
|
85
95
|
|
|
86
96
|
/* Chatium card */
|
|
87
97
|
.chatium-state { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
|