Skip to content

Releases: pytraveler/MiniMax-H3-Prompt-Rewriter-ComfyUI

MiniMax-H3 Prompt Rewriter 0.30.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 20:23

Added

  • A clip's own sound can be a reference of its own. Click a clip's label
    band in the strip of the Universal Writer or the Prompt Rewriter Omni, or tick
    the new speaker box on the Universal Rewriter's reference_video row. On
    Ref2VA the clip's sound then takes an <Audio N> of its own, numbered ahead of
    every standalone sound - the order MiniMaxH3ReferenceToVideo and LightX2V's
    runner number them in - and the square reads vid+a1. The Universal Writer
    has the sound described as an Audio N line just before the clip. The Omni
    adapter hears it, handed over as a separate sound right before the clip, which
    is the only way its upstream inference ever passes a clip's sound. A
    standalone sound ahead of a sounding clip in the strip is presented after it,
    so the numbers agree. references says which clips were counted, and
    Reference Slots puts exactly those sounds on video_audio_N. A captioner that
    cannot hear is refused before anything loads, and a clip with no sound track
    is said on the node and left unnumbered.
  • Notices for references LightX2V's runner refuses. A Ref2VA set of sounds
    alone, and a reference picture or clip narrower or wider than 1:4 to 4:1, are
    both errors there. ComfyUI's MiniMaxH3ReferenceToVideo takes them without
    checking, so the writers say so in a toast before they start rather than
    refusing.

Changed

  • Reference Slots follows the writer. With soundtracks off, a clip's sound
    goes across exactly when the writer counted it. On, every clip gets its sound
    as before, and the warning about moved labels counts only the clips the
    writer left silent.
  • A reference clip is described over what the generator keeps of it.
    MiniMaxH3ReferenceToVideo keeps no more of a reference clip than the length of
    the video it makes, and LightX2V's runner cuts it there too. On Ref2VA the
    Omni rewriter and the Universal Writer's captioners now sample a clip's frames
    from that stretch alone, not across the whole file, and a batch of frames used
    as a clip is cut to the same count. Standalone sounds are still passed whole,
    because ComfyUI's generator encodes the whole of one.
  • The self-check lets a Ref2VA prompt cite up to <Audio 6>, three standalone
    sounds and three clip sounds. The sockets still take three standalone sounds.

Fixed

  • The Omni rewriter's snapped duration agrees with LightX2V. The length is
    now rounded to a whole frame before it moves up to the 17n+5 grid, which is
    the order LightX2V's runner works in. Aligning the fraction instead pushed
    6.6 s to 7.29 s (175 frames where H3 makes 158), 7.3 s to 8.00 s, and 15.1 s
    to 15.79 s, past the 362 frames H3 makes at most - and the alignment line
    quoted those lengths. The duration widget's tooltip did the same arithmetic
    and has the same fix.
  • Two sounds or two clips on the Omni rewriter no longer show the model the
    last one twice.
    Every reference was written into one folder under one name
    per kind - each sound as audio.wav, each clip's frames as frame_000.png
    onwards - so the second overwrote the first before llama.cpp read them. Each
    file is now named by its place in the turn.
  • A trimmed VIDEO is described over its trim. The captioners and the Omni
    rewriter read a clip from the start of its file while Reference Slots handed
    the generator the trimmed stretch, so the description and the clip could be
    two different parts of one file. Previews and the library's thumbnails start
    at the trim as well.
  • The Universal Rewriter's Omni tab tooltip said clips, sound and Ref2AV
    were only on the Prompt Rewriter Omni node. The tab has had Ref2VA with its
    clip and sound rows for a while.

Добавлено

  • Собственный звук клипа может быть отдельным референсом. Щёлкните по полосе
    подписи клипа в стрипе Universal Writer или Prompt Rewriter Omni либо
    поставьте новую галочку с динамиком на строке reference_video у Universal
    Rewriter. На Ref2VA звук клипа тогда получает собственный <Audio N>, раньше
    всех отдельных звуков - в таком порядке их нумеруют MiniMaxH3ReferenceToVideo
    и раннер LightX2V, - а квадратик читается vid+a1. Universal Writer
    описывает этот звук строкой Audio N прямо перед клипом. Omni-адаптер его
    слышит: звук подаётся отдельной записью прямо перед клипом, другого способа
    передать звук клипа в его исходном инференсе нет. Отдельный звук, стоящий в
    стрипе раньше звучащего клипа, подаётся после него, чтобы номера сошлись.
    references сообщает, какие клипы засчитаны, и Reference Slots кладёт на
    video_audio_N ровно эти звуки. Неслышащий капшенер останавливается с
    объяснением до загрузки, а клип без звуковой дорожки нода назовёт и оставит
    без номера.
  • Уведомления о референсах, которые отклоняет раннер LightX2V. Набор Ref2VA
    из одних звуков и картинка или клип уже 1:4 или шире 4:1 там считаются
    ошибкой. MiniMaxH3ReferenceToVideo в ComfyUI берёт их без проверки, поэтому
    писатели говорят об этом всплывающим сообщением перед запуском, а не
    останавливаются.

Изменено

  • Reference Slots следует писателю. С выключенным soundtracks звук клипа
    уходит дальше ровно тогда, когда его засчитал писатель. Со включённым, как и
    раньше, звук получают все клипы, а предупреждение о сдвинутых метках считает
    только клипы, которые писатель оставил беззвучными.
  • Референсный клип описывается по той части, которую оставит генератор.
    MiniMaxH3ReferenceToVideo берёт из референсного клипа не больше длины видео,
    которое делает, и раннер LightX2V обрезает его там же. На Ref2VA Omni-ререйтер
    и капшенеры Universal Writer теперь берут кадры клипа только из этого отрезка,
    а не по всему файлу, а пачка кадров, работающая клипом, обрезается до того же
    числа кадров. Отдельные звуки по-прежнему передаются целиком, потому что
    генератор в ComfyUI кодирует такой звук целиком.
  • Самопроверка разрешает промту Ref2VA ссылаться до <Audio 6>: три
    отдельных звука и три звука клипов. Сокетов для отдельных звуков по-прежнему
    три.

Исправлено

  • Длительность, подогнанная Omni-ререйтером, совпадает с LightX2V. Длина
    теперь сначала округляется до целого кадра и только потом поднимается до
    сетки 17n+5 - в таком порядке это делает раннер LightX2V. Выравнивание дробной
    части уводило 6.6 с в 7.29 с (175 кадров там, где H3 делает 158), 7.3 с в
    8.00 с, а 15.1 с в 15.79 с, дальше 362 кадров, больше которых H3 не делает, -
    и строка выравнивания цитировала эти длины. Подсказка виджета длительности
    считала так же и исправлена так же.
  • Два звука или два клипа у Omni-ререйтера больше не показывают модели
    последний дважды.
    Все референсы писались в одну папку под одним именем на
    вид - каждый звук как audio.wav, кадры каждого клипа как frame_000.png и
    дальше, - так что второй затирал первый раньше, чем llama.cpp их читал.
    Теперь каждый файл назван по своему месту в запросе.
  • Обрезанное VIDEO описывается по своей обрезке. Капшенеры и
    Omni-ререйтер читали клип с начала файла, а Reference Slots отдавал генератору
    обрезанный отрезок, так что описание и клип могли быть разными частями одного
    файла. Превью и миниатюры библиотеки теперь тоже начинаются с точки обрезки.
  • Подсказка вкладки Omni у Universal Rewriter говорила, что клипы, звук и
    Ref2AV есть только на ноде Prompt Rewriter Omni. Ref2VA со строками клипа и
    звука на этой вкладке есть уже давно.

MiniMax-H3 Prompt Rewriter 0.29.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 21:13

Added

  • Unload model. A button on every node that has keep_model_loaded. It
    unloads what the pack is keeping in memory, at once and without a run. Until
    now the only way to let a kept model go was to turn the switch off, and the
    switch is an input: the node ran again and wrote the same text a second time
    before it unloaded. Pressed while a node is still writing, the button waits
    for that run and unloads after it. Suggested in issue #20.
  • ComfyUI's Unload Models unloads this pack's models too. They are not
    ComfyUI models, so its model management walked past them. The pack now hooks
    itself into comfy.model_management.unload_all_models, which also covers the
    /free route, ComfyUI's out-of-memory handler and the clean-up nodes of other
    packs: one of those between the writer and the sampler takes the writer out
    before the video model loads.

Changed

  • repeat_last reads keep_model_loaded. A node handing back a kept
    prompt, its own or one from the library, never reached the engine that
    honours the switch, so the model stayed whatever the switch said. With the
    switch off, such a run now unloads what the pack holds and says so in the
    caption under the node. repeat_last on and keep_model_loaded off gives the
    card back with nothing written twice.
  • A kept model no longer outlives a request to unload everything. This
    follows from the hook, and it matters in two cases. A sampler that clears the
    card for itself by calling ComfyUI's unload takes a kept writer with it, where
    before the two competed for VRAM. And under --disable-smart-memory ComfyUI
    unloads all models after every workflow run, so keep_model_loaded holds
    within a run and not across runs.

Добавлено

  • Unload model. Кнопка на каждой ноде, у которой есть keep_model_loaded.
    Сразу и без прогона выгружает то, что пакет держит в памяти. До сих пор
    отпустить оставленную модель можно было только выключив переключатель, а он
    вход ноды: нода запускалась заново и писала тот же текст второй раз, прежде
    чем выгрузить модель. Если нажать кнопку, пока нода ещё пишет, она дождётся
    конца этого прогона и выгрузит модель после него. Предложено в issue #20.
  • Unload Models в ComfyUI выгружает и модели этого пакета. Это не модели
    ComfyUI, и его управление памятью проходило мимо них. Теперь пакет
    встраивается в comfy.model_management.unload_all_models, а это ещё и маршрут
    /free, обработчик нехватки памяти в ComfyUI и ноды-чистильщики из других
    паков: такая нода между райтером и сэмплером убирает райтера раньше, чем
    загрузится видеомодель.

Изменено

  • repeat_last читает keep_model_loaded. Нода, которая отдаёт готовый
    промт, свой или из библиотеки, не доходила до движка, где этот переключатель
    соблюдается, и модель оставалась, что бы он ни говорил. Теперь при выключенном
    переключателе такой запуск выгружает то, что держит пакет, и пишет об этом в
    подписи под нодой. Включённый repeat_last и выключенный keep_model_loaded
    возвращают карту, и ничего не пишется дважды.
  • Оставленная модель больше не переживает просьбу выгрузить всё. Это
    следствие хука, и оно заметно в двух случаях. Сэмплер, который расчищает
    карту под себя вызовом выгрузки ComfyUI, заберёт и оставленного райтера, а
    раньше они делили видеопамять. А с --disable-smart-memory ComfyUI выгружает
    все модели после каждого запуска воркфлоу, так что keep_model_loaded
    действует внутри запуска, но не между запусками.

MiniMax-H3 Prompt Rewriter 0.28.1

Choose a tag to compare

@github-actions github-actions released this 12 Oct 10:03

Fixed

  • Qwen2.5-Omni runs on Transformers 4.57. The Omni rewriter on a folder of
    safetensors stopped at Unrecognized configuration class Qwen2_5OmniConfig for this kind of AutoModel: AutoModelForImageTextToText. The checkpoint is a
    wrapper, and only the thinker inside it writes text; the pack found the
    thinker's class through the image-text-to-text auto mapping, which lists it
    from Transformers 5 on and not before. 4.57 ships the class all the same,
    beside the wrapper, and when no mapping names it the pack now finds it there
    by the config it is built from. Past that, a reference picture met the next
    4.57 difference: its Omni processor reads the system turn as a list of parts
    and failed on a plain string with string indices must be integers. The
    processor now gets every turn as parts, which the chat templates of all three
    bases render exactly as they rendered the string. The requirement stays at
    4.57.1. Issue #20.

Исправлено

  • Qwen2.5-Omni работает на Transformers 4.57. Omni-рерайтер на папке
    safetensors останавливался на Unrecognized configuration class Qwen2_5OmniConfig for this kind of AutoModel: AutoModelForImageTextToText.
    Чекпоинт -- это обёртка, а текст пишет только thinker внутри неё; пакет искал
    класс thinker'а через auto-маппинг image-text-to-text, а там thinker появился
    только в Transformers 5. Сам класс в 4.57 есть, рядом с обёрткой, и теперь,
    когда ни один маппинг его не называет, пакет находит его там по конфигу, из
    которого тот строится. Дальше картинка-референс натыкалась на следующее
    отличие 4.57: Omni-процессор читает системную реплику как список частей и
    падал на обычной строке с string indices must be integers. Теперь процессор
    получает все реплики частями, а шаблоны чата всех трёх баз рендерят их ровно
    так же, как строку. Минимальная версия остаётся 4.57.1. Issue #20.

MiniMax-H3 Prompt Rewriter 0.28.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 21:44

Added

  • Check it lists what a repository holds. A GGUF entry with a repository and
    no file used to be refused for having no file -- and for having no name, if
    none was typed yet. Now Check it answers the question that was being asked:
    the GGUF files in that repository, as buttons, smallest first. A click puts the
    file into the form, and a name in the style of the packaged entries
    (Qwen2.5-Omni-7B Q4_K_M) while none of your own is typed. The lists that run a
    pair get the projectors in a row of their own, for mmproj, filled in by
    themselves when the repository holds only one; once both halves are there the
    check runs and adds up the download. A model split into parts
    (-00001-of-00003.gguf) is counted and left out, because an entry names one
    file and only that file is downloaded. A folder on this machine in repo is
    listed the same way, and a file name the repository does not have brings up
    the same buttons. A name or a size typed by hand is never replaced; a size that
    disagrees with the files gets a warning instead.

  • The windows can be resized. The prompt editor, the prompt library, the
    Model list and the bundled prompts drag from any edge or corner, fill the
    browser tab from a button in their top corner, and each kind remembers its own
    size. The prompt box in the editor grows with the window.

  • The library and the bundled prompts answer the keyboard. The arrow keys
    walk the list without leaving the search box, Enter uses the lit record -- or
    picks the lit preset -- and a double click does the same. Both open scrolled to
    what the node is pointed at, preset #850 of the thousand included.

  • A line in the footer says what happened. The library counts its prompts, or
    how many a search has left, and says what an edit or a delete did. The Model
    list counts the entries and says what was saved, deleted or put back, and how
    many nodes in this graph moved to an entry's new label. All of this used to go
    to the browser console, where nobody saw it.

Changed

  • Nothing typed is thrown away without a question. Escape or Cancel in the
    prompt editor, in "Save the last prompt" and in the Model list's entry form
    asks before closing on unsaved typing, and closes at once when nothing was
    typed. Escape is ignored while a save is on its way. "Save the last prompt" no
    longer closes on a click beside it.

  • Delete in the library asks first. The record is gone for good -- the
    library keeps no other copy -- and the question says so, and says when the
    node's own choice goes with it.

  • Questions and failures come in the pack's own windows rather than the
    browser's alert and confirm boxes. A dangerous question starts on Cancel,
    so a reflexive Enter does not answer it.

  • A change made from a window counts at once. ComfyUI looks for changes on
    mouseup, which comes before the click, so Use in the library, an edited answer
    switching repeat_last on, an + instr question set with its button and the
    like marked the workflow as modified only at the next click -- and Ctrl+Z took
    them back together with whatever came next. They now count straight away, one
    step each. Typing in a LoRA Triggers row counts as one step when the field is
    left, rather than one per letter.

  • The Model list's entry form no longer underlines repository ids as spelling
    mistakes or offers the browser's typing history.

Fixed

  • Deleting a model entry no longer clears the nodes that use it. With nothing
    on disk to fall back to, the server leaves those nodes holding the old name, so
    that a run says the entry is gone rather than picking another model for them --
    and the window then wrote an empty value into them anyway. They keep the name
    now, and the footer says how many do.

  • A server that cannot be reached no longer leaves a window stuck. Every
    request from the windows now comes back with an answer while ComfyUI restarts
    or is gone, so a Save button no longer stays greyed out for good. "New prompt
    file" says why a file was not made, "Edit the last prompt" says why the answer
    could not be read instead of opening an empty editor, a library that could not
    be read says so instead of "This set is empty", and the bundled prompts try
    again on the next open instead of remembering the failure.

  • "Opened" on the Open models.json button appears only when the file did
    open, and Open guide folder says so too.


Добавлено

  • Check it показывает, что лежит в репозитории. GGUF-запись с репозиторием,
    но без файла раньше отклонялась за отсутствие файла -- и имени, если его ещё не
    набрали. Теперь Check it отвечает на вопрос, который на самом деле задавался:
    GGUF-файлы этого репозитория кнопками, от меньшего к большему. Клик ставит файл
    в форму, а пока своего имени нет -- ещё и имя в стиле записей из пакета
    (Qwen2.5-Omni-7B Q4_K_M). Спискам, которым нужна пара, проекторы показываются
    отдельной строкой для mmproj; если проектор в репозитории один, он
    подставляется сам, а когда на месте обе половины, проверка запускается и
    складывает размер загрузки. Модель, разбитая на части
    (-00001-of-00003.gguf), подсчитывается и пропускается: запись называет один
    файл, и скачивается только он. Папка на этом компьютере в repo перечисляется
    так же, а имя файла, которого в репозитории нет, выводит те же кнопки. Имя и
    размер, набранные вручную, не заменяются; если размер расходится с файлами,
    форма об этом предупреждает.

  • Окна меняют размер. Редактор промта, библиотека, Model list и встроенные
    промты тянутся за любой край или угол, кнопкой в верхнем углу разворачиваются на
    всю вкладку браузера, и каждое окно запоминает свой размер. Поле промта в
    редакторе растёт вместе с окном.

  • Библиотеку и встроенные промты можно листать с клавиатуры. Стрелки ходят по
    списку, не уводя курсор из строки поиска, Enter применяет подсвеченную запись
    (или выбирает подсвеченный пресет), двойной клик делает то же самое. Оба окна
    открываются прокрученными к тому, на что наведена нода, будь это хоть пресет
    #850 из тысячи.

  • Строка внизу окна говорит, что произошло. Библиотека считает свои промты
    или сколько их осталось после поиска и говорит, что сделали правка или удаление.
    Model list считает записи, говорит, что сохранено, удалено или восстановлено, и
    сколько нод этого графа перешли на новую подпись записи. Раньше всё это уходило
    в консоль браузера, где его никто не видел.

Изменено

  • Набранное не выбрасывается без вопроса. Escape и Cancel в редакторе промта,
    в "Save the last prompt" и в форме записи Model list спрашивают, прежде чем
    закрыть окно с несохранённым текстом, а если ничего не набрано, закрывают сразу.
    Пока идёт сохранение, Escape не срабатывает. "Save the last prompt" больше не
    закрывается кликом мимо окна.

  • Delete в библиотеке сначала спрашивает. Запись удаляется насовсем: другой
    копии у библиотеки нет. Вопрос так и говорит, а заодно предупреждает, если
    вместе с записью сбросится выбор ноды.

  • Вопросы и ошибки выводятся в собственных окнах пакета, а не в системных
    alert и confirm браузера. В опасном вопросе фокус стоит на Cancel, чтобы
    случайный Enter ничего не подтвердил.

  • Изменение из окна засчитывается сразу. ComfyUI ищет изменения на mouseup,
    который приходит раньше клика, поэтому Use в библиотеке, правка ответа, которая
    включает repeat_last, вопрос + instr, заданный кнопкой, и подобное помечали
    воркфлоу изменённым только при следующем клике -- а Ctrl+Z откатывал их вместе со
    следующим действием. Теперь они засчитываются сразу, каждое отдельным шагом.
    Набор текста в строке LoRA Triggers становится одним шагом, когда уходишь с
    поля, а не шагом на каждую букву.

  • Форма записи Model list больше не подчёркивает id репозиториев как опечатки и не
    подсказывает из истории ввода браузера.

Исправлено

  • Удаление записи модели больше не сбрасывает ноды, которые её используют.
    Когда на диске нет файла, на который можно перейти, сервер оставляет таким нодам
    старое имя, чтобы запуск сказал, что записи нет, а не выбрал за них другую
    модель. Окно же всё равно записывало в них пустое значение. Теперь имя остаётся,
    и внизу окна написано, сколько нод его держат.

  • Недоступный сервер больше не подвешивает окна. Каждый запрос из окон теперь
    получает ответ, даже когда ComfyUI перезапускается или упал, поэтому кнопка Save
    больше не остаётся серой навсегда. "New prompt file" говорит, почему файл не
    создан; "Edit the last prompt" говорит, почему ответ не прочитался, вместо того
    чтобы открыть пустой редактор; библиотека, которую не удалось прочитать, так и
    говорит вместо "This set is empty"; а встроенные промты при следующем открытии
    пробуют снова, а не помнят неудачу.

  • "Opened" на кнопке Open models.json появляется только тогда, когда файл
    действительно открылся, и Open guide folder теперь тоже это сообщает.

MiniMax-H3 Prompt Rewriter 0.27.1

Choose a tag to compare

@github-actions github-actions released this 29 Sep 13:17

Fixed

  • An MTP build of the right base is no longer the wrong size. A GGUF that
    carries a speculative-decoding draft head counts it in block_count, so a
    Qwen3.6-27B built with one read as 65 blocks and the rewriter refused it as
    (wrong size for the adapter). The header records the head separately, in
    nextn_predict_layers; llama.cpp loads it only for --spec-type draft-mtp,
    which the pack never passes, and the adapter has no tensors for it. The shape
    check now compares the blocks without the head, and Check it mentions the head
    when there is one. Issue #18.

Added

  • A warning when the header names another model. The shape check cannot
    tell Qwen3.8-27B from Qwen3.6-27B: same architecture, 64 blocks of 5120.
    llama.cpp attaches the LoRA to it, to weights the LoRA was never trained on,
    and until now nothing said so. The 27B, 8B and Omni rewriters now read the
    names a GGUF gives itself (general.name, general.basename with its size
    label, every general.base_model) and say so on the node and in Check it when
    none of them is the adapter's base. It warns and does not refuse: those fields
    are optional and written by whoever quantised the file, so a file that names
    nothing gets no warning, and a fine-tune that names the base is taken at its
    word.

Исправлено

  • MTP-сборка правильной базы больше не считается моделью не того размера.
    GGUF с драфт-головой для спекулятивного декодирования включает её в
    block_count, поэтому Qwen3.6-27B с такой головой читалась как 65 блоков, и
    рерайтер отказывал ей с пометкой (wrong size for the adapter). Заголовок
    записывает голову отдельно, в nextn_predict_layers; llama.cpp грузит её
    только при --spec-type draft-mtp, который пакет никогда не передаёт, а у
    адаптера для неё нет тензоров. Теперь проверка формы сравнивает блоки без
    головы, а Check it упоминает голову, если она есть. Issue #18.

Добавлено

  • Предупреждение, когда заголовок называет другую модель. Проверка формы не
    отличает Qwen3.8-27B от Qwen3.6-27B: та же архитектура, 64 блока шириной 5120.
    llama.cpp цепляет к ней LoRA, то есть к весам, на которых LoRA не обучалась, и
    до сих пор об этом ничего не говорилось. Рерайтеры 27B, 8B и Omni теперь
    читают имена, которые GGUF даёт сам себе (general.name, general.basename
    вместе с размером, все general.base_model), и если ни одно из них не
    совпадает с базой адаптера, говорят об этом на ноде и в Check it. Это
    предупреждение, а не отказ: поля необязательные и заполняются тем, кто
    квантовал файл, поэтому файл без имён предупреждения не получает, а файнтюну,
    который называет базу, пакет верит на слово.

MiniMax-H3 Prompt Rewriter 0.27.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 17:29

Added

  • Check it reads the chat template. The 27B rewriter and the guided writers
    build their prompt from the model's own template, so a GGUF without one -- the
    base conversion of a model rather than the instruct one, typically -- passed
    every check and then stopped on the first run with "this GGUF has no embedded
    chat template". On those lists Check it now refuses such a file, and renders
    the template once on a system and a user turn, so one the pack cannot render
    is refused too. The captioners and the 8B and Omni rewriters leave the template
    to llama-mtmd-cli, which falls back to ChatML, so there a missing one is a
    warning.

  • The Prompt Reducer has the Model list button. It reads the writer list, but
    was missing from the table of nodes that do: no button, and an entry added in
    the window never reached its dropdown until the page was reloaded.

  • An on disk tag in the Model list window on every entry whose files are
    already here, so choosing it downloads nothing.

Changed

  • One row per model. An entry that had downloaded its file was offered twice:
    under its own name, and again as the on disk: row the folder scan found for
    that same file. The scanned row is now left out when an entry already stands
    for it -- on the machine this was written on, six such pairs across the five
    lists. A workflow saved with the on disk: label keeps running the same file,
    and is moved to the entry's label when it is opened.

  • A label saved before an edit keeps working. Changing an entry's download
    size, VRAM note or note changed its label, and every workflow saved with the
    old one stopped at ComfyUI's "Value not in list". An entry is now found by its
    name: the old label passes validation, runs the entry, and is replaced by the
    new one when the workflow is opened. Renaming the entry itself still loses the
    choice in other workflows, and the edit form says which of the two a change is.

  • A model that is gone says so in words. A dropdown value the list no longer
    has failed with "Value not in list" and forty labels; it now fails with what
    to do about it -- pick another entry, or add it back with the Model list
    button. Only what the dropdown can name passes: a path typed into an API
    prompt is refused as before.

  • Deleting an entry whose file is here moves its nodes to that file. Its
    on disk: row comes back into the dropdown, and the nodes in the open graph
    that used the entry move to it. With nothing on disk they keep the value and
    the run says the entry is gone, rather than picking another model and starting
    a download.

  • The Universal Rewriter checks only the base the chosen tab runs. An 8B entry
    deleted from the list stopped a graph that was running the 27B.

  • Editing the list reaches every node, not just the ones on the canvas. A node
    added from the library afterwards, a workflow tab switched to later and a combo
    promoted out of a subgraph all went on offering the old list until the page
    was reloaded. The window now has ComfyUI re-read the node definitions after
    every change, in both renderers; it used to do that under Nodes 2.0 only.

Fixed

  • A model already downloaded was downloaded again once extra_model_paths.yaml
    named an LLM folder of its own.
    ComfyUI puts such a folder first, and the
    nodes looked for an entry's files in the first LLM folder only -- so
    everything fetched into ComfyUI/models/LLM before the line was added counted
    as missing, 19.5 GB for the 27B. Files are now looked for in every LLM
    folder, and only a new download goes to the first one. An interrupted second
    copy may have left a .part file in the new folder; it can be deleted.

  • A model and its projector put flat in an LLM folder were downloaded
    again.
    A pair is fetched into a folder named after its repository, and that
    folder was the only place a pair was looked for -- so a pair sitting flat in
    models/LLM, fetched by an older version or by hand, counted as missing while
    Check it reported it on disk. 5 GB of Qwen3-VL-8B started downloading beside an
    exact copy of itself. A flat pair now counts when both files are in the same
    folder, and Check it asks the same question the node does. A single GGUF put by
    hand into a folder named after its repository is found too.

  • Downloads work behind an antivirus that inspects HTTPS. An antivirus that
    scans encrypted connections re-signs huggingface.co with a root certificate it
    installs in the Windows store, so the browser opens the site and every
    download from this pack stopped at "self-signed certificate in certificate
    chain": requests checks certifi's bundle and nothing else. The pack's own
    requests -- the file listing, the transfer, Check it, the guides, the llama.cpp
    binaries -- now trust the system store as well as certifi. Verification stays
    on. A certificate that neither trusts gets a message saying what is likely in
    the way, and does not spend five retries on it. huggingface_hub and hf_xet
    bring their own TLS, so the huggingface_hub downloader still fails there; its
    error now says so and points at the built-in transfer.

  • The Universal Writer's self-check counted sockets, not labels. A picture
    whose badge in the strip makes it a clip is Video N in the block the writer
    reads, and one made a subject is Subject N; the check still counted it as a
    picture. So a correct <Video 2> was reported as "cited, but only 1 video(s)
    reached this node", a <Picture 5> that was never written was reported as not
    cited -- and with fix_once on, the writer was asked to write the answer again
    to agree. Labels carried in on previous were not counted either. The check
    now reads the block the writer was given, and the memory and library checks
    count a badged picture as what the prompt calls it.

  • A download leaves lines in the console. Only the caption under the node
    showed one, so a run that sat on a download for a minute and was cancelled left
    the console blank. It now says what is fetched into which folder, where a
    transfer stopped and that the next run carries on from there, and how many
    files arrived.


Добавлено

  • Check it читает шаблон чата. Ререйтер 27B и писатели собирают промт по
    собственному шаблону модели, поэтому GGUF без него (обычно базовая конвертация
    модели, а не instruct) проходил все проверки и останавливался на первом же
    запуске с "this GGUF has no embedded chat template". В этих списках Check it
    теперь такой файл отклоняет, а шаблон один раз прогоняет на системной и
    пользовательской репликах, так что отклоняется и шаблон, который пак не может
    отрендерить. Капшенеры и ререйтеры 8B и Omni оставляют шаблон
    llama-mtmd-cli, а тот без шаблона берёт ChatML, так что там его отсутствие -
    предупреждение.

  • У Prompt Reducer появилась кнопка Model list. Он читает список писателей,
    но в таблице нод, которые это делают, его не было: ни кнопки, ни записи,
    добавленной в окне, в его выпадающем списке до перезагрузки страницы.

  • Метка on disk в окне Model list у каждой записи, чьи файлы уже здесь:
    выбор такой записи ничего не скачивает.

Изменено

  • Одна строка на модель. Запись, которая уже скачала свой файл, предлагалась
    дважды: под своим именем и ещё раз строкой on disk:, которую сканирование
    папок нашло для того же файла. Теперь строка сканирования не показывается, если
    за этот файл уже отвечает запись; на машине, где это писалось, таких пар было
    шесть на пять списков. Воркфлоу, сохранённый с подписью on disk:, запускает
    тот же файл, а при открытии переходит на подпись записи.

  • Подпись, сохранённая до правки, продолжает работать. Смена размера загрузки,
    заметки о VRAM или примечания меняла подпись записи, и каждый воркфлоу со
    старой подписью останавливался на "Value not in list" ComfyUI. Теперь запись
    находится по имени: старая подпись проходит проверку, запускает запись и при
    открытии воркфлоу заменяется новой. Переименование самой записи по-прежнему
    лишает выбора другие воркфлоу, и форма правки говорит, какой из двух случаев
    перед вами.

  • Пропавшая модель объясняет себя словами. Значение, которого в списке больше
    нет, падало с "Value not in list" и сорока подписями; теперь - с тем, что
    делать: выбрать другую запись или вернуть эту кнопкой Model list. Проходит
    только то, что может назвать выпадающий список: путь, вписанный в промт через
    API, отклоняется, как и раньше.

  • Удаление записи, чей файл уже здесь, переводит её ноды на этот файл. Его
    строка on disk: возвращается в выпадающий список, и ноды открытого графа,
    использовавшие запись, переходят на неё. Если на диске ничего нет, ноды
    сохраняют значение, а запуск говорит, что записи больше нет, вместо того чтобы
    подставить другую модель и начать загрузку.

  • Universal Rewriter проверяет только базу выбранной вкладки. Запись 8B,
    удалённая из списка, останавливала граф, который запускал 27B.

  • Правка списка доходит до всех нод, а не только до стоящих на холсте. Нода,
    добавленная из библиотеки после правки, вкладка воркфлоу, на которую
    переключились позже, и combo, вынесенный из сабграфа, продолжали предлагать
    старый список до перезагрузки страницы. Теперь после каждой правки окно просит
    ComfyUI перечитать определения нод в обоих рендерерах; раньше это делалось
    только под Nodes 2.0.

Исправлено

  • Уже скачанная модель скачивалась заново, как только extra_model_paths.yaml
    называл свою папку LLM.
    ComfyUI ставит такую папку первой, а ноды искали
    файлы записи только в первой папке LLM, поэтому всё, что было скачано в
    ComfyUI/models/LLM до появления этой строки, считалось отсутствующим - для
    27B это 19.5 ГБ. Теперь файлы ищутся во всех папках LLM, и только новая
    загрузка идёт в первую. От прерванной второй копии в новой папке мог остаться
    файл .part; его можно ...
Read more

MiniMax-H3 Prompt Rewriter 0.26.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 18:58

Added

  • The reference squares show what is plugged into them. On Universal Writer,
    Prompt Rewriter Omni and Multi Reference Caption, a picture shows its
    thumbnail, a clip its first frame with a play mark in the corner, and a sound
    its waveform with a speaker and the file name. Hovering plays a clip and flips
    through a batch of frames; the tooltip adds the file, the size, the frame count
    and the length. A sound, after a short hover, plays its first six seconds and
    lights its wave up as it goes; a press on the square stops it. The number moves
    to a corner of the preview.

    A square wired to a loader -- Load Image, Load Video, Load Audio or
    VideoHelperSuite's loaders, through reroutes too -- shows the file before
    anything runs. One fed through other nodes shows what reached the node on its
    last run: small JPEG thumbnails, 24 waveform bars and a six-second MP3 of each
    sound are sent to the page, not the media, and a reloaded page asks for them
    again.

Changed

  • A reference with its own instruction is hard to miss. The band under it is
    amber for + instr and orange for = instr, and the whole square gets a ring
    of the same colour. It used to be a slightly lighter band, and a question set
    on one reference could go unnoticed for hours.

Fixed

  • Reference Adapter: a clip from a bundle is a clip again.
    That pack puts its clips in the bundle as frames. Read by value they were
    pictures and, with split_batches on, one picture a frame: video_N stayed
    empty, the pictures ran over capacity, and the clip's paired soundtrack took
    the place of the first standalone sound. The frames now go out as a VIDEO at
    24 fps with the paired soundtrack inside it. A track not paired with a clip is
    still a sound of its own.

  • Captioning a high-resolution clip no longer overflows the context. The
    captioner took a clip's frames at full size, and llama.cpp charges a picture
    by its resolution: eight frames of a 1080p clip are over twenty thousand
    tokens, and a context of 8192 refused the request whole. The pictures are now
    shrunk to share what the context has left once the answer and the text are set
    aside -- never more than 768 tokens a frame, which is what Qwen's own video
    processor allows, and never fewer than 128. A single picture is shrunk only
    when it would not fit otherwise. This is the captioning in Universal Writer,
    Multi Reference Caption and Reference Caption.


Добавлено

  • Квадратики референсов показывают, что в них подключено. В Universal Writer,
    Prompt Rewriter Omni и Multi Reference Caption у картинки видна миниатюра, у
    клипа первый кадр со значком воспроизведения в углу, у звука волна со значком
    динамика и названием файла. При наведении клип проигрывается, а батч кадров
    перелистывается; подсказка добавляет файл, размер, число кадров и длительность.
    Звук после короткой задержки играет первые шесть секунд, и волна загорается по
    мере проигрывания; нажатие на квадратик его глушит. Номер уезжает в угол
    превью.

    Квадратик, подключённый к загрузчику (Load Image, Load Video, Load Audio или
    загрузчики VideoHelperSuite, в том числе через reroute), показывает файл ещё до
    запуска. Подключённый через другие ноды показывает то, что пришло в ноду при
    последнем запуске: на страницу уходят маленькие JPEG-миниатюры, 24 столбика
    волны и шестисекундный MP3 каждого звука, а не само медиа, и перезагруженная страница запрашивает их заново.

Изменено

  • Референс со своей инструкцией трудно не заметить. Полоса под ним янтарная
    для + instr и оранжевая для = instr, а весь квадратик обведён рамкой того же
    цвета. Раньше полоса становилась лишь чуть светлее, и вопрос, заданный одному
    референсу, можно было не замечать часами.

Исправлено

  • Reference Adapter: клип из бандла - снова клип. Этот пак
    кладёт клипы в бандл кадрами. По значению они читались как картинки, а при
    включённом split_batches - как картинка на кадр: video_N оставался пустым,
    картинки не влезали, а парная дорожка клипа занимала место первого
    самостоятельного звука. Теперь кадры уходят как VIDEO на 24 fps с парной
    дорожкой внутри. Дорожка без пары с клипом по-прежнему самостоятельный звук.

  • Разбор клипа большого разрешения больше не переполняет контекст. Капшенер
    брал кадры клипа в полном размере, а llama.cpp считает картинку по её
    разрешению: восемь кадров клипа 1080p - это больше двадцати тысяч токенов, и
    контекст 8192 отклонял запрос целиком. Теперь картинки ужимаются, чтобы
    поделить то, что остаётся от контекста после ответа и текста: не больше 768
    токенов на кадр, как позволяет собственный видеопроцессор Qwen, и не меньше
    128. Одиночная картинка ужимается, только если иначе не влезает. Это разбор
    референсов в Universal Writer, Multi Reference Caption и Reference Caption.

MiniMax-H3 Prompt Rewriter 0.25.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 16:20

Added

  • MiniMax-H3 Reference Slots: a writer's references, handed on in the order
    its prompt numbers them.
    Reorder the sound squares on a Universal Writer and
    the generated video speaks with the wrong voice. MiniMaxH3ReferenceToVideo
    numbers its references by the socket they arrive on, the writers number theirs
    by the strip, and with the same assets wired to both by hand the two orders
    agree only until a square is dragged. Switching a reference off went wrong the
    same way: gone from the prompt, still in the video.

    The writers now hand on what they numbered, and this node puts each reference
    on the socket carrying its number -- picture_2 is <Picture 2>. Wire it
    straight across to MiniMaxH3ReferenceToVideo once and do the arranging in the
    strip from then on. A switched-off reference is not handed on at all, and the
    generator closes up its numbering around an empty socket the same way the
    writer closed up its labels.

    Clips are decoded here and not in the writer: at 24 fps, on the canvas the
    generator would scale them to anyway, and up to 15 seconds. A trimmed VIDEO is
    read over its trim. A clip's own sound goes to video_audio_N only with
    soundtracks on, and that is off by default -- the generator gives the sound
    an <Audio N> of its own ahead of every standalone sound, the writers do not
    count it, and so switching it on moves every <Audio N> in the prompt. The
    summary says by how much.

    It is a node of its own rather than a mode of the Reference Adapter. The
    adapter feeds the writers and hands a clip on as a VIDEO; this one feeds the
    generator, which takes a clip as frames and its sound on a socket of its own.

  • A references output on Universal Writer, Prompt Rewriter Omni and
    Universal Rewriter.
    Appended after every existing output, so no link in a
    saved workflow moves. It carries what the prompt names and nothing else: every
    switched-on square in strip order, nothing on a text-only task, and on the
    Universal Rewriter only what the current tab reads.

    It is built from the live inputs on every path -- bypass, a library pick and
    repeat_last included -- and is never stored. The library and the node
    memory keep text only, so records saved before this version load exactly as
    they did.

    On the Universal Writer a picture badged as a subject goes after the pictures.
    The prompt calls it Subject N, never <Picture N>, and the generator has no
    subject socket, so the only number it can take without landing on a picture
    the prompt names is one past the last of them.

Changed

  • Example 6, References to video, goes through Reference Slots. The two
    pictures used to be wired to the writer and to the generator separately,
    which is exactly the arrangement that falls apart when a square is dragged.
    They now reach the generator from the writer's references output, so the
    order is set in the strip and nowhere else. The note on the canvas says how to
    wire clips and sounds the same way.

Добавлено

  • MiniMax-H3 Reference Slots: референсы писателя передаются в том порядке, в
    каком их нумерует его промт.
    Переставьте звуковые квадратики в Universal
    Writer, и сгенерированное видео заговорит не тем голосом.
    MiniMaxH3ReferenceToVideo нумерует референсы по сокету, на который они
    пришли, писатели нумеруют свои по полосе, и когда одни и те же ассеты
    подключены к обеим нодам руками, два порядка совпадают только до первого
    перетащенного квадратика. Выключенный референс ломался так же: из промта
    пропал, в видео остался.

    Теперь писатели отдают то, что пронумеровали, а эта нода кладёт каждый
    референс на сокет с его номером -- picture_2 это <Picture 2>. Один раз
    подключите её напрямую к MiniMaxH3ReferenceToVideo, а дальше расставляйте всё
    в полосе. Выключенный референс не передаётся вовсе, а генератор смыкает
    нумерацию вокруг пустого сокета так же, как писатель сомкнул свои метки.

    Клипы декодируются здесь, а не в писателе: в 24 fps, на холсте, до которого
    генератор масштабировал бы их и сам, и не длиннее 15 секунд. Обрезанное VIDEO
    читается по своей обрезке. Собственный звук клипа попадает на video_audio_N
    только при включённом soundtracks, а по умолчанию он выключен: генератор даёт
    этому звуку собственный <Audio N> раньше всех отдельных звуков, писатели его
    не считают, и включение сдвигает каждый <Audio N> в промте. На сколько --
    скажет summary.

    Это отдельная нода, а не режим Reference Adapter. Адаптер кормит писателей и
    отдаёт клип как VIDEO; эта кормит генератор, который берёт клип кадрами, а его
    звук -- на отдельном сокете.

  • Выход references у Universal Writer, Prompt Rewriter Omni и Universal
    Rewriter.
    Добавлен после всех существующих выходов, так что ни одна связь в
    сохранённом воркфлоу не сдвигается. Несёт то, что названо в промте, и ничего
    больше: каждый включённый квадратик в порядке полосы, ничего на текстовой
    задаче, а у Universal Rewriter -- только то, что читает текущая вкладка.

    Собирается из текущих входов на каждом пути -- в том числе при bypass, при
    выборе из библиотеки и при repeat_last -- и нигде не хранится. Библиотека и
    память ноды держат только текст, поэтому записи, сохранённые до этой версии,
    загружаются как раньше.

    В Universal Writer картинка с бейджем "субъект" встаёт после картинок. Промт
    называет её Subject N и никогда <Picture N>, а сокета для субъектов у
    генератора нет, поэтому единственный номер, который она может занять, не
    попав на картинку из промта, -- следующий за последней из них.

Изменено

  • Пример 6, References to video, идёт через Reference Slots. Раньше две
    картинки подключались к писателю и к генератору по отдельности -- ровно та
    разводка, которая разваливается, стоит перетащить квадратик. Теперь они
    попадают в генератор с выхода references писателя, так что порядок задаётся
    в полосе и больше нигде. Заметка на холсте объясняет, как так же подключить
    клипы и звуки.

MiniMax-H3 Prompt Rewriter 0.24.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 11:19

Added

  • MiniMax-H3 LoRA Triggers: the words an adapter answers to, kept with the
    workflow and put back into the prompt.
    A LoRA trained with a trigger in the
    caption prefix does nothing at all until that word is in the text, and no
    other node in the pack has any reason to keep it: the writers write prose, the
    reducer shortens it, the self-check judges it, and a word that exists to wake
    an adapter three nodes later is exactly what all three drop. So it gets typed
    in by hand after every run and lost on the next one -- the only place in the
    pipeline where finished text is edited by hand, and the one part of a prompt
    that cannot be regenerated.

    One row is one adapter: a grip, a tick, a name for your own use, the words
    that go in verbatim, a mark saying which part of the prompt they go into, and
    a cross. A row can hold several words separated by commas, which is what an
    adapter with more than one trigger needs; they are checked and added one at a
    time, so a row is never half-duplicated. Rows are dragged by the grip into the
    order you want them, and that order is not decoration -- rows sharing a
    placement are written into the prompt in list order. Outputs are the prompt,
    the words this run actually added, and findings.

    The list is drawn with the pack's own DOM toolkit rather than on the canvas,
    so it survives ComfyUI's Nodes 2.0 renderer.

  • Placement is per row, not per node. Five positions: the description, the
    soundscape and the music open their own field after its label, and the top and
    the end of the prompt are positions rather than fields -- which is why those
    two still work on a text carrying no labels at all. The mark in the row is
    short on purpose; seeing where every word is bound for without opening
    anything is half of what the list is for. Where these overlap the effect
    embeddings node they are worded identically, because they name the same place.

    The field set differs by task -- three for T2VA, six for Ref2VA -- and the
    node only ever sees a text, so a placement naming a field this prompt has not
    got falls back to the top and says so on findings. Unlike an embedding
    token, ordinary words do not flatten the line breaks under them, so the top of
    the prompt is a safe place here.

  • It checks for the word rather than removing it, and that is the difference
    from the effect embeddings node.
    Those ten tokens are known strings and can
    be cut back out, which is how unticking one removes it. These words are
    somebody's own: cutting out a trigger spelled detail would eat the prose it
    was sitting in. So a word already in the text is not added a second time --
    matched on word boundaries, case-insensitively -- and unticking a row stops it
    being added rather than taking it away, because the word may well have come
    from the writer. Running the same text through twice changes nothing, which is
    what the node needs to be safe at the tail of a graph that gets run again and
    again.

  • A field that says N/A is pointed out rather than mended. Ref2VA prompts
    are full of non_diegetic_music: N/A, and words put at the start of one leave
    a field that names something and then says there is none of it. The node says
    so on findings and changes nothing else. Replacing the marker would be the
    louder lie -- the field would then claim there is music, called ohwx face,
    and the self-check reads that field -- and dropping the words would be the node
    overruling a placement that was asked for on purpose. Both are decisions about
    somebody else's prompt, which is exactly what this node does not make.

  • Nothing is read out of the LoRA files, and that is not a shortfall. Of
    forty-four adapters on the machine this was written on, one carried
    trigger_word, one carried an empty trigger_words, and none carried
    ss_tag_frequency. The pack can read a safetensors header already
    (embeddings.header), so this is not about cost -- the data is not there, and
    an adapter often answers to several words where the metadata has room for one.
    The list is yours.

  • bypass on both of the nodes that write into a finished prompt. The
    pack's own switch, with the purple badge in the title bar the writers have:
    the prompt goes through untouched, tokens comes back 0, added and
    findings empty, and no file header is read.

    ComfyUI's own bypass is not the same thing on a node like this, which is why
    the switch exists. It stands an input in for each output by matching types,
    and there are three outputs here and one socket to fill them from. Measured on
    the triggers node: prompt arrives, findings is handed the whole prompt as
    though it were a finding, and added loses its link altogether -- leaving
    whatever it fed with no input at all. On the embeddings node tokens is an
    INT with no INT input to stand in for it, so that link goes the same way.
    Nothing reports any of it.

    Neither node runs a model, so this is not about VRAM: it is about judging a
    prompt with the words in and with the words out, without unwiring anything.
    Switching it on stops words being added; it does not take out words the text
    arrived with.

  • A seventh example workflow: 7 - LoRA triggers and effects. The bundled
    presets into the check into both of the nodes that write into a finished
    prompt, ending in four previews: the prompt, the words this run added, and
    what each of the two noticed. It loads nothing and downloads nothing -- the
    prompt comes from the thousand that ship with the pack.

    The list is set up with four rows, one per placement, so the marks read as a
    column, and the wiring makes the ordering rule visible: the check measures the
    text before either node lengthens it. The fourth row is switched off, which is
    the shortest way to show what that does and what it deliberately does not. The
    card the template browser draws beside it comes from tools/template_cards.py
    like the other six.


Добавлено

  • MiniMax-H3 LoRA Triggers: слова, на которые отзывается адаптер, живут
    вместе с воркфлоу и возвращаются в промт.
    LoRA, обученная с триггером в
    префиксе подписи, не делает ровно ничего, пока этого слова нет в тексте, — а
    держать его в тексте незачем ни одной другой ноде пака: писатели пишут прозу,
    редуктор её сокращает, самопроверка её судит, и слово, которое стоит там
    только ради того, чтобы через три ноды проснулся адаптер, — ровно то, что все
    трое выбрасывают. Значит, его дописывают руками после каждого прогона и теряют
    на следующем. Это единственное место во всём конвейере, где готовый текст
    правят вручную, и единственная часть промта, которую нельзя сгенерировать
    заново.

    Одна строка — один адаптер: грип, галочка, имя для себя, слова, которые уйдут
    в промт дословно, пометка о том, в какую часть промта они уйдут, и крестик. В
    строке может стоять несколько слов через запятую — это то, что нужно адаптеру
    с несколькими триггерами; проверяются и вставляются они по одному, так что
    строка никогда не продублируется наполовину. Строки перетаскиваются за грип в
    нужный порядок, и порядок этот не украшение: строки с одним размещением
    уходят в промт в порядке списка. На выходе промт, слова, которые этот прогон
    действительно вставил, и findings.

    Список рисуется собственным DOM-инструментарием пака, а не на канвасе, — и
    поэтому переживает рендерер Nodes 2.0.

  • Размещение у каждой строки своё, а не одно на ноду. Пять позиций: описание,
    звук и музыка открывают своё поле сразу после метки, а верх и конец промта —
    это позиции, а не поля, поэтому только они и работают на тексте вовсе без
    меток. Пометка в строке короткая намеренно: видеть с одного взгляда, куда что
    уедет, ничего не раскрывая, — половина смысла списка. Там, где эти позиции
    совпадают с нодой эффект-эмбеддингов, они названы теми же словами, потому что
    это одно и то же место.

    Набор полей у задач разный — три у T2VA, шесть у Ref2VA, — а нода видит только
    текст, так что размещение, для которого в этом промте поля нет, откатывается
    наверх и говорит об этом в findings. В отличие от токена эмбеддинга обычные
    слова не схлопывают переносы строк под собой, так что верх промта здесь
    безопасен.

  • Нода проверяет наличие слова, а не удаляет его, — и этим отличается от ноды
    эффект-эмбеддингов.
    Те десять токенов известны заранее и вырезаются
    безопасно, поэтому снятая галочка там убирает эффект. Здесь слова
    пользовательские: вырезать триггер, написанный как detail, значит выесть
    дыру в авторской прозе. Поэтому слово, которое в тексте уже есть, второй раз
    не вставляется — поиск по границам слова, без учёта регистра, — а снятая
    галочка перестаёт добавлять, но не убирает: слово могло прийти и от писателя.
    Повторный прогон того же текста не меняет ничего, а это ровно то, что ноде
    нужно, чтобы стоять в хвосте графа, который гоняют раз за разом.

  • Поле, в котором стоит N/A, нода отмечает, а не чинит. В промтах Ref2VA
    сплошь и рядом non_diegetic_music: N/A, и слова, поставленные в начало
    такого поля, оставляют поле, которое что-то называет и тут же говорит, что
    ничего этого нет. Нода пишет об этом в findings и больше не делает ничего.
    Заменить маркер было бы ложью погромче — поле начало бы утверждать, что музыка
    есть и называется «ohwx face», а это поле читает самопроверка, — а выбросить
    слова значило бы отменить размещение, выбранное нарочно. И то и другое —
    решения о чужом промте, а их эта нода не принимает.

  • Из файлов LoRA не читается ничего, и это не компромисс. Из сорока четырёх
    адаптеров на машине автора trigger_word нашёлся у одного, trigger_words —
    у второго и пустой, ss_tag_frequency — ни у одного. Заголовок safetensors
    пак читать умеет (embeddings.header), так что дело не в стоимости: данных
    просто нет, а триггеров у адаптера бывает несколько там, где в метаданных
    место ровно под одно. Сп...

Read more

MiniMax-H3 Prompt Rewriter 0.23.1

Choose a tag to compare

@github-actions github-actions released this 08 Sep 16:25

Added

  • README_ZH.md: the whole README in Simplified Chinese.
    This is the full text rather than a summary: the same 43 sections in the same
    order, the same screenshots, the same tables and the same measurements.

    It says at the top what it is. The author does not read Chinese, the
    translation was made by an AI, mistakes are worth an issue, and where the two
    pages disagree the English one is right.

    Node names, widget names, answer fields, paths, environment variables and
    model names stay in English -- the policy the Languages section already
    states for the Russian locale. They are identifiers, and a translated
    identifier matches nothing on the node, in the workflow JSON, in this
    changelog or in a search box. A node's section heading keeps its English name
    and adds a Chinese gloss after it, so the name can still be copied into
    ComfyUI's node search.

    tools/toc.py writes its contents list and its anchors like it does for the
    other two, and the doc tests cover it the same way: 43 sections, 43 internal
    links, every one of them resolving.

    The node interface itself is not translated. locales/zh/ is a separate job.


Добавлено

  • README_ZH.md: весь README на упрощённом китайском.
    Перевод полный, а не сокращённый: те же 43 раздела в том же порядке, те же
    скриншоты, те же таблицы и те же замеры.

    В шапке честно сказано, что это такое. Автор не знает китайского, перевод
    сделан ИИ, об ошибках стоит писать в issues, а при расхождении двух страниц
    верна английская.

    Имена нод, виджетов, полей ответа, пути, переменные окружения и названия
    моделей остаются английскими - ровно та политика, которая уже описана в
    разделе Languages для русской локали. Это идентификаторы, и переведённый
    идентификатор не совпадает ни с нодой, ни с JSON воркфлоу, ни с этим
    changelog'ом, ни со строкой поиска. Заголовок раздела ноды сохраняет
    английское имя и добавляет китайскую подпись после него, чтобы имя всё ещё
    можно было скопировать в поиск нод ComfyUI.

    tools/toc.py собирает содержание и якоря так же, как для двух других
    файлов, и тесты документации покрывают его так же: 43 раздела, 43 внутренние
    ссылки, все разрешаются.

    Интерфейс самих нод не переведён. locales/zh/ - отдельная работа.