Commit Graph
483 Commits
Author SHA1 Message Date
DemonGatanjieuandClaude Opus 5.5 fa0d0d7c45 Add three safety levels to the Gates window: careful, balanced, hands-off
Step 6 of the lower-barrier plan. The Gates window opens with a Safety level row: Careful asks
before everything and allows only the ready-made ways' nodes; Balanced is exactly today's
defaults; Hands-off downloads without asking, builds blueprints at once and takes the
recommendation when the user does not answer in time. Moving files asks in all three. A level
sets the five gates, the node and route rules, no_answer and ai_plans.auto() in one write
(ai_gates.LEVELS, set_level) and leaves the canvas tab, run waiting, answer time and privacy
alone; level() names the one the settings match, "custom" once a row was changed by itself.
GET /anomalous/ai_gates gives level, POST {level} applies one. Privacy stays out of the levels.

Written by Gemini 4 Hydrogen (xhigh) in Antigravity from a brief the user approved, in a
separate worktree; reviewed, tested and checked live on the test ComfyUI before merging.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 03:26:39 +08:00
DemonGatanjieuandClaude Opus 5.5 47ca8a764a Walk a newcomer through the AI workbench once, and say a line under what shows up later
Step 5 of the lower-barrier plan: notes, never paragraphs on the page. The first time the workbench
shows a task, once its window has settled, the spotlight tour walks through New task, Connect an AI,
the gates, the list, a task's menu, the timeline and the message box (ui_ai_tour.js); the home
section's "How it works" runs it again. What only shows up after the AI has done something gets
one line with Got it the first time it appears: under a run's verdict, beside the undo of the AI's
canvas changes, under a private task's message box with Hide. Seen ones are remembered in this
browser only.

The tour engine now skips a target folded to nothing (a tab not shown) and lights only the visible
part of a tall one (the timeline), cut to its scrolling box and the window. The task menu button
has a class of its own to be found by.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 02:57:47 +08:00
DemonGatanjieuandClaude Opus 5.5 22cc06495f Record Gemini 4 Hydrogen on the home cards' sentences, drop a doubled full stop in two cards
Medium (M526): 40 calls, 8% failed, every task ended; High (M525): 51 calls, 10% failed, one left while its run went on. The practice and preset cards' task text ended in a full stop that the hand-off sentence doubled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 02:26:58 +08:00
DemonGatanjieuandClaude Opus 5.5 6a24f09f5f Add "Let the AI do it" to the home page: six starter cards that prepare a task
The user found the AI features hard to start ("即使是我也不敢轻易上手。怕错"). The home page now has a
section under its cards: the AI app that came last (and a warning when it holds a short tool list
that cannot take a task handed over here), then six cards: Try it once (a small picture from the
official text-to-picture example), Run my preset (a saved workflow and one of its presets, with
what to change), Draw what I describe, Change a picture (picked from the gallery), Draw in privacy
mode (the field is the gist that goes to the AI) and Explain my canvas (the canvas hand-off).

A card opens a sheet first: what happens on Start, what stays as it is or what the AI does not
get, what to mind. Start makes the task through startTask, which now sets switches on the new task
(a new tab; privacy for the private card), and shows the sentence for the AI as every hand-off
does. A card's tags name only what Anomalous makes sure of (new tab, no tool saves workflows, the
original picture kept, privacy's filter, undo, downloads asked only while the gates ask), never
what rests on the AI obeying. GET /anomalous/ai_starters (api/ai_starters.py) gives the saved
workflows with their presets, the download gate and the last app's tool list. No new MCP tool.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 01:31:50 +08:00
DemonGatanjieuandClaude Opus 5.5 debe57a7de Record the short tool list exam on Flash's high setting beside the default one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 00:18:08 +08:00
DemonGatanjieuandClaude Opus 5.5 32e6c6116c Tell an AI on the short tool list of the ready-made ways and the skills
A Flash exam on ?tools=core (four questions in Antigravity's own chat, 111 calls, 12% failed, no
detours, every run done) found that without begin_task nothing told the AI of the ways and the
skills: it wired an enlargement node by node. In a set without begin_task, get_situation now
carries the blocks this ComfyUI can run (one at a time: a plan of steps waits for the user in
Anomalous) and the skills unless the task is private, on every call, since a new chat of the same
app within 20 minutes goes on in the same task. On the retake Flash fetched staged_picture and
built with add_nodes(use='refine'). add_nodes' message for a call without use, block or nodes
no longer says the blocks are only in begin_task's answer. Round recorded in tool-exam.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 23:37:00 +08:00
DemonGatanjieuandClaude Opus 5.5 bc9f18a838 Let the user pick which tools an AI app is offered: every tool, a short drawing set, or their own
The tool list sits in the AI's context every round and is at its budget (issue #27). The address
may now name a shorter one: ?tools=core (drawing in the AI app's own chat: no workbench, no file
moves, scans or downloads, no voice; the ways, skills, zoom_image and stop_run stay) or
?tools=mine (the user's checklist by stage, kept in user/anomalous/ai_tool_sets.json). Only the
list shrinks: tools/call takes every tool, an unknown or empty set offers all, and the address as
it is answers exactly as before. The instructions are split into parts and a part naming a tool
outside the set is dropped; without the workbench the AI is told to ask in its own chat.

Connect an AI picks the set above the address (not under a waiting task, which needs the
workbench); the address, the sentence and each app's line follow. Users pick from Anomalous's
tools and never add their own (AD-027).

The structure check passed absolute paths for every web file on one command line, which grew
past what Windows takes; it now passes them relative to the plugin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 18:57:29 +08:00
DemonGatanjieuandClaude Fable 5.2 12257a55ba Add the darkroom helper: a local model reads what the AI app may not
Privacy mode left the user as the AI's only eyes and hands on anything
sealed. The darkroom helper, an extension off until the user picks a
model, gives that reading to a model on their own computer.

- ai_darkroom.py talks to an OpenAI-style server on a loopback address
  only (checked when kept and when read, no proxy, no redirect).
- set_prompt takes rewrite: the helper changes the prompt's text the way
  the AI says; the result is on the canvas and leaves as a token.
- In a private task zoom_image's picture goes to the helper before it is
  taken out; local_check holds a fixed list of checks, each one of a few
  allowed words, and anything else the helper says is dropped.
- begin_task tells a private task's AI what the helper does. The Gates
  window finds the local servers and lets the user pick a model.
- No new tool: the list stays at 53 and within its size.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-12 18:08:30 +08:00
DemonGatanjieuandClaude Fable 5.2 9956987961 Say what is off with a run in one click each
Under a run marked not quite right the user picks what is off: the
hands, the face, the framing, too dark and more (ai_run_control.ISSUES).
The AI gets it in words in the user_verdict step; while it has not
fetched the step, a changed word corrects it in place. An AI that is not
sent the pictures goes by it.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 19:15:03 +08:00
DemonGatanjieuandClaude Fable 5.2 743a2bc33a Let the user hide a few words inside a text the AI reads
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>
2026-11-11 19:06:44 +08:00
DemonGatanjieuandClaude Fable 5.2 6560347827 Seal the names the user gave: workflow cards, saved prompts, their tags
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>
2026-11-11 19:04:08 +08:00
DemonGatanjieuandClaude Fable 5.2 f600379dac Show what a private task's AI was sent, say what privacy mode cannot cover
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>
2026-11-11 18:53:17 +08:00
DemonGatanjieuandClaude Fable 5.2 99ee111c81 Give a private task's AI the gist to read, keep its model names as tokens
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>
2026-11-11 18:36:20 +08:00
DemonGatanjieuandClaude Fable 5.2 375b347eb6 Remove the AI's own progress bar and the divider from the panel blocks
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>
2026-11-11 01:38:43 +08:00
DemonGatanjieuandClaude Fable 5.2 d6c2edb1a1 Offer only the bases to pick from, stop an AI's run with no prompt, ask before swapping a named model
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>
2026-11-10 21:13:34 +08:00
DemonGatanjieuandClaude c9c9e5b21e Shorten the Ways panel, tell the ways from their own files, stop an LLLite that does not fit
- 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>
2026-11-10 16:25:22 +08:00
DemonGatanjieuandClaude Opus 5.5 2b6b6d88eb Enlarge a blurred background as it is and redraw only the character
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>
2026-11-10 03:24:03 +08:00
DemonGatanjieuandClaude Opus 5.5 9e0062f331 Give voice characters a cover, and lay their cards out like a profile
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>
2026-11-09 17:32:28 +08:00
DemonGatanjieuandClaude Opus 5.5 edc9831767 Say plainly that a model's author text unfolds
Folded, a blue "Show all" sits under it ("Less" when open) and the text lights up
under the pointer; its title reads as a heading. The user found the grey arrow
alone easy to miss.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 17:06:14 +08:00
DemonGatanjieuandClaude Opus 5.5 1973d0fbe1 Translate a model's author text, and keep it folded as last left
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>
2026-11-09 16:54:59 +08:00
DemonGatanjieuandClaude Opus 5.5 4b5f385cdd Lay out the model details like a profile
The name big and its Civitai version split off under it in small grey; one small
accent line of type, size, base and the Civitai link (the Size/Base labels were
English in the Chinese window); Add node the one filled button, the rest plain
words. Trigger words, the author's settings, the files it needs, its versions and
its file are one list of rows parted by thin lines; its author's text starts
folded. Size and space carry it, not boxes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 16:34:43 +08:00
DemonGatanjieuandClaude Opus 5.5 6ff438751c Lay the blueprint out in the task's flow, done steps lit and coming ones dashed
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>
2026-11-09 15:45:31 +08:00
DemonGatanjieuandClaude Opus 5.5 cdc1b5ec53 Record the canvas hand-off exam
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 15:16:10 +08:00
DemonGatanjieuandClaude Opus 5.5 c890627961 Hand the canvas or a node to an AI from the right-click menu
"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>
2026-11-09 15:09:27 +08:00
DemonGatanjieuandClaude Opus 5.5 ce94af765a Say before a run when the prompt is in a language the model cannot read
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>
2026-11-09 14:59:02 +08:00
DemonGatanjieuandClaude Opus 5.5 832e8eb7b1 Point the AI to the job sheet; a sheet's prompt fills rows without one
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>
2026-11-09 06:18:14 +08:00
DemonGatanjieuandClaude Opus 5.5 5c0e9ea133 Add the job sheet: many runs of one canvas, from the user or the AI
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>
2026-11-09 04:36:40 +08:00
DemonGatanjieuandClaude Opus 5.5 f96a3d1056 Make plans what the AI reaches for, keep the user's base pick, take models past Tile patches
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>
2026-11-09 02:41:01 +08:00
DemonGatanjieuandClaude Opus 5.5 e63965b68b Show the AI's plan as a blueprint card and build it when the user says so
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>
2026-11-09 01:28:07 +08:00
DemonGatanjieuandClaude Opus 5.5 0f43385493 Name every guide topic when the AI guesses a wrong one, and record the exam
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>
2026-11-09 00:27:30 +08:00
DemonGatanjieuandClaude Opus 5.5 6586c3766e Give the AI Anomalous's manual on demand, and free room in the tool list
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>
2026-11-09 00:10:51 +08:00
DemonGatanjieu 6cb8a2eb37 Merge branch 'feature/1.63' into feature/1.64 2026-11-08 23:30:04 +08:00
DemonGatanjieuandClaude Opus 5.5 dfd8dd78fd Show where the entry is after installing, and keep the cube under ComfyUI's menus
Viewers could not find the plugin after installing. README install step 2 now has a picture
(both languages) of the cube button at the canvas's top left and the C menu path
Extensions -> Anomalous Model Browser -> Open / Reset floating entry position, and says how
to make the entry easier to spot (labeled pill, large, or the top action bar); a line under
the language links points there.

Taking the picture showed the cube covering the C menu's "New" row: it sat at z-index
2147483000. It is now 1000: over the canvas and its tool layer (999), under the top bar
(1001), menus (PrimeVue, about 1800) and dialogs. Checked on the test ComfyUI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 23:29:53 +08:00
DemonGatanjieuandClaude Opus 5.5 c51fd11e03 Show a model's guessed words, its author's settings and the files it needs in its details
- ui_model_guide.js (above the description, out of ui_detail.js): Civitai's trigger words,
  else the words the LoRA's file suggests (dashed, said to be a guess), the settings its
  author's example pictures used, and for a diffusion models file of a known family the text
  encoder and VAE it needs with the file of that name found here; one GET
  /anomalous/model_guide per page, a newer page cancels it.
- The models page's search finds the header words too.
- Checked on the isolated test ComfyUI with stand-in files: words read now and after an
  offline scan, three example pictures summed up, Anima's two parts found by name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:52:33 +08:00
DemonGatanjieuandClaude Opus 5.5 414e76c935 Read a LoRA's guessed trigger words from its header, and tell the AI what a model needs
- 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>
2026-11-08 22:43:51 +08:00
DemonGatanjieu b43c534797 Merge branch 'main' into feature/1.63 2026-11-08 02:00:21 +08:00
DemonGatanjieuandClaude Opus 5.5 20e2916579 Cloud server guide: a picture of the View only chip and its dialog
In both languages, the dialog's command showing an example path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 02:00:16 +08:00
DemonGatanjieu 4f26a47cd1 Merge branch 'main' into feature/1.63
# Conflicts:
#	CHANGELOG.md
2026-11-08 01:36:44 +08:00
DemonGatanjieuandClaude Opus 5.5 a063628866 Count this computer at its own LAN address as local; say why a remote save was refused
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>
2026-11-08 01:34:22 +08:00
DemonGatanjieuandClaude Opus 5.5 efa588bdc2 Say what Model Check can do without fingerprints, link its rules
The README now says in both languages that fingerprints come from this
plugin, what Model Check still does for a workflow without them (a file of
the same name to confirm, the workflow's own links, ComfyUI-Manager's list),
and has a button to the rules page, now also in English. The rules page
names ComfyUI's own model links. Also corrected: interface scale (not font
size), what Import keeps and replaces, the Gates list, and the one-server
note on cloud servers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 16:05:40 +08:00
DemonGatanjieu aa4b2ac150 Rewrite the README for 1.63 and refresh its showcase pictures and animations 2026-11-07 15:34:11 +08:00
DemonGatanjieuandClaude Opus 5.5 a8780cb568 Picture the AI workbench and saves in the README, redraw them on a language switch
Four pictures (Chinese and English) from the isolated test ComfyUI with
scenery only: a Gemini task in the AI workbench, and three saves of one
canvas with the saves bar. Taking them showed the AI workbench stage and
message box and the saves bar staying in the old language after a switch
until a reload: they are drawn again now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 02:17:36 +08:00
DemonGatanjieuandClaude Opus 5.5 46eca1b594 Run a picture's own workflow, keep a task on one page, read a big canvas whole
- 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>
2026-11-07 01:16:17 +08:00
DemonGatanjieuandClaude Opus 5.5 139380e960 Give the AI what it needs: answers it can read, hints on an empty canvas, AMB always loading
- 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>
2026-11-06 20:53:50 +08:00
DemonGatanjieuandClaude Opus 5.5 05e2d269b4 Let open_workflow open the workflow a gallery picture carries
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>
2026-11-06 19:57:13 +08:00
DemonGatanjieuandClaude Opus 5.5 54facc44c1 Record the 1.63 standard exam and fix two things it found
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>
2026-11-06 19:18:06 +08:00
DemonGatanjieuandClaude Opus 5.5 d307e28957 Record the 1.63 exam with Gemini 3.8 Flash
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:01:11 +08:00
DemonGatanjieuandClaude Opus 5.5 2280e55fde Let an AI read the workflows it is offered
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>
2026-11-06 17:51:12 +08:00
DemonGatanjieuandClaude Opus 5.5 ec81f8b230 Bring a save's pictures back onto the output nodes
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>
2026-11-06 16:20:59 +08:00
DemonGatanjieuandClaude Opus 5.5 6afbbf9059 List combos in Current node and put the rail's tools by use
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>
2026-11-06 02:28:37 +08:00