From ff34850739c8cdc938ce7a95cba6556114e77b3b Mon Sep 17 00:00:00 2001 From: Alexander Eichhorn Date: Sat, 9 May 2026 07:07:30 +0200 Subject: [PATCH] fix(metadata): recall z_image_shift correctly Widen the validator range to match the param's actual max (10) so saved shift values above 3 are recalled, and handle absent/null values by recalling as auto (null) when the recalled image is a Z-Image. --- .../web/src/features/metadata/parsing.tsx | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/invokeai/frontend/web/src/features/metadata/parsing.tsx b/invokeai/frontend/web/src/features/metadata/parsing.tsx index 5fa08ee2954..e7d3bab3afe 100644 --- a/invokeai/frontend/web/src/features/metadata/parsing.tsx +++ b/invokeai/frontend/web/src/features/metadata/parsing.tsx @@ -785,12 +785,25 @@ const QwenImageShift: SingleMetadataHandler = { //#endregion QwenImageShift //#region ZImageShift -const ZImageShift: SingleMetadataHandler = { +const ZImageShift: SingleMetadataHandler = { [SingleMetadataKey]: true, type: 'ZImageShift', - parse: (metadata, _store) => { + parse: (metadata, store) => { const raw = getProperty(metadata, 'z_image_shift'); - const parsed = z.number().min(0).max(3).parse(raw); + if (raw === undefined) { + // Older Z-Image images and new images generated with auto shift don't include this key. + // Recall as null (auto) only when the recalled image is a Z-Image, so we don't clobber + // the user's current shift when recalling unrelated metadata. + const base = selectBase(store.getState()); + if (base !== 'z-image') { + return Promise.reject(); + } + return Promise.resolve(null); + } + if (raw === null) { + return Promise.resolve(null); + } + const parsed = z.number().min(0).max(10).parse(raw); return Promise.resolve(parsed); }, recall: (value, store) => { @@ -798,7 +811,9 @@ const ZImageShift: SingleMetadataHandler = { }, i18nKey: 'metadata.zImageShift', LabelComponent: MetadataLabel, - ValueComponent: ({ value }: SingleMetadataValueProps) => , + ValueComponent: ({ value }: SingleMetadataValueProps) => ( + + ), }; //#endregion ZImageShift