You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v2.6.0 - Mage-Flow, the MCP 2026-07-28 spec and Smart Upscaler
Smart Upscaler taught to the kit (docs/NODE_LIBRARY/smart-upscaler.md), our own eleven-node pack for
tiled upscaling that writes a separate verified prompt for EVERY tile. This is the gap the kit's existing
tiling ladder had: Ultimate SD Upscale, Tiled Diffusion / MultiDiffusion and Steudio Divide and Conquer all
tile the SAMPLING but not the PROMPT, so every tile gets the same text or a captioner describes each tile in
isolation, which is why a crop of roof captions as "brown texture" and neighbouring tiles disagree at the
seam. Smart Upscaler reads the whole image once, then derives each tile's prompt from that shared reading,
finds flat regions by MEASURING pixels rather than asking a model, and never tells a tile about an object
its own pixels do not confirm. The entry is buildable: all eleven class names and display names, every
category and I/O type, the full chain (Prompt Director -> Output-Scale Tiles -> Whole-Image Analysis -> Tile
Job Director -> Exact-Tile Prompt -> engine switch -> Color Match -> Finish and Blend, with the two review
nodes hanging off it), and the shipped Z-Image Turbo reference values. Carries the traps that cost real time: caption_images is a SEPARATE stream from tile_images and feeding the wrong one captions the padding; a
stale cache_tag makes a caption-model change look inert; the SMART_PROMPT_SYSTEM wire must reach all
three consumers or they fall back to their own defaults; and an edit-model prompt style on a denoise model
grows objects that were never in the picture. Marked honestly as not yet published - no repository or
Registry entry exists, so the entry carries no install URL, and nothing in it was executed or benchmarked.
A core detail worth knowing beyond this pack: applying a Z-Image Fun tile ControlNet through the Qwen-named QwenImageDiffsynthControlnet is correct, not a mistake. In comfy_extras/nodes_model_patch.py, ZImageFunControlnet subclasses it and inherits the same diffsynth_controlnet implementation; only the input arrangement and the menu category differ.
Mage-Flow / Mage-Flow-Edit - new official recipe (Microsoft, 4B, MIT). One compact stack that does both
text-to-image and instruction editing, and one node does both jobs: TextEncodeMageFlowEdit
(model/conditioning/mage) takes clip + prompt + optional vae + an Autogrow image_1..image_16 group and
returns positive / negative / latent, so you must NOT wire an EmptyLatentImage - the sizes would not
match. Width/height of 0 fall back per-axis to the first reference's size (1024x1024 with no reference) and are
floored to a multiple of 16; the latent is [batch, 128, h/16, w/16]. Two separate resize paths, read from the
code: every reference is resized to the OUTPUT resolution before VAE encode (Mage's RoPE aligns reference and
target by position), while the copy fed to the VL text encoder is capped at a 384px long edge. Graph: UNETLoader -> KSampler.model, CLIPLoader (type mage) -> the encoder, VAELoader -> the encoder and VAEDecode, encoder outputs -> KSampler -> VAEDecode -> SaveImageAdvanced; edit adds LoadImage -> image_1. Settings from the upstream table: Base 30 steps / CFG 5.0, RL 20 (30 for Edit),
Turbo 4 / CFG 1.0, euler + simple. Carries the naming trap that mage_flow_bf16 is the RL checkpoint and mage_flow_base_bf16 is Base (upstream calls the RL model plain microsoft/Mage-Flow), the open 2K quality
complaint (gh 15099), and the int8 caveats.
MiniMax H3 (Hailuo 03) - three new partner nodes, folded into the existing MiniMax recipe: MinimaxHailuo03TextToVideoNode, MinimaxHailuo03FirstLastFrameNode and MinimaxHailuo03ReferenceNode. All
three nest their widgets inside a model DynamicCombo (so they read model.prompt, model.duration, ...),
resolution is 2K only, duration 5 to 15s. First-last-frame validates each image at 2:5 to 5:2 aspect and
256x256 minimum BEFORE spending anything; the reference node takes up to 9 images / 3 videos / 3 audio clips and
audio cannot be used without an image or video. Prompting is by connection order in the prose ("Image 1",
"Video 1"), and the official template shape is a technical header, then the scene, then a second-by-second beat
sheet, then a bracketed VFX list, then exclusions. Cost is duration x $0.1859, read from the node's own price
badge.
Recraft V4 and V4.1, folded into the Recraft recipe (which said "V3" only, and was therefore silent about a
whole model generation). Exactly two new nodes ship, RecraftV4TextToImageNode and RecraftV4TextToVectorNode;
there is no V4 image-to-image or inpainting node, so edits still route through V3. Their model DynamicCombo
swaps the size list with the tier (14 sizes from 1024x1024 standard, the same 14 shapes doubled from 2048x2048
on _pro). Records that negative_prompt on the V4 nodes is a dead input - the tooltip says it is ignored
and execute() never reads it - plus the 10,000-character prompt cap and the SVG output needing SaveSVGNode.
Ideogram P-Image, the new fast tier (IdeogramPImage). Documents the quality / resolution / prompt_upsampling widgets and the second output that actually matters: final_prompt, the caption the
image was really generated from. Feed it back with prompt_upsampling = OFF and the same seed to reproduce a
result. The node's own tooltips supply the rules the kit now repeats: text renders poorly below MEDIUM, prefer HIGH + 2K for typography, and switch upsampling OFF whenever you pass your own JSON caption. The Ideogram
entry's "nodes available" line was stale at v0.28.0 and now reads v0.29.2.
Uni3C camera-trajectory ControlNet for Wan (ModelPatchLoader -> WanUni3CControlnetApply, EXPERIMENTAL),
in the Wan recipe. The apply node patches the MODEL, so it sits between the model loader and the KSampler, not
on the conditioning. The part that is easy to get wrong: render_video is not footage, it is the guidance video
rendered from the camera trajectory (warped point-cloud renders of the input image). Two guards will stop you -
the patch must be a Uni3C controlnet, and its hidden dim must equal the loaded Wan model's dim. No Comfy-Org
repack exists yet, so the weights pointer is marked inferred.
The MCP 2026-07-28 specification, and what it means for this kit (docs/LAYERS.md, Layer 2). MCP's
protocol core went stateless: the initialize handshake and Mcp-Session-Id are retired, every request
is self-describing, so any request can land on any instance behind a plain load balancer. Server-to-client
calls become Multi Round-Trip Requests, Mcp-Method / Mcp-Name headers allow body-free gateway routing, and
list responses carry ttlMs / cacheScope. Roots, Sampling, Logging and legacy HTTP+SSE are deprecated on a
twelve-month window. Documented honestly for a kit user: comfyui-mcp rides the SDK's 1.x line
(@modelcontextprotocol/sdk ^1.12.1), so the driver you run speaks the previous revision, that stays
supported, and there is nothing for you to change; the v2 TypeScript line ships as separate scoped packages,
so adopting it is the driver author's migration, not a version bump.
The dependency trap for anyone maintaining their own MCP server (docs/LAYERS.md + KNOWN_ISSUES.md).
An unbounded pin like mcp>=1.2.0 now resolves to Python SDK 2.0.0, which renamed FastMCP to MCPServer and removed mcp.server.fastmcp, so fresh installs die on the first import while running
instances carry on. Fix: pin mcp>=1.28,<2 or migrate. The migration note carries the part that fails
SILENTLY: every transport parameter moved off the constructor and off mcp.settings onto run(), so mcp.settings.host = ... no-ops instead of erroring. Learned first-hand, our own AI VFX MCP server hit it.
Changed
docs/KNOWN_ISSUES.md refreshed to core v0.29.2 / frontend v1.49.3. New open rows: Mage-Flow quality
degradation at 2048x2048 (gh 15099), Ideogram 4 int8 templates dying on Apple Silicon MPS with aten::_int_mm unimplemented (gh 15133), and ImageBlenddifference mode clamping every negative pixel to
black because comfy_extras/nodes_post_processing.py computes img1 - img2 with no abs() (gh 15178,
verified in source, not taken from the report). The ComfyUI-LTXVideo import break is still open with a second
report (gh 15070, 15145). Moved to "Recently fixed": the v0.29.1 user.css regression, the v0.29.1 SVG
preview restore after the stored-XSS hardening, the v0.29.0 streaming video transcode, the Mage-Flow fix for
cards without bf16, and the Anima AMD R9700 speed regression.
Counts synced across every surface: 74 -> 75 recipes (Mage-Flow is a new family; MiniMax H3,
Recraft V4.1, Ideogram P-Image and Uni3C extend existing entries), 578 -> 583 templates. The template
library's distinct-model count stays 157: Mage-Flow and MiniMax H3 arrived, Kling 1.6 and Kling 2.0 were
archived out of the library along with the retired Runway Gen3a templates. Image also overtook Video as the
largest template category (157 vs 149), so the category chart was reordered.