Picker is Swarm intersect config, preset style/shot inherit model defaults, and living saves lift the old preset shape.
2.9 KiB
Часть Вне очереди. Соседей по папке не читать, если задача не про них.
Модели Swarm и слои промпта
Зачем
Пикер моделей не должен предлагать то, чего нет в нашем конфиге. Дефолты генерации живут на модели; пресет задаёт стиль и тип кадра и может переопределить дефолты. Промпт собирается слоями, а не одним «базовым» текстом пресета.
Было / Стало / Почему
Было. Пресет сам держал модель, steps/cfg/sampler и positive. Список Swarm только
наполнял комбобоксы. «Свой промпт» у custom заменял текст кадра. portraitSettings в
сейве — копия этого файла.
Стало. В конфиге каталог models (whitelist) и пресеты. Пикер = Swarm ∩ каталог; при
офлайне Swarm — все id из каталога. У модели: закрытый набор настроек генерации (steps, cfg,
clip skip, sampler, scheduler, seed, LoRA) и обычно пустые base positive/negative. У пресета:
модель, стиль (бывший positive), доп. negative, размеры и тип кадра на avatar/custom/full.
Оверрайды генерации у пресета — nullable, в UI под спойлером. Промпт:
- base positive модели
- стиль пресета
- тип кадра
- «Свой промпт» (
promptExtra, только custom; после кадра, не вместо) - поза (слот пустой, без поля в UI)
- внешность: кто это, возраст, тело
- одежда
- хвост пустой
Negative: модель + необязательное дополнение пресета. Ширина/высота остаются на виде кадра.
Почему. Модель задаёт «как считать картинку»; пресет — «какой это школьный снимок». Гость по-прежнему рисует с копии школы, не с глобального файла.
Что не входит
Зеркало всех ListT2IParams. Кнопка настроек в меню. Редактор каталога «добавить модель из
Swarm». Поза в UI. Бамп версии сокета. Перегенерация уже лежащих PNG.
Живые школы: NormalizeAfterLoad поднимает старый пресет (positive → style, kind
positive → shotType, уникальные model → models[]). Старые картинки не трогаем.