- core/strategies/surreal: eight generator modes taken from how Magritte,
Ernst, Dali, Varo, Uelsmann, Atget and Man Ray worked, feeding one critic
(seeded code, or one LLM call). One anomaly stated as plain physical fact
against a credible world, chosen for affinity rather than distance; count
capped at 2. Output: brief, instruction block, why trace, title,
counter-terms.
- Surreal Premise node; plugs into every enhancer's wildcard_instructions.
Anomaly survival is measurable with the Concept Survival Check.
- The surreal preset (video nodes) and genre_style = surreal (Text-to-Image)
route through the engine instead of style words; fail-soft to the old text.
- Lists in wildcards/surreal, personal iconography.yaml template,
docs/SURREAL_GUIDE.md, dev/verify_surreal.py (78 checks).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VpCi6nw5UECMdZ7ayYJvN
- The endpoint / model field is resolved as: an existing model folder, a
folder name under models/VLM, or an explicit org/name id (local copy if
present, otherwise - and only then - a download). A URL or any other value
(a stray "1" from an old workflow asked Hugging Face for the repo "1") is
ignored with a log line and a local model is auto-detected. With no local
model the node stops with an error listing what is in models/VLM.
- The model cache is keyed by the resolved folder, so the image pass and the
text pass share one copy in VRAM instead of loading the same model twice.
The Advanced video node's image pass uses the same model field as its text
pass.
- The system prompt is sent as a system turn; <think> blocks are removed
from text answers.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VpCi6nw5UECMdZ7ayYJvN
Every node id, input name and existing widget position is unchanged, so saved
workflows load; new inputs are appended only.
Wildcards
- core/wildcards: Dynamic Prompts / Impact Pack grammar, tag queries, variables,
conditionals, concept / verbatim / loose bindings, reproducible seeds.
Wired into every enhancer node; reads ComfyUI/models/wildcards.
- New nodes: Wildcard Processor, Semantic Variation (direction axes),
Concept Survival Check. Starter lists in wildcards/.
- Random choices use a private generator; global random state is untouched.
Platform profiles
- core/profiles + profiles/*.yaml: one file per model (format, length,
negative prompt or none, quality tokens, text and dialogue syntax, vendor
rewriter prompt fetched once and cached). profiles_user/ overrides by id.
- New node: Platform Prompt Rewriter (prose, tags, edit instructions, JSON,
MiniMax H3 fields, Hailuo brackets), with validators for each format.
- Text-to-Image and Image-to-Image read profiles through platforms.py;
corrected facts for FLUX, Kontext, Chroma, Wan, AuraFlow, Kolors, NoobAI,
Qwen-Image, HunyuanImage. Negative prompt is empty for models without one.
- Hosted / API models: Seedream 5, Nano Banana, GPT Image, Midjourney V8,
FLUX.2 pro, Ideogram 3, Recraft V4, Seedance 2.0 / 2.5, Kling 3.0, Veo 3.1,
Gemini Omni Flash, Runway, Wan 3.0, Luma, hosted H3, Grok, Vidu, PixVerse.
Reports say how to switch the vendor's own prompt rewriting off.
- Illustrious: spaced tags, quality tags last, 25-80 words (OnomaAI paper).
Video nodes
- target_model and duration_seconds appended to the three video expanders.
Default target is MiniMax H3; wan22_video is the original path, unchanged.
A workflow saved earlier loads with the default until the input is set.
Also included: the Alice, Ideogram Magic Prompt and prompt-database nodes that
were already registered in __init__.py but had not been committed.
Fixes: v1 {animal} / {label:a|b} wildcards were inert in the video nodes;
Image-to-Video save_to_file raised NameError; T2I padded short-prompt models.
.gitattributes added (text=auto) so CRLF working files stop showing as
whole-file changes. prompt_database.db and the cached Ideogram prompt are
git-ignored.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VpCi6nw5UECMdZ7ayYJvN