Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
bc82599
Add Qwen Image Edit 2511 model support
lstein Mar 24, 2026
a373e7e
fix: diffusers compat, VL encoder image resize, badge wrapping
lstein Mar 27, 2026
1f248b7
fix: free BnB-quantized encoder after use, suppress int8 cast warning
lstein Mar 27, 2026
5cafafe
chore: ruff & uv lock
lstein Mar 27, 2026
073b08b
Merge branch 'main' into feat/qwen-image-edit-2511
lstein Mar 27, 2026
c9f781e
fix: bypass HfApi in model install test
lstein Mar 27, 2026
ceaf97d
feat(backend): add support for a Comfy LoRA variant
lstein Mar 27, 2026
01d6f09
refactor: rename QwenImageEdit -> QwenImage base type
lstein Mar 28, 2026
c23f9ca
feat: add QwenImage variant type to distinguish edit vs txt2img models
lstein Mar 28, 2026
e13faf5
fix: make QwenImage variant optional to fix model detection tags
lstein Mar 28, 2026
87bda37
fix: rename edit starter model variables to qwen_image_edit_* prefix
lstein Mar 28, 2026
62ccb75
fix: remove unused exports (zQwenImageVariantType, isQwenImageEditMai…
lstein Mar 28, 2026
cbfd804
fix: restore correct GGUF filenames in Qwen Image Edit starter model …
lstein Mar 28, 2026
939f6f9
feat: tag edit starter models with variant, pass variant through install
lstein Mar 28, 2026
4982343
fix: only set zero_cond_t=True for edit-variant GGUF models
lstein Mar 28, 2026
3a39a79
fix: prevent Flux LoRAs from being detected as Qwen Image LoRAs
lstein Mar 28, 2026
60cf18b
test: add Qwen Image LoRA model identification tests
lstein Mar 28, 2026
153f260
chore: ruff
lstein Mar 28, 2026
2d89174
chore: ruff
lstein Mar 28, 2026
2eb2c55
fix: don't force reference image to output aspect ratio in VAE encoding
lstein Mar 28, 2026
af1dc29
fix: clip denoise schedule by denoising_start/end, block GGUF enqueue…
lstein Mar 29, 2026
e3449c1
test: add Qwen Image denoise, model loader, and text encoder tests
lstein Mar 29, 2026
636b696
refactor: rename Qwen Image Edit node titles/descriptions to Qwen Image
lstein Mar 30, 2026
61d3a79
chore: ruff
lstein Mar 30, 2026
3d92014
chore: ruff
lstein Mar 30, 2026
5bc4154
fix: skip negative text encoder node when CFG <= 1
lstein Mar 30, 2026
ef4e41c
Merge branch 'main' into feat/qwen-image-edit-2511
JPPhoto Mar 30, 2026
09119dc
feat: support Kohya-format Qwen Image LoRAs (LoKR)
lstein Mar 30, 2026
f26a35e
chore: ruff
lstein Apr 1, 2026
e2e16f7
fix: generate noise in float32 instead of float16
lstein Apr 1, 2026
9e828b9
Agent-Logs-Url: https://github.com/lstein/InvokeAI/sessions/24879c8d-…
Copilot Apr 4, 2026
b275ae0
test: add Qwen Image LoRA identification and conversion tests
lstein Apr 4, 2026
1ec8bad
chore(backend): ruff
lstein Apr 4, 2026
08d40f9
chore(frontend): update schema
lstein Apr 4, 2026
d9294a7
Merge branch 'main' into feat/qwen-image-edit-2511
JPPhoto Apr 5, 2026
b92dd96
chore: merge with PR 9003 - support for qwen-image
lstein Apr 5, 2026
d908dc4
chore(frontend): add test for leakage of ref images into generate graphs
lstein Apr 5, 2026
7041b70
feature(model detection): use GGUF file name to identify qwen image "…
lstein Apr 5, 2026
be9cbc3
chore(translation): use i18n framework for qwen quantization strings
lstein Apr 5, 2026
c2d7b8b
chore(frontend): add regression test for qwen image CFG handling in g…
lstein Apr 5, 2026
b7de7d7
fix(frontend): add missing advanced metadata recall handlers to QwenI…
lstein Apr 5, 2026
5ca4b7b
Merge branch 'main' into feat/qwen-image-edit-2511
lstein Apr 5, 2026
bbc1d7f
Merge branch 'main' into feat/qwen-image-edit-2511
JPPhoto Apr 6, 2026
0c0af80
fix(frontend): align CFG switch in front & backends; fix Qwen Image m…
lstein Apr 6, 2026
7ae0eb9
chore: merge with main and fix typegen
lstein Apr 6, 2026
d92dffb
fix(backend): use correct latent factors for Qwen Image preview images
lstein Apr 6, 2026
cf05fb1
feat: use chained collectors for deterministic reference image ordering
lstein Apr 6, 2026
e5d3d65
test: add backend unit tests for Qwen Image preview image generation
lstein Apr 6, 2026
05b4754
fix: prevent double 'variant' kwarg in Qwen Image Diffusers config pr…
lstein Apr 7, 2026
7b4774e
fix: use .pop() for all override_fields that are passed as explicit k…
lstein Apr 7, 2026
4da9da4
fix(backend): avoid double-kwarg crash when variant specified in star…
lstein Apr 7, 2026
34e64f0
Merge branch 'main' into feat/qwen-image-edit-2511
lstein Apr 10, 2026
ce41b08
chore: regenerate schema.ts with merged Qwen Image + Anima types
lstein Apr 10, 2026
9bf5b16
chore(frontend): lint
lstein Apr 10, 2026
d1143e9
Merge branch 'main' into feat/qwen-image-edit-2511
lstein Apr 10, 2026
7bf1369
feat: move Qwen Image shift to Generation accordion with slider UI
lstein Apr 10, 2026
0620c23
feat: auto-default Qwen Image component source to first available dif…
lstein Apr 10, 2026
4d4536c
fix(frontend): autoselect qwen3 image variant diffusers source when s…
lstein Apr 10, 2026
043bc0a
fix(backend): use tensor structure to discriminate edit from generate…
lstein Apr 12, 2026
6e67d9a
test(backend): update Qwen GGUF variant assertion for non-edit models
lstein Apr 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions invokeai/app/api/dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
CogView4ConditioningInfo,
ConditioningFieldData,
FLUXConditioningInfo,
QwenImageConditioningInfo,
SD3ConditioningInfo,
SDXLConditioningInfo,
ZImageConditioningInfo,
Expand Down Expand Up @@ -141,6 +142,7 @@ def initialize(
SD3ConditioningInfo,
CogView4ConditioningInfo,
ZImageConditioningInfo,
QwenImageConditioningInfo,
AnimaConditioningInfo,
],
ephemeral=True,
Expand Down
8 changes: 8 additions & 0 deletions invokeai/app/invocations/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ class FieldDescriptions:
sd3_model = "SD3 model (MMDiTX) to load"
cogview4_model = "CogView4 model (Transformer) to load"
z_image_model = "Z-Image model (Transformer) to load"
qwen_image_model = "Qwen Image Edit model (Transformer) to load"
qwen_vl_encoder = "Qwen2.5-VL tokenizer, processor and text/vision encoder"
sdxl_main_model = "SDXL Main model (UNet, VAE, CLIP1, CLIP2) to load"
sdxl_refiner_model = "SDXL Refiner Main Modde (UNet, VAE, CLIP2) to load"
onnx_main_model = "ONNX Main model (UNet, VAE, CLIP) to load"
Expand Down Expand Up @@ -340,6 +342,12 @@ class ZImageConditioningField(BaseModel):
)


class QwenImageConditioningField(BaseModel):
"""A Qwen Image Edit conditioning tensor primitive value"""

conditioning_name: str = Field(description="The name of conditioning tensor")


class AnimaConditioningField(BaseModel):
"""An Anima conditioning tensor primitive value.

Expand Down
4 changes: 4 additions & 0 deletions invokeai/app/invocations/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,10 @@ def invoke(self, context: InvocationContext) -> MetadataOutput:
"z_image_img2img",
"z_image_inpaint",
"z_image_outpaint",
"qwen_image_txt2img",
"qwen_image_img2img",
"qwen_image_inpaint",
"qwen_image_outpaint",
"anima_txt2img",
"anima_img2img",
"anima_inpaint",
Expand Down
7 changes: 7 additions & 0 deletions invokeai/app/invocations/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,13 @@ class GlmEncoderField(BaseModel):
text_encoder: ModelIdentifierField = Field(description="Info to load text_encoder submodel")


class QwenVLEncoderField(BaseModel):
"""Field for Qwen2.5-VL encoder used by Qwen Image Edit models."""

tokenizer: ModelIdentifierField = Field(description="Info to load tokenizer submodel")
text_encoder: ModelIdentifierField = Field(description="Info to load text_encoder submodel")


class Qwen3EncoderField(BaseModel):
"""Field for Qwen3 text encoder used by Z-Image models."""

Expand Down
12 changes: 12 additions & 0 deletions invokeai/app/invocations/primitives.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
InputField,
LatentsField,
OutputField,
QwenImageConditioningField,
SD3ConditioningField,
TensorField,
UIComponent,
Expand Down Expand Up @@ -474,6 +475,17 @@ def build(cls, conditioning_name: str) -> "ZImageConditioningOutput":
return cls(conditioning=ZImageConditioningField(conditioning_name=conditioning_name))


@invocation_output("qwen_image_conditioning_output")
class QwenImageConditioningOutput(BaseInvocationOutput):
"""Base class for nodes that output a Qwen Image Edit conditioning tensor."""

conditioning: QwenImageConditioningField = OutputField(description=FieldDescriptions.cond)

@classmethod
def build(cls, conditioning_name: str) -> "QwenImageConditioningOutput":
return cls(conditioning=QwenImageConditioningField(conditioning_name=conditioning_name))


@invocation_output("anima_conditioning_output")
class AnimaConditioningOutput(BaseInvocationOutput):
"""Base class for nodes that output an Anima text conditioning tensor."""
Expand Down
Loading
Loading