8.3 KiB
8.3 KiB
Changelog
All notable changes to ComfyUI-ScriptFlow will be documented in this file.
[1.3.5] - 2026-10-12
- The ComfyUI Registry archive no longer includes
docs/andimages/(added.comfyignore), which reduces it from about 3 MB to about 50 KB- No change to the nodes; 1.3.4 was uploaded to the Registry but stayed pending review, and this release republishes it
- Both folders stay in the GitHub repository; in a Registry install, the README's demo image and the link to the technical report point to files that are not installed
[1.3.4] - 2026-10-09
MultiOutputScript (Jev)runs local d1 GGUF models, Liquid AI's open-weight decision model- A GGUF whose
lfm2.decision.typemetadata islfm2-d1(such asLiquidAI/d1-3B-GGUF) is asked in the prompt format d1 was tuned on, and the answer is read from the next-token probabilities of its yes/no, option code, or digit reply, instead of the lettered-option approximation used for general local models - One forward pass per question;
jev.choiceandjev.probabilitiestake 2 to 26 options andjev.scoretakes 2 to 10 levels - Text only, with the
stateand one question limited to 8,192 tokens - Tested with d1-3B Q8_0 and the JamePeng fork of llama-cpp-python 0.4.2 on Windows (Intel Arc, SYCL build); Linux and macOS are untested
- A GGUF whose
- Added a technical report,
docs/local-model-uncertainty/(English and Japanese), on how Jev, Clef-Flash, and a general local model (Qwen3.5-9B) answer questions whose answer cannot be known- With a general local model, a low
jev.noulvalue can mean "cannot say it is true" rather than "unlikely" - Asking about both a statement and its negation, or picking a percentage level with
jev.score, separates the two; the report has the measurements, example scripts, and the statements and results as JSON README.mdandREADME.ja.mdlink to the report from the notes ofMultiOutputScript (Jev)
- With a general local model, a low
[1.3.3] - 2026-10-05
MultiOutputScript (Jev)runs local Clef GGUF models, Cloudflare's open-weight decision model- A GGUF whose architecture is
clef(llama.cpp native format, such asggml-org/Clef-Flash-GGUF) is answered by the model's decision head instead of the lettered-option approximation used for general local models - Every question about one
stateis answered in one forward pass, so batched questions cost one pass per request - Needs the JamePeng fork of llama-cpp-python 0.4.2 or later; other local models keep working with older builds
- Text only, with the
stateand all questions of a request limited to 8,192 tokens - Tested with Clef-Flash Q8_0 on Windows (Intel Arc, SYCL build); Linux and macOS are untested
- A GGUF whose architecture is
- Added an application recipe to
README.mdandREADME.ja.mdthat checks a prompt enhancer's output against its system prompt withMultiOutputScript (Jev)- The script splits the system prompt into rules, asks Jev whether the output breaks each one in a single request, and reports a score and the rules that are likely broken
- A second script for long system prompts checks the system prompt in parts of about 1,000 characters, staying under the script step limit
[1.3.2] - 2026-10-03
MultiOutputScript (Jev)batches questions without script changes- Questions are queued while the script runs; the run stops when the script first uses an answer's value, the queued questions are sent, and the script reruns from the start with the answers
- Questions about the same
stateare sent in one request (one TypeSafesystem_onecall with several questions); requests for different states are sent in parallel with the TypeSafe API and one after another with a local model - Storing an answer, passing it to a user-defined function, or calling
float()on it does not stop the run - Scripts ask the same questions and produce the same outputs as before; each rerun starts from the same
randomstate and time
- Changed
max_jev_callsto limit requests instead of questions; a run stops with an error before sending requests that would exceed it MultiOutputScript (Jev)prints[ComfyUI-ScriptFlow] Jev requests: N, states: S, questions: Q, responses: Mto the console after each run, including runs that end with an error- Questions answered from the run's cache are not counted
- Set the
httpx2andtypesafe_sdkloggers to WARNING whentypesafe-sdkis installed, removing two INFO lines per TypeSafe API request datetime.datetime.now()anddatetime.date.today()return the time the run started in both script nodes, so repeated calls in one script return the same value
[1.3.1] - 2026-09-29
- Fixed ComfyUI Registry publishing of 1.3.0
- The Registry's automated dynamic-execution scan flagged the local Jev backend because it called the llama-cpp-python evaluation helper, whose method name matches Python's built-in code evaluation
- The local backend now decodes the prompt with
llama_batch_init/llama_decode/llama_batch_freedirectly; answers and probabilities are unchanged - Local models are loaded with
n_batchequal to the 8192-token context so a whole prompt is decoded in one call
[1.3.0] - 2026-09-29
-
Added
MultiOutputScript (Jev)node (utils)- Same inputs, outputs, and script rules as
MultiOutputScript, plus ajevnamespace that answers typed questions about text jev.yes(state, question[, threshold]),jev.noul(state, question),jev.choice(state, question, options),jev.probabilities(state, question, options), andjev.score(state, question, levels)- Using a
jev.noul()probability directly as a condition raises an error instead of always being true - Identical questions within a run are asked only once;
max_jev_callslimits API requests or model evaluations per run - Default script picks one of eight aspect ratios for the prompt in
in_text_1, sizes it to the megapixels inin_value_1, and lists every ratio's probability inout_text_1
- Same inputs, outputs, and script rules as
-
Added two backends selected by the
modelinput; scripts are the same for bothTypeSafe API: asks TypeSafe AI's Jev through the optionaltypesafe-sdkpackage, with the API key read fromapi_key.txtin the node's installation directory on every run- Local GGUF models as a fallback when the Jev API is not available: models under
models/LLMandmodels/text_encoders, including paths registered inextra_model_paths.yamlon other drives - The local backend reads the decision from next-token probabilities of lettered options in one forward pass through the optional
llama-cpp-pythonpackage, adapted from SemIf (OpenJev, MIT License); no text is generated and nothing is sent over the network - The local model is loaded on the first
jevquestion of a run and always unloaded when the run ends, freeing VRAM on CUDA, Intel XPU, and other ComfyUI devices
-
Kept
MultiOutputScriptandcentiunchangedjevis not available inMultiOutputScript, which still makes no network requests and loads no models- Existing nodes do not require
typesafe-sdkorllama-cpp-python
-
Added
api_key.txtto.gitignore -
Moved release notes from
README.mdtoCHANGELOG.md -
Replaced the README demo with a
MultiOutputScript (Jev)demo at the top of the README
[1.2.0] - 2026-05-31
- Replaced direct Python execution with a safe AST interpreter for ComfyUI Registry compatibility.
- Added Python-subset support for helper functions, loops, dictionaries, lists, string methods, f-strings,
random,datetime, andmath. - Replaced trace-based timeout handling with step and loop limits.
- Kept existing
MultiOutputScriptinputs and outputs unchanged.
[1.1.1] - 2026-04-06
- Added safe-mode AST validation before script execution.
- Blocked unsafe syntax (
Import,ImportFrom,Global,Nonlocal,ClassDef,Try,With,AsyncWith). - Blocked unsafe dynamic execution, file/input access, namespace inspection, and dynamic attribute mutation calls.
- Added execution timeout guard (
1.5sdefault) to stop runaway scripts. - Updated security notes for trusted-workflow usage.
[1.1.0] - 2026-04-03
Added centi node (utils).
- Minimal connector-only utility node.
- Three optional integer inputs:
int_1,int_2,int_3. - Three float outputs:
float_1,float_2,float_3. - Each connected input is converted by
int_n / 100; unconnected inputs returnNone.
[1.0.1] - 2026-04-01
- Improved documentation and project metadata.
[1.0.0] - 2026-03-31
- Initial release