kingkont 0.7.41 → 0.7.42
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/bin/kingkont.js +6 -1
- package/main.js +32 -10
- package/package.json +1 -1
package/bin/kingkont.js
CHANGED
|
@@ -106,7 +106,12 @@ if (cmd && NODE_COMMANDS[cmd]) {
|
|
|
106
106
|
process.env.PORT = String(port);
|
|
107
107
|
const targetPath = args[1] && !args[1].startsWith('--') ? path.resolve(args[1]) : null;
|
|
108
108
|
const { start } = require(path.join(root, 'server.js'));
|
|
109
|
-
|
|
109
|
+
// Live-чтение settings.json на каждый запрос — так же как в Electron-режиме
|
|
110
|
+
// (main.js). Без этого use*-флаги и chatium.token не доходят до server.js,
|
|
111
|
+
// и провайдеры (chatium / openrouter / kie / elevenlabs) висят выключенными,
|
|
112
|
+
// даже если юзер залогинен через UI приложения.
|
|
113
|
+
const startOpts = { getSettings: () => settingsLib.loadSettings() };
|
|
114
|
+
start(port, startOpts).then(actualPort => {
|
|
110
115
|
const url = `http://localhost:${actualPort}/`;
|
|
111
116
|
console.log(`\n▶ KingKont готов: ${url}`);
|
|
112
117
|
if (targetPath) console.log(` подразумеваемый проект: ${targetPath}`);
|
package/main.js
CHANGED
|
@@ -764,19 +764,41 @@ app.whenReady().then(async () => {
|
|
|
764
764
|
|
|
765
765
|
// Фиксированный порт нужен потому что Chromium хранит IndexedDB и FSAH-handle
|
|
766
766
|
// per-origin (http://localhost:PORT). Со случайным портом каждый запуск
|
|
767
|
-
// получал бы новую пустую IDB
|
|
768
|
-
//
|
|
769
|
-
//
|
|
770
|
-
//
|
|
771
|
-
// на
|
|
767
|
+
// получал бы новую пустую IDB и юзер должен заново указывать папки в recents.
|
|
768
|
+
//
|
|
769
|
+
// RETRY на 17893: при relaunch'е старый instance отпускает singleton-lock
|
|
770
|
+
// быстрее, чем macOS освобождает TCP-сокет (TIME_WAIT). Без retry сразу
|
|
771
|
+
// падаем на random и теряем handle. 8×500мс = 4 сек обычно хватает.
|
|
772
|
+
// server.js на каждый запрос читает live-настройки через getSettings —
|
|
773
|
+
// settings.json на диске единственный источник правды.
|
|
772
774
|
const startOpts = { getSettings: () => readSettings() };
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
775
|
+
const PRIMARY_PORT = 17893;
|
|
776
|
+
const RETRIES = 8;
|
|
777
|
+
let lastErr;
|
|
778
|
+
for (let i = 0; i < RETRIES; i++) {
|
|
779
|
+
try { port = await start(PRIMARY_PORT, startOpts); break; }
|
|
780
|
+
catch (e) {
|
|
781
|
+
lastErr = e;
|
|
782
|
+
if (e.code !== 'EADDRINUSE') break; // не race — нет смысла ретраить
|
|
783
|
+
console.warn(`port ${PRIMARY_PORT} busy (attempt ${i + 1}/${RETRIES}), waiting…`);
|
|
784
|
+
await new Promise(r => setTimeout(r, 500));
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
if (!port) {
|
|
788
|
+
// Сначала попробуем фиксированные fallback'и (17894/17895/...) —
|
|
789
|
+
// это сохранит хотя бы часть recents (origin будет стабильным от
|
|
790
|
+
// запуска к запуску при условии что 17893 хронически занят).
|
|
791
|
+
for (const p of [17894, 17895, 17896, 17897, 17898, 17899]) {
|
|
792
|
+
try { port = await start(p, startOpts); console.warn(`fell back to port ${p}`); break; }
|
|
793
|
+
catch { /* try next */ }
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
if (!port) {
|
|
797
|
+
// Последний резерв — случайный порт (потеряем handle).
|
|
798
|
+
console.warn('all stable ports busy, falling back to random (recents-handle will be lost)');
|
|
777
799
|
try { port = await start(0, startOpts); }
|
|
778
800
|
catch (e) {
|
|
779
|
-
console.error('Server failed to start:', e);
|
|
801
|
+
console.error('Server failed to start:', e || lastErr);
|
|
780
802
|
app.quit();
|
|
781
803
|
return;
|
|
782
804
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kingkont",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.42",
|
|
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": {
|