kingkont 0.7.16 → 0.7.18
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 +16 -2
- package/main.js +4 -1
- package/package.json +1 -1
- package/scripts/patch-electron-name.js +24 -0
package/index.html
CHANGED
|
@@ -6881,6 +6881,7 @@ function populateVoicesSelect(voices) {
|
|
|
6881
6881
|
for (const v of voices) {
|
|
6882
6882
|
const opt = document.createElement('option');
|
|
6883
6883
|
opt.value = v.id;
|
|
6884
|
+
opt.dataset.voiceName = v.name; // нужно для KingKont elevenlabs/v3 (он ждёт name, не id)
|
|
6884
6885
|
const lbl = v.labels || {};
|
|
6885
6886
|
const tags = [lbl.gender, lbl.language || lbl.accent, lbl.age].filter(Boolean).join(' / ');
|
|
6886
6887
|
opt.textContent = tags ? `${v.name} — ${tags}` : v.name;
|
|
@@ -7246,11 +7247,24 @@ async function runTTSJob(node, text, boardHandle, bKey, voiceId) {
|
|
|
7246
7247
|
// ttsModel может быть сохранён в node.generated.ttsModel (при regenerate)
|
|
7247
7248
|
// или в текущем глобальном state.ttsModel (новая генерация).
|
|
7248
7249
|
const ttsModel = node.generated?.ttsModel || state.ttsModel || 'qwen/qwen3-tts';
|
|
7249
|
-
|
|
7250
|
+
// ElevenLabs v3 в KingKont/Chatium ждёт voice как ИМЯ ('Rachel', 'Lara
|
|
7251
|
+
// Croft'), не voice_id. Резолвим имя через select option (data-voice-name).
|
|
7252
|
+
let voiceName = node.generated?.voiceName || null;
|
|
7253
|
+
if (!voiceName && voiceId) {
|
|
7254
|
+
const opt = document.querySelector(`#genVoice option[value="${voiceId}"]`);
|
|
7255
|
+
voiceName = opt?.dataset.voiceName || null;
|
|
7256
|
+
}
|
|
7257
|
+
const ttsBody = { text, voiceId, ttsModel };
|
|
7258
|
+
if (ttsModel === 'elevenlabs/v3' && voiceName) {
|
|
7259
|
+
ttsBody.voice = voiceName; // отправляем ИМЯ
|
|
7260
|
+
} else if (voiceId) {
|
|
7261
|
+
ttsBody.voice = voiceId;
|
|
7262
|
+
}
|
|
7263
|
+
logJob(node.id, `→ POST /api/tts → ${provider} (model=${ttsModel} voice=${ttsBody.voice || '—'})`);
|
|
7250
7264
|
const r = await fetch('/api/tts', {
|
|
7251
7265
|
method: 'POST',
|
|
7252
7266
|
headers: { 'Content-Type': 'application/json' },
|
|
7253
|
-
body: JSON.stringify(
|
|
7267
|
+
body: JSON.stringify(ttsBody),
|
|
7254
7268
|
});
|
|
7255
7269
|
logJob(node.id, `← via ${r.headers.get('x-provider') || '?'} HTTP ${r.status}`);
|
|
7256
7270
|
if (!r.ok) {
|
package/main.js
CHANGED
|
@@ -422,7 +422,10 @@ ipcMain.handle('updates:install', async (e, target = 'latest') => {
|
|
|
422
422
|
// --prefer-online принуждает npm рефрешить metadata из registry, минуя
|
|
423
423
|
// локальный stale-cache (иначе ETARGET для свежеопубликованных версий —
|
|
424
424
|
// npm packument.json кэшируется на 5-10 минут).
|
|
425
|
-
|
|
425
|
+
// --loglevel=error подавляет deprecation-warnings (типа boolean@3.2.0
|
|
426
|
+
// от global-agent) и funding-сообщения — в окне install видны только
|
|
427
|
+
// реальные ошибки.
|
|
428
|
+
const cmd = `npm i -g --prefer-online --loglevel=error kingkont@${target}`;
|
|
426
429
|
const proc = spawn(shell, ['-lc', cmd]);
|
|
427
430
|
let stderr = '';
|
|
428
431
|
proc.stdout.on('data', d => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kingkont",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.18",
|
|
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": {
|
|
@@ -104,6 +104,29 @@ function ensureIcon(bundle) {
|
|
|
104
104
|
try { fs.copyFileSync(src, dst); } catch {}
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
// global-agent + его deps (boolean, roarr) приходят через @electron/get.
|
|
108
|
+
// global-agent.bootstrap() в @electron/get вызывается ТОЛЬКО при наличии
|
|
109
|
+
// GLOBAL_AGENT_HTTPS_PROXY env (proxy для скачивания Electron-дистрибутива).
|
|
110
|
+
// У 99% юзеров это пусто. Удаляем после install — `overrides` в package.json
|
|
111
|
+
// не работает для global-install (известный баг npm), а боолеан@3.2.0
|
|
112
|
+
// deprecated warning раздражает.
|
|
113
|
+
function pruneDeprecatedDeps() {
|
|
114
|
+
try {
|
|
115
|
+
const pkgRoot = path.dirname(require.resolve('../package.json'));
|
|
116
|
+
const candidates = ['global-agent', 'boolean', 'roarr', 'es6-error',
|
|
117
|
+
'json-stringify-safe', 'matcher', 'serialize-error',
|
|
118
|
+
'sprintf-js', 'detect-node', 'fast-url-parser',
|
|
119
|
+
'semver-compare'];
|
|
120
|
+
for (const name of candidates) {
|
|
121
|
+
const dir = path.join(pkgRoot, 'node_modules', name);
|
|
122
|
+
if (fs.existsSync(dir)) {
|
|
123
|
+
try { fs.rmSync(dir, { recursive: true, force: true }); }
|
|
124
|
+
catch {}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
} catch {}
|
|
128
|
+
}
|
|
129
|
+
|
|
107
130
|
module.exports = patchElectronName;
|
|
108
131
|
|
|
109
132
|
// Если запущен как entry-point (postinstall) — выполняем сразу.
|
|
@@ -111,4 +134,5 @@ if (require.main === module) {
|
|
|
111
134
|
try { patchElectronName(); } catch (e) {
|
|
112
135
|
console.warn('[kingkont postinstall] failed:', e.message);
|
|
113
136
|
}
|
|
137
|
+
try { pruneDeprecatedDeps(); } catch {}
|
|
114
138
|
}
|