Skip to content

Commit c965d3e

Browse files
authored
Merge branch 'main' into bugfix/set-vram-on-macs
2 parents 4b78deb + 625b08c commit c965d3e

File tree

14 files changed

+168
-76
lines changed

14 files changed

+168
-76
lines changed

invokeai/app/invocations/compel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,8 @@ class SDXLCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase):
279279
crop_left: int = InputField(default=0, description="")
280280
target_width: int = InputField(default=1024, description="")
281281
target_height: int = InputField(default=1024, description="")
282-
clip: ClipField = InputField(description=FieldDescriptions.clip, input=Input.Connection)
283-
clip2: ClipField = InputField(description=FieldDescriptions.clip, input=Input.Connection)
282+
clip: ClipField = InputField(description=FieldDescriptions.clip, input=Input.Connection, title="CLIP 1")
283+
clip2: ClipField = InputField(description=FieldDescriptions.clip, input=Input.Connection, title="CLIP 2")
284284

285285
@torch.no_grad()
286286
def invoke(self, context: InvocationContext) -> ConditioningOutput:

invokeai/app/invocations/metadata.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ class CoreMetadata(BaseModelExcludeNull):
7272
)
7373
refiner_steps: Optional[int] = Field(default=None, description="The number of steps used for the refiner")
7474
refiner_scheduler: Optional[str] = Field(default=None, description="The scheduler used for the refiner")
75-
refiner_positive_aesthetic_store: Optional[float] = Field(
75+
refiner_positive_aesthetic_score: Optional[float] = Field(
7676
default=None, description="The aesthetic score used for the refiner"
7777
)
78-
refiner_negative_aesthetic_store: Optional[float] = Field(
78+
refiner_negative_aesthetic_score: Optional[float] = Field(
7979
default=None, description="The aesthetic score used for the refiner"
8080
)
8181
refiner_start: Optional[float] = Field(default=None, description="The start value used for refiner denoising")
@@ -160,11 +160,11 @@ class MetadataAccumulatorInvocation(BaseInvocation):
160160
default=None,
161161
description="The scheduler used for the refiner",
162162
)
163-
refiner_positive_aesthetic_store: Optional[float] = InputField(
163+
refiner_positive_aesthetic_score: Optional[float] = InputField(
164164
default=None,
165165
description="The aesthetic score used for the refiner",
166166
)
167-
refiner_negative_aesthetic_store: Optional[float] = InputField(
167+
refiner_negative_aesthetic_score: Optional[float] = InputField(
168168
default=None,
169169
description="The aesthetic score used for the refiner",
170170
)

invokeai/app/invocations/model.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,13 @@ class SDXLLoraLoaderInvocation(BaseInvocation):
250250

251251
lora: LoRAModelField = InputField(description=FieldDescriptions.lora_model, input=Input.Direct, title="LoRA")
252252
weight: float = InputField(default=0.75, description=FieldDescriptions.lora_weight)
253-
unet: Optional[UNetField] = Field(
254-
default=None, description=FieldDescriptions.unet, input=Input.Connection, title="UNET"
253+
unet: Optional[UNetField] = InputField(
254+
default=None, description=FieldDescriptions.unet, input=Input.Connection, title="UNet"
255255
)
256-
clip: Optional[ClipField] = Field(
256+
clip: Optional[ClipField] = InputField(
257257
default=None, description=FieldDescriptions.clip, input=Input.Connection, title="CLIP 1"
258258
)
259-
clip2: Optional[ClipField] = Field(
259+
clip2: Optional[ClipField] = InputField(
260260
default=None, description=FieldDescriptions.clip, input=Input.Connection, title="CLIP 2"
261261
)
262262

invokeai/backend/model_management/model_probe.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class ModelProbe(object):
5050
"StableDiffusionInpaintPipeline": ModelType.Main,
5151
"StableDiffusionXLPipeline": ModelType.Main,
5252
"StableDiffusionXLImg2ImgPipeline": ModelType.Main,
53+
"StableDiffusionXLInpaintPipeline": ModelType.Main,
5354
"AutoencoderKL": ModelType.Vae,
5455
"ControlNetModel": ModelType.ControlNet,
5556
}

invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => {
110110
);
111111

112112
const { metadata, workflow, isLoading } = useGetImageMetadataFromFileQuery(
113-
lastSelectedImage?.image_name ?? skipToken,
113+
lastSelectedImage ?? skipToken,
114114
{
115115
selectFromResult: (res) => ({
116116
isLoading: res.isFetching,

invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => {
5252
const isCanvasEnabled = useFeatureStatus('unifiedCanvas').isFeatureEnabled;
5353

5454
const { metadata, workflow, isLoading } = useGetImageMetadataFromFileQuery(
55-
imageDTO.image_name,
55+
imageDTO,
5656
{
5757
selectFromResult: (res) => ({
5858
isLoading: res.isFetching,

invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,15 @@ const ImageMetadataActions = (props: Props) => {
101101
onClick={handleRecallSeed}
102102
/>
103103
)}
104-
{metadata.model !== undefined && metadata.model !== null && (
105-
<ImageMetadataItem
106-
label="Model"
107-
value={metadata.model.model_name}
108-
onClick={handleRecallModel}
109-
/>
110-
)}
104+
{metadata.model !== undefined &&
105+
metadata.model !== null &&
106+
metadata.model.model_name && (
107+
<ImageMetadataItem
108+
label="Model"
109+
value={metadata.model.model_name}
110+
onClick={handleRecallModel}
111+
/>
112+
)}
111113
{metadata.width && (
112114
<ImageMetadataItem
113115
label="Width"

invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataViewer.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,12 @@ const ImageMetadataViewer = ({ image }: ImageMetadataViewerProps) => {
2727
// dispatch(setShouldShowImageDetails(false));
2828
// });
2929

30-
const { metadata, workflow } = useGetImageMetadataFromFileQuery(
31-
image.image_name,
32-
{
33-
selectFromResult: (res) => ({
34-
metadata: res?.currentData?.metadata,
35-
workflow: res?.currentData?.workflow,
36-
}),
37-
}
38-
);
30+
const { metadata, workflow } = useGetImageMetadataFromFileQuery(image, {
31+
selectFromResult: (res) => ({
32+
metadata: res?.currentData?.metadata,
33+
workflow: res?.currentData?.workflow,
34+
}),
35+
});
3936

4037
return (
4138
<Flex

invokeai/frontend/web/src/features/nodes/types/types.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import {
22
SchedulerParam,
33
zBaseModel,
4+
zMainModel,
45
zMainOrOnnxModel,
6+
zOnnxModel,
57
zSDXLRefinerModel,
68
zScheduler,
79
} from 'features/parameters/types/parameterSchemas';
@@ -769,12 +771,14 @@ export const zCoreMetadata = z
769771
steps: z.number().int().nullish(),
770772
scheduler: z.string().nullish(),
771773
clip_skip: z.number().int().nullish(),
772-
model: zMainOrOnnxModel.nullish(),
773-
controlnets: z.array(zControlField).nullish(),
774+
model: z
775+
.union([zMainModel.deepPartial(), zOnnxModel.deepPartial()])
776+
.nullish(),
777+
controlnets: z.array(zControlField.deepPartial()).nullish(),
774778
loras: z
775779
.array(
776780
z.object({
777-
lora: zLoRAModelField,
781+
lora: zLoRAModelField.deepPartial(),
778782
weight: z.number(),
779783
})
780784
)
@@ -784,15 +788,15 @@ export const zCoreMetadata = z
784788
init_image: z.string().nullish(),
785789
positive_style_prompt: z.string().nullish(),
786790
negative_style_prompt: z.string().nullish(),
787-
refiner_model: zSDXLRefinerModel.nullish(),
791+
refiner_model: zSDXLRefinerModel.deepPartial().nullish(),
788792
refiner_cfg_scale: z.number().nullish(),
789793
refiner_steps: z.number().int().nullish(),
790794
refiner_scheduler: z.string().nullish(),
791-
refiner_positive_aesthetic_store: z.number().nullish(),
792-
refiner_negative_aesthetic_store: z.number().nullish(),
795+
refiner_positive_aesthetic_score: z.number().nullish(),
796+
refiner_negative_aesthetic_score: z.number().nullish(),
793797
refiner_start: z.number().nullish(),
794798
})
795-
.catchall(z.record(z.any()));
799+
.passthrough();
796800

797801
export type CoreMetadata = z.infer<typeof zCoreMetadata>;
798802

invokeai/frontend/web/src/features/nodes/util/getMetadataAndWorkflowFromImageBlob.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import * as png from '@stevebel/png';
2+
import { logger } from 'app/logging/logger';
3+
import { parseify } from 'common/util/serialize';
24
import {
35
ImageMetadataAndWorkflow,
46
zCoreMetadata,
@@ -18,6 +20,11 @@ export const getMetadataAndWorkflowFromImageBlob = async (
1820
const metadataResult = zCoreMetadata.safeParse(JSON.parse(rawMetadata));
1921
if (metadataResult.success) {
2022
data.metadata = metadataResult.data;
23+
} else {
24+
logger('system').error(
25+
{ error: parseify(metadataResult.error) },
26+
'Problem reading metadata from image'
27+
);
2128
}
2229
}
2330

@@ -26,6 +33,11 @@ export const getMetadataAndWorkflowFromImageBlob = async (
2633
const workflowResult = zWorkflow.safeParse(JSON.parse(rawWorkflow));
2734
if (workflowResult.success) {
2835
data.workflow = workflowResult.data;
36+
} else {
37+
logger('system').error(
38+
{ error: parseify(workflowResult.error) },
39+
'Problem reading workflow from image'
40+
);
2941
}
3042
}
3143

0 commit comments

Comments
 (0)