Skip to content

Commit fe7af3e

Browse files
fix(ui): make Z-Image model selects mutually exclusive
VAE and Qwen3 Encoder selects are disabled when Qwen3 Source is selected, and vice versa. This prevents invalid model combinations.
1 parent 7182ff2 commit fe7af3e

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

invokeai/frontend/web/src/features/parameters/components/Advanced/ParamZImageQwen3VaeModelSelect.tsx

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,18 @@ import type { MainModelConfig, Qwen3EncoderModelConfig, VAEModelConfig } from 's
1717

1818
/**
1919
* Z-Image VAE Model Select - uses FLUX VAE models
20+
* Disabled when Qwen3 Source is selected (mutually exclusive)
2021
*/
2122
const ParamZImageVaeModelSelect = memo(() => {
2223
const dispatch = useAppDispatch();
2324
const { t } = useTranslation();
2425
const zImageVaeModel = useAppSelector(selectZImageVaeModel);
26+
const zImageQwen3SourceModel = useAppSelector(selectZImageQwen3SourceModel);
2527
const [modelConfigs, { isLoading }] = useFluxVAEModels();
2628

29+
// Disable when Qwen3 Source is selected
30+
const isDisabled = zImageQwen3SourceModel !== null;
31+
2732
const _onChange = useCallback(
2833
(model: VAEModelConfig | null) => {
2934
if (model) {
@@ -43,14 +48,15 @@ const ParamZImageVaeModelSelect = memo(() => {
4348
});
4449

4550
return (
46-
<FormControl minW={0} flexGrow={1} gap={2}>
51+
<FormControl minW={0} flexGrow={1} gap={2} isDisabled={isDisabled}>
4752
<FormLabel m={0}>{t('modelManager.zImageVae')}</FormLabel>
4853
<Combobox
4954
value={value}
5055
options={options}
5156
onChange={onChange}
5257
noOptionsMessage={noOptionsMessage}
5358
isClearable
59+
isDisabled={isDisabled}
5460
placeholder={t('modelManager.zImageVaePlaceholder')}
5561
/>
5662
</FormControl>
@@ -61,13 +67,18 @@ ParamZImageVaeModelSelect.displayName = 'ParamZImageVaeModelSelect';
6167

6268
/**
6369
* Z-Image Qwen3 Encoder Model Select
70+
* Disabled when Qwen3 Source is selected (mutually exclusive)
6471
*/
6572
const ParamZImageQwen3EncoderModelSelect = memo(() => {
6673
const dispatch = useAppDispatch();
6774
const { t } = useTranslation();
6875
const zImageQwen3EncoderModel = useAppSelector(selectZImageQwen3EncoderModel);
76+
const zImageQwen3SourceModel = useAppSelector(selectZImageQwen3SourceModel);
6977
const [modelConfigs, { isLoading }] = useQwen3EncoderModels();
7078

79+
// Disable when Qwen3 Source is selected
80+
const isDisabled = zImageQwen3SourceModel !== null;
81+
7182
const _onChange = useCallback(
7283
(model: Qwen3EncoderModelConfig | null) => {
7384
if (model) {
@@ -87,14 +98,15 @@ const ParamZImageQwen3EncoderModelSelect = memo(() => {
8798
});
8899

89100
return (
90-
<FormControl minW={0} flexGrow={1} gap={2}>
101+
<FormControl minW={0} flexGrow={1} gap={2} isDisabled={isDisabled}>
91102
<FormLabel m={0}>{t('modelManager.zImageQwen3Encoder')}</FormLabel>
92103
<Combobox
93104
value={value}
94105
options={options}
95106
onChange={onChange}
96107
noOptionsMessage={noOptionsMessage}
97108
isClearable
109+
isDisabled={isDisabled}
98110
placeholder={t('modelManager.zImageQwen3EncoderPlaceholder')}
99111
/>
100112
</FormControl>
@@ -105,13 +117,19 @@ ParamZImageQwen3EncoderModelSelect.displayName = 'ParamZImageQwen3EncoderModelSe
105117

106118
/**
107119
* Z-Image Qwen3 Source Model Select - Diffusers Z-Image models for fallback
120+
* Disabled when VAE or Qwen3 Encoder is selected (mutually exclusive)
108121
*/
109122
const ParamZImageQwen3SourceModelSelect = memo(() => {
110123
const dispatch = useAppDispatch();
111124
const { t } = useTranslation();
112125
const zImageQwen3SourceModel = useAppSelector(selectZImageQwen3SourceModel);
126+
const zImageVaeModel = useAppSelector(selectZImageVaeModel);
127+
const zImageQwen3EncoderModel = useAppSelector(selectZImageQwen3EncoderModel);
113128
const [modelConfigs, { isLoading }] = useZImageDiffusersModels();
114129

130+
// Disable when VAE or Qwen3 Encoder is selected
131+
const isDisabled = zImageVaeModel !== null || zImageQwen3EncoderModel !== null;
132+
115133
const _onChange = useCallback(
116134
(model: MainModelConfig | null) => {
117135
if (model) {
@@ -131,14 +149,15 @@ const ParamZImageQwen3SourceModelSelect = memo(() => {
131149
});
132150

133151
return (
134-
<FormControl minW={0} flexGrow={1} gap={2}>
152+
<FormControl minW={0} flexGrow={1} gap={2} isDisabled={isDisabled}>
135153
<FormLabel m={0}>{t('modelManager.zImageQwen3Source')}</FormLabel>
136154
<Combobox
137155
value={value}
138156
options={options}
139157
onChange={onChange}
140158
noOptionsMessage={noOptionsMessage}
141159
isClearable
160+
isDisabled={isDisabled}
142161
placeholder={t('modelManager.zImageQwen3SourcePlaceholder')}
143162
/>
144163
</FormControl>

0 commit comments

Comments
 (0)