The gist of the prompt box and a message of a private task went to the AI
whole or not at all. The Hide button marks the selected words; seal_marked
turns the marked words into tokens when the text is handed in, and the
page shows them again as the words they stand for.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
A private task still sent the names of workflow cards and saved prompts,
their tags, and which card or combo a picture was made with. Such names
often say the model or what is drawn. They are tokens now, like a combo's
name; the AI uses a card or a combo by its token.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Privacy mode asked to be believed: nothing showed the user what had gone
out, and nothing said that it filters Anomalous's answers only.
- ai_sent.py keeps each call of a private task as it went: the arguments
the AI wrote (tokens) and the answer's text after ai_privacy.guard. A
line per call beside the task, the newest 300, removed with the task.
- The task's menu opens "What the AI was sent" (ui_ai_sent.js): the calls,
and a box that looks for a word in all of them.
- ai_callers.reads_disk names the AI apps that read files and run commands
by themselves. A private task run by one says under its header that such
an app can open the output folder and the task records by itself; the
switch's hints and the guide say the same.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Privacy mode left the AI blind twice over: the whole prompt was a token, so
it could not help with light, lens or style, and model and LoRA file names
still went out as written.
- The prompt box has a first field, the gist: the picture in words the user
writes for the AI to read. seal_answer hands it on as written beside the
tokens of the private prompts; either alone can be handed in.
- ai_sealed_models.py: while the Gates window's "Model names in a private
task" is on (the default), each model of the library is one token ([M1],
sealed as its model_id) however an answer writes it: model_id, loader
name, file name in a text, card name. A model's own entry drops name,
file, folder, links and hash and keeps type, base model, the author's
settings and the user's note. expand writes a model token back as the
model_id, as the loader's name among a node's values, as the card's name
inside the AI's words. The task's menu lists what each token stands for.
- The model editor has "Note for the AI" (ai_note, note_for_ai in the
tools, searched by search_models): what a model is for, in words the AI
may read.
- A combo's name is sealed too: unless renamed it is made of its model's
name and the start of its prompt.
- The privacy skill says how to write around a gist and how to pick and
pass on model tokens.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
A run's, a job sheet's and a blueprint's progress are shown by Anomalous
itself with real numbers; the AI's own bar could be stale, and the divider was
decoration. Both are refused now and gone from the guide and the page, with
the "passed" greying that only served the bar. A panel kept with such a block
is still added to; the page leaves a block it no longer draws out.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Found in a Gemini Flash exam (recorded in tool-exam.md):
- A later step's mask preview (only the character redrawn) was taken for a base;
picked, the rest enlarged the mask. A base is the decoded picture itself.
- Flash tries run_workflow with no arguments: on a blueprint just built that drew
three bases of nothing and spent the three to pick from. A run that draws from
an empty latent with every positive prompt empty is refused once.
- A Tile refused for not fitting: when the user named the model, the AI is told
to ask before changing it.
- A decision's rejected option given as a sentence stays one option.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
- The Ways panel lists the ways that can run here as short rows that open,
then the skills, and folds the ways lacking a pack or a model at the bottom.
- The staged_picture skill keeps the judgment only: the ways of its uses come
from each block's "when", listed with the skill for what can run here. Its
answer had passed the 3,800 bytes an AI app shows in the chat (3,991); a test
keeps every skill under it.
- An Anima LLLite made for 28-block (2B) models stops a run on a 40-block
(2.9B) one: lllite_fit counts both from the files' headers, the AI's run is
refused with the nodes to change, and an example with a Tile opens on a model
it fits. The warning written into four ways and two examples is removed.
- What holds for a model family is written once: the profile's notes go with
each Anima example for an AI, the examples window says it once for the user;
a pack two nodes come from is named once.
- The Tile upscale is want="tile", no longer the name of another use.
Co-Authored-By: Claude <noreply@anthropic.com>
New way upscale_character (use "upscale", want "character"): an upscale model enlarges the whole picture 1.5x and
leaves the background alone; the character is cut out (refine_character's mask), only its crop (InpaintCrop, 20%
more around it, not resized) is redrawn with its own copy of the canvas's model, on Anima held by the optional
Tile at 0.7, and stitched back. In a comparison a whole Tile redraw drew the far tracks and trees sharp and lost
the depth; this kept the blur, and the crop took 153 s where the whole enlarged picture took 270 s.
The official example "Two passes" gains the version "Anima · blurred background, only the character redrawn"
(made by ComfyUI's own page, files blank, Anomalous's fingerprints left out). An example's packs are now looked
for among ComfyUI's nodes: only loaders were, so a pack of another node was always said to be missing. The
staged-picture skill gains the by-part way, as agreed with the user.
Anima's Tile LLLite fits the 2B Anima models only: on Harem 2.9B the run stops with "depth_embed slices
missing" (84 modules in the file, 120 in the model). The ways and the two Tile examples say so and what to do.
Both the way and the example ran through the real page on the test ComfyUI (Harem 1.5): 223 s for a whole run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On an Anima model the two ways put an animaTileRepair LLLite (0.7, the first 80% of the steps, as the Tile
upscale) on the second model and redraw at 0.7: in a test at 0.70 without it the background's windows vanished
and a bag was redrawn as another, with it they stayed and only the look changed. The Tile node is optional: a
block's "optional_lllite" is filled like its optional checkpoints, and without the file (or the pack) the node
goes and the AI is told to redraw at 0.45. Built through the real page on the test ComfyUI: nothing changed
outside; how much 0.7 changes follows the canvas's sampler (euler about 5%, dpmpp_2m_sde about 8%).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two more ways under "Redraw with another model" (want: character, background). The character is cut out
(InSPyReNet, made solid, grown 12 px); the character way blurs that mask so the second model's redraw fades out
at the edge (Differential Diffusion), the background way redraws its inverse; both paste the redraw back through
the mask, so the rest of the picture stays the same to the pixel. Denoise 0.45 from GPT's comparison of
2026-11-10. Both built through the real page on the test ComfyUI on Anima (Harem 2.9B, RealSkin, Kirazuri),
1440x1024: outside the soft edge and outside the background nothing changed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A click on a card's avatar picks a picture of the gallery or the computer; the
page cuts it square (a tall one keeps its top) and the server keeps it small in
user/anomalous/voice_covers, one per character's name, never in Anomalous_TTS's
folders; one taken away goes to the Recycle Bin. Without one, the name's first
letter shows, and "Change the cover" shows over it under the pointer. The card:
cover, name big, version in grey, one blue line of facts, plain buttons, voices
as thin-line rows; flat, no glow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its author's text from Civitai opens folded or open as the user last left it. A
Translate beside it (English on the Chinese window, Chinese or Japanese on the
English one) sends it paragraph by paragraph through the prompt translators
(DeepL with a key, Google, MyMemory; long pieces cut smaller) and keeps the answer
in user/anomalous/translations by the text's hash, never beside the models, so it
opens at once next time. A line that is the model's own name stays as it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Once an AI handed a blueprint, the flow over the task gets a second line: the
steps kept with their models and picking a base, read from the card and the runs
after it (bases run, pick, whole run), so the AI does nothing more for it. It
shows whether the user was asked or not; a click goes to the step. A job sheet's
run shows how far it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"Hand to AI..." in a node's and the empty canvas's menu opens ready wishes (run 4
and pick, find what is wrong, explain each step, add an enlargement and face and
hand fixes; explain or tune a node) and the line to change. It goes to the task an
AI is on as a message, or starts a task about the canvas: the task's reads, runs
and copy start from that tab even with another in front. A node's saved pictures
can go along, and a failed run offers "Ask the AI" with ComfyUI's words. The AI's
job sheet now follows the task's tab like a run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Chinese prompt on an English-only model (SD 1.5, SDXL, Pony, Illustrious, Flux,
Chroma: marked "reads": "English" in model_profiles.json) draws as if it were
nearly empty: in an exam the pictures followed nothing of it. The AI's run and job
sheet are refused once and told to write it in English; called again unchanged
they run. The job sheet's Start warns once and runs on the second press. The once
is kept apart for the AI and the user.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Flash ran five prompts one call at a time and took wait_seconds for the rest
between pictures. run_workflow's title and description now name the job sheet,
wait_seconds says it is no rest, the manual has a job_sheet topic, and a tool's
name asked as a topic points to the tool. With a sheet, prompt is the prompt of
rows that have none instead of an error. Both exams are in tool-exam.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A card on the canvas (right-click > Job sheet) takes many prompts, a line each,
the runs of each, a rest between pictures and the same seeds if wanted; with no
prompt it runs the canvas as it is. The page runs it from copies of the workflow
kept at the start, as saves run, so the canvas stays as it is; pause, go on and
stop from any page, a failed or interrupted run pauses it, a reload goes on and
another page takes over a sheet whose page is gone. run_workflow(sheet=...) lets
an AI hand over prompts or settings by name; the sheet is that call's run step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From six Gemini 3.8 Flash runs of one question (Harem 1.5, then a Kirazuri v4 Tile redraw, then
faces and hands), recorded in tool-exam.md:
- begin_task's ways and the empty-canvas hint name add_nodes(plan=[...]); a route without its
models and "several samplers" say what to do instead.
- A plan is two steps or more (no one-step probe card for the user); a model may be named by its
name when only one main model has it; a way for a handed-over picture (fix_hands) gives way to
its use's way that goes on from the step before.
- The user's rule is kept in run_workflow: a plan's first run is three bases, and the whole is
refused once until they pick (an AI told "go on without" calls again).
- canvas_roles takes a "...model" path past size-bound patches (LLLite, ControlNet, T2I-Adapter):
face detailing after a Tile redraw took the LLLite-patched model and crashed ComfyUI.
Last run: plan, build, three bases, pick, the whole from the picked base, no crash; 27 calls,
4 failed (each an empty first try).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
add_nodes(plan=[...]) takes the big steps of a picture (use/want as for add_nodes, a model for the
first step or a block's own loader). api/mcp_plans.py resolves them to ready-made blocks and
shows a plan card (panel block "plan", only Anomalous makes it). The user drops steps but the
first, swaps a step's model for one of its family listed with it, and says build, or writes what
to change; api/ai_plans.py turns a build into the steps kept and keeps "build without asking"
(ai_plans.json, POST /anomalous/ai_plans/auto). Built by block_chain.py on a new tab, with
base_only previews next when there is a second step; a card answered after the AI stopped
waiting is built by add_nodes(route=<its panel id>). web/modules/ui_ai_plan.js draws the card;
the AI apps' own card leaves it to Anomalous.
Found in the live check and fixed: the steps kept did not reach the AI (get_answers hands over
named fields only); a test now goes through the real hand-over. Checked on the test ComfyUI: a
four-step plan on two Anima models, step 3 dropped, built as picture, Tile redraw and upscale,
each on the step before's picture.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every block in api/blocks names what it gives a block after it ("gives": its sampler and its
output node; {} for one that changes the step it is put on) and its own model loader
("own_model"). api/block_chain.py builds a list of steps on a new tab: the picture first, each
next block anchored to what the step before gave, by near_node_id and a new page-only
save_node_id (canvas_roles.js findRoles pins the output node), so a canvas with several
samplers and outputs is no guess. add_nodes' answer names the block it built.
Redraw with another model and face/hand detailing now take the step before's picture
("$save.images") instead of the sampler's decode, which after an enlargement is the older
picture. The two-model routes are built as two-step chains; routes.json no longer names the
loaders.
Checked through the real page on the test ComfyUI: the Tile route on two Anima models (base on
Harem 1.5, Tile redraw on Kirazuri v4, from the base's picture and prompts), then face and hand
detailing after it took the Tile step's colour-matched picture.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gemini 3.8 Flash on the isolated test ComfyUI after read_guide: a how-to question (7 calls, 0 failed), a picks panel built from the guide's fields (14, 1: a guessed topic name), standard question 3 on scenery (18, 2). 39 calls, 8% failed, no detours (1.63's standard exam: 16%). A wrong topic now lists the topics, so no second call is needed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
read_guide (api/mcp_guide.py) hands the AI one topic at a time: the README's parts between
<!-- guide:name --> marks (both languages, same names; the Chinese one carries the words the
Chinese window shows), Model Check's rules by section, and the fields of show_panel's blocks.
Long topics come in parts that fit an answer. Nothing is written twice: the topics are the
README's and the rules' own text.
To make room for what 1.64 adds next: show_panel names its blocks and the guide has their
fields (a bad block's error points there), update_panel's details moved there too,
download_status became run_status(downloads=true), track_run's text is shorter. The tool list
went from 43,957 to 42,574 characters with one tool more (53 tools); show_panel no longer needs
a longer-description exception in the budget test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- header_words.py: modelspec.trigger_phrase, else the tags most training pictures share
(ss_tag_frequency, generic ones left out); the scanner keeps them as
anomalous_header_words when Civitai gives no trigger words, metadata gives headerWords,
model search finds them.
- model_kind: Flux Schnell told from Dev (no guidance_in), Z-Image from Lumina 2 (caption
embedder width, a GGUF by parameter count); RULES 3 so kept header answers are read again.
- api/model_guide.py + model_profiles.json: GET /anomalous/model_guide for the model details
(example settings, header words, the text encoder and VAE a diffusion models file needs,
found by name), and get_model's header_words and usage for the AI.
- model_advice.example_settings gives the author's example settings as values;
author_examples says them in words as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ComfyUI listening on its LAN address only (#26): the browser on the same computer
comes from that very address, so it was taken for another device. A request whose
peer is the server's own end of the connection, naming that same IP, is local now;
DNS rebinding and proxy headers are still refused.
Opened from another device (#25), the settings page said the proxy's format was
wrong and that Civitai could not be reached, when the server had refused the
request. It now says so, and refusals point to the View only chip.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- run_workflow takes a gallery picture as its workflow (mcp_fill.opening
says what a name opens, for open_workflow too); a picture's workflow
opens with an id of its own, and the tab's mark goes into the workflow
before it loads, so ComfyUI finishing the tab does not drop it.
- With ComfyUI open in two browser tabs a task's actions were split
between them (one opened the task's tab, the other could not find it):
the page that did the last action gets the next first now, another
only when it is gone (mcp_bridge.py, pages keep an id of their own).
- describe_canvas on a big canvas: titles off, then nodes as a line each
with their settings, so every value stays readable.
- search_models names the models that did not fit; begin_task's tool
directory goes by name alone when the answer would be too long.
- ask_user refuses a "test" question with made-up options too.
- Exam round recorded: question 2 with nothing filed away, a big canvas
read right in 3 calls, question 3 in 12 calls.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- An answer past Antigravity's size is filed away unread (eight LoRA
searches in the exam): search_models answers small (loaders once,
four trigger words, a LoRA's author weight); describe_canvas gives a
big canvas's last nodes a line each; mcp_fit.py keeps any other list
answer within the size and names what it left out.
- An empty canvas: run_workflow, describe_canvas and get_situation say
to open a workflow first; get_image_info says a picture's workflow
opens with open_workflow.
- ask_user does not put a "test" question to the user; a task's picture
count counts what its runs made.
- AMB failed to load now and then: ComfyUI loads every file at once and
ui_ai_workbench.js set ui_ai_toolbox.js's sideHost before it was made
when the toolbox file ran first. Connected on first draw now;
tests/load_order.mjs runs every file first.
- input_facts moved to api/picture_mask.py to keep mcp_tools.py short.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
To change a picture from the gallery the AI had to open the saved card
and set back, one by one, the model, LoRA and prompt the picture had
been made with (8 to 12 calls in the exam). open_workflow now takes a
picture's name too when no saved workflow has it: the server checks
the picture is in the output folder and carries a workflow, and the
page reads it from the PNG and opens it in a new tab, without the
marks of the tab it ran on (the card that tab came from, which
run_workflow would mistake it for, and its group of saves). The tool
list is 18 characters shorter than before.
Retaken with Gemini 3.8 Flash, questions 3 and 4 only: question 3 on a
changed picture went from 28 calls (7 failed) to 21 (4), opening the
picture's own workflow; written into docs/architecture/tool-exam.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gemini 3.8 Flash took all 8 standard questions the 1.63 way (the
question in the task's message, the new task page's sentence to the
AI, a blank canvas each): 128 calls, 16% failed (21% last time), no
detours. Written into docs/architecture/tool-exam.md.
- A task's picture count counted a picture twice when the AI's report
showed the one its run had made; pictures are counted once each now.
- After a switch of language the AI workbench kept rows drawn in the
old one until a reload: syncRows makes a row again when the language
it was drawn in is not the one shown.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A run with Gemini 3.8 Flash asked for picture to picture and built it node by node, 13 failed calls on the way, with an official example ready:
- list_workflows was 23,630 characters on 17 cards, 21,033 of them settings. Antigravity files an answer over about 4,000 away, unread. A list of more than 3 now goes with name, route, tags and short notes.
- Examples showed only when no saved workflow matched, and only by English words: 图生图 found nothing. They are always named now, and found by their Chinese titles, img2img, txt2img and inpaint.
- Every card's route line was empty, and cards_of found nothing, since c84b596: _list_recipes leaves the graph out, and the tests fed cards that had one. Both ask for it now, with a test on a file on disk.
A waiting task the user wrote to also takes its name from what they wrote, instead of the AI's "take the task".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Anima's VAE takes a batch of pictures for video frames, so a batch of 2 is one picture after the VAE encode of the second pass. The two examples keep their tested route and say to run several times instead, to the user and to the AI.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Current node showed "negative prompt" only on values from a workflow. A material's blocks carried no role, and when a picture and a workflow held the same text the merged card kept the picture's empty one, so a negative prompt could be offered to a positive box with nothing to say so.
- api/materials.py works the role out by what the prompt was wired to, as the material details already do; it reads the stored workflow, so pictures kept earlier get it too.
- node_parameter_sets.js takes the role from whichever source knows it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Going back to a save left the last run's picture on the output node, so the canvas and the picture told different stories.
- api/workflow_saves.py keeps what each output node made, previews too, the newest 16, and read_group gives them as `outputs`.
- ui_snapshot_bar.js puts them on the nodes through the tab's changeTracker (store, restore): no `executed` event, so no plugin takes them for a new run. Several runs sit on the node as a batch does. A node the save has no picture for goes empty; Load Image's own picture stays (snapshot_plan.outputsAt).
The lit number went out every other time with a Preview Image on the canvas, and an empty undo step came with it: a loaded workflow serializes a little differently from its file, and a node gains an empty widget list when it shows a picture. The number now goes out only when the canvas really changed (withoutEmptyValues), and those differences take no step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Current node now reads what combos hold for the node's type: every box of
a node structure, by name, and a plain combo's prompt on a prompt box. They
get a chip of their own, a press goes to the combo, and the values go in
only on the user's press, as with the other sets (AD-021).
The rail's tools go by how often they are used: Current node, Model Check,
then the scan, and the tour follows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Types go by their usual names, base model chips narrow the list, the
version stands apart from the name, and a model's versions are one card
whose version opens the list to show another; a pick goes with it. The
grouping, the families and the type names are the Models page's own.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Anima loads through other nodes than a checkpoint, so none of the examples
could open on it. Two passes now comes in three versions: SDXL / SD 1.5,
Anima on ComfyUI's own nodes, and the recommended Anima held by Tile, the
way's tested values, kept in step by a test. The own-nodes version redraws
at 0.35: at 0.5 the shapes began to move with nothing holding them.
The window shows plans, versions and notes. A version that lacks a pack
or a model says what and has no Open button; an AI only gets those that
can run here. The layers of cards, examples, ways and skills are written
down as AD-025.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ways: "Use it this time" in the Ways view, for one task. It joins the
task's picks as a new kind, the AI is told, and add_nodes builds that way
for its use whichever one the AI asks for. "Only" lets in the nodes a
picked way builds.
Examples: text to picture, two passes, picture to picture and repainting
an area, on ComfyUI's own nodes. One card, first on the Workflows page,
opens them in a tab of their own. The files name no model or picture; a
checkpoint and a picture that are here are filled in when one is read.
list_workflows gives them to an AI when no saved workflow fits, and they
open and run by name like saved ones.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Follow-ups hang one step in under the first task of their line, so the
list shows what goes on from what; a filter's tasks still show alone. Each
row has the head's menu, without opening the task. Removing a task joins
those after it to the one before. The pick list now stands over everything
at the place the menu opened: the head is drawn anew under an open menu.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A walk through the whole flow, as a user would, showed what felt wrong.
The folded bar floated over the canvas: it is now a handle on the canvas's
bottom edge. The bar lives in the canvas's panel, so the logs stay uncovered
and it wraps before going under ComfyUI's canvas tools; it holds the newest
six saves, the rest behind a button to the Saves page, instead of growing
into a block. A lit number now means the canvas stands at that save, going
dark on any change or undo. Words float over the bar and leave with the runs,
and on the page a kept card is a toast and runs show on their own save, so no
button moves under the pointer. Removing a save tells the next one what it
changes now, and the Saves view says the way back to the cards.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Presets, combos and Add to saves took more to keep sensible than they gave,
so a save now only becomes a new workflow card and only the canvas makes one.
The panel above the bar moves to the Saves page, a part for each canvas, open
or not, with each save's pictures and its runs: the whole group in order, or
one save alone. Running moves to snapshot_run.js for the bar and the page;
what is clicked goes in in click order, and closed canvases run too.
A run taken off ComfyUI's queue is now forgotten at once, so "runs to go" does
not stay wrong for a day. A first save on an unsaved tab now reaches ComfyUI's
draft of it, so a reload right after keeps the tab's saves on it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A save copies to a workflow card, a preset of a card with the same structure, or a
combo; a card's preset can join the open canvas's saves. The Workflows page lists
every group, so saves of a closed tab or a deleted file can be opened again, on a
new tab where the group goes on, or removed. A card keeps no key of a canvas's saves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Saves move from the page to a store (api/workflow_saves.py), a group for each
canvas, found by a key in the workflow's extra or by its file, and go into
backups. The bar follows the open tab. A save's runs are named to the server, which
finds their pictures in ComfyUI's history, so a reload during a run loses nothing.
A save opens above the bar with what it made and what changed; removing one goes to
the Recycle Bin, and a group past its most takes no more and drops nothing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Flash exam showed a light model can build a route it is told, so the reminder
no longer sends the user to a flagship model: the route is untried, see how the
run turns out, and save a card if it is good.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three exams with Gemini 3.8 Flash on an isolated ComfyUI all went the right
way. They showed that a base kept by Anomalous was reported as a file changed
outside it, and that the one-pass route still told the AI to show bases
first. begin_task's words are shorter: with a real node list it went past
its 4000 characters.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A node's "Mark this state" keeps the serialized canvas as a mark in a bar
under it. A mark's number goes back to that state, each has its runs, and
seeds are Random or Locked (one per round, shared by the marks; a fixed
seed alone would come from ComfyUI's cache). Run checks every mark with
validate_prompt first, then compiles detached copies with their seeds
written, so the canvas and its seeds stay as they are.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With two main models picked, ask_user(routes=true) shows the routes this
ComfyUI can build for them, each with what it does to the picture and a
sample, a saved card using both first; the answer says what to call, and
add_nodes(route=...) builds the route from the ways on a new tab, the LoRAs
on each model. get_toolbox lists each model's cards as its examples. A way
counts as ready when a family variant has what it needs. An AI placing
nodes itself is a new route: one reminder a task, or with the new gate the
user's OK.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
add_nodes(use="picture") builds a text-to-image graph on the model the
user picked for the task, or add_nodes(model=...): one checkpoint for SDXL
and its kin; for Anima the UNET with its text encoder and VAE, found in
the model folders ("files"), and the tested base-pass sampling. A
standalone block is built only on a canvas making no picture yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upscale held by Tile takes in the tile upscale, the Anima Tile detail
upscale and the second-model upscale: its redraw has its own copy of the
canvas's model line (copy_of "$sampler.model": loader and LoRAs, titled
"Upscale model"), so a second model is one set_model and the LoRAs stay;
on Anima it is the user's tested route (latent 1.22x, Tile LLLite,
denoise 0.85). The iterative upscale goes. add_nodes no longer lists every
block name, and the repaint hints name the use, not a block.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
list_workflows gives each card a route read from its saved graph: its
passes in run order, the model each draws with, a split's steps, an
enlargement, control models such as a Tile LLLite and what comes after.
A Flash run picked a one-pass card for a two-model job; it saw names only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>