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 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
- logJob(node.id, `→ POST /api/tts ${provider} (model=${ttsModel} voice=${voiceId || '—'})`);
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({ text, voiceId, ttsModel }),
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
- const cmd = `npm i -g --prefer-online kingkont@${target}`;
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.16",
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
  }