From 3984b341e180f3259f2d9dca844e93346f129580 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Fri, 20 Jun 2025 16:35:14 +1000 Subject: [PATCH] fix(ui): don't use layers when generating on generate tab --- .../nodes/util/graph/generation/buildChatGPT4oGraph.ts | 6 ++++-- .../nodes/util/graph/generation/buildCogView4Graph.ts | 6 ++++-- .../features/nodes/util/graph/generation/buildFLUXGraph.ts | 6 ++++-- .../nodes/util/graph/generation/buildImagen3Graph.ts | 6 ++++-- .../nodes/util/graph/generation/buildImagen4Graph.ts | 6 ++++-- .../features/nodes/util/graph/generation/buildSD1Graph.ts | 6 ++++-- .../features/nodes/util/graph/generation/buildSD3Graph.ts | 6 ++++-- .../features/nodes/util/graph/generation/buildSDXLGraph.ts | 6 ++++-- .../nodes/util/graph/generation/getGenerationMode.ts | 5 +++-- 9 files changed, 35 insertions(+), 18 deletions(-) diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildChatGPT4oGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildChatGPT4oGraph.ts index 2f389d059a..21ad0fe8e4 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildChatGPT4oGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildChatGPT4oGraph.ts @@ -12,6 +12,7 @@ import { getGenerationMode } from 'features/nodes/util/graph/generation/getGener import { Graph } from 'features/nodes/util/graph/generation/Graph'; import { selectCanvasOutputFields, selectPresetModifiedPrompts } from 'features/nodes/util/graph/graphBuilderUtils'; import { type GraphBuilderReturn, UnsupportedGenerationModeError } from 'features/nodes/util/graph/types'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import { t } from 'i18next'; import type { Equals } from 'tsafe'; import { assert } from 'tsafe'; @@ -20,9 +21,10 @@ const log = logger('system'); export const buildChatGPT4oGraph = async ( state: RootState, - manager?: CanvasManager | null + manager: CanvasManager | null ): Promise => { - const generationMode = await getGenerationMode(manager); + const tab = selectActiveTab(state); + const generationMode = await getGenerationMode(manager, tab); if (generationMode !== 'txt2img' && generationMode !== 'img2img') { throw new UnsupportedGenerationModeError(t('toast.chatGPT4oIncompatibleGenerationMode')); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildCogView4Graph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildCogView4Graph.ts index 4e369bc3bf..d2b27dd7cc 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildCogView4Graph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildCogView4Graph.ts @@ -19,6 +19,7 @@ import { selectPresetModifiedPrompts, } from 'features/nodes/util/graph/graphBuilderUtils'; import type { GraphBuilderReturn, ImageOutputNodes } from 'features/nodes/util/graph/types'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import type { Invocation } from 'services/api/types'; import { isNonRefinerMainModelConfig } from 'services/api/types'; import type { Equals } from 'tsafe'; @@ -28,9 +29,10 @@ const log = logger('system'); export const buildCogView4Graph = async ( state: RootState, - manager?: CanvasManager | null + manager: CanvasManager | null ): Promise => { - const generationMode = await getGenerationMode(manager); + const tab = selectActiveTab(state); + const generationMode = await getGenerationMode(manager, tab); log.debug({ generationMode }, 'Building CogView4 graph'); const params = selectParamsSlice(state); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildFLUXGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildFLUXGraph.ts index fd97936f67..2a012bd85a 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildFLUXGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildFLUXGraph.ts @@ -27,6 +27,7 @@ import { type ImageOutputNodes, UnsupportedGenerationModeError, } from 'features/nodes/util/graph/types'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import { t } from 'i18next'; import type { Invocation } from 'services/api/types'; import type { Equals } from 'tsafe'; @@ -37,8 +38,9 @@ import { addIPAdapters } from './addIPAdapters'; const log = logger('system'); -export const buildFLUXGraph = async (state: RootState, manager?: CanvasManager | null): Promise => { - const generationMode = await getGenerationMode(manager); +export const buildFLUXGraph = async (state: RootState, manager: CanvasManager | null): Promise => { + const tab = selectActiveTab(state); + const generationMode = await getGenerationMode(manager, tab); log.debug({ generationMode }, 'Building FLUX graph'); const params = selectParamsSlice(state); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildImagen3Graph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildImagen3Graph.ts index b200d6b915..15c478798f 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildImagen3Graph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildImagen3Graph.ts @@ -10,6 +10,7 @@ import { getGenerationMode } from 'features/nodes/util/graph/generation/getGener import { Graph } from 'features/nodes/util/graph/generation/Graph'; import { selectCanvasOutputFields, selectPresetModifiedPrompts } from 'features/nodes/util/graph/graphBuilderUtils'; import { type GraphBuilderReturn, UnsupportedGenerationModeError } from 'features/nodes/util/graph/types'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import { t } from 'i18next'; import type { Equals } from 'tsafe'; import { assert } from 'tsafe'; @@ -18,9 +19,10 @@ const log = logger('system'); export const buildImagen3Graph = async ( state: RootState, - manager?: CanvasManager | null + manager: CanvasManager | null ): Promise => { - const generationMode = await getGenerationMode(manager); + const tab = selectActiveTab(state); + const generationMode = await getGenerationMode(manager, tab); if (generationMode !== 'txt2img') { throw new UnsupportedGenerationModeError(t('toast.imagenIncompatibleGenerationMode', { model: 'Imagen3' })); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildImagen4Graph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildImagen4Graph.ts index 5138041c9e..b83c67f21c 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildImagen4Graph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildImagen4Graph.ts @@ -10,6 +10,7 @@ import { getGenerationMode } from 'features/nodes/util/graph/generation/getGener import { Graph } from 'features/nodes/util/graph/generation/Graph'; import { selectCanvasOutputFields, selectPresetModifiedPrompts } from 'features/nodes/util/graph/graphBuilderUtils'; import { type GraphBuilderReturn, UnsupportedGenerationModeError } from 'features/nodes/util/graph/types'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import { t } from 'i18next'; import type { Equals } from 'tsafe'; import { assert } from 'tsafe'; @@ -18,9 +19,10 @@ const log = logger('system'); export const buildImagen4Graph = async ( state: RootState, - manager?: CanvasManager | null + manager: CanvasManager | null ): Promise => { - const generationMode = await getGenerationMode(manager); + const tab = selectActiveTab(state); + const generationMode = await getGenerationMode(manager, tab); if (generationMode !== 'txt2img') { throw new UnsupportedGenerationModeError(t('toast.imagenIncompatibleGenerationMode', { model: 'Imagen4' })); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSD1Graph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSD1Graph.ts index 8ba379ec43..af5c0d5601 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSD1Graph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSD1Graph.ts @@ -24,6 +24,7 @@ import { selectPresetModifiedPrompts, } from 'features/nodes/util/graph/graphBuilderUtils'; import type { GraphBuilderReturn, ImageOutputNodes } from 'features/nodes/util/graph/types'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import type { Invocation } from 'services/api/types'; import type { Equals } from 'tsafe'; import { assert } from 'tsafe'; @@ -32,8 +33,9 @@ import { addRegions } from './addRegions'; const log = logger('system'); -export const buildSD1Graph = async (state: RootState, manager?: CanvasManager | null): Promise => { - const generationMode = await getGenerationMode(manager); +export const buildSD1Graph = async (state: RootState, manager: CanvasManager | null): Promise => { + const tab = selectActiveTab(state); + const generationMode = await getGenerationMode(manager, tab); log.debug({ generationMode }, 'Building SD1/SD2 graph'); const params = selectParamsSlice(state); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSD3Graph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSD3Graph.ts index 3230d7132c..a1539f7c9f 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSD3Graph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSD3Graph.ts @@ -18,14 +18,16 @@ import { selectPresetModifiedPrompts, } from 'features/nodes/util/graph/graphBuilderUtils'; import type { GraphBuilderReturn, ImageOutputNodes } from 'features/nodes/util/graph/types'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import type { Invocation } from 'services/api/types'; import type { Equals } from 'tsafe'; import { assert } from 'tsafe'; const log = logger('system'); -export const buildSD3Graph = async (state: RootState, manager?: CanvasManager | null): Promise => { - const generationMode = await getGenerationMode(manager); +export const buildSD3Graph = async (state: RootState, manager: CanvasManager | null): Promise => { + const tab = selectActiveTab(state); + const generationMode = await getGenerationMode(manager, tab); log.debug({ generationMode }, 'Building SD3 graph'); const model = selectMainModelConfig(state); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSDXLGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSDXLGraph.ts index f091fa4411..13534f61e1 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSDXLGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSDXLGraph.ts @@ -24,6 +24,7 @@ import { selectPresetModifiedPrompts, } from 'features/nodes/util/graph/graphBuilderUtils'; import type { GraphBuilderReturn, ImageOutputNodes } from 'features/nodes/util/graph/types'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import type { Invocation } from 'services/api/types'; import type { Equals } from 'tsafe'; import { assert } from 'tsafe'; @@ -32,8 +33,9 @@ import { addRegions } from './addRegions'; const log = logger('system'); -export const buildSDXLGraph = async (state: RootState, manager?: CanvasManager | null): Promise => { - const generationMode = await getGenerationMode(manager); +export const buildSDXLGraph = async (state: RootState, manager: CanvasManager | null): Promise => { + const tab = selectActiveTab(state); + const generationMode = await getGenerationMode(manager, tab); log.debug({ generationMode }, 'Building SDXL graph'); const model = selectMainModelConfig(state); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/getGenerationMode.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/getGenerationMode.ts index b458088d5a..5f3c48637a 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/getGenerationMode.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/getGenerationMode.ts @@ -1,8 +1,9 @@ import type { CanvasManager } from 'features/controlLayers/konva/CanvasManager'; import type { GenerationMode } from 'features/controlLayers/store/types'; +import type { TabName } from 'features/ui/store/uiTypes'; -export const getGenerationMode = async (manager?: CanvasManager | null): Promise => { - if (!manager) { +export const getGenerationMode = async (manager: CanvasManager | null, tab: TabName): Promise => { + if (!manager || tab === 'generate') { return 'txt2img'; } return await manager.compositor.getGenerationMode();