Split SwarmUI portraits into a model catalog and layered prompts.
Picker is Swarm intersect config, preset style/shot inherit model defaults, and living saves lift the old preset shape.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# Фаза 60. Модели портретов
|
||||
|
||||
## Зависимости
|
||||
|
||||
Нет. Портреты и `swarmui.json` уже живут вне среза.
|
||||
|
||||
## Зачем
|
||||
|
||||
Пикер показывает только модели из нашего каталога, которые есть в Swarm. Дефолты генерации
|
||||
на модели; пресет даёт стиль и тип кадра и может переопределить дефолты под спойлером.
|
||||
Промпт собирается слоями.
|
||||
|
||||
## Задачи
|
||||
|
||||
- [x] `swarmui.json`: каталог `models` на все четыре модели из текущего Swarm; пресеты ссылаются
|
||||
на модель, `style` вместо бывшего base `positive`, `shotType` на виде кадра
|
||||
- [x] Пикер = Swarm ∩ каталог; Swarm офлайн — id из каталога. Чего нет в конфиге, с пикера нет
|
||||
- [x] Сборка промпта: модель → стиль → кадр → свой промпт → пустая поза → внешность (кто, возраст,
|
||||
тело) → одежда. Custom **не** заменяет тип кадра. Negative: модель + доп. пресета
|
||||
- [x] UI диалога пресетов (создание школы): стиль и кадр сверху; дефолты модели видны; оверрайды
|
||||
пресета под `<details>`. Строки через `t(...)`
|
||||
- [x] Живой сейв поднимается в `NormalizeAfterLoad`. HTTP `GET`/`PUT /api/settings/swarmui` и
|
||||
`portraitSettings` — новая форма. Сокет не бампить. [`protocol.md`](../../protocol.md) тем же
|
||||
коммитом
|
||||
|
||||
## Тесты, без которых фаза не закрыта
|
||||
|
||||
- [x] Лифт старого пресета: `positive` → `style`, kind `positive` → `shotType`, модель в `models`
|
||||
- [x] Resolve без оверрайда берёт steps/cfg с модели; с оверрайдом — с пресета
|
||||
- [x] Пикер: пересечение Swarm ∩ каталог; офлайн — каталог; лишняя модель Swarm отброшена
|
||||
- [x] Промпт: порядок слоёв; custom держит тип кадра и `promptExtra`; пустая поза не попадает в текст
|
||||
- [x] `GET /api/settings/swarmui` отдаёт `models`; create копирует их в сейв
|
||||
- [x] Диалог: поле стиля, спойлер оверрайдов, в селекте модели нет id вне каталога при живом Swarm
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
- В диалоге создания школы в пикере только модели из `swarmui.json`, которые ответил Swarm
|
||||
- Смена модели подставляет её дефолты; пресет может перебить их под спойлером
|
||||
- «Показать промпт» на карточке: стиль, затем кадр, затем тело и одежда; свой промпт после кадра
|
||||
- Старая школа открывается и генерирует без ручного правок сейва
|
||||
|
||||
## Стоп
|
||||
|
||||
Не бампить сокет. Не зеркалить все параметры Swarm. Не возвращать кнопку настроек в меню.
|
||||
Не перегенерировать PNG. Не писать позу в UI.
|
||||
Reference in New Issue
Block a user