Files
h-school/docs/phases/off-queue/60-portrait-models.md
T
Leonid Pershin 81fd3f6181 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.
2026-08-20 14:08:11 +03:00

3.5 KiB

Фаза 60. Модели портретов

Зависимости

Нет. Портреты и swarmui.json уже живут вне среза.

Зачем

Пикер показывает только модели из нашего каталога, которые есть в Swarm. Дефолты генерации на модели; пресет даёт стиль и тип кадра и может переопределить дефолты под спойлером. Промпт собирается слоями.

Задачи

  • swarmui.json: каталог models на все четыре модели из текущего Swarm; пресеты ссылаются на модель, style вместо бывшего base positive, shotType на виде кадра
  • Пикер = Swarm ∩ каталог; Swarm офлайн — id из каталога. Чего нет в конфиге, с пикера нет
  • Сборка промпта: модель → стиль → кадр → свой промпт → пустая поза → внешность (кто, возраст, тело) → одежда. Custom не заменяет тип кадра. Negative: модель + доп. пресета
  • UI диалога пресетов (создание школы): стиль и кадр сверху; дефолты модели видны; оверрайды пресета под <details>. Строки через t(...)
  • Живой сейв поднимается в NormalizeAfterLoad. HTTP GET/PUT /api/settings/swarmui и portraitSettings — новая форма. Сокет не бампить. protocol.md тем же коммитом

Тесты, без которых фаза не закрыта

  • Лифт старого пресета: positivestyle, kind positiveshotType, модель в models
  • Resolve без оверрайда берёт steps/cfg с модели; с оверрайдом — с пресета
  • Пикер: пересечение Swarm ∩ каталог; офлайн — каталог; лишняя модель Swarm отброшена
  • Промпт: порядок слоёв; custom держит тип кадра и promptExtra; пустая поза не попадает в текст
  • GET /api/settings/swarmui отдаёт models; create копирует их в сейв
  • Диалог: поле стиля, спойлер оверрайдов, в селекте модели нет id вне каталога при живом Swarm

Критерий готовности

  • В диалоге создания школы в пикере только модели из swarmui.json, которые ответил Swarm
  • Смена модели подставляет её дефолты; пресет может перебить их под спойлером
  • «Показать промпт» на карточке: стиль, затем кадр, затем тело и одежда; свой промпт после кадра
  • Старая школа открывается и генерирует без ручного правок сейва

Стоп

Не бампить сокет. Не зеркалить все параметры Swarm. Не возвращать кнопку настроек в меню. Не перегенерировать PNG. Не писать позу в UI.