kingkont 0.20.21 → 0.20.23
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/package.json +1 -1
- package/renderer/board.js +9 -0
- package/renderer/generate.js +23 -7
- package/renderer/settings.js +9 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kingkont",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.23",
|
|
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/renderer/board.js
CHANGED
|
@@ -3932,6 +3932,15 @@ async function createNodeEl(node) {
|
|
|
3932
3932
|
goToLinkedBoard(node);
|
|
3933
3933
|
return;
|
|
3934
3934
|
}
|
|
3935
|
+
// Нода ещё не сгенерирована (есть параметры, но нет файла) — открываем
|
|
3936
|
+
// модалку генерации, чтобы юзер мог запустить / поправить параметры.
|
|
3937
|
+
// Юзер: «дабл-клик на ноде до генерации должен показывать окно
|
|
3938
|
+
// генерации (сейчас показывает Параметры генерации)». Это покрывает
|
|
3939
|
+
// draft-ноды, error-ноды и любые ноды без node.file.
|
|
3940
|
+
if (node.generated && !node.file) {
|
|
3941
|
+
regenerateNode(node);
|
|
3942
|
+
return;
|
|
3943
|
+
}
|
|
3935
3944
|
if (node.type === 'audio' && node.file) {
|
|
3936
3945
|
regenerateNode(node);
|
|
3937
3946
|
return;
|
package/renderer/generate.js
CHANGED
|
@@ -446,21 +446,34 @@ async function openGenModal(kind) {
|
|
|
446
446
|
if (typeof loadAllLocationsInfo === 'function') loadAllLocationsInfo().catch(() => {});
|
|
447
447
|
syncSourceRefRow();
|
|
448
448
|
syncDefaultPromptRow();
|
|
449
|
+
// Дефолт aspect ratio из настроек сцены. Юзер: «во втором кейсе я нажал
|
|
450
|
+
// 1:1, в первом увидел что 1:1 уже выделен и ничего не менял — нужно
|
|
451
|
+
// выделять по дефолту то, что настроено в схеме». Раньше дефолт брался
|
|
452
|
+
// из localStorage ('последний выбранный глобально'), а scene.settings.
|
|
453
|
+
// aspectRatio учитывался только в startGenerationJob как middle-fallback
|
|
454
|
+
// — но к этому моменту genSubmit уже зафиксировал node.generated.aspectRatio
|
|
455
|
+
// = state.imageAspect, и `??` boardAspect никогда не срабатывал. Теперь
|
|
456
|
+
// модалка на открытии всегда подтягивает scene-default, и юзер видит то
|
|
457
|
+
// что реально будет применено.
|
|
458
|
+
const boardAsp = state.currentBoard?.metadata?.settings?.aspectRatio || null;
|
|
459
|
+
if (kind === 'image' && boardAsp) {
|
|
460
|
+
state.imageAspect = boardAsp;
|
|
461
|
+
}
|
|
462
|
+
if (kind === 'video' && boardAsp) {
|
|
463
|
+
state.videoAspect = boardAsp;
|
|
464
|
+
}
|
|
449
465
|
// Если открываем image-генерацию и есть исходная картинка-референс —
|
|
450
466
|
// дефолт «↺ Как у исходной» (юзер обычно хочет такой же формат как у
|
|
451
|
-
// источника).
|
|
452
|
-
//
|
|
453
|
-
// (
|
|
467
|
+
// источника). Source перебивает scene-default — это явное намерение.
|
|
468
|
+
// Если потом юзер выберет другой aspect — это его выбор, и при следующем
|
|
469
|
+
// открытии modal'а с source мы снова поставим source (per-open default).
|
|
454
470
|
if (kind === 'image'
|
|
455
471
|
&& state.sourceRef && state.sourceRef.type === 'image' && state.sourceRef.use) {
|
|
456
472
|
state.imageAspect = 'source';
|
|
457
|
-
syncImageAspectActive();
|
|
458
473
|
}
|
|
459
474
|
// Для video-из-картинки нет 'source' опции (ratios у video свои), но
|
|
460
475
|
// юзер всё равно ожидает сохранения пропорций. Считаем aspect картинки
|
|
461
|
-
// и выбираем ближайший из видео-списка.
|
|
462
|
-
// это per-open default, не sticky (следующий open без source вернёт
|
|
463
|
-
// последний явный выбор юзера).
|
|
476
|
+
// и выбираем ближайший из видео-списка. Source перебивает scene-default.
|
|
464
477
|
if (kind === 'video'
|
|
465
478
|
&& state.sourceRef && state.sourceRef.type === 'image' && state.sourceRef.use) {
|
|
466
479
|
computeSourceMediaAspect(VIDEO_ASPECTS).then(asp => {
|
|
@@ -470,6 +483,9 @@ async function openGenModal(kind) {
|
|
|
470
483
|
}
|
|
471
484
|
});
|
|
472
485
|
}
|
|
486
|
+
// Sync UI после всех решений выше.
|
|
487
|
+
syncImageAspectActive();
|
|
488
|
+
if (typeof syncVideoOptionsActive === 'function') syncVideoOptionsActive();
|
|
473
489
|
$('genModal').classList.remove('hidden');
|
|
474
490
|
setTimeout(() => $('genPrompt').focus(), 50);
|
|
475
491
|
}
|
package/renderer/settings.js
CHANGED
|
@@ -794,13 +794,18 @@ async function openGenerateForRef(fromNode, clientX, clientY, forceKind) {
|
|
|
794
794
|
syncSourceRefRow();
|
|
795
795
|
if (typeof syncDefaultPromptRow === 'function') syncDefaultPromptRow();
|
|
796
796
|
|
|
797
|
+
// Дефолт aspect ratio из настроек сцены — та же логика что в openGenModal
|
|
798
|
+
// (юзер: «нужно выделять по дефолту то, что настроено в схеме»).
|
|
799
|
+
// Source-ref перебивает scene-default, см. ниже.
|
|
800
|
+
const boardAsp = state.currentBoard?.metadata?.settings?.aspectRatio || null;
|
|
801
|
+
if (forceKind === 'image' && boardAsp) state.imageAspect = boardAsp;
|
|
802
|
+
if (forceKind === 'video' && boardAsp) state.videoAspect = boardAsp;
|
|
797
803
|
// Если генерим image из существующей картинки-ноды — дефолт «↺ Как у
|
|
798
804
|
// исходной» (юзер обычно хочет такой же формат как у источника).
|
|
799
805
|
// Та же логика что в openGenModal, для anchor-drag-to-generate flow.
|
|
800
806
|
if (forceKind === 'image'
|
|
801
807
|
&& state.sourceRef && state.sourceRef.type === 'image' && state.sourceRef.use) {
|
|
802
808
|
state.imageAspect = 'source';
|
|
803
|
-
syncImageAspectActive();
|
|
804
809
|
}
|
|
805
810
|
// Video-из-картинки: подбираем ближайший видео-aspect к natural-aspect
|
|
806
811
|
// картинки (см. openGenModal для аналогичной логики).
|
|
@@ -813,6 +818,9 @@ async function openGenerateForRef(fromNode, clientX, clientY, forceKind) {
|
|
|
813
818
|
}
|
|
814
819
|
});
|
|
815
820
|
}
|
|
821
|
+
// Sync UI после всех решений выше.
|
|
822
|
+
syncImageAspectActive();
|
|
823
|
+
if (typeof syncVideoOptionsActive === 'function') syncVideoOptionsActive();
|
|
816
824
|
|
|
817
825
|
closeMentionPopup();
|
|
818
826
|
$('genModal').classList.remove('hidden');
|