kingkont 0.7.35 → 0.7.37
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/index.html +4 -6
- package/main.js +33 -3
- package/package.json +1 -1
package/index.html
CHANGED
|
@@ -2998,12 +2998,10 @@ async function selectBoard(board) {
|
|
|
2998
2998
|
$('addText').disabled = false; $('genText').disabled = false; $('genAudio').disabled = false; $('genImage').disabled = false; $('genVideo').disabled = false; $('genSfx').disabled = false; $('genMusic').disabled = false;
|
|
2999
2999
|
|
|
3000
3000
|
$('path').textContent = `${state.filmHandle.name} / ${board.name}`;
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
: 'Сцена';
|
|
3006
|
-
badge.className = 'badge ' + board.kind;
|
|
3001
|
+
// Тип board (Сцена/Персонаж/Локация) убрали из верхней панели —
|
|
3002
|
+
// достаточно того что выделено в sidebar. Badge оставлен в DOM как
|
|
3003
|
+
// hidden — на случай если где-то логика проверяет его наличие.
|
|
3004
|
+
$('boardBadge').style.display = 'none';
|
|
3007
3005
|
// Имя выбранного board в шапке sidebar
|
|
3008
3006
|
const boardEl = $('brandBoard');
|
|
3009
3007
|
if (boardEl) {
|
package/main.js
CHANGED
|
@@ -100,6 +100,30 @@ ipcMain.handle('native-player:stop', async () => {
|
|
|
100
100
|
let isQuitting = false;
|
|
101
101
|
app.on('before-quit', () => { isQuitting = true; stopNativePlayer(); });
|
|
102
102
|
|
|
103
|
+
// Single-instance — спасает от двух копий после relaunch (особенно на Win,
|
|
104
|
+
// где старый процесс не успевает погаснуть до spawn нового). Если копия уже
|
|
105
|
+
// работает — этот процесс выходит, а первая копия просто фокусирует окно.
|
|
106
|
+
const singleLock = app.requestSingleInstanceLock();
|
|
107
|
+
if (!singleLock) {
|
|
108
|
+
app.quit();
|
|
109
|
+
} else {
|
|
110
|
+
app.on('second-instance', () => {
|
|
111
|
+
if (win && !win.isDestroyed()) {
|
|
112
|
+
if (win.isMinimized()) win.restore();
|
|
113
|
+
win.show();
|
|
114
|
+
win.focus();
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Windows console encoding fix: console default cp866/cp1252, наш log с
|
|
120
|
+
// UTF-8 (✓ ✗ ▶) превращается в кракозябры. Просим консоль UTF-8.
|
|
121
|
+
if (process.platform === 'win32') {
|
|
122
|
+
try {
|
|
123
|
+
require('node:child_process').execSync('chcp 65001', { stdio: 'ignore' });
|
|
124
|
+
} catch {}
|
|
125
|
+
}
|
|
126
|
+
|
|
103
127
|
// ===== Settings persisted в userData/settings.json =====
|
|
104
128
|
// Хранит API-ключи (KIE, ElevenLabs) и прочие конфиги. При старте main.js
|
|
105
129
|
// прокидывает ключи в process.env, чтобы server.js подхватил без переписки.
|
|
@@ -464,15 +488,21 @@ ipcMain.handle('app:relaunch', () => {
|
|
|
464
488
|
? ''
|
|
465
489
|
: ':/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin';
|
|
466
490
|
const env = { ...process.env, PATH: (process.env.PATH || '') + extraPath };
|
|
491
|
+
// Задержка ДО запуска новой копии, чтобы старый процесс успел отпустить
|
|
492
|
+
// single-instance lock и file-based caches (на Windows иначе ловится
|
|
493
|
+
// 0x5 «Unable to move the cache» — два экземпляра одновременно).
|
|
494
|
+
const relaunchCmd = process.platform === 'win32'
|
|
495
|
+
? 'timeout /t 2 /nobreak > nul && kingkont'
|
|
496
|
+
: 'sleep 2 && kingkont';
|
|
467
497
|
try {
|
|
468
|
-
const child = spawn(
|
|
498
|
+
const child = spawn(relaunchCmd, { shell: true, env, detached: true, stdio: 'ignore' });
|
|
469
499
|
child.unref();
|
|
470
500
|
} catch (e) {
|
|
471
501
|
console.warn('spawn kingkont failed, fallback на app.relaunch():', e?.message);
|
|
472
502
|
app.relaunch();
|
|
473
503
|
}
|
|
474
|
-
//
|
|
475
|
-
setTimeout(() => app.exit(0),
|
|
504
|
+
// Гасим текущий процесс быстро — следующий стартует через 2 сек.
|
|
505
|
+
setTimeout(() => app.exit(0), 300);
|
|
476
506
|
});
|
|
477
507
|
|
|
478
508
|
// Фоновая проверка при старте: если есть свежая — открываем окно автоматом.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kingkont",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.37",
|
|
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": {
|