From be9d63d52ef2186c0e327f3719dad189a5088bd8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 21 Jan 2026 04:08:28 +0000 Subject: [PATCH 1/5] Add cpu_only field to MainModelDefaultSettings Co-authored-by: lstein <111189+lstein@users.noreply.github.com> --- invokeai/backend/model_manager/configs/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/invokeai/backend/model_manager/configs/main.py b/invokeai/backend/model_manager/configs/main.py index 39887e1b049..5f3d5106449 100644 --- a/invokeai/backend/model_manager/configs/main.py +++ b/invokeai/backend/model_manager/configs/main.py @@ -48,6 +48,7 @@ class MainModelDefaultSettings(BaseModel): width: int | None = Field(default=None, multiple_of=8, ge=64, description="Default width for this model") height: int | None = Field(default=None, multiple_of=8, ge=64, description="Default height for this model") guidance: float | None = Field(default=None, ge=1, description="Default Guidance for this model") + cpu_only: bool | None = Field(default=None, description="Whether this model should run on CPU only") model_config = ConfigDict(extra="forbid") From 0240c0484d259b1cf603ad63612f55d301f26fcc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 21 Jan 2026 04:09:42 +0000 Subject: [PATCH 2/5] Add execution device override support in model cache and loader Co-authored-by: lstein <111189+lstein@users.noreply.github.com> --- .../model_manager/load/load_default.py | 18 +++++++++++++++++ .../load/model_cache/model_cache.py | 20 ++++++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/invokeai/backend/model_manager/load/load_default.py b/invokeai/backend/model_manager/load/load_default.py index 3fb7a574f31..b4a77c24927 100644 --- a/invokeai/backend/model_manager/load/load_default.py +++ b/invokeai/backend/model_manager/load/load_default.py @@ -5,6 +5,8 @@ from pathlib import Path from typing import Optional +import torch + from invokeai.app.services.config import InvokeAIAppConfig from invokeai.backend.model_manager.configs.base import Diffusers_Config_Base from invokeai.backend.model_manager.configs.factory import AnyModelConfig @@ -66,6 +68,18 @@ def _get_model_path(self, config: AnyModelConfig) -> Path: model_base = self._app_config.models_path return (model_base / config.path).resolve() + def _get_execution_device(self, config: AnyModelConfig) -> Optional[torch.device]: + """Determine the execution device for a model based on its configuration. + + Returns: + torch.device("cpu") if the model should run on CPU only, None otherwise (use cache default). + """ + # Check if this is a main model with default settings that specify cpu_only + if hasattr(config, "default_settings") and config.default_settings is not None: + if hasattr(config.default_settings, "cpu_only") and config.default_settings.cpu_only is True: + return torch.device("cpu") + return None + def _load_and_cache(self, config: AnyModelConfig, submodel_type: Optional[SubModelType] = None) -> CacheRecord: stats_name = ":".join([config.base, config.type, config.name, (submodel_type or "")]) try: @@ -77,9 +91,13 @@ def _load_and_cache(self, config: AnyModelConfig, submodel_type: Optional[SubMod self._ram_cache.make_room(self.get_size_fs(config, Path(config.path), submodel_type)) loaded_model = self._load_model(config, submodel_type) + # Determine execution device from model config + execution_device = self._get_execution_device(config) + self._ram_cache.put( get_model_cache_key(config.key, submodel_type), model=loaded_model, + execution_device=execution_device, ) return self._ram_cache.get(key=get_model_cache_key(config.key, submodel_type), stats_name=stats_name) diff --git a/invokeai/backend/model_manager/load/model_cache/model_cache.py b/invokeai/backend/model_manager/load/model_cache/model_cache.py index fc48217e787..b66b50a4983 100644 --- a/invokeai/backend/model_manager/load/model_cache/model_cache.py +++ b/invokeai/backend/model_manager/load/model_cache/model_cache.py @@ -316,8 +316,15 @@ def shutdown(self) -> None: @synchronized @record_activity - def put(self, key: str, model: AnyModel) -> None: - """Add a model to the cache.""" + def put(self, key: str, model: AnyModel, execution_device: Optional[torch.device] = None) -> None: + """Add a model to the cache. + + Args: + key: Cache key for the model + model: The model to cache + execution_device: Optional device to use for this specific model. If None, uses the cache's default + execution_device. Use torch.device("cpu") to force a model to run on CPU. + """ if key in self._cached_models: self._logger.debug( f"Attempted to add model {key} ({model.__class__.__name__}), but it already exists in the cache. No action necessary." @@ -331,20 +338,23 @@ def put(self, key: str, model: AnyModel) -> None: if isinstance(model, torch.nn.Module): apply_custom_layers_to_model(model) + # Use the provided execution device, or fall back to the cache's default + effective_execution_device = execution_device if execution_device is not None else self._execution_device + # Partial loading only makes sense on CUDA. # - When running on CPU, there is no 'loading' to do. # - When running on MPS, memory is shared with the CPU, so the default OS memory management already handles this # well. - running_with_cuda = self._execution_device.type == "cuda" + running_with_cuda = effective_execution_device.type == "cuda" # Wrap model. if isinstance(model, torch.nn.Module) and running_with_cuda and self._enable_partial_loading: wrapped_model = CachedModelWithPartialLoad( - model, self._execution_device, keep_ram_copy=self._keep_ram_copy_of_weights + model, effective_execution_device, keep_ram_copy=self._keep_ram_copy_of_weights ) else: wrapped_model = CachedModelOnlyFullLoad( - model, self._execution_device, size, keep_ram_copy=self._keep_ram_copy_of_weights + model, effective_execution_device, size, keep_ram_copy=self._keep_ram_copy_of_weights ) cache_record = CacheRecord(key=key, cached_model=wrapped_model) From c0e7a3e3595ef35f1640d72e21c93e5865ac3e9d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 21 Jan 2026 04:12:52 +0000 Subject: [PATCH 3/5] Add frontend UI for CPU-only model execution toggle Co-authored-by: lstein <111189+lstein@users.noreply.github.com> --- invokeai/frontend/web/public/locales/en.json | 2 + .../hooks/useMainModelDefaultSettings.ts | 4 ++ .../DefaultCpuOnly.tsx | 54 +++++++++++++++++++ .../MainModelDefaultSettings.tsx | 4 ++ 4 files changed, 64 insertions(+) create mode 100644 invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/DefaultCpuOnly.tsx diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 5bdd7ba08ee..4b9f5458f34 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -906,6 +906,8 @@ "convertToDiffusersHelpText4": "This is a one time process only. It might take around 30s-60s depending on the specifications of your computer.", "convertToDiffusersHelpText5": "Please make sure you have enough disk space. Models generally vary between 2GB-7GB in size.", "convertToDiffusersHelpText6": "Do you wish to convert this model?", + "cpuOnly": "CPU Only", + "runOnCpu": "Run model on CPU only", "noDefaultSettings": "No default settings configured for this model. Visit the Model Manager to add default settings.", "defaultSettings": "Default Settings", "defaultSettingsSaved": "Default Settings Saved", diff --git a/invokeai/frontend/web/src/features/modelManagerV2/hooks/useMainModelDefaultSettings.ts b/invokeai/frontend/web/src/features/modelManagerV2/hooks/useMainModelDefaultSettings.ts index dfab2d251f9..1cb56416c3b 100644 --- a/invokeai/frontend/web/src/features/modelManagerV2/hooks/useMainModelDefaultSettings.ts +++ b/invokeai/frontend/web/src/features/modelManagerV2/hooks/useMainModelDefaultSettings.ts @@ -41,6 +41,10 @@ export const useMainModelDefaultSettings = (modelConfig: MainModelConfig) => { isEnabled: !isNil(modelConfig?.default_settings?.guidance), value: modelConfig?.default_settings?.guidance ?? 4, }, + cpuOnly: { + isEnabled: !isNil(modelConfig?.default_settings?.cpu_only), + value: modelConfig?.default_settings?.cpu_only ?? false, + }, }; }, [modelConfig]); diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/DefaultCpuOnly.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/DefaultCpuOnly.tsx new file mode 100644 index 00000000000..a84bbd18988 --- /dev/null +++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/DefaultCpuOnly.tsx @@ -0,0 +1,54 @@ +import { Flex, FormControl, FormLabel, Switch } from '@invoke-ai/ui-library'; +import { InformationalPopover } from 'common/components/InformationalPopover/InformationalPopover'; +import { SettingToggle } from 'features/modelManagerV2/subpanels/ModelPanel/SettingToggle'; +import { memo, useCallback, useMemo } from 'react'; +import type { ChangeEvent } from 'react'; +import type { UseControllerProps } from 'react-hook-form'; +import { useController } from 'react-hook-form'; +import { useTranslation } from 'react-i18next'; + +import type { MainModelDefaultSettingsFormData } from './MainModelDefaultSettings'; + +type DefaultCpuOnly = MainModelDefaultSettingsFormData['cpuOnly']; + +export const DefaultCpuOnly = memo((props: UseControllerProps) => { + const { field } = useController(props); + + const { t } = useTranslation(); + + const onChange = useCallback( + (e: ChangeEvent) => { + const updatedValue = { + ...(field.value as DefaultCpuOnly), + value: e.target.checked, + }; + field.onChange(updatedValue); + }, + [field] + ); + + const value = useMemo(() => { + return (field.value as DefaultCpuOnly).value; + }, [field.value]); + + const isDisabled = useMemo(() => { + return !(field.value as DefaultCpuOnly).isEnabled; + }, [field.value]); + + return ( + + + + {t('modelManager.cpuOnly')} + + + + + + {t('modelManager.runOnCpu')} + + + ); +}); + +DefaultCpuOnly.displayName = 'DefaultCpuOnly'; diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/MainModelDefaultSettings.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/MainModelDefaultSettings.tsx index 714d2a6b2a2..300b197f017 100644 --- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/MainModelDefaultSettings.tsx +++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/MainModelDefaultSettings.tsx @@ -17,6 +17,7 @@ import type { MainModelConfig } from 'services/api/types'; import { DefaultCfgRescaleMultiplier } from './DefaultCfgRescaleMultiplier'; import { DefaultCfgScale } from './DefaultCfgScale'; +import { DefaultCpuOnly } from './DefaultCpuOnly'; import { DefaultGuidance } from './DefaultGuidance'; import { DefaultScheduler } from './DefaultScheduler'; import { DefaultSteps } from './DefaultSteps'; @@ -38,6 +39,7 @@ export type MainModelDefaultSettingsFormData = { width: FormField; height: FormField; guidance: FormField; + cpuOnly: FormField; }; type Props = { @@ -79,6 +81,7 @@ export const MainModelDefaultSettings = memo(({ modelConfig }: Props) => { width: data.width.isEnabled ? data.width.value : null, height: data.height.isEnabled ? data.height.value : null, guidance: data.guidance.isEnabled ? data.guidance.value : null, + cpu_only: data.cpuOnly.isEnabled ? data.cpuOnly.value : null, }; updateModel({ @@ -133,6 +136,7 @@ export const MainModelDefaultSettings = memo(({ modelConfig }: Props) => { {!isFlux && } + ); From bb2797f0623f5efcb4e8bb57f578ced7cd73864f Mon Sep 17 00:00:00 2001 From: Lincoln Stein Date: Wed, 21 Jan 2026 00:22:59 -0500 Subject: [PATCH 4/5] chore(frontend) typegen --- invokeai/backend/model_manager/load/load_default.py | 2 +- .../backend/model_manager/load/model_cache/model_cache.py | 2 +- invokeai/frontend/web/src/services/api/schema.ts | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/invokeai/backend/model_manager/load/load_default.py b/invokeai/backend/model_manager/load/load_default.py index b4a77c24927..b10e02c10d5 100644 --- a/invokeai/backend/model_manager/load/load_default.py +++ b/invokeai/backend/model_manager/load/load_default.py @@ -70,7 +70,7 @@ def _get_model_path(self, config: AnyModelConfig) -> Path: def _get_execution_device(self, config: AnyModelConfig) -> Optional[torch.device]: """Determine the execution device for a model based on its configuration. - + Returns: torch.device("cpu") if the model should run on CPU only, None otherwise (use cache default). """ diff --git a/invokeai/backend/model_manager/load/model_cache/model_cache.py b/invokeai/backend/model_manager/load/model_cache/model_cache.py index b66b50a4983..ebb8e52ff6a 100644 --- a/invokeai/backend/model_manager/load/model_cache/model_cache.py +++ b/invokeai/backend/model_manager/load/model_cache/model_cache.py @@ -318,7 +318,7 @@ def shutdown(self) -> None: @record_activity def put(self, key: str, model: AnyModel, execution_device: Optional[torch.device] = None) -> None: """Add a model to the cache. - + Args: key: Cache key for the model model: The model to cache diff --git a/invokeai/frontend/web/src/services/api/schema.ts b/invokeai/frontend/web/src/services/api/schema.ts index 829c5d435cd..db84c5b7a43 100644 --- a/invokeai/frontend/web/src/services/api/schema.ts +++ b/invokeai/frontend/web/src/services/api/schema.ts @@ -15807,6 +15807,11 @@ export type components = { * @description Default Guidance for this model */ guidance?: number | null; + /** + * Cpu Only + * @description Whether this model should run on CPU only + */ + cpu_only?: boolean | null; }; /** * Main Model - SD1.5, SD2 From 7ca27167efc1f8e3321bb585b2cfd5fd90dc4270 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 21 Jan 2026 11:30:38 -0500 Subject: [PATCH 5/5] [Feature] CPU execution for text encoders with automatic device management (#47) * Initial plan * Fix TypeScript linting errors for cpu_only field Co-authored-by: lstein <111189+lstein@users.noreply.github.com> * chore(frontend) eslint * chore(frontend): prettier * Add missing popover translation for cpuOnly feature Co-authored-by: lstein <111189+lstein@users.noreply.github.com> * Improve cpuOnly popover help text based on code review Co-authored-by: lstein <111189+lstein@users.noreply.github.com> * Simplify CPU-only UI and add encoder support with device mismatch fix Co-authored-by: lstein <111189+lstein@users.noreply.github.com> * Limit CPU-only execution to text encoders and ensure conditioning is moved to CPU for storage Co-authored-by: lstein <111189+lstein@users.noreply.github.com> * Fix CPU-only execution to properly check model-specific compute device Co-authored-by: lstein <111189+lstein@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lstein <111189+lstein@users.noreply.github.com> Co-authored-by: Lincoln Stein --- .../app/invocations/cogview4_text_encoder.py | 4 +- invokeai/app/invocations/compel.py | 4 +- invokeai/app/invocations/flux_text_encoder.py | 6 + invokeai/app/invocations/sd3_text_encoder.py | 13 +- .../app/invocations/z_image_text_encoder.py | 6 +- .../model_manager/configs/qwen3_encoder.py | 3 + .../model_manager/configs/t5_encoder.py | 2 + .../model_manager/load/load_default.py | 22 +- .../cached_model_only_full_load.py | 5 + .../cached_model_with_partial_load.py | 5 + .../load/model_cache/model_cache.py | 13 +- invokeai/frontend/web/openapi.json | 5081 ++++++++++++--- invokeai/frontend/web/public/locales/en.json | 5782 +++++++++-------- .../InformationalPopover/constants.ts | 3 +- .../DefaultCpuOnly.tsx | 26 +- 15 files changed, 7148 insertions(+), 3827 deletions(-) diff --git a/invokeai/app/invocations/cogview4_text_encoder.py b/invokeai/app/invocations/cogview4_text_encoder.py index d7361549f7a..4b0331106b9 100644 --- a/invokeai/app/invocations/cogview4_text_encoder.py +++ b/invokeai/app/invocations/cogview4_text_encoder.py @@ -37,6 +37,8 @@ class CogView4TextEncoderInvocation(BaseInvocation): @torch.no_grad() def invoke(self, context: InvocationContext) -> CogView4ConditioningOutput: glm_embeds = self._glm_encode(context, max_seq_len=COGVIEW4_GLM_MAX_SEQ_LEN) + # Move embeddings to CPU for storage to save VRAM + glm_embeds = glm_embeds.detach().to("cpu") conditioning_data = ConditioningFieldData(conditionings=[CogView4ConditioningInfo(glm_embeds=glm_embeds)]) conditioning_name = context.conditioning.save(conditioning_data) return CogView4ConditioningOutput.build(conditioning_name) @@ -85,7 +87,7 @@ def _glm_encode(self, context: InvocationContext, max_seq_len: int) -> torch.Ten ) text_input_ids = torch.cat([pad_ids, text_input_ids], dim=1) prompt_embeds = glm_text_encoder( - text_input_ids.to(TorchDevice.choose_torch_device()), output_hidden_states=True + text_input_ids.to(glm_text_encoder.device), output_hidden_states=True ).hidden_states[-2] assert isinstance(prompt_embeds, torch.Tensor) diff --git a/invokeai/app/invocations/compel.py b/invokeai/app/invocations/compel.py index 3ad05bcc9b9..5ce88145ffd 100644 --- a/invokeai/app/invocations/compel.py +++ b/invokeai/app/invocations/compel.py @@ -103,7 +103,7 @@ def _lora_loader() -> Iterator[Tuple[ModelPatchRaw, float]]: textual_inversion_manager=ti_manager, dtype_for_device_getter=TorchDevice.choose_torch_dtype, truncate_long_prompts=False, - device=TorchDevice.choose_torch_device(), + device=text_encoder.device, # Use the device the model is actually on split_long_text_mode=SplitLongTextMode.SENTENCES, ) @@ -212,7 +212,7 @@ def _lora_loader() -> Iterator[Tuple[ModelPatchRaw, float]]: truncate_long_prompts=False, # TODO: returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED, # TODO: clip skip requires_pooled=get_pooled, - device=TorchDevice.choose_torch_device(), + device=text_encoder.device, # Use the device the model is actually on split_long_text_mode=SplitLongTextMode.SENTENCES, ) diff --git a/invokeai/app/invocations/flux_text_encoder.py b/invokeai/app/invocations/flux_text_encoder.py index c395a0bf22d..eea1e624df6 100644 --- a/invokeai/app/invocations/flux_text_encoder.py +++ b/invokeai/app/invocations/flux_text_encoder.py @@ -58,6 +58,12 @@ def invoke(self, context: InvocationContext) -> FluxConditioningOutput: # scoped. This ensures that the T5 model can be freed and gc'd before loading the CLIP model (if necessary). t5_embeddings = self._t5_encode(context) clip_embeddings = self._clip_encode(context) + + # Move embeddings to CPU for storage to save VRAM + # They will be moved to the appropriate device when used by the denoiser + t5_embeddings = t5_embeddings.detach().to("cpu") + clip_embeddings = clip_embeddings.detach().to("cpu") + conditioning_data = ConditioningFieldData( conditionings=[FLUXConditioningInfo(clip_embeds=clip_embeddings, t5_embeds=t5_embeddings)] ) diff --git a/invokeai/app/invocations/sd3_text_encoder.py b/invokeai/app/invocations/sd3_text_encoder.py index 230fdf0f602..99d3f058bf7 100644 --- a/invokeai/app/invocations/sd3_text_encoder.py +++ b/invokeai/app/invocations/sd3_text_encoder.py @@ -69,6 +69,15 @@ def invoke(self, context: InvocationContext) -> SD3ConditioningOutput: if self.t5_encoder is not None: t5_embeddings = self._t5_encode(context, SD3_T5_MAX_SEQ_LEN) + # Move all embeddings to CPU for storage to save VRAM + # They will be moved to the appropriate device when used by the denoiser + clip_l_embeddings = clip_l_embeddings.detach().to("cpu") + clip_l_pooled_embeddings = clip_l_pooled_embeddings.detach().to("cpu") + clip_g_embeddings = clip_g_embeddings.detach().to("cpu") + clip_g_pooled_embeddings = clip_g_pooled_embeddings.detach().to("cpu") + if t5_embeddings is not None: + t5_embeddings = t5_embeddings.detach().to("cpu") + conditioning_data = ConditioningFieldData( conditionings=[ SD3ConditioningInfo( @@ -117,7 +126,7 @@ def _t5_encode(self, context: InvocationContext, max_seq_len: int) -> torch.Tens f" {max_seq_len} tokens: {removed_text}" ) - prompt_embeds = t5_text_encoder(text_input_ids.to(TorchDevice.choose_torch_device()))[0] + prompt_embeds = t5_text_encoder(text_input_ids.to(t5_text_encoder.device))[0] assert isinstance(prompt_embeds, torch.Tensor) return prompt_embeds @@ -180,7 +189,7 @@ def _clip_encode( f" {tokenizer_max_length} tokens: {removed_text}" ) prompt_embeds = clip_text_encoder( - input_ids=text_input_ids.to(TorchDevice.choose_torch_device()), output_hidden_states=True + input_ids=text_input_ids.to(clip_text_encoder.device), output_hidden_states=True ) pooled_prompt_embeds = prompt_embeds[0] prompt_embeds = prompt_embeds.hidden_states[-2] diff --git a/invokeai/app/invocations/z_image_text_encoder.py b/invokeai/app/invocations/z_image_text_encoder.py index cc6e947fba3..06718c4897f 100644 --- a/invokeai/app/invocations/z_image_text_encoder.py +++ b/invokeai/app/invocations/z_image_text_encoder.py @@ -57,6 +57,8 @@ class ZImageTextEncoderInvocation(BaseInvocation): @torch.no_grad() def invoke(self, context: InvocationContext) -> ZImageConditioningOutput: prompt_embeds = self._encode_prompt(context, max_seq_len=Z_IMAGE_MAX_SEQ_LEN) + # Move embeddings to CPU for storage to save VRAM + prompt_embeds = prompt_embeds.detach().to("cpu") conditioning_data = ConditioningFieldData(conditionings=[ZImageConditioningInfo(prompt_embeds=prompt_embeds)]) conditioning_name = context.conditioning.save(conditioning_data) return ZImageConditioningOutput( @@ -69,7 +71,6 @@ def _encode_prompt(self, context: InvocationContext, max_seq_len: int) -> torch. Based on the ZImagePipeline._encode_prompt method from diffusers. """ prompt = self.prompt - device = TorchDevice.choose_torch_device() text_encoder_info = context.models.load(self.qwen3_encoder.text_encoder) tokenizer_info = context.models.load(self.qwen3_encoder.tokenizer) @@ -78,6 +79,9 @@ def _encode_prompt(self, context: InvocationContext, max_seq_len: int) -> torch. (_, text_encoder) = exit_stack.enter_context(text_encoder_info.model_on_device()) (_, tokenizer) = exit_stack.enter_context(tokenizer_info.model_on_device()) + # Use the device that the text_encoder is actually on + device = text_encoder.device + # Apply LoRA models to the text encoder lora_dtype = TorchDevice.choose_bfloat16_safe_dtype(device) exit_stack.enter_context( diff --git a/invokeai/backend/model_manager/configs/qwen3_encoder.py b/invokeai/backend/model_manager/configs/qwen3_encoder.py index 4d78795b7d9..3954d4c139f 100644 --- a/invokeai/backend/model_manager/configs/qwen3_encoder.py +++ b/invokeai/backend/model_manager/configs/qwen3_encoder.py @@ -51,6 +51,7 @@ class Qwen3Encoder_Checkpoint_Config(Checkpoint_Config_Base, Config_Base): base: Literal[BaseModelType.Any] = Field(default=BaseModelType.Any) type: Literal[ModelType.Qwen3Encoder] = Field(default=ModelType.Qwen3Encoder) format: Literal[ModelFormat.Checkpoint] = Field(default=ModelFormat.Checkpoint) + cpu_only: bool | None = Field(default=None, description="Whether this model should run on CPU only") @classmethod def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: @@ -87,6 +88,7 @@ class Qwen3Encoder_Qwen3Encoder_Config(Config_Base): base: Literal[BaseModelType.Any] = Field(default=BaseModelType.Any) type: Literal[ModelType.Qwen3Encoder] = Field(default=ModelType.Qwen3Encoder) format: Literal[ModelFormat.Qwen3Encoder] = Field(default=ModelFormat.Qwen3Encoder) + cpu_only: bool | None = Field(default=None, description="Whether this model should run on CPU only") @classmethod def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: @@ -130,6 +132,7 @@ class Qwen3Encoder_GGUF_Config(Checkpoint_Config_Base, Config_Base): base: Literal[BaseModelType.Any] = Field(default=BaseModelType.Any) type: Literal[ModelType.Qwen3Encoder] = Field(default=ModelType.Qwen3Encoder) format: Literal[ModelFormat.GGUFQuantized] = Field(default=ModelFormat.GGUFQuantized) + cpu_only: bool | None = Field(default=None, description="Whether this model should run on CPU only") @classmethod def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: diff --git a/invokeai/backend/model_manager/configs/t5_encoder.py b/invokeai/backend/model_manager/configs/t5_encoder.py index ed682e14304..2da417b10a5 100644 --- a/invokeai/backend/model_manager/configs/t5_encoder.py +++ b/invokeai/backend/model_manager/configs/t5_encoder.py @@ -21,6 +21,7 @@ class T5Encoder_T5Encoder_Config(Config_Base): base: Literal[BaseModelType.Any] = Field(default=BaseModelType.Any) type: Literal[ModelType.T5Encoder] = Field(default=ModelType.T5Encoder) format: Literal[ModelFormat.T5Encoder] = Field(default=ModelFormat.T5Encoder) + cpu_only: bool | None = Field(default=None, description="Whether this model should run on CPU only") @classmethod def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: @@ -50,6 +51,7 @@ class T5Encoder_BnBLLMint8_Config(Config_Base): base: Literal[BaseModelType.Any] = Field(default=BaseModelType.Any) type: Literal[ModelType.T5Encoder] = Field(default=ModelType.T5Encoder) format: Literal[ModelFormat.BnbQuantizedLlmInt8b] = Field(default=ModelFormat.BnbQuantizedLlmInt8b) + cpu_only: bool | None = Field(default=None, description="Whether this model should run on CPU only") @classmethod def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: diff --git a/invokeai/backend/model_manager/load/load_default.py b/invokeai/backend/model_manager/load/load_default.py index b10e02c10d5..6f858a2f280 100644 --- a/invokeai/backend/model_manager/load/load_default.py +++ b/invokeai/backend/model_manager/load/load_default.py @@ -68,16 +68,26 @@ def _get_model_path(self, config: AnyModelConfig) -> Path: model_base = self._app_config.models_path return (model_base / config.path).resolve() - def _get_execution_device(self, config: AnyModelConfig) -> Optional[torch.device]: + def _get_execution_device(self, config: AnyModelConfig, submodel_type: Optional[SubModelType] = None) -> Optional[torch.device]: """Determine the execution device for a model based on its configuration. - + + CPU-only execution is only applied to text encoder submodels to save VRAM while keeping + the denoiser on GPU for performance. Conditioning tensors are moved to GPU after encoding. + Returns: torch.device("cpu") if the model should run on CPU only, None otherwise (use cache default). """ - # Check if this is a main model with default settings that specify cpu_only + # Check if this is a text encoder submodel of a main model with cpu_only setting if hasattr(config, "default_settings") and config.default_settings is not None: if hasattr(config.default_settings, "cpu_only") and config.default_settings.cpu_only is True: - return torch.device("cpu") + # Only apply CPU execution to text encoder submodels + if submodel_type in [SubModelType.TextEncoder, SubModelType.TextEncoder2, SubModelType.TextEncoder3]: + return torch.device("cpu") + + # Check if this is a standalone text encoder config with cpu_only field (T5Encoder, Qwen3Encoder, etc.) + if hasattr(config, "cpu_only") and config.cpu_only is True: + return torch.device("cpu") + return None def _load_and_cache(self, config: AnyModelConfig, submodel_type: Optional[SubModelType] = None) -> CacheRecord: @@ -91,8 +101,8 @@ def _load_and_cache(self, config: AnyModelConfig, submodel_type: Optional[SubMod self._ram_cache.make_room(self.get_size_fs(config, Path(config.path), submodel_type)) loaded_model = self._load_model(config, submodel_type) - # Determine execution device from model config - execution_device = self._get_execution_device(config) + # Determine execution device from model config, considering submodel type + execution_device = self._get_execution_device(config, submodel_type) self._ram_cache.put( get_model_cache_key(config.key, submodel_type), diff --git a/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_only_full_load.py b/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_only_full_load.py index e9cf889daad..bb04edef9b5 100644 --- a/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_only_full_load.py +++ b/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_only_full_load.py @@ -60,6 +60,11 @@ def is_in_vram(self) -> bool: """Return true if the model is currently in VRAM.""" return self._is_in_vram + @property + def compute_device(self) -> torch.device: + """Return the compute device for this model.""" + return self._compute_device + def full_load_to_vram(self) -> int: """Load all weights into VRAM (if supported by the model). Returns: diff --git a/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_with_partial_load.py b/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_with_partial_load.py index 004943c0174..f80b017ba7b 100644 --- a/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_with_partial_load.py +++ b/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_with_partial_load.py @@ -136,6 +136,11 @@ def cur_vram_bytes(self) -> int: ) return self._cur_vram_bytes + @property + def compute_device(self) -> torch.device: + """Return the compute device for this model.""" + return self._compute_device + def full_load_to_vram(self) -> int: """Load all weights into VRAM.""" return self.partial_load_to_vram(self.total_bytes()) diff --git a/invokeai/backend/model_manager/load/model_cache/model_cache.py b/invokeai/backend/model_manager/load/model_cache/model_cache.py index ebb8e52ff6a..e604d76c9de 100644 --- a/invokeai/backend/model_manager/load/model_cache/model_cache.py +++ b/invokeai/backend/model_manager/load/model_cache/model_cache.py @@ -438,8 +438,13 @@ def lock(self, cache_entry: CacheRecord, working_mem_bytes: Optional[int]) -> No f"Locking model {cache_entry.key} (Type: {cache_entry.cached_model.model.__class__.__name__})" ) - if self._execution_device.type == "cpu": - # Models don't need to be loaded into VRAM if we're running on CPU. + # Check if the model's specific compute_device is CPU, not just the cache's default execution_device + model_compute_device = cache_entry.cached_model.compute_device + if model_compute_device.type == "cpu": + # Models configured for CPU execution don't need to be loaded into VRAM + self._logger.debug( + f"Model {cache_entry.key} is configured for CPU execution, skipping VRAM load" + ) return try: @@ -521,9 +526,11 @@ def _load_locked_model(self, cache_entry: CacheRecord, working_mem_bytes: Option model_cur_vram_bytes = cache_entry.cached_model.cur_vram_bytes() vram_available = self._get_vram_available(working_mem_bytes) loaded_percent = model_cur_vram_bytes / model_total_bytes if model_total_bytes > 0 else 0 + # Use the model's actual compute_device for logging, not the cache's default + model_device = cache_entry.cached_model.compute_device self._logger.info( f"Loaded model '{cache_entry.key}' ({cache_entry.cached_model.model.__class__.__name__}) onto " - f"{self._execution_device.type} device in {(time.time() - start_time):.2f}s. " + f"{model_device.type} device in {(time.time() - start_time):.2f}s. " f"Total model size: {model_total_bytes / MB:.2f}MB, " f"VRAM: {model_cur_vram_bytes / MB:.2f}MB ({loaded_percent:.1%})" ) diff --git a/invokeai/frontend/web/openapi.json b/invokeai/frontend/web/openapi.json index 1be662f85e8..d6ed5fa7149 100644 --- a/invokeai/frontend/web/openapi.json +++ b/invokeai/frontend/web/openapi.json @@ -8,7 +8,9 @@ "paths": { "/api/v1/utilities/dynamicprompts": { "post": { - "tags": ["utilities"], + "tags": [ + "utilities" + ], "summary": "Parse Dynamicprompts", "description": "Creates a batch process", "operationId": "parse_dynamicprompts", @@ -48,7 +50,9 @@ }, "/api/v2/models/": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "List Model Records", "description": "Get a list of models.", "operationId": "list_model_records", @@ -155,7 +159,9 @@ }, "/api/v2/models/get_by_attrs": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Get Model Records By Attrs", "description": "Gets a model by its attributes. The main use of this route is to provide backwards compatibility with the old\nmodel manager, which identified models by a combination of name, base and type.", "operationId": "get_model_records_by_attrs", @@ -424,7 +430,9 @@ }, "/api/v2/models/i/{key}": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Get Model Record", "description": "Get a model record", "operationId": "get_model_record", @@ -695,7 +703,9 @@ } }, "patch": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Update Model Record", "description": "Update a model's config.", "operationId": "update_model_record", @@ -992,7 +1002,9 @@ } }, "delete": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Delete Model", "description": "Delete model record from database.\n\nThe configuration record will be removed. The corresponding weights files will be\ndeleted as well if they reside within the InvokeAI \"models\" directory.", "operationId": "delete_model", @@ -1031,7 +1043,9 @@ }, "/api/v2/models/i/{key}/reidentify": { "post": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Reidentify Model", "description": "Attempt to reidentify a model by re-probing its weights file.", "operationId": "reidentify_model", @@ -1304,7 +1318,9 @@ }, "/api/v2/models/scan_folder": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Scan For Models", "operationId": "scan_for_models", "parameters": [ @@ -1353,7 +1369,9 @@ }, "/api/v2/models/hugging_face": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Get Hugging Face Models", "operationId": "get_hugging_face_models", "parameters": [ @@ -1398,7 +1416,9 @@ }, "/api/v2/models/i/{key}/image": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Get Model Image", "description": "Gets an image file that previews the model", "operationId": "get_model_image", @@ -1443,7 +1463,9 @@ } }, "patch": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Update Model Image", "operationId": "update_model_image", "parameters": [ @@ -1494,7 +1516,9 @@ } }, "delete": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Delete Model Image", "operationId": "delete_model_image", "parameters": [ @@ -1532,7 +1556,9 @@ }, "/api/v2/models/install": { "post": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Install Model", "description": "Install a model using a string identifier.\n\n`source` can be any of the following.\n\n1. A path on the local filesystem ('C:\\users\\fred\\model.safetensors')\n2. A Url pointing to a single downloadable model file\n3. A HuggingFace repo_id with any of the following formats:\n - model/name\n - model/name:fp16:vae\n - model/name::vae -- use default precision\n - model/name:fp16:path/to/model.safetensors\n - model/name::path/to/model.safetensors\n\n`config` is a ModelRecordChanges object. Fields in this object will override\nthe ones that are probed automatically. Pass an empty object to accept\nall the defaults.\n\n`access_token` is an optional access token for use with Urls that require\nauthentication.\n\nModels will be downloaded, probed, configured and installed in a\nseries of background threads. The return object has `status` attribute\nthat can be used to monitor progress.\n\nSee the documentation for `import_model_record` for more information on\ninterpreting the job information returned by this route.", "operationId": "install_model", @@ -1636,7 +1662,9 @@ } }, "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "List Model Installs", "description": "Return the list of model install jobs.\n\nInstall jobs have a numeric `id`, a `status`, and other fields that provide information on\nthe nature of the job and its progress. The `status` is one of:\n\n* \"waiting\" -- Job is waiting in the queue to run\n* \"downloading\" -- Model file(s) are downloading\n* \"running\" -- Model has downloaded and the model probing and registration process is running\n* \"completed\" -- Installation completed successfully\n* \"error\" -- An error occurred. Details will be in the \"error_type\" and \"error\" fields.\n* \"cancelled\" -- Job was cancelled before completion.\n\nOnce completed, information about the model such as its size, base\nmodel and type can be retrieved from the `config_out` field. For multi-file models such as diffusers,\ninformation on individual files can be retrieved from `download_parts`.\n\nSee the example and schema below for more information.", "operationId": "list_model_installs", @@ -1658,7 +1686,9 @@ } }, "delete": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Prune Model Install Jobs", "description": "Prune all completed and errored jobs from the install job list.", "operationId": "prune_model_install_jobs", @@ -1682,7 +1712,9 @@ }, "/api/v2/models/install/huggingface": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Install Hugging Face Model", "description": "Install a Hugging Face model using a string identifier.", "operationId": "install_hugging_face_model", @@ -1731,7 +1763,9 @@ }, "/api/v2/models/install/{id}": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Get Model Install Job", "description": "Return model install job corresponding to the given source. See the documentation for 'List Model Install Jobs'\nfor information on the format of the return value.", "operationId": "get_model_install_job", @@ -1775,7 +1809,9 @@ } }, "delete": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Cancel Model Install Job", "description": "Cancel the model install job(s) corresponding to the given job ID.", "operationId": "cancel_model_install_job", @@ -1819,7 +1855,9 @@ }, "/api/v2/models/convert/{key}": { "put": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Convert Model", "description": "Permanently convert a model into diffusers format, replacing the safetensors version.\nNote that during the conversion process the key and model hash will change.\nThe return value is the model configuration for the converted model.", "operationId": "convert_model", @@ -2095,7 +2133,9 @@ }, "/api/v2/models/starter_models": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Get Starter Models", "operationId": "get_starter_models", "responses": { @@ -2114,7 +2154,9 @@ }, "/api/v2/models/stats": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Get model manager RAM cache performance statistics.", "description": "Return performance statistics on the model manager's RAM cache. Will return null if no models have been loaded.", "operationId": "get_stats", @@ -2142,7 +2184,9 @@ }, "/api/v2/models/empty_model_cache": { "post": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Empty Model Cache", "description": "Drop all models from the model cache to free RAM/VRAM. 'Locked' models that are in active use will not be dropped.", "operationId": "empty_model_cache", @@ -2160,7 +2204,9 @@ }, "/api/v2/models/hf_login": { "get": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Get Hf Login Status", "operationId": "get_hf_login_status", "responses": { @@ -2177,7 +2223,9 @@ } }, "post": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Do Hf Login", "operationId": "do_hf_login", "requestBody": { @@ -2214,7 +2262,9 @@ } }, "delete": { - "tags": ["model_manager"], + "tags": [ + "model_manager" + ], "summary": "Reset Hf Token", "operationId": "reset_hf_token", "responses": { @@ -2233,7 +2283,9 @@ }, "/api/v1/download_queue/": { "get": { - "tags": ["download_queue"], + "tags": [ + "download_queue" + ], "summary": "List Downloads", "description": "Get a list of active and inactive jobs.", "operationId": "list_downloads", @@ -2255,7 +2307,9 @@ } }, "patch": { - "tags": ["download_queue"], + "tags": [ + "download_queue" + ], "summary": "Prune Downloads", "description": "Prune completed and errored jobs.", "operationId": "prune_downloads", @@ -2279,7 +2333,9 @@ }, "/api/v1/download_queue/i/": { "post": { - "tags": ["download_queue"], + "tags": [ + "download_queue" + ], "summary": "Download", "description": "Download the source URL to the file or directory indicted in dest.", "operationId": "download", @@ -2319,7 +2375,9 @@ }, "/api/v1/download_queue/i/{id}": { "get": { - "tags": ["download_queue"], + "tags": [ + "download_queue" + ], "summary": "Get Download Job", "description": "Get a download job using its ID.", "operationId": "get_download_job", @@ -2363,7 +2421,9 @@ } }, "delete": { - "tags": ["download_queue"], + "tags": [ + "download_queue" + ], "summary": "Cancel Download Job", "description": "Cancel a download job using its ID.", "operationId": "cancel_download_job", @@ -2410,7 +2470,9 @@ }, "/api/v1/download_queue/i": { "delete": { - "tags": ["download_queue"], + "tags": [ + "download_queue" + ], "summary": "Cancel All Download Jobs", "description": "Cancel all download jobs.", "operationId": "cancel_all_download_jobs", @@ -2431,7 +2493,9 @@ }, "/api/v1/images/upload": { "post": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Upload Image", "description": "Uploads an image", "operationId": "upload_image", @@ -2552,7 +2616,9 @@ }, "/api/v1/images/": { "post": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Create Image Upload Entry", "description": "Uploads an image from a URL, not implemented", "operationId": "create_image_upload_entry", @@ -2590,7 +2656,9 @@ } }, "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "List Image Dtos", "description": "Gets a list of image DTOs", "operationId": "list_image_dtos", @@ -2762,7 +2830,9 @@ }, "/api/v1/images/i/{image_name}": { "delete": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Delete Image", "description": "Deletes an image", "operationId": "delete_image", @@ -2803,7 +2873,9 @@ } }, "patch": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Update Image", "description": "Updates an image", "operationId": "update_image", @@ -2855,7 +2927,9 @@ } }, "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Image Dto", "description": "Gets an image's DTO", "operationId": "get_image_dto", @@ -2898,7 +2972,9 @@ }, "/api/v1/images/intermediates": { "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Intermediates Count", "description": "Gets the count of intermediate images", "operationId": "get_intermediates_count", @@ -2917,7 +2993,9 @@ } }, "delete": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Clear Intermediates", "description": "Clears all intermediates", "operationId": "clear_intermediates", @@ -2938,7 +3016,9 @@ }, "/api/v1/images/i/{image_name}/metadata": { "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Image Metadata", "description": "Gets an image's metadata", "operationId": "get_image_metadata", @@ -2989,7 +3069,9 @@ }, "/api/v1/images/i/{image_name}/workflow": { "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Image Workflow", "operationId": "get_image_workflow", "parameters": [ @@ -3031,7 +3113,9 @@ }, "/api/v1/images/i/{image_name}/full": { "head": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Image Full", "description": "Gets a full-resolution image file", "operationId": "get_image_full_head", @@ -3071,7 +3155,9 @@ } }, "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Image Full", "description": "Gets a full-resolution image file", "operationId": "get_image_full", @@ -3113,7 +3199,9 @@ }, "/api/v1/images/i/{image_name}/thumbnail": { "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Image Thumbnail", "description": "Gets a thumbnail image file", "operationId": "get_image_thumbnail", @@ -3155,7 +3243,9 @@ }, "/api/v1/images/i/{image_name}/urls": { "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Image Urls", "description": "Gets an image and thumbnail URL", "operationId": "get_image_urls", @@ -3198,7 +3288,9 @@ }, "/api/v1/images/delete": { "post": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Delete Images From List", "operationId": "delete_images_from_list", "requestBody": { @@ -3237,7 +3329,9 @@ }, "/api/v1/images/uncategorized": { "delete": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Delete Uncategorized Images", "description": "Deletes all images that are uncategorized", "operationId": "delete_uncategorized_images", @@ -3257,7 +3351,9 @@ }, "/api/v1/images/star": { "post": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Star Images In List", "operationId": "star_images_in_list", "requestBody": { @@ -3296,7 +3392,9 @@ }, "/api/v1/images/unstar": { "post": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Unstar Images In List", "operationId": "unstar_images_in_list", "requestBody": { @@ -3335,7 +3433,9 @@ }, "/api/v1/images/download": { "post": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Download Images From List", "operationId": "download_images_from_list", "requestBody": { @@ -3373,7 +3473,9 @@ }, "/api/v1/images/download/{bulk_download_item_name}": { "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Bulk Download Item", "description": "Gets a bulk download zip file", "operationId": "get_bulk_download_item", @@ -3415,7 +3517,9 @@ }, "/api/v1/images/names": { "get": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Image Names", "description": "Gets ordered list of image names with metadata for optimistic updates", "operationId": "get_image_names", @@ -3563,7 +3667,9 @@ }, "/api/v1/images/images_by_names": { "post": { - "tags": ["images"], + "tags": [ + "images" + ], "summary": "Get Images By Names", "description": "Gets image DTOs for the specified image names. Maintains order of input names.", "operationId": "get_images_by_names", @@ -3607,7 +3713,9 @@ }, "/api/v1/boards/": { "post": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "Create Board", "description": "Creates a board", "operationId": "create_board", @@ -3649,7 +3757,9 @@ } }, "get": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "List Boards", "description": "Gets a list of boards", "operationId": "list_boards", @@ -3780,7 +3890,9 @@ }, "/api/v1/boards/{board_id}": { "get": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "Get Board", "description": "Gets a board", "operationId": "get_board", @@ -3821,7 +3933,9 @@ } }, "patch": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "Update Board", "description": "Updates a board", "operationId": "update_board", @@ -3873,7 +3987,9 @@ } }, "delete": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "Delete Board", "description": "Deletes a board", "operationId": "delete_board", @@ -3935,7 +4051,9 @@ }, "/api/v1/boards/{board_id}/image_names": { "get": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "List All Board Image Names", "description": "Gets a list of images for a board", "operationId": "list_all_board_image_names", @@ -4021,7 +4139,9 @@ }, "/api/v1/board_images/": { "post": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "Add Image To Board", "description": "Creates a board_image", "operationId": "add_image_to_board", @@ -4059,7 +4179,9 @@ } }, "delete": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "Remove Image From Board", "description": "Removes an image from its board, if it had one", "operationId": "remove_image_from_board", @@ -4099,7 +4221,9 @@ }, "/api/v1/board_images/batch": { "post": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "Add Images To Board", "description": "Adds a list of images to a board", "operationId": "add_images_to_board", @@ -4139,7 +4263,9 @@ }, "/api/v1/board_images/batch/delete": { "post": { - "tags": ["boards"], + "tags": [ + "boards" + ], "summary": "Remove Images From Board", "description": "Removes a list of images from their board, if they had one", "operationId": "remove_images_from_board", @@ -4179,7 +4305,9 @@ }, "/api/v1/model_relationships/i/{model_key}": { "get": { - "tags": ["model_relationships"], + "tags": [ + "model_relationships" + ], "summary": "Get Related Models", "description": "Get a list of model keys related to a given model.", "operationId": "get_related_models", @@ -4227,7 +4355,9 @@ }, "/api/v1/model_relationships/": { "post": { - "tags": ["model_relationships"], + "tags": [ + "model_relationships" + ], "summary": "Add Model Relationship", "description": "Creates a **bidirectional** relationship between two models, allowing each to reference the other as related.", "operationId": "add_model_relationship_api_v1_model_relationships__post", @@ -4261,7 +4391,9 @@ } }, "delete": { - "tags": ["model_relationships"], + "tags": [ + "model_relationships" + ], "summary": "Remove Model Relationship", "description": "Removes a **bidirectional** relationship between two models. The relationship must already exist.", "operationId": "remove_model_relationship_api_v1_model_relationships__delete", @@ -4297,7 +4429,9 @@ }, "/api/v1/model_relationships/batch": { "post": { - "tags": ["model_relationships"], + "tags": [ + "model_relationships" + ], "summary": "Get Related Model Keys (Batch)", "description": "Retrieves all **unique related model keys** for a list of given models. This is useful for contextual suggestions or filtering.", "operationId": "get_related_models_batch", @@ -4347,7 +4481,9 @@ }, "/api/v1/app/version": { "get": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Get Version", "operationId": "app_version", "responses": { @@ -4366,7 +4502,9 @@ }, "/api/v1/app/app_deps": { "get": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Get App Deps", "operationId": "get_app_deps", "responses": { @@ -4389,7 +4527,9 @@ }, "/api/v1/app/patchmatch_status": { "get": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Get Patchmatch Status", "operationId": "get_patchmatch_status", "responses": { @@ -4409,7 +4549,9 @@ }, "/api/v1/app/runtime_config": { "get": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Get Runtime Config", "operationId": "get_runtime_config", "responses": { @@ -4428,7 +4570,9 @@ }, "/api/v1/app/logging": { "get": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Get Log Level", "description": "Returns the log level", "operationId": "get_log_level", @@ -4446,7 +4590,9 @@ } }, "post": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Set Log Level", "description": "Sets the log verbosity level", "operationId": "set_log_level", @@ -4487,7 +4633,9 @@ }, "/api/v1/app/invocation_cache": { "delete": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Clear Invocation Cache", "description": "Clears the invocation cache", "operationId": "clear_invocation_cache", @@ -4505,7 +4653,9 @@ }, "/api/v1/app/invocation_cache/enable": { "put": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Enable Invocation Cache", "description": "Clears the invocation cache", "operationId": "enable_invocation_cache", @@ -4523,7 +4673,9 @@ }, "/api/v1/app/invocation_cache/disable": { "put": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Disable Invocation Cache", "description": "Clears the invocation cache", "operationId": "disable_invocation_cache", @@ -4541,7 +4693,9 @@ }, "/api/v1/app/invocation_cache/status": { "get": { - "tags": ["app"], + "tags": [ + "app" + ], "summary": "Get Invocation Cache Status", "description": "Clears the invocation cache", "operationId": "get_invocation_cache_status", @@ -4561,7 +4715,9 @@ }, "/api/v1/queue/{queue_id}/enqueue_batch": { "post": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Enqueue Batch", "description": "Processes a batch and enqueues the output graphs for execution.", "operationId": "enqueue_batch", @@ -4624,7 +4780,9 @@ }, "/api/v1/queue/{queue_id}/list_all": { "get": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "List All Queue Items", "description": "Gets all queue items", "operationId": "list_all_queue_items", @@ -4689,7 +4847,9 @@ }, "/api/v1/queue/{queue_id}/item_ids": { "get": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Get Queue Item Ids", "description": "Gets all queue item ids that match the given parameters", "operationId": "get_queue_item_ids", @@ -4743,7 +4903,9 @@ }, "/api/v1/queue/{queue_id}/items_by_ids": { "post": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Get Queue Items By Item Ids", "description": "Gets queue items for the specified queue item ids. Maintains order of item ids.", "operationId": "get_queue_items_by_item_ids", @@ -4800,7 +4962,9 @@ }, "/api/v1/queue/{queue_id}/processor/resume": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Resume", "description": "Resumes session processor", "operationId": "resume", @@ -4843,7 +5007,9 @@ }, "/api/v1/queue/{queue_id}/processor/pause": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Pause", "description": "Pauses session processor", "operationId": "pause", @@ -4886,7 +5052,9 @@ }, "/api/v1/queue/{queue_id}/cancel_all_except_current": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Cancel All Except Current", "description": "Immediately cancels all queue items except in-processing items", "operationId": "cancel_all_except_current", @@ -4929,7 +5097,9 @@ }, "/api/v1/queue/{queue_id}/delete_all_except_current": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Delete All Except Current", "description": "Immediately deletes all queue items except in-processing items", "operationId": "delete_all_except_current", @@ -4972,7 +5142,9 @@ }, "/api/v1/queue/{queue_id}/cancel_by_batch_ids": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Cancel By Batch Ids", "description": "Immediately cancels all queue items from the given batch ids", "operationId": "cancel_by_batch_ids", @@ -5025,7 +5197,9 @@ }, "/api/v1/queue/{queue_id}/cancel_by_destination": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Cancel By Destination", "description": "Immediately cancels all queue items with the given origin", "operationId": "cancel_by_destination", @@ -5079,7 +5253,9 @@ }, "/api/v1/queue/{queue_id}/retry_items_by_id": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Retry Items By Id", "description": "Immediately cancels all queue items with the given origin", "operationId": "retry_items_by_id", @@ -5137,7 +5313,9 @@ }, "/api/v1/queue/{queue_id}/clear": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Clear", "description": "Clears the queue entirely, immediately canceling the currently-executing session", "operationId": "clear", @@ -5180,7 +5358,9 @@ }, "/api/v1/queue/{queue_id}/prune": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Prune", "description": "Prunes all completed or errored queue items", "operationId": "prune", @@ -5223,7 +5403,9 @@ }, "/api/v1/queue/{queue_id}/current": { "get": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Get Current Queue Item", "description": "Gets the currently execution queue item", "operationId": "get_current_queue_item", @@ -5280,7 +5462,9 @@ }, "/api/v1/queue/{queue_id}/next": { "get": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Get Next Queue Item", "description": "Gets the next queue item, without executing it", "operationId": "get_next_queue_item", @@ -5337,7 +5521,9 @@ }, "/api/v1/queue/{queue_id}/status": { "get": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Get Queue Status", "description": "Gets the status of the session queue", "operationId": "get_queue_status", @@ -5380,7 +5566,9 @@ }, "/api/v1/queue/{queue_id}/b/{batch_id}/status": { "get": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Get Batch Status", "description": "Gets the status of the session queue", "operationId": "get_batch_status", @@ -5434,7 +5622,9 @@ }, "/api/v1/queue/{queue_id}/i/{item_id}": { "get": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Get Queue Item", "description": "Gets a queue item", "operationId": "get_queue_item", @@ -5486,7 +5676,9 @@ } }, "delete": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Delete Queue Item", "description": "Deletes a queue item", "operationId": "delete_queue_item", @@ -5538,7 +5730,9 @@ }, "/api/v1/queue/{queue_id}/i/{item_id}/cancel": { "put": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Cancel Queue Item", "description": "Deletes a queue item", "operationId": "cancel_queue_item", @@ -5592,7 +5786,9 @@ }, "/api/v1/queue/{queue_id}/counts_by_destination": { "get": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Counts By Destination", "description": "Gets the counts of queue items by destination", "operationId": "counts_by_destination", @@ -5646,7 +5842,9 @@ }, "/api/v1/queue/{queue_id}/d/{destination}": { "delete": { - "tags": ["queue"], + "tags": [ + "queue" + ], "summary": "Delete By Destination", "description": "Deletes all items with the given destination", "operationId": "delete_by_destination", @@ -5700,7 +5898,9 @@ }, "/api/v1/workflows/i/{workflow_id}": { "get": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Get Workflow", "description": "Gets a workflow", "operationId": "get_workflow", @@ -5741,7 +5941,9 @@ } }, "patch": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Update Workflow", "description": "Updates a workflow", "operationId": "update_workflow", @@ -5779,7 +5981,9 @@ } }, "delete": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Delete Workflow", "description": "Deletes a workflow", "operationId": "delete_workflow", @@ -5820,7 +6024,9 @@ }, "/api/v1/workflows/": { "post": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Create Workflow", "description": "Creates a workflow", "operationId": "create_workflow", @@ -5858,7 +6064,9 @@ } }, "get": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "List Workflows", "description": "Gets a page of workflows", "operationId": "list_workflows", @@ -6020,7 +6228,9 @@ }, "/api/v1/workflows/i/{workflow_id}/thumbnail": { "put": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Set Workflow Thumbnail", "description": "Sets a workflow's thumbnail image", "operationId": "set_workflow_thumbnail", @@ -6071,7 +6281,9 @@ } }, "delete": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Delete Workflow Thumbnail", "description": "Removes a workflow's thumbnail image", "operationId": "delete_workflow_thumbnail", @@ -6112,7 +6324,9 @@ } }, "get": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Get Workflow Thumbnail", "description": "Gets a workflow's thumbnail image", "operationId": "get_workflow_thumbnail", @@ -6159,7 +6373,9 @@ }, "/api/v1/workflows/counts_by_tag": { "get": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Get Counts By Tag", "description": "Counts workflows by tag", "operationId": "get_counts_by_tag", @@ -6248,7 +6464,9 @@ }, "/api/v1/workflows/counts_by_category": { "get": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Counts By Category", "description": "Counts workflows by category", "operationId": "counts_by_category", @@ -6316,7 +6534,9 @@ }, "/api/v1/workflows/i/{workflow_id}/opened_at": { "put": { - "tags": ["workflows"], + "tags": [ + "workflows" + ], "summary": "Update Opened At", "description": "Updates the opened_at field of a workflow", "operationId": "update_opened_at", @@ -6357,7 +6577,9 @@ }, "/api/v1/style_presets/i/{style_preset_id}": { "get": { - "tags": ["style_presets"], + "tags": [ + "style_presets" + ], "summary": "Get Style Preset", "description": "Gets a style preset", "operationId": "get_style_preset", @@ -6398,7 +6620,9 @@ } }, "patch": { - "tags": ["style_presets"], + "tags": [ + "style_presets" + ], "summary": "Update Style Preset", "description": "Updates a style preset", "operationId": "update_style_preset", @@ -6449,7 +6673,9 @@ } }, "delete": { - "tags": ["style_presets"], + "tags": [ + "style_presets" + ], "summary": "Delete Style Preset", "description": "Deletes a style preset", "operationId": "delete_style_preset", @@ -6490,7 +6716,9 @@ }, "/api/v1/style_presets/": { "get": { - "tags": ["style_presets"], + "tags": [ + "style_presets" + ], "summary": "List Style Presets", "description": "Gets a page of style presets", "operationId": "list_style_presets", @@ -6512,7 +6740,9 @@ } }, "post": { - "tags": ["style_presets"], + "tags": [ + "style_presets" + ], "summary": "Create Style Preset", "description": "Creates a style preset", "operationId": "create_style_preset", @@ -6552,7 +6782,9 @@ }, "/api/v1/style_presets/i/{style_preset_id}/image": { "get": { - "tags": ["style_presets"], + "tags": [ + "style_presets" + ], "summary": "Get Style Preset Image", "description": "Gets an image file that previews the model", "operationId": "get_style_preset_image", @@ -6599,7 +6831,9 @@ }, "/api/v1/style_presets/export": { "get": { - "tags": ["style_presets"], + "tags": [ + "style_presets" + ], "summary": "Export Style Presets", "operationId": "export_style_presets", "responses": { @@ -6617,7 +6851,9 @@ }, "/api/v1/style_presets/import": { "post": { - "tags": ["style_presets"], + "tags": [ + "style_presets" + ], "summary": "Import Style Presets", "operationId": "import_style_presets", "requestBody": { @@ -6654,7 +6890,9 @@ }, "/api/v1/client_state/{queue_id}/get_by_key": { "get": { - "tags": ["client_state"], + "tags": [ + "client_state" + ], "summary": "Get Client State By Key", "description": "Gets the client state", "operationId": "get_client_state_by_key", @@ -6716,7 +6954,9 @@ }, "/api/v1/client_state/{queue_id}/set_by_key": { "post": { - "tags": ["client_state"], + "tags": [ + "client_state" + ], "summary": "Set Client State", "description": "Sets the client state", "operationId": "set_client_state", @@ -6783,7 +7023,9 @@ }, "/api/v1/client_state/{queue_id}/delete": { "post": { - "tags": ["client_state"], + "tags": [ + "client_state" + ], "summary": "Delete Client State", "description": "Deletes the client state", "operationId": "delete_client_state", @@ -6848,7 +7090,10 @@ } }, "type": "object", - "required": ["affected_boards", "added_images"], + "required": [ + "affected_boards", + "added_images" + ], "title": "AddImagesToBoardResult" }, "AddInvocation": { @@ -6910,8 +7155,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "add"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "add" + ], "title": "Add Integers", "type": "object", "version": "1.0.1", @@ -6983,8 +7234,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["conditioning"], + "required": [ + "type", + "id" + ], + "tags": [ + "conditioning" + ], "title": "Alpha Mask to Tensor", "type": "object", "version": "1.0.0", @@ -7209,7 +7465,9 @@ } }, "type": "object", - "required": ["version"], + "required": [ + "version" + ], "title": "AppVersion", "description": "App Version Response" }, @@ -7324,8 +7582,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "mask" + ], "title": "Apply Tensor Mask to Image", "type": "object", "version": "1.0.0", @@ -7444,8 +7707,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask", "blend"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask", + "blend" + ], "title": "Apply Mask to Image", "type": "object", "version": "1.0.0", @@ -7468,13 +7738,26 @@ } }, "type": "object", - "required": ["name"], + "required": [ + "name" + ], "title": "BaseMetadata", "description": "Adds typing data for discriminated union." }, "BaseModelType": { "type": "string", - "enum": ["any", "sd-1", "sd-2", "sd-3", "sdxl", "sdxl-refiner", "flux", "cogview4", "z-image", "unknown"], + "enum": [ + "any", + "sd-1", + "sd-2", + "sd-3", + "sdxl", + "sdxl-refiner", + "flux", + "cogview4", + "z-image", + "unknown" + ], "title": "BaseModelType", "description": "An enumeration of base model architectures. For example, Stable Diffusion 1.x, Stable Diffusion 2.x, FLUX, etc.\n\nEvery model config must have a base architecture type.\n\nNot all models are associated with a base architecture. For example, CLIP models are their own thing, not related\nto any particular model architecture. To simplify internal APIs and make it easier to work with models, we use a\nfallback/null value `BaseModelType.Any` for these models, instead of making the model base optional." }, @@ -7551,7 +7834,10 @@ } }, "type": "object", - "required": ["graph", "runs"], + "required": [ + "graph", + "runs" + ], "title": "Batch" }, "BatchDatum": { @@ -7589,7 +7875,10 @@ } }, "type": "object", - "required": ["node_path", "field_name"], + "required": [ + "node_path", + "field_name" + ], "title": "BatchDatum" }, "BatchEnqueuedEvent": { @@ -7639,7 +7928,15 @@ "title": "Origin" } }, - "required": ["timestamp", "queue_id", "batch_id", "enqueued", "requested", "priority", "origin"], + "required": [ + "timestamp", + "queue_id", + "batch_id", + "enqueued", + "requested", + "priority", + "origin" + ], "title": "BatchEnqueuedEvent", "type": "object" }, @@ -7811,7 +8108,10 @@ "mode": { "default": "RGB", "description": "The mode of the image", - "enum": ["RGB", "RGBA"], + "enum": [ + "RGB", + "RGBA" + ], "field_kind": "input", "input": "any", "orig_default": "RGB", @@ -7846,8 +8146,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image"], + "required": [ + "type", + "id" + ], + "tags": [ + "image" + ], "title": "Blank Image", "type": "object", "version": "1.2.2", @@ -7951,8 +8256,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "blend", "mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "blend", + "mask" + ], "title": "Blend Latents", "type": "object", "version": "1.1.0", @@ -8109,13 +8421,18 @@ "type": "string" } }, - "required": ["board_id"], + "required": [ + "board_id" + ], "title": "BoardField", "type": "object" }, "BoardRecordOrderBy": { "type": "string", - "enum": ["created_at", "board_name"], + "enum": [ + "created_at", + "board_name" + ], "title": "BoardRecordOrderBy", "description": "The order by options for board records" }, @@ -8133,7 +8450,10 @@ } }, "type": "object", - "required": ["board_id", "image_name"], + "required": [ + "board_id", + "image_name" + ], "title": "Body_add_image_to_board" }, "Body_add_images_to_board": { @@ -8153,7 +8473,10 @@ } }, "type": "object", - "required": ["board_id", "image_names"], + "required": [ + "board_id", + "image_names" + ], "title": "Body_add_images_to_board" }, "Body_cancel_by_batch_ids": { @@ -8168,7 +8491,9 @@ } }, "type": "object", - "required": ["batch_ids"], + "required": [ + "batch_ids" + ], "title": "Body_cancel_by_batch_ids" }, "Body_create_image_upload_entry": { @@ -8197,7 +8522,10 @@ } }, "type": "object", - "required": ["width", "height"], + "required": [ + "width", + "height" + ], "title": "Body_create_image_upload_entry" }, "Body_create_style_preset": { @@ -8222,7 +8550,9 @@ } }, "type": "object", - "required": ["data"], + "required": [ + "data" + ], "title": "Body_create_style_preset" }, "Body_create_workflow": { @@ -8233,7 +8563,9 @@ } }, "type": "object", - "required": ["workflow"], + "required": [ + "workflow" + ], "title": "Body_create_workflow" }, "Body_delete_images_from_list": { @@ -8248,7 +8580,9 @@ } }, "type": "object", - "required": ["image_names"], + "required": [ + "image_names" + ], "title": "Body_delete_images_from_list" }, "Body_do_hf_login": { @@ -8260,7 +8594,9 @@ } }, "type": "object", - "required": ["token"], + "required": [ + "token" + ], "title": "Body_do_hf_login" }, "Body_download": { @@ -8297,7 +8633,10 @@ } }, "type": "object", - "required": ["source", "dest"], + "required": [ + "source", + "dest" + ], "title": "Body_download" }, "Body_download_images_from_list": { @@ -8347,7 +8686,9 @@ } }, "type": "object", - "required": ["batch"], + "required": [ + "batch" + ], "title": "Body_enqueue_batch" }, "Body_get_images_by_names": { @@ -8362,7 +8703,9 @@ } }, "type": "object", - "required": ["image_names"], + "required": [ + "image_names" + ], "title": "Body_get_images_by_names" }, "Body_get_queue_items_by_item_ids": { @@ -8377,7 +8720,9 @@ } }, "type": "object", - "required": ["item_ids"], + "required": [ + "item_ids" + ], "title": "Body_get_queue_items_by_item_ids" }, "Body_import_style_presets": { @@ -8390,7 +8735,9 @@ } }, "type": "object", - "required": ["file"], + "required": [ + "file" + ], "title": "Body_import_style_presets" }, "Body_parse_dynamicprompts": { @@ -8428,7 +8775,9 @@ } }, "type": "object", - "required": ["prompt"], + "required": [ + "prompt" + ], "title": "Body_parse_dynamicprompts" }, "Body_remove_image_from_board": { @@ -8440,7 +8789,9 @@ } }, "type": "object", - "required": ["image_name"], + "required": [ + "image_name" + ], "title": "Body_remove_image_from_board" }, "Body_remove_images_from_board": { @@ -8455,7 +8806,9 @@ } }, "type": "object", - "required": ["image_names"], + "required": [ + "image_names" + ], "title": "Body_remove_images_from_board" }, "Body_set_workflow_thumbnail": { @@ -8468,7 +8821,9 @@ } }, "type": "object", - "required": ["image"], + "required": [ + "image" + ], "title": "Body_set_workflow_thumbnail" }, "Body_star_images_in_list": { @@ -8483,7 +8838,9 @@ } }, "type": "object", - "required": ["image_names"], + "required": [ + "image_names" + ], "title": "Body_star_images_in_list" }, "Body_unstar_images_in_list": { @@ -8498,7 +8855,9 @@ } }, "type": "object", - "required": ["image_names"], + "required": [ + "image_names" + ], "title": "Body_unstar_images_in_list" }, "Body_update_model_image": { @@ -8510,7 +8869,9 @@ } }, "type": "object", - "required": ["image"], + "required": [ + "image" + ], "title": "Body_update_model_image" }, "Body_update_style_preset": { @@ -8535,7 +8896,9 @@ } }, "type": "object", - "required": ["data"], + "required": [ + "data" + ], "title": "Body_update_style_preset" }, "Body_update_workflow": { @@ -8546,7 +8909,9 @@ } }, "type": "object", - "required": ["workflow"], + "required": [ + "workflow" + ], "title": "Body_update_workflow" }, "Body_upload_image": { @@ -8567,7 +8932,9 @@ ], "title": "Resize To", "description": "Dimensions to resize the image to, must be stringified tuple of 2 integers. Max total pixel count: 16777216", - "examples": ["\"[1024,1024]\""] + "examples": [ + "\"[1024,1024]\"" + ] }, "metadata": { "anyOf": [ @@ -8583,7 +8950,9 @@ } }, "type": "object", - "required": ["file"], + "required": [ + "file" + ], "title": "Body_upload_image" }, "BooleanCollectionInvocation": { @@ -8638,8 +9007,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "boolean", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "boolean", + "collection" + ], "title": "Boolean Collection Primitive", "type": "object", "version": "1.0.2", @@ -8669,7 +9045,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "BooleanCollectionOutput", "type": "object" }, @@ -8722,8 +9103,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "boolean"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "boolean" + ], "title": "Boolean Primitive", "type": "object", "version": "1.0.1", @@ -8750,7 +9137,12 @@ "type": "string" } }, - "required": ["output_meta", "value", "type", "type"], + "required": [ + "output_meta", + "value", + "type", + "type" + ], "title": "BooleanOutput", "type": "object" }, @@ -8776,7 +9168,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "BoundingBoxCollectionOutput", "type": "object" }, @@ -8819,7 +9216,12 @@ "title": "Score" } }, - "required": ["x_min", "x_max", "y_min", "y_max"], + "required": [ + "x_min", + "x_max", + "y_min", + "y_max" + ], "title": "BoundingBoxField", "type": "object" }, @@ -8902,8 +9304,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "segmentation", "collection", "bounding box"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "segmentation", + "collection", + "bounding box" + ], "title": "Bounding Box", "type": "object", "version": "1.0.0", @@ -8929,7 +9339,12 @@ "type": "string" } }, - "required": ["output_meta", "bounding_box", "type", "type"], + "required": [ + "output_meta", + "bounding_box", + "type", + "type" + ], "title": "BoundingBoxOutput", "type": "object" }, @@ -8957,7 +9372,12 @@ "type": "string" } }, - "required": ["timestamp", "bulk_download_id", "bulk_download_item_id", "bulk_download_item_name"], + "required": [ + "timestamp", + "bulk_download_id", + "bulk_download_item_id", + "bulk_download_item_name" + ], "title": "BulkDownloadCompleteEvent", "type": "object" }, @@ -8990,7 +9410,13 @@ "type": "string" } }, - "required": ["timestamp", "bulk_download_id", "bulk_download_item_id", "bulk_download_item_name", "error"], + "required": [ + "timestamp", + "bulk_download_id", + "bulk_download_item_id", + "bulk_download_item_name", + "error" + ], "title": "BulkDownloadErrorEvent", "type": "object" }, @@ -9018,7 +9444,12 @@ "type": "string" } }, - "required": ["timestamp", "bulk_download_id", "bulk_download_item_id", "bulk_download_item_name"], + "required": [ + "timestamp", + "bulk_download_id", + "bulk_download_item_id", + "bulk_download_item_name" + ], "title": "BulkDownloadStartedEvent", "type": "object" }, @@ -9288,7 +9719,12 @@ "type": "array" } }, - "required": ["tokenizer", "text_encoder", "skipped_layers", "loras"], + "required": [ + "tokenizer", + "text_encoder", + "skipped_layers", + "loras" + ], "title": "CLIPField", "type": "object" }, @@ -9311,7 +9747,12 @@ "type": "string" } }, - "required": ["output_meta", "clip", "type", "type"], + "required": [ + "output_meta", + "clip", + "type", + "type" + ], "title": "CLIPOutput", "type": "object" }, @@ -9381,8 +9822,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["clipskip", "clip", "skip"], + "required": [ + "type", + "id" + ], + "tags": [ + "clipskip", + "clip", + "skip" + ], "title": "Apply CLIP Skip - SD1.5, SDXL", "type": "object", "version": "1.1.1", @@ -9417,7 +9865,12 @@ "type": "string" } }, - "required": ["output_meta", "clip", "type", "type"], + "required": [ + "output_meta", + "clip", + "type", + "type" + ], "title": "CLIPSkipInvocationOutput", "type": "object" }, @@ -9622,8 +10075,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "inpaint"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "inpaint" + ], "title": "CV2 Infill", "type": "object", "version": "1.2.2", @@ -9769,8 +10228,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["tiles"], + "required": [ + "type", + "id" + ], + "tags": [ + "tiles" + ], "title": "Calculate Image Tiles Even Split", "type": "object", "version": "1.1.1", @@ -9872,8 +10336,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["tiles"], + "required": [ + "type", + "id" + ], + "tags": [ + "tiles" + ], "title": "Calculate Image Tiles", "type": "object", "version": "1.0.1", @@ -9975,8 +10444,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["tiles"], + "required": [ + "type", + "id" + ], + "tags": [ + "tiles" + ], "title": "Calculate Image Tiles Minimum Overlap", "type": "object", "version": "1.0.1", @@ -10005,7 +10479,12 @@ "type": "string" } }, - "required": ["output_meta", "tiles", "type", "type"], + "required": [ + "output_meta", + "tiles", + "type", + "type" + ], "title": "CalculateImageTilesOutput", "type": "object" }, @@ -10018,7 +10497,9 @@ } }, "type": "object", - "required": ["canceled"], + "required": [ + "canceled" + ], "title": "CancelAllExceptCurrentResult", "description": "Result of canceling all except current" }, @@ -10031,7 +10512,9 @@ } }, "type": "object", - "required": ["canceled"], + "required": [ + "canceled" + ], "title": "CancelByBatchIDsResult", "description": "Result of canceling by list of batch ids" }, @@ -10044,7 +10527,9 @@ } }, "type": "object", - "required": ["canceled"], + "required": [ + "canceled" + ], "title": "CancelByDestinationResult", "description": "Result of canceling by a destination" }, @@ -10158,8 +10643,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "canny"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "canny" + ], "title": "Canny Edge Detection", "type": "object", "version": "1.0.0", @@ -10294,8 +10785,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "combine"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "combine" + ], "title": "Canvas Paste Back", "type": "object", "version": "1.0.1", @@ -10431,8 +10928,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask", "id"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask", + "id" + ], "title": "Canvas V2 Mask and Crop", "type": "object", "version": "1.0.0", @@ -10534,8 +11038,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "pad", "crop"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "pad", + "crop" + ], "title": "Center Pad or Crop Image", "type": "object", "version": "1.0.0", @@ -10545,7 +11056,14 @@ }, "Classification": { "description": "The classification of an Invocation.\n- `Stable`: The invocation, including its inputs/outputs and internal logic, is stable. You may build workflows with it, having confidence that they will not break because of a change in this invocation.\n- `Beta`: The invocation is not yet stable, but is planned to be stable in the future. Workflows built around this invocation may break, but we are committed to supporting this invocation long-term.\n- `Prototype`: The invocation is not yet stable and may be removed from the application at any time. Workflows built around this invocation may break, and we are *not* committed to supporting this invocation.\n- `Deprecated`: The invocation is deprecated and may be removed in a future version.\n- `Internal`: The invocation is not intended for use by end-users. It may be changed or removed at any time, but is exposed for users to play with.\n- `Special`: The invocation is a special case and does not fit into any of the other classifications.", - "enum": ["stable", "beta", "prototype", "deprecated", "internal", "special"], + "enum": [ + "stable", + "beta", + "prototype", + "deprecated", + "internal", + "special" + ], "title": "Classification", "type": "string" }, @@ -10558,13 +11076,18 @@ } }, "type": "object", - "required": ["deleted"], + "required": [ + "deleted" + ], "title": "ClearResult", "description": "Result of clearing the session queue" }, "ClipVariantType": { "type": "string", - "enum": ["large", "gigantic"], + "enum": [ + "large", + "gigantic" + ], "title": "ClipVariantType", "description": "Variant type." }, @@ -10577,7 +11100,9 @@ "type": "string" } }, - "required": ["conditioning_name"], + "required": [ + "conditioning_name" + ], "title": "CogView4ConditioningField", "type": "object" }, @@ -10599,7 +11124,12 @@ "type": "string" } }, - "required": ["output_meta", "conditioning", "type", "type"], + "required": [ + "output_meta", + "conditioning", + "type", + "type" + ], "title": "CogView4ConditioningOutput", "type": "object" }, @@ -10839,8 +11369,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "cogview4"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "cogview4" + ], "title": "Denoise - CogView4", "type": "object", "version": "1.0.0", @@ -10949,8 +11485,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "latents", "vae", "i2l", "cogview4"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "latents", + "vae", + "i2l", + "cogview4" + ], "title": "Image to Latents - CogView4", "type": "object", "version": "1.0.0", @@ -11059,8 +11604,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "image", "vae", "l2i", "cogview4"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "image", + "vae", + "l2i", + "cogview4" + ], "title": "Latents to Image - CogView4", "type": "object", "version": "1.0.0", @@ -11105,8 +11659,12 @@ "field_kind": "input", "input": "direct", "orig_required": true, - "ui_model_base": ["cogview4"], - "ui_model_type": ["main"] + "ui_model_base": [ + "cogview4" + ], + "ui_model_type": [ + "main" + ] }, "type": { "const": "cogview4_model_loader", @@ -11116,8 +11674,15 @@ "type": "string" } }, - "required": ["model", "type", "id"], - "tags": ["model", "cogview4"], + "required": [ + "model", + "type", + "id" + ], + "tags": [ + "model", + "cogview4" + ], "title": "Main Model - CogView4", "type": "object", "version": "1.0.0", @@ -11158,7 +11723,14 @@ "type": "string" } }, - "required": ["output_meta", "transformer", "glm_encoder", "vae", "type", "type"], + "required": [ + "output_meta", + "transformer", + "glm_encoder", + "vae", + "type", + "type" + ], "title": "CogView4ModelLoaderOutput", "type": "object" }, @@ -11234,8 +11806,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "conditioning", "cogview4"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "conditioning", + "cogview4" + ], "title": "Prompt - CogView4", "type": "object", "version": "1.0.0", @@ -11309,7 +11888,10 @@ "type": "string" } }, - "required": ["type", "id"], + "required": [ + "type", + "id" + ], "title": "CollectInvocation", "type": "object", "version": "1.0.0", @@ -11337,7 +11919,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "CollectInvocationOutput", "type": "object" }, @@ -11363,7 +11950,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "ColorCollectionOutput", "type": "object" }, @@ -11479,7 +12071,12 @@ "colorspace": { "default": "RGB", "description": "Colorspace in which to apply histogram matching", - "enum": ["RGB", "YCbCr", "YCbCr-Chroma", "YCbCr-Luma"], + "enum": [ + "RGB", + "YCbCr", + "YCbCr-Chroma", + "YCbCr-Luma" + ], "field_kind": "input", "input": "any", "orig_default": "RGB", @@ -11495,8 +12092,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "color"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "color" + ], "title": "Color Correct", "type": "object", "version": "2.0.0", @@ -11536,7 +12139,12 @@ "type": "integer" } }, - "required": ["r", "g", "b", "a"], + "required": [ + "r", + "g", + "b", + "a" + ], "title": "ColorField", "type": "object" }, @@ -11598,8 +12206,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "color"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "color" + ], "title": "Color Primitive", "type": "object", "version": "1.0.1", @@ -11704,8 +12318,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet" + ], "title": "Color Map", "type": "object", "version": "1.0.0", @@ -11731,7 +12350,12 @@ "type": "string" } }, - "required": ["output_meta", "color", "type", "type"], + "required": [ + "output_meta", + "color", + "type", + "type" + ], "title": "ColorOutput", "type": "object" }, @@ -11817,8 +12441,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "compel"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "compel" + ], "title": "Prompt - SD1.5", "type": "object", "version": "1.2.1", @@ -11878,8 +12508,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "conditioning", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "conditioning", + "collection" + ], "title": "Conditioning Collection Primitive", "type": "object", "version": "1.0.2", @@ -11909,7 +12546,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "ConditioningCollectionOutput", "type": "object" }, @@ -11934,7 +12576,9 @@ "description": "The mask associated with this conditioning tensor. Excluded regions should be set to False, included regions should be set to True." } }, - "required": ["conditioning_name"], + "required": [ + "conditioning_name" + ], "title": "ConditioningField", "type": "object" }, @@ -11992,8 +12636,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "conditioning"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "conditioning" + ], "title": "Conditioning Primitive", "type": "object", "version": "1.0.1", @@ -12019,7 +12669,12 @@ "type": "string" } }, - "required": ["output_meta", "conditioning", "type", "type"], + "required": [ + "output_meta", + "conditioning", + "type", + "type" + ], "title": "ConditioningOutput", "type": "object" }, @@ -12120,8 +12775,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "normal"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "normal" + ], "title": "Content Shuffle", "type": "object", "version": "1.0.0", @@ -12145,7 +12806,9 @@ }, "additionalProperties": false, "type": "object", - "required": ["preprocessor"], + "required": [ + "preprocessor" + ], "title": "ControlAdapterDefaultSettings" }, "ControlField": { @@ -12193,19 +12856,32 @@ "control_mode": { "default": "balanced", "description": "The control mode to use", - "enum": ["balanced", "more_prompt", "more_control", "unbalanced"], + "enum": [ + "balanced", + "more_prompt", + "more_control", + "unbalanced" + ], "title": "Control Mode", "type": "string" }, "resize_mode": { "default": "just_resize", "description": "The resize mode to use", - "enum": ["just_resize", "crop_resize", "fill_resize", "just_resize_simple"], + "enum": [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple" + ], "title": "Resize Mode", "type": "string" } }, - "required": ["image", "control_model"], + "required": [ + "image", + "control_model" + ], "title": "ControlField", "type": "object" }, @@ -12225,7 +12901,11 @@ "description": "Image to use in structural conditioning" } }, - "required": ["lora", "weight", "img"], + "required": [ + "lora", + "weight", + "img" + ], "title": "ControlLoRAField", "type": "object" }, @@ -12426,8 +13106,14 @@ "field_kind": "input", "input": "any", "orig_required": true, - "ui_model_base": ["sd-1", "sd-2", "sdxl"], - "ui_model_type": ["controlnet"] + "ui_model_base": [ + "sd-1", + "sd-2", + "sdxl" + ], + "ui_model_type": [ + "controlnet" + ] }, "control_weight": { "anyOf": [ @@ -12478,7 +13164,12 @@ "control_mode": { "default": "balanced", "description": "The control mode used", - "enum": ["balanced", "more_prompt", "more_control", "unbalanced"], + "enum": [ + "balanced", + "more_prompt", + "more_control", + "unbalanced" + ], "field_kind": "input", "input": "any", "orig_default": "balanced", @@ -12489,7 +13180,12 @@ "resize_mode": { "default": "just_resize", "description": "The resize mode used", - "enum": ["just_resize", "crop_resize", "fill_resize", "just_resize_simple"], + "enum": [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple" + ], "field_kind": "input", "input": "any", "orig_default": "just_resize", @@ -12505,8 +13201,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet" + ], "title": "ControlNet - SD1.5, SD2, SDXL", "type": "object", "version": "1.1.3", @@ -12571,19 +13272,32 @@ "control_mode": { "default": "balanced", "description": "The control mode to use", - "enum": ["balanced", "more_prompt", "more_control", "unbalanced"], + "enum": [ + "balanced", + "more_prompt", + "more_control", + "unbalanced" + ], "title": "Control Mode", "type": "string" }, "resize_mode": { "default": "just_resize", "description": "The resize mode to use", - "enum": ["just_resize", "crop_resize", "fill_resize", "just_resize_simple"], + "enum": [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple" + ], "title": "Resize Mode", "type": "string" } }, - "required": ["image", "control_model"], + "required": [ + "image", + "control_model" + ], "title": "ControlNetMetadataField", "type": "object" }, @@ -13637,7 +14351,12 @@ "type": "string" } }, - "required": ["output_meta", "control", "type", "type"], + "required": [ + "output_meta", + "control", + "type", + "type" + ], "title": "ControlOutput", "type": "object" }, @@ -14294,8 +15013,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Core Metadata", "type": "object", "version": "2.0.0", @@ -14413,8 +15137,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["mask", "denoise"], + "required": [ + "type", + "id" + ], + "tags": [ + "mask", + "denoise" + ], "title": "Create Denoise Mask", "type": "object", "version": "1.0.2", @@ -14483,7 +15213,11 @@ }, "coherence_mode": { "default": "Gaussian Blur", - "enum": ["Gaussian Blur", "Box Blur", "Staged"], + "enum": [ + "Gaussian Blur", + "Box Blur", + "Staged" + ], "field_kind": "input", "input": "any", "orig_default": "Gaussian Blur", @@ -14589,8 +15323,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["mask", "denoise"], + "required": [ + "type", + "id" + ], + "tags": [ + "mask", + "denoise" + ], "title": "Create Gradient Mask", "type": "object", "version": "1.3.0", @@ -14700,8 +15440,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "crop"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "crop" + ], "title": "Crop Image to Bounding Box", "type": "object", "version": "1.0.0", @@ -14835,8 +15581,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "crop"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "crop" + ], "title": "Crop Latents", "type": "object", "version": "1.0.2", @@ -14945,8 +15697,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["opencv", "inpaint"], + "required": [ + "type", + "id" + ], + "tags": [ + "opencv", + "inpaint" + ], "title": "OpenCV Inpaint", "type": "object", "version": "1.3.1", @@ -15067,8 +15825,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "dwpose", "openpose"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "dwpose", + "openpose" + ], "title": "DW Openpose Detection", "type": "object", "version": "1.1.1", @@ -15085,7 +15850,9 @@ } }, "type": "object", - "required": ["deleted"], + "required": [ + "deleted" + ], "title": "DeleteAllExceptCurrentResult", "description": "Result of deleting all except current" }, @@ -15114,7 +15881,11 @@ } }, "type": "object", - "required": ["board_id", "deleted_board_images", "deleted_images"], + "required": [ + "board_id", + "deleted_board_images", + "deleted_images" + ], "title": "DeleteBoardResult" }, "DeleteByDestinationResult": { @@ -15126,7 +15897,9 @@ } }, "type": "object", - "required": ["deleted"], + "required": [ + "deleted" + ], "title": "DeleteByDestinationResult", "description": "Result of deleting by a destination" }, @@ -15150,7 +15923,10 @@ } }, "type": "object", - "required": ["affected_boards", "deleted_images"], + "required": [ + "affected_boards", + "deleted_images" + ], "title": "DeleteImagesResult" }, "DenoiseLatentsInvocation": { @@ -15487,8 +16263,20 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "denoise", "txt2img", "t2i", "t2l", "img2img", "i2i", "l2l"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "denoise", + "txt2img", + "t2i", + "t2l", + "img2img", + "i2i", + "l2l" + ], "title": "Denoise - SD1.5, SDXL", "type": "object", "version": "1.5.4", @@ -15845,8 +16633,20 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "denoise", "txt2img", "t2i", "t2l", "img2img", "i2i", "l2l"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "denoise", + "txt2img", + "t2i", + "t2l", + "img2img", + "i2i", + "l2l" + ], "title": "Denoise - SD1.5, SDXL + Metadata", "type": "object", "version": "1.1.1", @@ -15882,7 +16682,9 @@ "type": "boolean" } }, - "required": ["mask_name"], + "required": [ + "mask_name" + ], "title": "DenoiseMaskField", "type": "object" }, @@ -15904,7 +16706,12 @@ "type": "string" } }, - "required": ["output_meta", "denoise_mask", "type", "type"], + "required": [ + "output_meta", + "denoise_mask", + "type", + "type" + ], "title": "DenoiseMaskOutput", "type": "object" }, @@ -15989,7 +16796,12 @@ "model_size": { "default": "small_v2", "description": "The size of the depth model to use", - "enum": ["large", "base", "small", "small_v2"], + "enum": [ + "large", + "base", + "small", + "small_v2" + ], "field_kind": "input", "input": "any", "orig_default": "small_v2", @@ -16005,8 +16817,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "depth", "depth anything"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "depth", + "depth anything" + ], "title": "Depth Anything Depth Estimation", "type": "object", "version": "1.0.0", @@ -16073,8 +16892,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "divide"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "divide" + ], "title": "Divide Integers", "type": "object", "version": "1.0.1", @@ -16096,7 +16921,10 @@ "type": "string" } }, - "required": ["timestamp", "source"], + "required": [ + "timestamp", + "source" + ], "title": "DownloadCancelledEvent", "type": "object" }, @@ -16124,7 +16952,12 @@ "type": "integer" } }, - "required": ["timestamp", "source", "download_path", "total_bytes"], + "required": [ + "timestamp", + "source", + "download_path", + "total_bytes" + ], "title": "DownloadCompleteEvent", "type": "object" }, @@ -16152,7 +16985,12 @@ "type": "string" } }, - "required": ["timestamp", "source", "error_type", "error"], + "required": [ + "timestamp", + "source", + "error_type", + "error" + ], "title": "DownloadErrorEvent", "type": "object" }, @@ -16287,13 +17125,22 @@ } }, "type": "object", - "required": ["dest", "source"], + "required": [ + "dest", + "source" + ], "title": "DownloadJob", "description": "Class to monitor and control a model download request." }, "DownloadJobStatus": { "type": "string", - "enum": ["waiting", "running", "completed", "cancelled", "error"], + "enum": [ + "waiting", + "running", + "completed", + "cancelled", + "error" + ], "title": "DownloadJobStatus", "description": "State of a download job." }, @@ -16326,7 +17173,13 @@ "type": "integer" } }, - "required": ["timestamp", "source", "download_path", "current_bytes", "total_bytes"], + "required": [ + "timestamp", + "source", + "download_path", + "current_bytes", + "total_bytes" + ], "title": "DownloadProgressEvent", "type": "object" }, @@ -16349,7 +17202,11 @@ "type": "string" } }, - "required": ["timestamp", "source", "download_path"], + "required": [ + "timestamp", + "source", + "download_path" + ], "title": "DownloadStartedEvent", "type": "object" }, @@ -16429,8 +17286,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "collection" + ], "title": "Dynamic Prompt", "type": "object", "version": "1.0.1", @@ -16460,7 +17323,9 @@ } }, "type": "object", - "required": ["prompts"], + "required": [ + "prompts" + ], "title": "DynamicPromptsResponse" }, "ESRGANInvocation": { @@ -16576,8 +17441,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["esrgan", "upscale"], + "required": [ + "type", + "id" + ], + "tags": [ + "esrgan", + "upscale" + ], "title": "Upscale (RealESRGAN)", "type": "object", "version": "1.3.2", @@ -16597,7 +17468,10 @@ } }, "type": "object", - "required": ["source", "destination"], + "required": [ + "source", + "destination" + ], "title": "Edge" }, "EdgeConnection": { @@ -16614,7 +17488,10 @@ } }, "type": "object", - "required": ["node_id", "field"], + "required": [ + "node_id", + "field" + ], "title": "EdgeConnection" }, "EnqueueBatchResult": { @@ -16653,7 +17530,14 @@ } }, "type": "object", - "required": ["queue_id", "enqueued", "requested", "batch", "priority", "item_ids"], + "required": [ + "queue_id", + "enqueued", + "requested", + "batch", + "priority", + "item_ids" + ], "title": "EnqueueBatchResult" }, "ExpandMaskWithFadeInvocation": { @@ -16765,8 +17649,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask" + ], "title": "Expand Mask with Fade", "type": "object", "version": "1.0.1", @@ -16786,7 +17676,10 @@ } }, "type": "object", - "required": ["nodeId", "fieldName"], + "required": [ + "nodeId", + "fieldName" + ], "title": "ExposedField" }, "FLUXLoRACollectionLoader": { @@ -16902,8 +17795,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["lora", "model", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "lora", + "model", + "flux" + ], "title": "Apply LoRA Collection - FLUX", "type": "object", "version": "1.3.1", @@ -17127,8 +18027,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "face", "identifier"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "face", + "identifier" + ], "title": "FaceIdentifier", "type": "object", "version": "1.2.2", @@ -17266,8 +18173,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "face", "mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "face", + "mask" + ], "title": "FaceMask", "type": "object", "version": "1.2.2", @@ -17313,7 +18227,15 @@ "ui_hidden": false } }, - "required": ["output_meta", "image", "width", "height", "type", "mask", "type"], + "required": [ + "output_meta", + "image", + "width", + "height", + "type", + "mask", + "type" + ], "title": "FaceMaskOutput", "type": "object" }, @@ -17448,8 +18370,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "faceoff", "face", "mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "faceoff", + "face", + "mask" + ], "title": "FaceOff", "type": "object", "version": "1.2.2", @@ -17509,13 +18439,28 @@ "ui_hidden": false } }, - "required": ["output_meta", "image", "width", "height", "type", "mask", "x", "y", "type"], + "required": [ + "output_meta", + "image", + "width", + "height", + "type", + "mask", + "x", + "y", + "type" + ], "title": "FaceOffOutput", "type": "object" }, "FieldKind": { "description": "The kind of field.\n- `Input`: An input field on a node.\n- `Output`: An output field on a node.\n- `Internal`: A field which is treated as an input, but cannot be used in node definitions. Metadata is\none example. It is provided to nodes via the WithMetadata class, and we want to reserve the field name\n\"metadata\" for this on all nodes. `FieldKind` is used to short-circuit the field name validation logic,\nallowing \"metadata\" for that field.\n- `NodeAttribute`: The field is a node attribute. These are fields which are not inputs or outputs,\nbut which are used to store information about the node. For example, the `id` and `type` fields are node\nattributes.\n\nThe presence of this in `json_schema_extra[\"field_kind\"]` is used when initializing node schemas on app\nstartup, and when generating the OpenAPI schema for the workflow editor.", - "enum": ["input", "output", "internal", "node_attribute"], + "enum": [ + "input", + "output", + "internal", + "node_attribute" + ], "title": "FieldKind", "type": "string" }, @@ -17553,7 +18498,14 @@ "batch_group_id": { "default": "None", "description": "The ID of this batch node's group. If provided, all batch nodes in with the same ID will be 'zipped' before execution, and all nodes' collections must be of the same size.", - "enum": ["None", "Group 1", "Group 2", "Group 3", "Group 4", "Group 5"], + "enum": [ + "None", + "Group 1", + "Group 2", + "Group 3", + "Group 4", + "Group 5" + ], "field_kind": "input", "input": "direct", "orig_default": "None", @@ -17589,8 +18541,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "float", "number", "batch", "special"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "float", + "number", + "batch", + "special" + ], "title": "Float Batch", "type": "object", "version": "1.0.0", @@ -17650,8 +18611,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "float", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "float", + "collection" + ], "title": "Float Collection Primitive", "type": "object", "version": "1.0.2", @@ -17681,7 +18649,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "FloatCollectionOutput", "type": "object" }, @@ -17732,8 +18705,18 @@ "type": "string" } }, - "required": ["generator", "type", "id"], - "tags": ["primitives", "float", "number", "batch", "special"], + "required": [ + "generator", + "type", + "id" + ], + "tags": [ + "primitives", + "float", + "number", + "batch", + "special" + ], "title": "Float Generator", "type": "object", "version": "1.0.0", @@ -17768,7 +18751,12 @@ "type": "string" } }, - "required": ["output_meta", "floats", "type", "type"], + "required": [ + "output_meta", + "floats", + "type", + "type" + ], "title": "FloatGeneratorOutput", "type": "object" }, @@ -17821,8 +18809,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "float"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "float" + ], "title": "Float Primitive", "type": "object", "version": "1.0.1", @@ -17899,8 +18893,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "range"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "range" + ], "title": "Float Range", "type": "object", "version": "1.0.1", @@ -17942,7 +18942,17 @@ "operation": { "default": "ADD", "description": "The operation to perform", - "enum": ["ADD", "SUB", "MUL", "DIV", "EXP", "ABS", "SQRT", "MIN", "MAX"], + "enum": [ + "ADD", + "SUB", + "MUL", + "DIV", + "EXP", + "ABS", + "SQRT", + "MIN", + "MAX" + ], "field_kind": "input", "input": "any", "orig_default": "ADD", @@ -17989,7 +18999,10 @@ "type": "string" } }, - "required": ["type", "id"], + "required": [ + "type", + "id" + ], "tags": [ "math", "float", @@ -18029,7 +19042,12 @@ "type": "string" } }, - "required": ["output_meta", "value", "type", "type"], + "required": [ + "output_meta", + "value", + "type", + "type" + ], "title": "FloatOutput", "type": "object" }, @@ -18088,7 +19106,12 @@ "method": { "default": "Nearest", "description": "The method to use for rounding", - "enum": ["Nearest", "Floor", "Ceiling", "Truncate"], + "enum": [ + "Nearest", + "Floor", + "Ceiling", + "Truncate" + ], "field_kind": "input", "input": "any", "orig_default": "Nearest", @@ -18104,8 +19127,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "round", "integer", "float", "convert"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "round", + "integer", + "float", + "convert" + ], "title": "Float To Integer", "type": "object", "version": "1.0.1", @@ -18135,7 +19167,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "FluxConditioningCollectionOutput", "type": "object" }, @@ -18160,7 +19197,9 @@ "description": "The mask associated with this conditioning tensor. Excluded regions should be set to False, included regions should be set to True." } }, - "required": ["conditioning_name"], + "required": [ + "conditioning_name" + ], "title": "FluxConditioningField", "type": "object" }, @@ -18182,7 +19221,12 @@ "type": "string" } }, - "required": ["output_meta", "conditioning", "type", "type"], + "required": [ + "output_meta", + "conditioning", + "type", + "type" + ], "title": "FluxConditioningOutput", "type": "object" }, @@ -18232,8 +19276,12 @@ "input": "any", "orig_required": true, "title": "Control LoRA", - "ui_model_base": ["flux"], - "ui_model_type": ["control_lora"] + "ui_model_base": [ + "flux" + ], + "ui_model_type": [ + "control_lora" + ] }, "image": { "anyOf": [ @@ -18268,8 +19316,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["lora", "model", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "lora", + "model", + "flux" + ], "title": "Control LoRA - FLUX", "type": "object", "version": "1.1.1", @@ -18297,7 +19352,12 @@ "type": "string" } }, - "required": ["output_meta", "control_lora", "type", "type"], + "required": [ + "output_meta", + "control_lora", + "type", + "type" + ], "title": "FluxControlLoRALoaderOutput", "type": "object" }, @@ -18346,7 +19406,12 @@ "resize_mode": { "default": "just_resize", "description": "The resize mode to use", - "enum": ["just_resize", "crop_resize", "fill_resize", "just_resize_simple"], + "enum": [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple" + ], "title": "Resize Mode", "type": "string" }, @@ -18364,7 +19429,10 @@ "title": "Instantx Control Mode" } }, - "required": ["image", "control_model"], + "required": [ + "image", + "control_model" + ], "title": "FluxControlNetField", "type": "object" }, @@ -18428,8 +19496,12 @@ "field_kind": "input", "input": "any", "orig_required": true, - "ui_model_base": ["flux"], - "ui_model_type": ["controlnet"] + "ui_model_base": [ + "flux" + ], + "ui_model_type": [ + "controlnet" + ] }, "control_weight": { "anyOf": [ @@ -18480,7 +19552,12 @@ "resize_mode": { "default": "just_resize", "description": "The resize mode used", - "enum": ["just_resize", "crop_resize", "fill_resize", "just_resize_simple"], + "enum": [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple" + ], "field_kind": "input", "input": "any", "orig_default": "just_resize", @@ -18513,8 +19590,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "flux" + ], "title": "FLUX ControlNet", "type": "object", "version": "1.0.0", @@ -18540,7 +19623,12 @@ "type": "string" } }, - "required": ["output_meta", "control", "type", "type"], + "required": [ + "output_meta", + "control", + "type", + "type" + ], "title": "FluxControlNetOutput", "type": "object" }, @@ -18943,8 +20031,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "flux" + ], "title": "FLUX Denoise", "type": "object", "version": "4.1.0", @@ -19367,8 +20461,21 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["flux", "latents", "denoise", "txt2img", "t2i", "t2l", "img2img", "i2i", "l2l"], + "required": [ + "type", + "id" + ], + "tags": [ + "flux", + "latents", + "denoise", + "txt2img", + "t2i", + "t2l", + "img2img", + "i2i", + "l2l" + ], "title": "FLUX Denoise + Metadata", "type": "object", "version": "1.0.1", @@ -19388,7 +20495,10 @@ "description": "The FLUX Fill inpaint mask." } }, - "required": ["image", "mask"], + "required": [ + "image", + "mask" + ], "title": "FluxFillConditioningField", "type": "object" }, @@ -19461,8 +20571,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["inpaint"], + "required": [ + "type", + "id" + ], + "tags": [ + "inpaint" + ], "title": "FLUX Fill Conditioning", "type": "object", "version": "1.0.0", @@ -19489,7 +20604,12 @@ "type": "string" } }, - "required": ["output_meta", "fill_cond", "type", "type"], + "required": [ + "output_meta", + "fill_cond", + "type", + "type" + ], "title": "FluxFillOutput", "type": "object" }, @@ -19554,8 +20674,12 @@ "input": "any", "orig_required": true, "title": "IP-Adapter Model", - "ui_model_base": ["flux"], - "ui_model_type": ["ip_adapter"] + "ui_model_base": [ + "flux" + ], + "ui_model_type": [ + "ip_adapter" + ] }, "clip_vision_model": { "const": "ViT-L", @@ -19620,8 +20744,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["ip_adapter", "control"], + "required": [ + "type", + "id" + ], + "tags": [ + "ip_adapter", + "control" + ], "title": "FLUX IP-Adapter", "type": "object", "version": "1.0.0", @@ -19731,8 +20861,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "concatenate", "flux", "kontext"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "concatenate", + "flux", + "kontext" + ], "title": "FLUX Kontext Image Prep", "type": "object", "version": "1.0.0", @@ -19748,7 +20886,9 @@ "description": "The Kontext reference image." } }, - "required": ["image"], + "required": [ + "image" + ], "title": "FluxKontextConditioningField", "type": "object" }, @@ -19806,8 +20946,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["conditioning", "kontext", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "conditioning", + "kontext", + "flux" + ], "title": "Kontext Conditioning - FLUX", "type": "object", "version": "1.0.0", @@ -19834,7 +20981,12 @@ "type": "string" } }, - "required": ["output_meta", "kontext_cond", "type", "type"], + "required": [ + "output_meta", + "kontext_cond", + "type", + "type" + ], "title": "FluxKontextOutput", "type": "object" }, @@ -19884,8 +21036,12 @@ "input": "any", "orig_required": true, "title": "LoRA", - "ui_model_base": ["flux"], - "ui_model_type": ["lora"] + "ui_model_base": [ + "flux" + ], + "ui_model_type": [ + "lora" + ] }, "weight": { "default": 0.75, @@ -19956,8 +21112,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["lora", "model", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "lora", + "model", + "flux" + ], "title": "Apply LoRA - FLUX", "type": "object", "version": "1.2.1", @@ -20022,7 +21185,14 @@ "type": "string" } }, - "required": ["output_meta", "transformer", "clip", "t5_encoder", "type", "type"], + "required": [ + "output_meta", + "transformer", + "clip", + "t5_encoder", + "type", + "type" + ], "title": "FluxLoRALoaderOutput", "type": "object" }, @@ -20063,8 +21233,12 @@ "field_kind": "input", "input": "direct", "orig_required": true, - "ui_model_base": ["flux"], - "ui_model_type": ["main"] + "ui_model_base": [ + "flux" + ], + "ui_model_type": [ + "main" + ] }, "t5_encoder_model": { "$ref": "#/components/schemas/ModelIdentifierField", @@ -20073,7 +21247,9 @@ "input": "direct", "orig_required": true, "title": "T5 Encoder", - "ui_model_type": ["t5_encoder"] + "ui_model_type": [ + "t5_encoder" + ] }, "clip_embed_model": { "$ref": "#/components/schemas/ModelIdentifierField", @@ -20082,7 +21258,9 @@ "input": "direct", "orig_required": true, "title": "CLIP Embed", - "ui_model_type": ["clip_embed"] + "ui_model_type": [ + "clip_embed" + ] }, "vae_model": { "anyOf": [ @@ -20099,8 +21277,12 @@ "input": "any", "orig_required": true, "title": "VAE", - "ui_model_base": ["flux"], - "ui_model_type": ["vae"] + "ui_model_base": [ + "flux" + ], + "ui_model_type": [ + "vae" + ] }, "type": { "const": "flux_model_loader", @@ -20110,8 +21292,17 @@ "type": "string" } }, - "required": ["model", "t5_encoder_model", "clip_embed_model", "type", "id"], - "tags": ["model", "flux"], + "required": [ + "model", + "t5_encoder_model", + "clip_embed_model", + "type", + "id" + ], + "tags": [ + "model", + "flux" + ], "title": "Main Model - FLUX", "type": "object", "version": "1.0.6", @@ -20153,7 +21344,10 @@ }, "max_seq_len": { "description": "The max sequence length to used for the T5 encoder. (256 for schnell transformer, 512 for dev transformer)", - "enum": [256, 512], + "enum": [ + 256, + 512 + ], "field_kind": "output", "title": "Max Seq Length", "type": "integer", @@ -20167,7 +21361,16 @@ "type": "string" } }, - "required": ["output_meta", "transformer", "clip", "t5_encoder", "vae", "max_seq_len", "type", "type"], + "required": [ + "output_meta", + "transformer", + "clip", + "t5_encoder", + "vae", + "max_seq_len", + "type", + "type" + ], "title": "FluxModelLoaderOutput", "type": "object" }, @@ -20191,7 +21394,9 @@ "description": "The mask associated with this conditioning tensor. Excluded regions should be set to False, included regions should be set to True." } }, - "required": ["conditioning"], + "required": [ + "conditioning" + ], "title": "FluxReduxConditioningField", "type": "object" }, @@ -20272,8 +21477,12 @@ "input": "any", "orig_required": true, "title": "FLUX Redux Model", - "ui_model_base": ["flux"], - "ui_model_type": ["flux_redux"] + "ui_model_base": [ + "flux" + ], + "ui_model_type": [ + "flux_redux" + ] }, "downsampling_factor": { "default": 1, @@ -20290,7 +21499,13 @@ "downsampling_function": { "default": "area", "description": "Redux Downsampling Function", - "enum": ["nearest", "bilinear", "bicubic", "area", "nearest-exact"], + "enum": [ + "nearest", + "bilinear", + "bicubic", + "area", + "nearest-exact" + ], "field_kind": "input", "input": "any", "orig_default": "area", @@ -20318,8 +21533,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["ip_adapter", "control"], + "required": [ + "type", + "id" + ], + "tags": [ + "ip_adapter", + "control" + ], "title": "FLUX Redux", "type": "object", "version": "2.1.0", @@ -20346,7 +21567,12 @@ "type": "string" } }, - "required": ["output_meta", "redux_cond", "type", "type"], + "required": [ + "output_meta", + "redux_cond", + "type", + "type" + ], "title": "FluxReduxOutput", "type": "object" }, @@ -20416,7 +21642,10 @@ "t5_max_seq_len": { "anyOf": [ { - "enum": [256, 512], + "enum": [ + 256, + 512 + ], "type": "integer" }, { @@ -20471,8 +21700,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "conditioning", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "conditioning", + "flux" + ], "title": "Prompt - FLUX", "type": "object", "version": "1.1.2", @@ -20581,8 +21817,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "image", "vae", "l2i", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "image", + "vae", + "l2i", + "flux" + ], "title": "Latents to Image - FLUX", "type": "object", "version": "1.0.2", @@ -20659,8 +21904,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "image", "vae", "i2l", "flux"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "image", + "vae", + "i2l", + "flux" + ], "title": "Image to Latents - FLUX", "type": "object", "version": "1.0.1", @@ -20670,7 +21924,11 @@ }, "FluxVariantType": { "type": "string", - "enum": ["schnell", "dev", "dev_fill"], + "enum": [ + "schnell", + "dev", + "dev_fill" + ], "title": "FluxVariantType" }, "FoundModel": { @@ -20687,7 +21945,10 @@ } }, "type": "object", - "required": ["path", "is_installed"], + "required": [ + "path", + "is_installed" + ], "title": "FoundModel" }, "FreeUConfig": { @@ -20722,7 +21983,12 @@ "type": "number" } }, - "required": ["s1", "s2", "b1", "b2"], + "required": [ + "s1", + "s2", + "b1", + "b2" + ], "title": "FreeUConfig", "type": "object" }, @@ -20829,8 +22095,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["freeu"], + "required": [ + "type", + "id" + ], + "tags": [ + "freeu" + ], "title": "Apply FreeU - SD1.5, SDXL", "type": "object", "version": "1.0.2", @@ -20921,8 +22192,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "mask" + ], "title": "Get Image Mask Bounding Box", "type": "object", "version": "1.0.0", @@ -20941,7 +22217,10 @@ "description": "Info to load text_encoder submodel" } }, - "required": ["tokenizer", "text_encoder"], + "required": [ + "tokenizer", + "text_encoder" + ], "title": "GlmEncoderField", "type": "object" }, @@ -20969,7 +22248,13 @@ "type": "string" } }, - "required": ["output_meta", "denoise_mask", "expanded_mask_area", "type", "type"], + "required": [ + "output_meta", + "denoise_mask", + "expanded_mask_area", + "type", + "type" + ], "title": "GradientMaskOutput", "type": "object" }, @@ -22023,7 +23308,10 @@ "model": { "anyOf": [ { - "enum": ["grounding-dino-tiny", "grounding-dino-base"], + "enum": [ + "grounding-dino-tiny", + "grounding-dino-base" + ], "type": "string" }, { @@ -22088,8 +23376,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "object detection"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "object detection" + ], "title": "Grounding DINO (Text Prompt Object Detection)", "type": "object", "version": "1.0.0", @@ -22193,8 +23487,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "hed", "softedge"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "hed", + "softedge" + ], "title": "HED Edge Detection", "type": "object", "version": "1.0.0", @@ -22250,13 +23551,19 @@ } }, "type": "object", - "required": ["repo_id"], + "required": [ + "repo_id" + ], "title": "HFModelSource", "description": "A HuggingFace repo_id with optional variant, sub-folder and access token.\nNote that the variant option, if not provided to the constructor, will default to fp16, which is\nwhat people (almost) always want." }, "HFTokenStatus": { "type": "string", - "enum": ["valid", "invalid", "unknown"], + "enum": [ + "valid", + "invalid", + "unknown" + ], "title": "HFTokenStatus" }, "HTTPValidationError": { @@ -22348,8 +23655,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image, controlnet"], + "required": [ + "type", + "id" + ], + "tags": [ + "image, controlnet" + ], "title": "Heuristic Resize", "type": "object", "version": "1.1.1", @@ -22420,7 +23732,10 @@ } }, "type": "object", - "required": ["name", "id"], + "required": [ + "name", + "id" + ], "title": "HuggingFaceMetadata", "description": "Extended metadata fields provided by HuggingFace." }, @@ -22450,7 +23765,10 @@ } }, "type": "object", - "required": ["urls", "is_diffusers"], + "required": [ + "urls", + "is_diffusers" + ], "title": "HuggingFaceModels" }, "IPAdapterField": { @@ -22538,7 +23856,11 @@ "description": "The bool mask associated with this IP-Adapter. Excluded regions should be set to False, included regions should be set to True." } }, - "required": ["image", "ip_adapter_model", "image_encoder_model"], + "required": [ + "image", + "ip_adapter_model", + "image_encoder_model" + ], "title": "IPAdapterField", "type": "object" }, @@ -22611,14 +23933,23 @@ "input": "any", "orig_required": true, "title": "IP-Adapter Model", - "ui_model_base": ["sd-1", "sdxl"], - "ui_model_type": ["ip_adapter"], + "ui_model_base": [ + "sd-1", + "sdxl" + ], + "ui_model_type": [ + "ip_adapter" + ], "ui_order": -1 }, "clip_vision_model": { "default": "ViT-H", "description": "CLIP Vision model to use. Overrides model settings. Mandatory for checkpoint models.", - "enum": ["ViT-H", "ViT-G", "ViT-L"], + "enum": [ + "ViT-H", + "ViT-G", + "ViT-L" + ], "field_kind": "input", "input": "any", "orig_default": "ViT-H", @@ -22650,7 +23981,13 @@ "method": { "default": "full", "description": "The method to apply the IP-Adapter", - "enum": ["full", "style", "composition", "style_strong", "style_precise"], + "enum": [ + "full", + "style", + "composition", + "style_strong", + "style_precise" + ], "field_kind": "input", "input": "any", "orig_default": "full", @@ -22706,8 +24043,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["ip_adapter", "control"], + "required": [ + "type", + "id" + ], + "tags": [ + "ip_adapter", + "control" + ], "title": "IP-Adapter - SD1.5, SDXL", "type": "object", "version": "1.5.1", @@ -22728,13 +24071,23 @@ }, "clip_vision_model": { "description": "The CLIP Vision model", - "enum": ["ViT-L", "ViT-H", "ViT-G"], + "enum": [ + "ViT-L", + "ViT-H", + "ViT-G" + ], "title": "Clip Vision Model", "type": "string" }, "method": { "description": "Method to apply IP Weights with", - "enum": ["full", "style", "composition", "style_strong", "style_precise"], + "enum": [ + "full", + "style", + "composition", + "style_strong", + "style_precise" + ], "title": "Method", "type": "string" }, @@ -22794,7 +24147,12 @@ "type": "string" } }, - "required": ["output_meta", "ip_adapter", "type", "type"], + "required": [ + "output_meta", + "ip_adapter", + "type", + "type" + ], "title": "IPAdapterOutput", "type": "object" }, @@ -23659,8 +25017,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "math", "ideal_size"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "math", + "ideal_size" + ], "title": "Ideal Size - SD1.5, SDXL", "type": "object", "version": "1.0.6", @@ -23694,7 +25059,13 @@ "type": "string" } }, - "required": ["output_meta", "width", "height", "type", "type"], + "required": [ + "output_meta", + "width", + "height", + "type", + "type" + ], "title": "IdealSizeOutput", "type": "object" }, @@ -23732,7 +25103,14 @@ "batch_group_id": { "default": "None", "description": "The ID of this batch node's group. If provided, all batch nodes in with the same ID will be 'zipped' before execution, and all nodes' collections must be of the same size.", - "enum": ["None", "Group 1", "Group 2", "Group 3", "Group 4", "Group 5"], + "enum": [ + "None", + "Group 1", + "Group 2", + "Group 3", + "Group 4", + "Group 5" + ], "field_kind": "input", "input": "direct", "orig_default": "None", @@ -23768,8 +25146,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "image", "batch", "special"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "image", + "batch", + "special" + ], "title": "Image Batch", "type": "object", "version": "1.0.0", @@ -23869,7 +25255,10 @@ "blur_type": { "default": "gaussian", "description": "The type of blur", - "enum": ["gaussian", "box"], + "enum": [ + "gaussian", + "box" + ], "field_kind": "input", "input": "any", "orig_default": "gaussian", @@ -23885,8 +25274,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "blur"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "blur" + ], "title": "Blur Image", "type": "object", "version": "1.2.2", @@ -23896,7 +25291,13 @@ }, "ImageCategory": { "type": "string", - "enum": ["general", "mask", "control", "user", "other"], + "enum": [ + "general", + "mask", + "control", + "user", + "other" + ], "title": "ImageCategory", "description": "The category of an image.\n\n- GENERAL: The image is an output, init image, or otherwise an image without a specialized purpose.\n- MASK: The image is a mask image.\n- CONTROL: The image is a ControlNet control image.\n- USER: The image is a user-provide image.\n- OTHER: The image is some other type of image with a specialized purpose. To be used by external nodes." }, @@ -23981,7 +25382,12 @@ "channel": { "default": "A", "description": "The channel to get", - "enum": ["A", "R", "G", "B"], + "enum": [ + "A", + "R", + "G", + "B" + ], "field_kind": "input", "input": "any", "orig_default": "A", @@ -23997,8 +25403,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "channel"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "channel" + ], "title": "Extract Image Channel", "type": "object", "version": "1.2.2", @@ -24148,7 +25560,10 @@ "type": "string" } }, - "required": ["type", "id"], + "required": [ + "type", + "id" + ], "tags": [ "image", "invert", @@ -24307,7 +25722,10 @@ "type": "string" } }, - "required": ["type", "id"], + "required": [ + "type", + "id" + ], "tags": [ "image", "offset", @@ -24389,8 +25807,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "image", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "image", + "collection" + ], "title": "Image Collection Primitive", "type": "object", "version": "1.0.1", @@ -24420,7 +25845,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "ImageCollectionOutput", "type": "object" }, @@ -24505,7 +25935,17 @@ "mode": { "default": "L", "description": "The mode to convert to", - "enum": ["L", "RGB", "RGBA", "CMYK", "YCbCr", "LAB", "HSV", "I", "F"], + "enum": [ + "L", + "RGB", + "RGBA", + "CMYK", + "YCbCr", + "LAB", + "HSV", + "I", + "F" + ], "field_kind": "input", "input": "any", "orig_default": "L", @@ -24521,8 +25961,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "convert"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "convert" + ], "title": "Convert Image Mode", "type": "object", "version": "1.2.2", @@ -24658,8 +26104,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "crop"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "crop" + ], "title": "Crop Image", "type": "object", "version": "1.2.2", @@ -24823,7 +26275,9 @@ } }, "type": "object", - "required": ["image_name"], + "required": [ + "image_name" + ], "title": "ImageField", "description": "An image primitive field" }, @@ -24874,8 +26328,18 @@ "type": "string" } }, - "required": ["generator", "type", "id"], - "tags": ["primitives", "board", "image", "batch", "special"], + "required": [ + "generator", + "type", + "id" + ], + "tags": [ + "primitives", + "board", + "image", + "batch", + "special" + ], "title": "Image Generator", "type": "object", "version": "1.0.0", @@ -24910,7 +26374,12 @@ "type": "string" } }, - "required": ["output_meta", "images", "type", "type"], + "required": [ + "output_meta", + "images", + "type", + "type" + ], "title": "ImageGeneratorOutput", "type": "object" }, @@ -25010,8 +26479,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "hue"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "hue" + ], "title": "Adjust Image Hue", "type": "object", "version": "1.2.2", @@ -25129,8 +26604,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "ilerp"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "ilerp" + ], "title": "Inverse Lerp Image", "type": "object", "version": "1.2.2", @@ -25192,8 +26673,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "image"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "image" + ], "title": "Image Primitive", "type": "object", "version": "1.0.2", @@ -25311,8 +26798,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "lerp"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "lerp" + ], "title": "Lerp Image", "type": "object", "version": "1.2.2", @@ -25412,8 +26905,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["conditioning"], + "required": [ + "type", + "id" + ], + "tags": [ + "conditioning" + ], "title": "Image Mask to Tensor", "type": "object", "version": "1.0.0", @@ -25522,8 +27020,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "multiply"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "multiply" + ], "title": "Multiply Images", "type": "object", "version": "1.2.2", @@ -25617,8 +27121,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "nsfw"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "nsfw" + ], "title": "Blur NSFW Image", "type": "object", "version": "1.2.3", @@ -25648,7 +27158,11 @@ } }, "type": "object", - "required": ["image_names", "starred_count", "total_count"], + "required": [ + "image_names", + "starred_count", + "total_count" + ], "title": "ImageNamesResult", "description": "Response containing ordered image names with metadata for optimistic updates." }, @@ -25761,7 +27275,10 @@ "noise_type": { "default": "gaussian", "description": "The type of noise to add", - "enum": ["gaussian", "salt_and_pepper"], + "enum": [ + "gaussian", + "salt_and_pepper" + ], "field_kind": "input", "input": "any", "orig_default": "gaussian", @@ -25810,8 +27327,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "noise"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "noise" + ], "title": "Add Image Noise", "type": "object", "version": "1.1.0", @@ -25851,7 +27374,14 @@ "type": "string" } }, - "required": ["output_meta", "image", "width", "height", "type", "type"], + "required": [ + "output_meta", + "image", + "width", + "height", + "type", + "type" + ], "title": "ImageOutput", "type": "object" }, @@ -25894,7 +27424,15 @@ "type": "string" } }, - "required": ["output_meta", "x_left", "y_top", "width", "height", "type", "type"], + "required": [ + "output_meta", + "x_left", + "y_top", + "width", + "height", + "type", + "type" + ], "title": "ImagePanelCoordinateOutput", "type": "object" }, @@ -26013,8 +27551,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "panel", "layout"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "panel", + "layout" + ], "title": "Image Panel Layout", "type": "object", "version": "1.0.0", @@ -26169,8 +27714,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "paste"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "paste" + ], "title": "Paste Image", "type": "object", "version": "1.2.2", @@ -26336,7 +27887,14 @@ "resample_mode": { "default": "bicubic", "description": "The resampling mode", - "enum": ["nearest", "box", "bilinear", "hamming", "bicubic", "lanczos"], + "enum": [ + "nearest", + "box", + "bilinear", + "hamming", + "bicubic", + "lanczos" + ], "field_kind": "input", "input": "any", "orig_default": "bicubic", @@ -26352,8 +27910,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "resize"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "resize" + ], "title": "Resize Image", "type": "object", "version": "1.2.2", @@ -26453,7 +28017,14 @@ "resample_mode": { "default": "bicubic", "description": "The resampling mode", - "enum": ["nearest", "box", "bilinear", "hamming", "bicubic", "lanczos"], + "enum": [ + "nearest", + "box", + "bilinear", + "hamming", + "bicubic", + "lanczos" + ], "field_kind": "input", "input": "any", "orig_default": "bicubic", @@ -26469,8 +28040,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "scale"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "scale" + ], "title": "Scale Image", "type": "object", "version": "1.2.2", @@ -26573,7 +28150,10 @@ "color_compensation": { "default": "None", "description": "Apply VAE scaling compensation when encoding images (reduces color drift).", - "enum": ["None", "SDXL"], + "enum": [ + "None", + "SDXL" + ], "field_kind": "input", "input": "any", "orig_default": "None", @@ -26589,8 +28169,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "image", "vae", "i2l"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "image", + "vae", + "i2l" + ], "title": "Image to Latents - SD1.5, SDXL", "type": "object", "version": "1.2.0", @@ -26611,7 +28199,10 @@ } }, "type": "object", - "required": ["image_dto", "presigned_url"], + "required": [ + "image_dto", + "presigned_url" + ], "title": "ImageUploadEntry" }, "ImageUrlsDTO": { @@ -26633,7 +28224,11 @@ } }, "type": "object", - "required": ["image_name", "image_url", "thumbnail_url"], + "required": [ + "image_name", + "image_url", + "thumbnail_url" + ], "title": "ImageUrlsDTO", "description": "The URLs for an image and its thumbnail." }, @@ -26733,8 +28328,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "watermark"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "watermark" + ], "title": "Add Invisible Watermark", "type": "object", "version": "1.2.2", @@ -26877,8 +28478,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "inpaint"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "inpaint" + ], "title": "Solid Color Infill", "type": "object", "version": "1.2.2", @@ -26978,7 +28585,14 @@ "resample_mode": { "default": "bicubic", "description": "The resampling mode", - "enum": ["nearest", "box", "bilinear", "hamming", "bicubic", "lanczos"], + "enum": [ + "nearest", + "box", + "bilinear", + "hamming", + "bicubic", + "lanczos" + ], "field_kind": "input", "input": "any", "orig_default": "bicubic", @@ -26994,8 +28608,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "inpaint"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "inpaint" + ], "title": "PatchMatch Infill", "type": "object", "version": "1.2.2", @@ -27112,8 +28732,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "inpaint"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "inpaint" + ], "title": "Tile Infill", "type": "object", "version": "1.2.3", @@ -27123,7 +28749,11 @@ }, "Input": { "description": "The type of input a field accepts.\n- `Input.Direct`: The field must have its value provided directly, when the invocation and field are instantiated.\n- `Input.Connection`: The field must have its value provided by a connection.\n- `Input.Any`: The field may have its value provided either directly or by a connection.", - "enum": ["connection", "direct", "any"], + "enum": [ + "connection", + "direct", + "any" + ], "title": "Input", "type": "string" }, @@ -27304,7 +28934,15 @@ }, "InstallStatus": { "type": "string", - "enum": ["waiting", "downloading", "downloads_done", "running", "completed", "error", "cancelled"], + "enum": [ + "waiting", + "downloading", + "downloads_done", + "running", + "completed", + "error", + "cancelled" + ], "title": "InstallStatus", "description": "State of an install job running in the background." }, @@ -27342,7 +28980,14 @@ "batch_group_id": { "default": "None", "description": "The ID of this batch node's group. If provided, all batch nodes in with the same ID will be 'zipped' before execution, and all nodes' collections must be of the same size.", - "enum": ["None", "Group 1", "Group 2", "Group 3", "Group 4", "Group 5"], + "enum": [ + "None", + "Group 1", + "Group 2", + "Group 3", + "Group 4", + "Group 5" + ], "field_kind": "input", "input": "direct", "orig_default": "None", @@ -27378,8 +29023,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "integer", "number", "batch", "special"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "integer", + "number", + "batch", + "special" + ], "title": "Integer Batch", "type": "object", "version": "1.0.0", @@ -27439,8 +29093,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "integer", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "integer", + "collection" + ], "title": "Integer Collection Primitive", "type": "object", "version": "1.0.2", @@ -27470,7 +29131,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "IntegerCollectionOutput", "type": "object" }, @@ -27521,8 +29187,18 @@ "type": "string" } }, - "required": ["generator", "type", "id"], - "tags": ["primitives", "int", "number", "batch", "special"], + "required": [ + "generator", + "type", + "id" + ], + "tags": [ + "primitives", + "int", + "number", + "batch", + "special" + ], "title": "Integer Generator", "type": "object", "version": "1.0.0", @@ -27556,7 +29232,12 @@ "type": "string" } }, - "required": ["output_meta", "integers", "type", "type"], + "required": [ + "output_meta", + "integers", + "type", + "type" + ], "title": "IntegerGeneratorOutput", "type": "object" }, @@ -27609,8 +29290,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "integer"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "integer" + ], "title": "Integer Primitive", "type": "object", "version": "1.0.1", @@ -27652,7 +29339,17 @@ "operation": { "default": "ADD", "description": "The operation to perform", - "enum": ["ADD", "SUB", "MUL", "DIV", "EXP", "MOD", "ABS", "MIN", "MAX"], + "enum": [ + "ADD", + "SUB", + "MUL", + "DIV", + "EXP", + "MOD", + "ABS", + "MIN", + "MAX" + ], "field_kind": "input", "input": "any", "orig_default": "ADD", @@ -27699,7 +29396,10 @@ "type": "string" } }, - "required": ["type", "id"], + "required": [ + "type", + "id" + ], "tags": [ "math", "integer", @@ -27739,7 +29439,12 @@ "type": "string" } }, - "required": ["output_meta", "value", "type", "type"], + "required": [ + "output_meta", + "value", + "type", + "type" + ], "title": "IntegerOutput", "type": "object" }, @@ -27797,8 +29502,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["conditioning"], + "required": [ + "type", + "id" + ], + "tags": [ + "conditioning" + ], "title": "Invert Tensor Mask", "type": "object", "version": "1.1.0", @@ -27835,7 +29545,13 @@ } }, "type": "object", - "required": ["size", "hits", "misses", "enabled", "max_size"], + "required": [ + "size", + "hits", + "misses", + "enabled", + "max_size" + ], "title": "InvocationCacheStatus" }, "InvocationCompleteEvent": { @@ -32002,7 +33718,9 @@ "type": "array", "title": "Allow Methods", "description": "Methods allowed for CORS.", - "default": ["*"] + "default": [ + "*" + ] }, "allow_headers": { "items": { @@ -32011,7 +33729,9 @@ "type": "array", "title": "Allow Headers", "description": "Headers allowed for CORS.", - "default": ["*"] + "default": [ + "*" + ] }, "ssl_certfile": { "anyOf": [ @@ -32121,18 +33841,31 @@ "type": "array", "title": "Log Handlers", "description": "Log handler. Valid options are \"console\", \"file=\", \"syslog=path|address:host:port\", \"http=\".", - "default": ["console"] + "default": [ + "console" + ] }, "log_format": { "type": "string", - "enum": ["plain", "color", "syslog", "legacy"], + "enum": [ + "plain", + "color", + "syslog", + "legacy" + ], "title": "Log Format", "description": "Log format. Use \"plain\" for text-only, \"color\" for colorized output, \"legacy\" for 2.3-style logging and \"syslog\" for syslog-style.", "default": "color" }, "log_level": { "type": "string", - "enum": ["debug", "info", "warning", "error", "critical"], + "enum": [ + "debug", + "info", + "warning", + "error", + "critical" + ], "title": "Log Level", "description": "Emit logging messages at this level or higher.", "default": "info" @@ -32145,7 +33878,13 @@ }, "log_level_network": { "type": "string", - "enum": ["debug", "info", "warning", "error", "critical"], + "enum": [ + "debug", + "info", + "warning", + "error", + "critical" + ], "title": "Log Level Network", "description": "Log level for network-related messages. 'info' and 'debug' are very verbose.", "default": "warning" @@ -32290,7 +34029,12 @@ }, "precision": { "type": "string", - "enum": ["auto", "float16", "bfloat16", "float32"], + "enum": [ + "auto", + "float16", + "bfloat16", + "float32" + ], "title": "Precision", "description": "Floating point precision. `float16` will consume half the memory of `float32` but produce slightly lower-quality images. The `auto` setting will guess the proper precision based on your video card and operating system.", "default": "auto" @@ -32303,13 +34047,31 @@ }, "attention_type": { "type": "string", - "enum": ["auto", "normal", "xformers", "sliced", "torch-sdp"], + "enum": [ + "auto", + "normal", + "xformers", + "sliced", + "torch-sdp" + ], "title": "Attention Type", "description": "Attention type.", "default": "auto" }, "attention_slice_size": { - "enum": ["auto", "balanced", "max", 1, 2, 3, 4, 5, 6, 7, 8], + "enum": [ + "auto", + "balanced", + "max", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], "title": "Attention Slice Size", "description": "Slice size, valid when attention_type==\"sliced\".", "default": "auto" @@ -32456,7 +34218,10 @@ } }, "type": "object", - "required": ["set_fields", "config"], + "required": [ + "set_fields", + "config" + ], "title": "InvokeAIAppConfigWithSetFields", "description": "InvokeAI App Config with model fields set" }, @@ -32605,8 +34370,21 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "hue", "oklab", "cielab", "uplab", "lch", "hsv", "hsl", "lab"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "hue", + "oklab", + "cielab", + "uplab", + "lch", + "hsv", + "hsl", + "lab" + ], "title": "Adjust Image Hue Plus", "type": "object", "version": "1.2.0", @@ -32700,8 +34478,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "channel", "mask", "cielab", "lab"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "channel", + "mask", + "cielab", + "lab" + ], "title": "Equivalent Achromatic Lightness", "type": "object", "version": "1.2.0", @@ -32894,7 +34681,16 @@ "color_space": { "default": "RGB", "description": "Available color spaces for blend computations", - "enum": ["RGB", "Linear RGB", "HSL (RGB)", "HSV (RGB)", "Okhsl", "Okhsv", "Oklch (Oklab)", "LCh (CIELab)"], + "enum": [ + "RGB", + "Linear RGB", + "HSL (RGB)", + "HSV (RGB)", + "Okhsl", + "Okhsv", + "Oklch (Oklab)", + "LCh (CIELab)" + ], "field_kind": "input", "input": "any", "orig_default": "RGB", @@ -32934,8 +34730,19 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "blend", "layer", "alpha", "composite", "dodge", "burn"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "blend", + "layer", + "alpha", + "composite", + "dodge", + "burn" + ], "title": "Image Layer Blend", "type": "object", "version": "1.2.0", @@ -33105,8 +34912,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "compose", "chroma", "key"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "compose", + "chroma", + "key" + ], "title": "Image Compositor", "type": "object", "version": "1.2.0", @@ -33211,7 +35026,10 @@ "mode": { "default": "Dilate", "description": "How to operate on the image", - "enum": ["Dilate", "Erode"], + "enum": [ + "Dilate", + "Erode" + ], "field_kind": "input", "input": "any", "orig_default": "Dilate", @@ -33227,8 +35045,19 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask", "dilate", "erode", "expand", "contract", "mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask", + "dilate", + "erode", + "expand", + "contract", + "mask" + ], "title": "Image Dilate or Erode", "type": "object", "version": "1.3.0", @@ -33376,8 +35205,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["enhance", "image"], + "required": [ + "type", + "id" + ], + "tags": [ + "enhance", + "image" + ], "title": "Enhance Image", "type": "object", "version": "1.2.1", @@ -33521,8 +35356,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask", "value", "threshold"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask", + "value", + "threshold" + ], "title": "Image Value Thresholds", "type": "object", "version": "1.2.0", @@ -33547,7 +35390,10 @@ } }, "type": "object", - "required": ["item_ids", "total_count"], + "required": [ + "item_ids", + "total_count" + ], "title": "ItemIdsResult", "description": "Response containing ordered item ids with metadata for optimistic updates." }, @@ -33612,7 +35458,10 @@ "type": "string" } }, - "required": ["type", "id"], + "required": [ + "type", + "id" + ], "title": "IterateInvocation", "type": "object", "version": "1.1.0", @@ -33653,7 +35502,14 @@ "type": "string" } }, - "required": ["output_meta", "item", "index", "total", "type", "type"], + "required": [ + "output_meta", + "item", + "index", + "total", + "type", + "type" + ], "title": "IterateInvocationOutput", "type": "object" }, @@ -33744,8 +35600,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "inpaint"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "inpaint" + ], "title": "LaMa Infill", "type": "object", "version": "1.2.2", @@ -33811,8 +35673,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "latents", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "latents", + "collection" + ], "title": "Latents Collection Primitive", "type": "object", "version": "1.0.1", @@ -33842,7 +35711,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "LatentsCollectionOutput", "type": "object" }, @@ -33868,7 +35742,9 @@ "title": "Seed" } }, - "required": ["latents_name"], + "required": [ + "latents_name" + ], "title": "LatentsField", "type": "object" }, @@ -33926,8 +35802,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "latents"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "latents" + ], "title": "Latents Primitive", "type": "object", "version": "1.0.2", @@ -33973,7 +35855,15 @@ "ui_hidden": false } }, - "required": ["output_meta", "metadata", "type", "latents", "width", "height", "type"], + "required": [ + "output_meta", + "metadata", + "type", + "latents", + "width", + "height", + "type" + ], "title": "LatentsMetaOutput", "type": "object" }, @@ -34009,7 +35899,14 @@ "type": "string" } }, - "required": ["output_meta", "latents", "width", "height", "type", "type"], + "required": [ + "output_meta", + "latents", + "width", + "height", + "type", + "type" + ], "title": "LatentsOutput", "type": "object" }, @@ -34145,8 +36042,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "image", "vae", "l2i"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "image", + "vae", + "l2i" + ], "title": "Latents to Image - SD1.5, SDXL", "type": "object", "version": "1.3.2", @@ -34240,8 +36145,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "lineart"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "lineart" + ], "title": "Lineart Anime Edge Detection", "type": "object", "version": "1.0.0", @@ -34345,8 +36256,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "lineart"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "lineart" + ], "title": "Lineart Edge Detection", "type": "object", "version": "1.0.0", @@ -34439,7 +36356,9 @@ "input": "any", "orig_required": true, "title": "LLaVA Model Type", - "ui_model_type": ["llava_onevision"] + "ui_model_type": [ + "llava_onevision" + ] }, "type": { "const": "llava_onevision_vllm", @@ -34449,8 +36368,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["vllm"], + "required": [ + "type", + "id" + ], + "tags": [ + "vllm" + ], "title": "LLaVA OneVision VLLM", "type": "object", "version": "1.0.0", @@ -34669,8 +36593,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["model"], + "required": [ + "type", + "id" + ], + "tags": [ + "model" + ], "title": "Apply LoRA Collection - SD1.5", "type": "object", "version": "1.1.2", @@ -34690,7 +36619,10 @@ "type": "number" } }, - "required": ["lora", "weight"], + "required": [ + "lora", + "weight" + ], "title": "LoRAField", "type": "object" }, @@ -34740,8 +36672,12 @@ "input": "any", "orig_required": true, "title": "LoRA", - "ui_model_base": ["sd-1"], - "ui_model_type": ["lora"] + "ui_model_base": [ + "sd-1" + ], + "ui_model_type": [ + "lora" + ] }, "weight": { "default": 0.75, @@ -34795,8 +36731,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["model"], + "required": [ + "type", + "id" + ], + "tags": [ + "model" + ], "title": "Apply LoRA - SD1.5", "type": "object", "version": "1.0.4", @@ -34846,7 +36787,13 @@ "type": "string" } }, - "required": ["output_meta", "unet", "clip", "type", "type"], + "required": [ + "output_meta", + "unet", + "clip", + "type", + "type" + ], "title": "LoRALoaderOutput", "type": "object" }, @@ -34863,7 +36810,10 @@ "type": "number" } }, - "required": ["model", "weight"], + "required": [ + "model", + "weight" + ], "title": "LoRAMetadataField", "type": "object" }, @@ -34913,7 +36863,9 @@ "input": "any", "orig_required": true, "title": "LoRA", - "ui_model_type": ["lora"] + "ui_model_type": [ + "lora" + ] }, "weight": { "default": 0.75, @@ -34933,8 +36885,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["model"], + "required": [ + "type", + "id" + ], + "tags": [ + "model" + ], "title": "Select LoRA", "type": "object", "version": "1.0.3", @@ -34961,7 +36918,12 @@ "type": "string" } }, - "required": ["output_meta", "lora", "type", "type"], + "required": [ + "output_meta", + "lora", + "type", + "type" + ], "title": "LoRASelectorOutput", "type": "object" }, @@ -36657,13 +38619,22 @@ } }, "type": "object", - "required": ["path"], + "required": [ + "path" + ], "title": "LocalModelSource", "description": "A local file or directory path." }, "LogLevel": { "type": "integer", - "enum": [0, 10, 20, 30, 40, 50], + "enum": [ + 0, + 10, + 20, + 30, + 40, + 50 + ], "title": "LogLevel" }, "LoraModelDefaultSettings": { @@ -36718,7 +38689,12 @@ "type": "string" } }, - "required": ["output_meta", "control_list", "type", "type"], + "required": [ + "output_meta", + "control_list", + "type", + "type" + ], "title": "MDControlListOutput", "type": "object" }, @@ -36753,7 +38729,12 @@ "type": "string" } }, - "required": ["output_meta", "ip_adapter_list", "type", "type"], + "required": [ + "output_meta", + "ip_adapter_list", + "type", + "type" + ], "title": "MDIPAdapterListOutput", "type": "object" }, @@ -36788,7 +38769,12 @@ "type": "string" } }, - "required": ["output_meta", "t2i_adapter_list", "type", "type"], + "required": [ + "output_meta", + "t2i_adapter_list", + "type", + "type" + ], "title": "MDT2IAdapterListOutput", "type": "object" }, @@ -36900,8 +38886,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "mlsd", "edge"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "mlsd", + "edge" + ], "title": "MLSD Detection", "type": "object", "version": "1.0.0", @@ -36927,7 +38920,10 @@ "anyOf": [ { "type": "string", - "enum": ["fp16", "fp32"] + "enum": [ + "fp16", + "fp32" + ] }, { "type": "null" @@ -37060,6 +39056,18 @@ ], "title": "Guidance", "description": "Default Guidance for this model" + }, + "cpu_only": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Cpu Only", + "description": "Whether this model should run on CPU only" } }, "additionalProperties": false, @@ -37111,8 +39119,13 @@ "field_kind": "input", "input": "any", "orig_required": true, - "ui_model_base": ["sd-1", "sd-2"], - "ui_model_type": ["main"] + "ui_model_base": [ + "sd-1", + "sd-2" + ], + "ui_model_type": [ + "main" + ] }, "type": { "const": "main_model_loader", @@ -37122,8 +39135,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["model"], + "required": [ + "type", + "id" + ], + "tags": [ + "model" + ], "title": "Main Model - SD1.5, SD2", "type": "object", "version": "1.0.4", @@ -39541,8 +41559,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask", "multiply"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask", + "multiply" + ], "title": "Combine Masks", "type": "object", "version": "1.2.2", @@ -39700,8 +41725,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask", "inpaint"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask", + "inpaint" + ], "title": "Mask Edge", "type": "object", "version": "1.2.2", @@ -39805,8 +41837,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask" + ], "title": "Mask from Alpha", "type": "object", "version": "1.2.2", @@ -39935,8 +41973,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "mask", "id"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "mask", + "id" + ], "title": "Mask from Segmented Image", "type": "object", "version": "1.0.1", @@ -39976,7 +42021,14 @@ "type": "string" } }, - "required": ["output_meta", "mask", "width", "height", "type", "type"], + "required": [ + "output_meta", + "mask", + "width", + "height", + "type", + "type" + ], "title": "MaskOutput", "type": "object" }, @@ -40066,8 +42118,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "mask" + ], "title": "Tensor Mask to Image", "type": "object", "version": "1.1.0", @@ -40184,8 +42241,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "face"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "face" + ], "title": "MediaPipe Face Detection", "type": "object", "version": "1.0.0", @@ -40251,8 +42314,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata Merge", "type": "object", "version": "1.0.1", @@ -40345,7 +42413,10 @@ "blend_mode": { "default": "Seam", "description": "blending type Linear or Seam", - "enum": ["Linear", "Seam"], + "enum": [ + "Linear", + "Seam" + ], "field_kind": "input", "input": "direct", "orig_default": "Seam", @@ -40372,8 +42443,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["tiles"], + "required": [ + "type", + "id" + ], + "tags": [ + "tiles" + ], "title": "Merge Tiles to Image", "type": "object", "version": "1.1.1", @@ -40457,8 +42533,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata Field Extractor", "type": "object", "version": "1.0.0", @@ -40520,8 +42601,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata From Image", "type": "object", "version": "1.0.1", @@ -40590,8 +42676,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata", "type": "object", "version": "1.0.1", @@ -40611,7 +42702,10 @@ "title": "Value" } }, - "required": ["label", "value"], + "required": [ + "label", + "value" + ], "title": "MetadataItemField", "type": "object" }, @@ -40685,8 +42779,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata Item", "type": "object", "version": "1.0.1", @@ -40813,8 +42912,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata Item Linked", "type": "object", "version": "1.0.1", @@ -40840,7 +42944,12 @@ "type": "string" } }, - "required": ["output_meta", "item", "type", "type"], + "required": [ + "output_meta", + "item", + "type", + "type" + ], "title": "MetadataItemOutput", "type": "object" }, @@ -40861,7 +42970,12 @@ "type": "string" } }, - "required": ["output_meta", "metadata", "type", "type"], + "required": [ + "output_meta", + "metadata", + "type", + "type" + ], "title": "MetadataOutput", "type": "object" }, @@ -40915,7 +43029,11 @@ "label": { "default": "* CUSTOM LABEL *", "description": "Label for this metadata item", - "enum": ["* CUSTOM LABEL *", "seamless_x", "seamless_y"], + "enum": [ + "* CUSTOM LABEL *", + "seamless_x", + "seamless_y" + ], "field_kind": "input", "input": "direct", "orig_default": "* CUSTOM LABEL *", @@ -40967,8 +43085,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To Bool Collection", "type": "object", "version": "1.0.0", @@ -41026,7 +43149,11 @@ "label": { "default": "* CUSTOM LABEL *", "description": "Label for this metadata item", - "enum": ["* CUSTOM LABEL *", "seamless_x", "seamless_y"], + "enum": [ + "* CUSTOM LABEL *", + "seamless_x", + "seamless_y" + ], "field_kind": "input", "input": "direct", "orig_default": "* CUSTOM LABEL *", @@ -41075,8 +43202,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To Bool", "type": "object", "version": "1.0.0", @@ -41161,8 +43293,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To ControlNets", "type": "object", "version": "1.2.0", @@ -41220,7 +43357,12 @@ "label": { "default": "* CUSTOM LABEL *", "description": "Label for this metadata item", - "enum": ["* CUSTOM LABEL *", "cfg_scale", "cfg_rescale_multiplier", "guidance"], + "enum": [ + "* CUSTOM LABEL *", + "cfg_scale", + "cfg_rescale_multiplier", + "guidance" + ], "field_kind": "input", "input": "direct", "orig_default": "* CUSTOM LABEL *", @@ -41272,8 +43414,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To Float Collection", "type": "object", "version": "1.0.0", @@ -41331,7 +43478,12 @@ "label": { "default": "* CUSTOM LABEL *", "description": "Label for this metadata item", - "enum": ["* CUSTOM LABEL *", "cfg_scale", "cfg_rescale_multiplier", "guidance"], + "enum": [ + "* CUSTOM LABEL *", + "cfg_scale", + "cfg_rescale_multiplier", + "guidance" + ], "field_kind": "input", "input": "direct", "orig_default": "* CUSTOM LABEL *", @@ -41380,8 +43532,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To Float", "type": "object", "version": "1.1.0", @@ -41467,8 +43624,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To IP-Adapters", "type": "object", "version": "1.2.0", @@ -41587,8 +43749,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To Integer Collection", "type": "object", "version": "1.0.0", @@ -41704,8 +43871,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To Integer", "type": "object", "version": "1.0.0", @@ -41801,8 +43973,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To LoRA Collection", "type": "object", "version": "1.1.0", @@ -41832,7 +44009,12 @@ "type": "string" } }, - "required": ["output_meta", "lora", "type", "type"], + "required": [ + "output_meta", + "lora", + "type", + "type" + ], "title": "MetadataToLorasCollectionOutput", "type": "object" }, @@ -41925,8 +44107,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To LoRAs", "type": "object", "version": "1.1.1", @@ -41984,7 +44171,10 @@ "label": { "default": "model", "description": "Label for this metadata item", - "enum": ["* CUSTOM LABEL *", "model"], + "enum": [ + "* CUSTOM LABEL *", + "model" + ], "field_kind": "input", "input": "direct", "orig_default": "model", @@ -42023,7 +44213,9 @@ "field_kind": "input", "input": "any", "orig_required": true, - "ui_model_type": ["main"] + "ui_model_type": [ + "main" + ] }, "type": { "const": "metadata_to_model", @@ -42033,8 +44225,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To Model", "type": "object", "version": "1.3.0", @@ -42089,7 +44286,16 @@ "type": "string" } }, - "required": ["output_meta", "model", "name", "unet", "vae", "clip", "type", "type"], + "required": [ + "output_meta", + "model", + "name", + "unet", + "vae", + "clip", + "type", + "type" + ], "title": "MetadataToModelOutput", "type": "object" }, @@ -42199,8 +44405,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To SDXL LoRAs", "type": "object", "version": "1.1.1", @@ -42258,7 +44469,10 @@ "label": { "default": "model", "description": "Label for this metadata item", - "enum": ["* CUSTOM LABEL *", "model"], + "enum": [ + "* CUSTOM LABEL *", + "model" + ], "field_kind": "input", "input": "direct", "orig_default": "model", @@ -42297,8 +44511,12 @@ "field_kind": "input", "input": "any", "orig_required": true, - "ui_model_base": ["sdxl"], - "ui_model_type": ["main"] + "ui_model_base": [ + "sdxl" + ], + "ui_model_type": [ + "main" + ] }, "type": { "const": "metadata_to_sdxl_model", @@ -42308,8 +44526,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To SDXL Model", "type": "object", "version": "1.3.0", @@ -42371,7 +44594,17 @@ "type": "string" } }, - "required": ["output_meta", "model", "name", "unet", "clip", "clip2", "vae", "type", "type"], + "required": [ + "output_meta", + "model", + "name", + "unet", + "clip", + "clip2", + "vae", + "type", + "type" + ], "title": "MetadataToSDXLModelOutput", "type": "object" }, @@ -42425,7 +44658,10 @@ "label": { "default": "scheduler", "description": "Label for this metadata item", - "enum": ["* CUSTOM LABEL *", "scheduler"], + "enum": [ + "* CUSTOM LABEL *", + "scheduler" + ], "field_kind": "input", "input": "direct", "orig_default": "scheduler", @@ -42501,8 +44737,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To Scheduler", "type": "object", "version": "1.0.1", @@ -42618,8 +44859,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To String Collection", "type": "object", "version": "1.0.0", @@ -42732,8 +44978,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To String", "type": "object", "version": "1.0.0", @@ -42819,8 +45070,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To T2I-Adapters", "type": "object", "version": "1.2.0", @@ -42878,7 +45134,10 @@ "label": { "default": "vae", "description": "Label for this metadata item", - "enum": ["* CUSTOM LABEL *", "vae"], + "enum": [ + "* CUSTOM LABEL *", + "vae" + ], "field_kind": "input", "input": "direct", "orig_default": "vae", @@ -42926,8 +45185,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["metadata"], + "required": [ + "type", + "id" + ], + "tags": [ + "metadata" + ], "title": "Metadata To VAE", "type": "object", "version": "1.2.1", @@ -42995,7 +45259,13 @@ "description": "The submodel to load, if this is a main model" } }, - "required": ["key", "hash", "name", "base", "type"], + "required": [ + "key", + "hash", + "name", + "base", + "type" + ], "title": "ModelIdentifierField", "type": "object" }, @@ -43054,8 +45324,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["model"], + "required": [ + "type", + "id" + ], + "tags": [ + "model" + ], "title": "Any Model", "type": "object", "version": "1.0.1", @@ -43082,7 +45357,12 @@ "type": "string" } }, - "required": ["output_meta", "model", "type", "type"], + "required": [ + "output_meta", + "model", + "type", + "type" + ], "title": "ModelIdentifierOutput", "type": "object" }, @@ -43123,7 +45403,11 @@ "title": "Source" } }, - "required": ["timestamp", "id", "source"], + "required": [ + "timestamp", + "id", + "source" + ], "title": "ModelInstallCancelledEvent", "type": "object" }, @@ -43391,7 +45675,14 @@ "title": "Config" } }, - "required": ["timestamp", "id", "source", "key", "total_bytes", "config"], + "required": [ + "timestamp", + "id", + "source", + "key", + "total_bytes", + "config" + ], "title": "ModelInstallCompleteEvent", "type": "object" }, @@ -43465,7 +45756,15 @@ "type": "array" } }, - "required": ["timestamp", "id", "source", "local_path", "bytes", "total_bytes", "parts"], + "required": [ + "timestamp", + "id", + "source", + "local_path", + "bytes", + "total_bytes", + "parts" + ], "title": "ModelInstallDownloadProgressEvent", "type": "object" }, @@ -43539,7 +45838,15 @@ "type": "array" } }, - "required": ["timestamp", "id", "source", "local_path", "bytes", "total_bytes", "parts"], + "required": [ + "timestamp", + "id", + "source", + "local_path", + "bytes", + "total_bytes", + "parts" + ], "title": "ModelInstallDownloadStartedEvent", "type": "object" }, @@ -43580,7 +45887,11 @@ "title": "Source" } }, - "required": ["timestamp", "id", "source"], + "required": [ + "timestamp", + "id", + "source" + ], "title": "ModelInstallDownloadsCompleteEvent", "type": "object" }, @@ -43631,7 +45942,13 @@ "type": "string" } }, - "required": ["timestamp", "id", "source", "error_type", "error"], + "required": [ + "timestamp", + "id", + "source", + "error_type", + "error" + ], "title": "ModelInstallErrorEvent", "type": "object" }, @@ -43988,7 +46305,11 @@ } }, "type": "object", - "required": ["id", "source", "local_path"], + "required": [ + "id", + "source", + "local_path" + ], "title": "ModelInstallJob", "description": "Object that tracks the current status of an install request." }, @@ -44029,7 +46350,11 @@ "title": "Source" } }, - "required": ["timestamp", "id", "source"], + "required": [ + "timestamp", + "id", + "source" + ], "title": "ModelInstallStartedEvent", "type": "object" }, @@ -44264,7 +46589,11 @@ "description": "The submodel type, if any" } }, - "required": ["timestamp", "config", "submodel_type"], + "required": [ + "timestamp", + "config", + "submodel_type" + ], "title": "ModelLoadCompleteEvent", "type": "object" }, @@ -44499,7 +46828,11 @@ "description": "The submodel type, if any" } }, - "required": ["timestamp", "config", "submodel_type"], + "required": [ + "timestamp", + "config", + "submodel_type" + ], "title": "ModelLoadStartedEvent", "type": "object" }, @@ -44536,7 +46869,14 @@ "ui_hidden": false } }, - "required": ["output_meta", "vae", "type", "clip", "unet", "type"], + "required": [ + "output_meta", + "vae", + "type", + "clip", + "unet", + "type" + ], "title": "ModelLoaderOutput", "type": "object" }, @@ -44785,18 +47125,25 @@ "title": "Model Keys", "description": "List of model keys to fetch related models for", "examples": [ - ["aa3b247f-90c9-4416-bfcd-aeaa57a5339e", "ac32b914-10ab-496e-a24a-3068724b9c35"], + [ + "aa3b247f-90c9-4416-bfcd-aeaa57a5339e", + "ac32b914-10ab-496e-a24a-3068724b9c35" + ], [ "b1c2d3e4-f5a6-7890-abcd-ef1234567890", "12345678-90ab-cdef-1234-567890abcdef", "fedcba98-7654-3210-fedc-ba9876543210" ], - ["3bb7c0eb-b6c8-469c-ad8c-4d69c06075e4"] + [ + "3bb7c0eb-b6c8-469c-ad8c-4d69c06075e4" + ] ] } }, "type": "object", - "required": ["model_keys"], + "required": [ + "model_keys" + ], "title": "ModelRelationshipBatchRequest" }, "ModelRelationshipCreateRequest": { @@ -44829,18 +47176,32 @@ } }, "type": "object", - "required": ["model_key_1", "model_key_2"], + "required": [ + "model_key_1", + "model_key_2" + ], "title": "ModelRelationshipCreateRequest" }, "ModelRepoVariant": { "type": "string", - "enum": ["", "fp16", "fp32", "onnx", "openvino", "flax"], + "enum": [ + "", + "fp16", + "fp32", + "onnx", + "openvino", + "flax" + ], "title": "ModelRepoVariant", "description": "Various hugging face variants on the diffusers format." }, "ModelSourceType": { "type": "string", - "enum": ["path", "url", "hf_repo_id"], + "enum": [ + "path", + "url", + "hf_repo_id" + ], "title": "ModelSourceType", "description": "Model source type." }, @@ -44871,7 +47232,11 @@ }, "ModelVariantType": { "type": "string", - "enum": ["normal", "inpaint", "depth"], + "enum": [ + "normal", + "inpaint", + "depth" + ], "title": "ModelVariantType", "description": "Variant type." }, @@ -45091,7 +47456,9 @@ } }, "type": "object", - "required": ["models"], + "required": [ + "models" + ], "title": "ModelsList", "description": "Return list of configs." }, @@ -45154,8 +47521,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "multiply"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "multiply" + ], "title": "Multiply Integers", "type": "object", "version": "1.0.1", @@ -45195,7 +47568,11 @@ } }, "type": "object", - "required": ["node_path", "field_name", "value"], + "required": [ + "node_path", + "field_name", + "value" + ], "title": "NodeFieldValue" }, "NoiseInvocation": { @@ -45283,8 +47660,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "noise"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "noise" + ], "title": "Create Latent Noise", "type": "object", "version": "1.0.3", @@ -45324,7 +47707,14 @@ "type": "string" } }, - "required": ["output_meta", "noise", "width", "height", "type", "type"], + "required": [ + "output_meta", + "noise", + "width", + "height", + "type", + "type" + ], "title": "NoiseOutput", "type": "object" }, @@ -45414,8 +47804,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "normal"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "normal" + ], "title": "Normal Map", "type": "object", "version": "1.0.0", @@ -45450,7 +47846,12 @@ } }, "type": "object", - "required": ["limit", "offset", "total", "items"], + "required": [ + "limit", + "offset", + "total", + "items" + ], "title": "OffsetPaginatedResults[BoardDTO]" }, "OffsetPaginatedResults_ImageDTO_": { @@ -45480,7 +47881,12 @@ } }, "type": "object", - "required": ["limit", "offset", "total", "items"], + "required": [ + "limit", + "offset", + "total", + "items" + ], "title": "OffsetPaginatedResults[ImageDTO]" }, "OutputFieldJSONSchemaExtra": { @@ -45518,7 +47924,12 @@ "default": null } }, - "required": ["field_kind", "ui_hidden", "ui_order", "ui_type"], + "required": [ + "field_kind", + "ui_hidden", + "ui_order", + "ui_type" + ], "title": "OutputFieldJSONSchemaExtra", "type": "object" }, @@ -45554,7 +47965,13 @@ } }, "type": "object", - "required": ["page", "pages", "per_page", "total", "items"], + "required": [ + "page", + "pages", + "per_page", + "total", + "items" + ], "title": "PaginatedResults[WorkflowRecordListItemWithThumbnailDTO]" }, "PairTileImageInvocation": { @@ -45626,8 +48043,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["tiles"], + "required": [ + "type", + "id" + ], + "tags": [ + "tiles" + ], "title": "Pair Tile with Image", "type": "object", "version": "1.0.1", @@ -45652,7 +48074,12 @@ "type": "string" } }, - "required": ["output_meta", "tile_with_image", "type", "type"], + "required": [ + "output_meta", + "tile_with_image", + "type", + "type" + ], "title": "PairTileImageOutput", "type": "object" }, @@ -45772,8 +48199,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "crop"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "crop" + ], "title": "Paste Image into Bounding Box", "type": "object", "version": "1.0.0", @@ -45887,8 +48320,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["controlnet", "edge"], + "required": [ + "type", + "id" + ], + "tags": [ + "controlnet", + "edge" + ], "title": "PiDiNet Edge Detection", "type": "object", "version": "1.0.0", @@ -45911,12 +48350,18 @@ }, "additionalProperties": false, "type": "object", - "required": ["positive_prompt", "negative_prompt"], + "required": [ + "positive_prompt", + "negative_prompt" + ], "title": "PresetData" }, "PresetType": { "type": "string", - "enum": ["user", "default"], + "enum": [ + "user", + "default" + ], "title": "PresetType" }, "ProgressImage": { @@ -45940,7 +48385,11 @@ "type": "string" } }, - "required": ["width", "height", "dataURL"], + "required": [ + "width", + "height", + "dataURL" + ], "title": "ProgressImage", "type": "object" }, @@ -46057,8 +48506,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "file"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "file" + ], "title": "Prompts from File", "type": "object", "version": "1.0.2", @@ -46075,7 +48530,9 @@ } }, "type": "object", - "required": ["deleted"], + "required": [ + "deleted" + ], "title": "PruneResult", "description": "Result of pruning the session queue" }, @@ -46093,7 +48550,10 @@ "type": "string" } }, - "required": ["timestamp", "queue_id"], + "required": [ + "timestamp", + "queue_id" + ], "title": "QueueClearedEvent", "type": "object" }, @@ -46148,7 +48608,13 @@ }, "status": { "description": "The new status of the queue item", - "enum": ["pending", "in_progress", "completed", "failed", "canceled"], + "enum": [ + "pending", + "in_progress", + "completed", + "failed", + "canceled" + ], "title": "Status", "type": "string" }, @@ -46285,7 +48751,11 @@ "type": "array" } }, - "required": ["timestamp", "queue_id", "retried_item_ids"], + "required": [ + "timestamp", + "queue_id", + "retried_item_ids" + ], "title": "QueueItemsRetriedEvent", "type": "object" }, @@ -46309,7 +48779,10 @@ "type": "array" } }, - "required": ["tokenizer", "text_encoder"], + "required": [ + "tokenizer", + "text_encoder" + ], "title": "Qwen3EncoderField", "type": "object" }, @@ -46402,6 +48875,18 @@ "const": "qwen3_encoder", "title": "Format", "default": "qwen3_encoder" + }, + "cpu_only": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Cpu Only", + "description": "Whether this model should run on CPU only" } }, "type": "object", @@ -46492,8 +48977,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "float", "random"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "float", + "random" + ], "title": "Random Float", "type": "object", "version": "1.0.1", @@ -46560,8 +49052,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "random"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "random" + ], "title": "Random Integer", "type": "object", "version": "1.0.1", @@ -46650,8 +49148,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["range", "integer", "random", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "range", + "integer", + "random", + "collection" + ], "title": "Random Range", "type": "object", "version": "1.0.1", @@ -46728,8 +49234,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["collection", "integer", "range"], + "required": [ + "type", + "id" + ], + "tags": [ + "collection", + "integer", + "range" + ], "title": "Integer Range", "type": "object", "version": "1.0.0", @@ -46807,8 +49320,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["collection", "integer", "size", "range"], + "required": [ + "type", + "id" + ], + "tags": [ + "collection", + "integer", + "size", + "range" + ], "title": "Integer Range of Size", "type": "object", "version": "1.0.0", @@ -46967,8 +49488,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["conditioning"], + "required": [ + "type", + "id" + ], + "tags": [ + "conditioning" + ], "title": "Create Rectangle Mask", "type": "object", "version": "1.0.1", @@ -47018,7 +49544,10 @@ } }, "type": "object", - "required": ["url", "path"], + "required": [ + "url", + "path" + ], "title": "RemoteModelFile", "description": "Information about a downloadable file that forms part of a model." }, @@ -47042,7 +49571,10 @@ } }, "type": "object", - "required": ["affected_boards", "removed_images"], + "required": [ + "affected_boards", + "removed_images" + ], "title": "RemoveImagesFromBoardResult" }, "ResizeLatentsInvocation": { @@ -47130,7 +49662,15 @@ "mode": { "default": "bilinear", "description": "Interpolation mode", - "enum": ["nearest", "linear", "bilinear", "bicubic", "trilinear", "area", "nearest-exact"], + "enum": [ + "nearest", + "linear", + "bilinear", + "bicubic", + "trilinear", + "area", + "nearest-exact" + ], "field_kind": "input", "input": "any", "orig_default": "bilinear", @@ -47156,8 +49696,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "resize"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "resize" + ], "title": "Resize Latents", "type": "object", "version": "1.0.2", @@ -47167,7 +49713,10 @@ }, "ResourceOrigin": { "type": "string", - "enum": ["internal", "external"], + "enum": [ + "internal", + "external" + ], "title": "ResourceOrigin", "description": "The origin of a resource (eg image).\n\n- INTERNAL: The resource was created by the application.\n- EXTERNAL: The resource was not created by the application.\nThis may be a user-initiated upload, or an internal application upload (eg Canvas init image)." }, @@ -47188,7 +49737,10 @@ } }, "type": "object", - "required": ["queue_id", "retried_item_ids"], + "required": [ + "queue_id", + "retried_item_ids" + ], "title": "RetryItemsResult" }, "RoundInvocation": { @@ -47250,8 +49802,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "round"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "round" + ], "title": "Round Float", "type": "object", "version": "1.0.1", @@ -47276,12 +49834,20 @@ "description": "The label of the point" } }, - "required": ["x", "y", "label"], + "required": [ + "x", + "y", + "label" + ], "title": "SAMPoint", "type": "object" }, "SAMPointLabel": { - "enum": [-1, 0, 1], + "enum": [ + -1, + 0, + 1 + ], "title": "SAMPointLabel", "type": "integer" }, @@ -47297,7 +49863,9 @@ "type": "array" } }, - "required": ["points"], + "required": [ + "points" + ], "title": "SAMPointsField", "type": "object" }, @@ -47310,7 +49878,9 @@ "type": "string" } }, - "required": ["conditioning_name"], + "required": [ + "conditioning_name" + ], "title": "SD3ConditioningField", "type": "object" }, @@ -47332,7 +49902,12 @@ "type": "string" } }, - "required": ["output_meta", "conditioning", "type", "type"], + "required": [ + "output_meta", + "conditioning", + "type", + "type" + ], "title": "SD3ConditioningOutput", "type": "object" }, @@ -47572,8 +50147,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "sd3"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "sd3" + ], "title": "Denoise - SD3", "type": "object", "version": "1.1.1", @@ -47682,8 +50263,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "latents", "vae", "i2l", "sd3"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "latents", + "vae", + "i2l", + "sd3" + ], "title": "Image to Latents - SD3", "type": "object", "version": "1.0.1", @@ -47792,8 +50382,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "image", "vae", "l2i", "sd3"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "image", + "vae", + "l2i", + "sd3" + ], "title": "Latents to Image - SD3", "type": "object", "version": "1.3.2", @@ -47970,8 +50569,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["sdxl", "compel", "prompt"], + "required": [ + "type", + "id" + ], + "tags": [ + "sdxl", + "compel", + "prompt" + ], "title": "Prompt - SDXL", "type": "object", "version": "1.2.1", @@ -48092,8 +50698,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["model"], + "required": [ + "type", + "id" + ], + "tags": [ + "model" + ], "title": "Apply LoRA Collection - SDXL", "type": "object", "version": "1.1.2", @@ -48147,8 +50758,12 @@ "input": "any", "orig_required": true, "title": "LoRA", - "ui_model_base": ["sdxl"], - "ui_model_type": ["lora"] + "ui_model_base": [ + "sdxl" + ], + "ui_model_type": [ + "lora" + ] }, "weight": { "default": 0.75, @@ -48219,8 +50834,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["lora", "model"], + "required": [ + "type", + "id" + ], + "tags": [ + "lora", + "model" + ], "title": "Apply LoRA - SDXL", "type": "object", "version": "1.0.5", @@ -48285,7 +50906,14 @@ "type": "string" } }, - "required": ["output_meta", "unet", "clip", "clip2", "type", "type"], + "required": [ + "output_meta", + "unet", + "clip", + "clip2", + "type", + "type" + ], "title": "SDXLLoRALoaderOutput", "type": "object" }, @@ -48334,8 +50962,12 @@ "field_kind": "input", "input": "any", "orig_required": true, - "ui_model_base": ["sdxl"], - "ui_model_type": ["main"] + "ui_model_base": [ + "sdxl" + ], + "ui_model_type": [ + "main" + ] }, "type": { "const": "sdxl_model_loader", @@ -48345,8 +50977,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["model", "sdxl"], + "required": [ + "type", + "id" + ], + "tags": [ + "model", + "sdxl" + ], "title": "Main Model - SDXL", "type": "object", "version": "1.0.4", @@ -48394,7 +51032,15 @@ "type": "string" } }, - "required": ["output_meta", "unet", "clip", "clip2", "vae", "type", "type"], + "required": [ + "output_meta", + "unet", + "clip", + "clip2", + "vae", + "type", + "type" + ], "title": "SDXLModelLoaderOutput", "type": "object" }, @@ -48513,8 +51159,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["sdxl", "compel", "prompt"], + "required": [ + "type", + "id" + ], + "tags": [ + "sdxl", + "compel", + "prompt" + ], "title": "Prompt - SDXL Refiner", "type": "object", "version": "1.1.2", @@ -48567,8 +51220,12 @@ "field_kind": "input", "input": "any", "orig_required": true, - "ui_model_base": ["sdxl-refiner"], - "ui_model_type": ["main"] + "ui_model_base": [ + "sdxl-refiner" + ], + "ui_model_type": [ + "main" + ] }, "type": { "const": "sdxl_refiner_model_loader", @@ -48578,8 +51235,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["model", "sdxl", "refiner"], + "required": [ + "type", + "id" + ], + "tags": [ + "model", + "sdxl", + "refiner" + ], "title": "Refiner Model - SDXL", "type": "object", "version": "1.0.4", @@ -48620,13 +51284,23 @@ "type": "string" } }, - "required": ["output_meta", "unet", "clip2", "vae", "type", "type"], + "required": [ + "output_meta", + "unet", + "clip2", + "vae", + "type", + "type" + ], "title": "SDXLRefinerModelLoaderOutput", "type": "object" }, "SQLiteDirection": { "type": "string", - "enum": ["ASC", "DESC"], + "enum": [ + "ASC", + "DESC" + ], "title": "SQLiteDirection" }, "SaveImageInvocation": { @@ -48715,8 +51389,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "image"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "image" + ], "title": "Save Image", "type": "object", "version": "1.2.2", @@ -48790,7 +51470,15 @@ "mode": { "default": "bilinear", "description": "Interpolation mode", - "enum": ["nearest", "linear", "bilinear", "bicubic", "trilinear", "area", "nearest-exact"], + "enum": [ + "nearest", + "linear", + "bilinear", + "bicubic", + "trilinear", + "area", + "nearest-exact" + ], "field_kind": "input", "input": "any", "orig_default": "bilinear", @@ -48816,8 +51504,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "resize"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "resize" + ], "title": "Scale Latents", "type": "object", "version": "1.0.2", @@ -48907,8 +51601,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["scheduler"], + "required": [ + "type", + "id" + ], + "tags": [ + "scheduler" + ], "title": "Scheduler", "type": "object", "version": "1.0.0", @@ -48967,13 +51666,22 @@ "type": "string" } }, - "required": ["output_meta", "scheduler", "type", "type"], + "required": [ + "output_meta", + "scheduler", + "type", + "type" + ], "title": "SchedulerOutput", "type": "object" }, "SchedulerPredictionType": { "type": "string", - "enum": ["epsilon", "v_prediction", "sample"], + "enum": [ + "epsilon", + "v_prediction", + "sample" + ], "title": "SchedulerPredictionType", "description": "Scheduler prediction type." }, @@ -49014,8 +51722,12 @@ "field_kind": "input", "input": "direct", "orig_required": true, - "ui_model_base": ["sd-3"], - "ui_model_type": ["main"] + "ui_model_base": [ + "sd-3" + ], + "ui_model_type": [ + "main" + ] }, "t5_encoder_model": { "anyOf": [ @@ -49033,7 +51745,9 @@ "orig_default": null, "orig_required": false, "title": "T5 Encoder", - "ui_model_type": ["t5_encoder"] + "ui_model_type": [ + "t5_encoder" + ] }, "clip_l_model": { "anyOf": [ @@ -49051,8 +51765,12 @@ "orig_default": null, "orig_required": false, "title": "CLIP L Encoder", - "ui_model_type": ["clip_embed"], - "ui_model_variant": ["large"] + "ui_model_type": [ + "clip_embed" + ], + "ui_model_variant": [ + "large" + ] }, "clip_g_model": { "anyOf": [ @@ -49070,8 +51788,12 @@ "orig_default": null, "orig_required": false, "title": "CLIP G Encoder", - "ui_model_type": ["clip_embed"], - "ui_model_variant": ["gigantic"] + "ui_model_type": [ + "clip_embed" + ], + "ui_model_variant": [ + "gigantic" + ] }, "vae_model": { "anyOf": [ @@ -49089,8 +51811,12 @@ "orig_default": null, "orig_required": false, "title": "VAE", - "ui_model_base": ["sd-3"], - "ui_model_type": ["vae"] + "ui_model_base": [ + "sd-3" + ], + "ui_model_type": [ + "vae" + ] }, "type": { "const": "sd3_model_loader", @@ -49100,8 +51826,15 @@ "type": "string" } }, - "required": ["model", "type", "id"], - "tags": ["model", "sd3"], + "required": [ + "model", + "type", + "id" + ], + "tags": [ + "model", + "sd3" + ], "title": "Main Model - SD3", "type": "object", "version": "1.0.1", @@ -49156,7 +51889,16 @@ "type": "string" } }, - "required": ["output_meta", "transformer", "clip_l", "clip_g", "t5_encoder", "vae", "type", "type"], + "required": [ + "output_meta", + "transformer", + "clip_l", + "clip_g", + "t5_encoder", + "vae", + "type", + "type" + ], "title": "Sd3ModelLoaderOutput", "type": "object" }, @@ -49264,8 +52006,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "conditioning", "sd3"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "conditioning", + "sd3" + ], "title": "Prompt - SD3", "type": "object", "version": "1.0.1", @@ -49366,8 +52115,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["seamless", "model"], + "required": [ + "type", + "id" + ], + "tags": [ + "seamless", + "model" + ], "title": "Apply Seamless - SD1.5, SDXL", "type": "object", "version": "1.0.2", @@ -49417,7 +52172,13 @@ "type": "string" } }, - "required": ["output_meta", "unet", "vae", "type", "type"], + "required": [ + "output_meta", + "unet", + "vae", + "type", + "type" + ], "title": "SeamlessModeOutput", "type": "object" }, @@ -49545,7 +52306,11 @@ "mask_filter": { "default": "all", "description": "The filtering to apply to the detected masks before merging them into a final output.", - "enum": ["all", "largest", "highest_box_score"], + "enum": [ + "all", + "largest", + "highest_box_score" + ], "field_kind": "input", "input": "any", "orig_default": "all", @@ -49561,8 +52326,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "segmentation", "sam", "sam2"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "segmentation", + "sam", + "sam2" + ], "title": "Segment Anything", "type": "object", "version": "1.3.0", @@ -49584,7 +52357,10 @@ } }, "type": "object", - "required": ["is_started", "is_processing"], + "required": [ + "is_started", + "is_processing" + ], "title": "SessionProcessorStatus" }, "SessionQueueAndProcessorStatus": { @@ -49597,7 +52373,10 @@ } }, "type": "object", - "required": ["queue", "processor"], + "required": [ + "queue", + "processor" + ], "title": "SessionQueueAndProcessorStatus", "description": "The overall status of session queue and processor" }, @@ -49645,7 +52424,16 @@ } }, "type": "object", - "required": ["queue_id", "destination", "pending", "in_progress", "completed", "failed", "canceled", "total"], + "required": [ + "queue_id", + "destination", + "pending", + "in_progress", + "completed", + "failed", + "canceled", + "total" + ], "title": "SessionQueueCountsByDestination" }, "SessionQueueItem": { @@ -49657,7 +52445,13 @@ }, "status": { "type": "string", - "enum": ["pending", "in_progress", "completed", "failed", "canceled"], + "enum": [ + "pending", + "in_progress", + "completed", + "failed", + "canceled" + ], "title": "Status", "description": "The status of this queue item", "default": "pending" @@ -50003,8 +52797,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image"], + "required": [ + "type", + "id" + ], + "tags": [ + "image" + ], "title": "Show Image", "type": "object", "version": "1.0.1", @@ -50220,7 +53019,9 @@ "input": "any", "orig_required": true, "title": "Image-to-Image Model", - "ui_model_type": ["spandrel_image_to_image"] + "ui_model_type": [ + "spandrel_image_to_image" + ] }, "tile_size": { "default": 512, @@ -50262,8 +53063,13 @@ "type": "boolean" } }, - "required": ["type", "id"], - "tags": ["upscale"], + "required": [ + "type", + "id" + ], + "tags": [ + "upscale" + ], "title": "Image-to-Image (Autoscale)", "type": "object", "version": "1.0.0", @@ -50364,7 +53170,9 @@ "input": "any", "orig_required": true, "title": "Image-to-Image Model", - "ui_model_type": ["spandrel_image_to_image"] + "ui_model_type": [ + "spandrel_image_to_image" + ] }, "tile_size": { "default": 512, @@ -50384,8 +53192,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["upscale"], + "required": [ + "type", + "id" + ], + "tags": [ + "upscale" + ], "title": "Image-to-Image", "type": "object", "version": "1.3.0", @@ -50523,7 +53336,10 @@ } }, "type": "object", - "required": ["affected_boards", "starred_images"], + "required": [ + "affected_boards", + "starred_images" + ], "title": "StarredImagesResult" }, "StarterModel": { @@ -50585,7 +53401,13 @@ } }, "type": "object", - "required": ["description", "source", "name", "base", "type"], + "required": [ + "description", + "source", + "name", + "base", + "type" + ], "title": "StarterModel" }, "StarterModelBundle": { @@ -50603,7 +53425,10 @@ } }, "type": "object", - "required": ["name", "models"], + "required": [ + "name", + "models" + ], "title": "StarterModelBundle" }, "StarterModelResponse": { @@ -50624,7 +53449,10 @@ } }, "type": "object", - "required": ["starter_models", "starter_bundles"], + "required": [ + "starter_models", + "starter_bundles" + ], "title": "StarterModelResponse" }, "StarterModelWithoutDependencies": { @@ -50672,7 +53500,13 @@ } }, "type": "object", - "required": ["description", "source", "name", "base", "type"], + "required": [ + "description", + "source", + "name", + "base", + "type" + ], "title": "StarterModelWithoutDependencies" }, "String2Output": { @@ -50701,7 +53535,13 @@ "type": "string" } }, - "required": ["output_meta", "string_1", "string_2", "type", "type"], + "required": [ + "output_meta", + "string_1", + "string_2", + "type", + "type" + ], "title": "String2Output", "type": "object" }, @@ -50739,7 +53579,14 @@ "batch_group_id": { "default": "None", "description": "The ID of this batch node's group. If provided, all batch nodes in with the same ID will be 'zipped' before execution, and all nodes' collections must be of the same size.", - "enum": ["None", "Group 1", "Group 2", "Group 3", "Group 4", "Group 5"], + "enum": [ + "None", + "Group 1", + "Group 2", + "Group 3", + "Group 4", + "Group 5" + ], "field_kind": "input", "input": "direct", "orig_default": "None", @@ -50775,8 +53622,16 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "string", "batch", "special"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "string", + "batch", + "special" + ], "title": "String Batch", "type": "object", "version": "1.0.0", @@ -50836,8 +53691,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "string", "collection"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "string", + "collection" + ], "title": "String Collection Primitive", "type": "object", "version": "1.0.2", @@ -50867,7 +53729,12 @@ "type": "string" } }, - "required": ["output_meta", "collection", "type", "type"], + "required": [ + "output_meta", + "collection", + "type", + "type" + ], "title": "StringCollectionOutput", "type": "object" }, @@ -50918,8 +53785,18 @@ "type": "string" } }, - "required": ["generator", "type", "id"], - "tags": ["primitives", "string", "number", "batch", "special"], + "required": [ + "generator", + "type", + "id" + ], + "tags": [ + "primitives", + "string", + "number", + "batch", + "special" + ], "title": "String Generator", "type": "object", "version": "1.0.0", @@ -50954,7 +53831,12 @@ "type": "string" } }, - "required": ["output_meta", "strings", "type", "type"], + "required": [ + "output_meta", + "strings", + "type", + "type" + ], "title": "StringGeneratorOutput", "type": "object" }, @@ -51008,8 +53890,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["primitives", "string"], + "required": [ + "type", + "id" + ], + "tags": [ + "primitives", + "string" + ], "title": "String Primitive", "type": "object", "version": "1.0.1", @@ -51078,8 +53966,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["string", "join"], + "required": [ + "type", + "id" + ], + "tags": [ + "string", + "join" + ], "title": "String Join", "type": "object", "version": "1.0.1", @@ -51159,8 +54053,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["string", "join"], + "required": [ + "type", + "id" + ], + "tags": [ + "string", + "join" + ], "title": "String Join Three", "type": "object", "version": "1.0.1", @@ -51187,7 +54087,12 @@ "type": "string" } }, - "required": ["output_meta", "value", "type", "type"], + "required": [ + "output_meta", + "value", + "type", + "type" + ], "title": "StringOutput", "type": "object" }, @@ -51217,7 +54122,13 @@ "type": "string" } }, - "required": ["output_meta", "positive_string", "negative_string", "type", "type"], + "required": [ + "output_meta", + "positive_string", + "negative_string", + "type", + "type" + ], "title": "StringPosNegOutput", "type": "object" }, @@ -51303,8 +54214,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["string", "replace", "regex"], + "required": [ + "type", + "id" + ], + "tags": [ + "string", + "replace", + "regex" + ], "title": "String Replace", "type": "object", "version": "1.0.1", @@ -51372,8 +54290,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["string", "split"], + "required": [ + "type", + "id" + ], + "tags": [ + "string", + "split" + ], "title": "String Split", "type": "object", "version": "1.0.1", @@ -51431,8 +54355,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["string", "split", "negative"], + "required": [ + "type", + "id" + ], + "tags": [ + "string", + "split", + "negative" + ], "title": "String Split Negative", "type": "object", "version": "1.0.1", @@ -51474,7 +54405,13 @@ } }, "type": "object", - "required": ["name", "preset_data", "type", "id", "image"], + "required": [ + "name", + "preset_data", + "type", + "id", + "image" + ], "title": "StylePresetRecordWithImage" }, "SubModelType": { @@ -51525,7 +54462,10 @@ } }, "type": "object", - "required": ["path_or_prefix", "model_type"], + "required": [ + "path_or_prefix", + "model_type" + ], "title": "SubmodelDefinition" }, "SubtractInvocation": { @@ -51587,8 +54527,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["math", "subtract"], + "required": [ + "type", + "id" + ], + "tags": [ + "math", + "subtract" + ], "title": "Subtract Integers", "type": "object", "version": "1.0.1", @@ -51641,12 +54587,20 @@ "resize_mode": { "default": "just_resize", "description": "The resize mode to use", - "enum": ["just_resize", "crop_resize", "fill_resize", "just_resize_simple"], + "enum": [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple" + ], "title": "Resize Mode", "type": "string" } }, - "required": ["image", "t2i_adapter_model"], + "required": [ + "image", + "t2i_adapter_model" + ], "title": "T2IAdapterField", "type": "object" }, @@ -51711,8 +54665,13 @@ "input": "any", "orig_required": true, "title": "T2I-Adapter Model", - "ui_model_base": ["sd-1", "sdxl"], - "ui_model_type": ["t2i_adapter"], + "ui_model_base": [ + "sd-1", + "sdxl" + ], + "ui_model_type": [ + "t2i_adapter" + ], "ui_order": -1 }, "weight": { @@ -51763,7 +54722,12 @@ "resize_mode": { "default": "just_resize", "description": "The resize mode applied to the T2I-Adapter input image so that it matches the target output size.", - "enum": ["just_resize", "crop_resize", "fill_resize", "just_resize_simple"], + "enum": [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple" + ], "field_kind": "input", "input": "any", "orig_default": "just_resize", @@ -51779,8 +54743,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["t2i_adapter", "control"], + "required": [ + "type", + "id" + ], + "tags": [ + "t2i_adapter", + "control" + ], "title": "T2I-Adapter - SD1.5, SDXL", "type": "object", "version": "1.0.4", @@ -51845,12 +54815,20 @@ "resize_mode": { "default": "just_resize", "description": "The resize mode to use", - "enum": ["just_resize", "crop_resize", "fill_resize", "just_resize_simple"], + "enum": [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple" + ], "title": "Resize Mode", "type": "string" } }, - "required": ["image", "t2i_adapter_model"], + "required": [ + "image", + "t2i_adapter_model" + ], "title": "T2IAdapterMetadataField", "type": "object" }, @@ -51872,7 +54850,12 @@ "type": "string" } }, - "required": ["output_meta", "t2i_adapter", "type", "type"], + "required": [ + "output_meta", + "t2i_adapter", + "type", + "type" + ], "title": "T2IAdapterOutput", "type": "object" }, @@ -52145,7 +55128,11 @@ "type": "array" } }, - "required": ["tokenizer", "text_encoder", "loras"], + "required": [ + "tokenizer", + "text_encoder", + "loras" + ], "title": "T5EncoderField", "type": "object" }, @@ -52238,6 +55225,18 @@ "const": "bnb_quantized_int8b", "title": "Format", "default": "bnb_quantized_int8b" + }, + "cpu_only": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Cpu Only", + "description": "Whether this model should run on CPU only" } }, "type": "object", @@ -52348,6 +55347,18 @@ "const": "t5_encoder", "title": "Format", "default": "t5_encoder" + }, + "cpu_only": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Cpu Only", + "description": "Whether this model should run on CPU only" } }, "type": "object", @@ -52388,7 +55399,12 @@ "type": "integer" } }, - "required": ["top", "bottom", "left", "right"], + "required": [ + "top", + "bottom", + "left", + "right" + ], "title": "TBLR", "type": "object" }, @@ -53055,7 +56071,9 @@ "type": "string" } }, - "required": ["tensor_name"], + "required": [ + "tensor_name" + ], "title": "TensorField", "type": "object" }, @@ -53070,7 +56088,10 @@ "description": "The amount of overlap with adjacent tiles on each side of this tile." } }, - "required": ["coords", "overlap"], + "required": [ + "coords", + "overlap" + ], "title": "Tile", "type": "object" }, @@ -53128,8 +56149,13 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["tiles"], + "required": [ + "type", + "id" + ], + "tags": [ + "tiles" + ], "title": "Tile to Properties", "type": "object", "version": "1.0.1", @@ -53245,7 +56271,10 @@ "$ref": "#/components/schemas/ImageField" } }, - "required": ["tile", "image"], + "required": [ + "tile", + "image" + ], "title": "TileWithImage", "type": "object" }, @@ -53534,8 +56563,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["upscale", "denoise"], + "required": [ + "type", + "id" + ], + "tags": [ + "upscale", + "denoise" + ], "title": "Tiled Multi-Diffusion Denoise - SD1.5, SDXL", "type": "object", "version": "1.0.1", @@ -53558,13 +56593,20 @@ "type": "array" } }, - "required": ["transformer", "loras"], + "required": [ + "transformer", + "loras" + ], "title": "TransformerField", "type": "object" }, "UIComponent": { "description": "The type of UI component to use for a field, used to override the default components, which are\ninferred from the field type.", - "enum": ["none", "textarea", "slider"], + "enum": [ + "none", + "textarea", + "slider" + ], "title": "UIComponent", "type": "string" }, @@ -53629,7 +56671,14 @@ "description": "The node's classification" } }, - "required": ["tags", "title", "category", "version", "node_pack", "classification"], + "required": [ + "tags", + "title", + "category", + "version", + "node_pack", + "classification" + ], "title": "UIConfigBase", "type": "object" }, @@ -53752,7 +56801,11 @@ "description": "FreeU configuration" } }, - "required": ["unet", "scheduler", "loras"], + "required": [ + "unet", + "scheduler", + "loras" + ], "title": "UNetField", "type": "object" }, @@ -53775,7 +56828,12 @@ "type": "string" } }, - "required": ["output_meta", "unet", "type", "type"], + "required": [ + "output_meta", + "unet", + "type", + "type" + ], "title": "UNetOutput", "type": "object" }, @@ -53806,7 +56864,9 @@ } }, "type": "object", - "required": ["url"], + "required": [ + "url" + ], "title": "URLModelSource", "description": "A generic URL point to a checkpoint file." }, @@ -53824,7 +56884,10 @@ } }, "type": "object", - "required": ["url_regex", "token"], + "required": [ + "url_regex", + "token" + ], "title": "URLRegexTokenPair" }, "Unknown_Config": { @@ -54045,8 +57108,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "unsharp_mask"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "unsharp_mask" + ], "title": "Unsharp Mask", "type": "object", "version": "1.2.2", @@ -54074,7 +57143,10 @@ } }, "type": "object", - "required": ["affected_boards", "unstarred_images"], + "required": [ + "affected_boards", + "unstarred_images" + ], "title": "UnstarredImagesResult" }, "VAEField": { @@ -54092,7 +57164,9 @@ "type": "array" } }, - "required": ["vae"], + "required": [ + "vae" + ], "title": "VAEField", "type": "object" }, @@ -54142,8 +57216,16 @@ "input": "any", "orig_required": true, "title": "VAE", - "ui_model_base": ["sd-1", "sd-2", "sdxl", "sd-3", "flux"], - "ui_model_type": ["vae"] + "ui_model_base": [ + "sd-1", + "sd-2", + "sdxl", + "sd-3", + "flux" + ], + "ui_model_type": [ + "vae" + ] }, "type": { "const": "vae_loader", @@ -54153,8 +57235,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["vae", "model"], + "required": [ + "type", + "id" + ], + "tags": [ + "vae", + "model" + ], "title": "VAE Model - SD1.5, SD2, SDXL, SD3, FLUX", "type": "object", "version": "1.0.4", @@ -54181,7 +57269,12 @@ "type": "string" } }, - "required": ["output_meta", "vae", "type", "type"], + "required": [ + "output_meta", + "vae", + "type", + "type" + ], "title": "VAEOutput", "type": "object" }, @@ -54927,7 +58020,11 @@ } }, "type": "object", - "required": ["loc", "msg", "type"], + "required": [ + "loc", + "msg", + "type" + ], "title": "ValidationError" }, "Workflow": { @@ -55067,12 +58164,18 @@ } }, "type": "object", - "required": ["workflow", "graph"], + "required": [ + "workflow", + "graph" + ], "title": "WorkflowAndGraphResponse" }, "WorkflowCategory": { "type": "string", - "enum": ["user", "default"], + "enum": [ + "user", + "default" + ], "title": "WorkflowCategory" }, "WorkflowMeta": { @@ -55088,7 +58191,10 @@ } }, "type": "object", - "required": ["version", "category"], + "required": [ + "version", + "category" + ], "title": "WorkflowMeta" }, "WorkflowRecordDTO": { @@ -55151,7 +58257,13 @@ } }, "type": "object", - "required": ["workflow_id", "name", "created_at", "updated_at", "workflow"], + "required": [ + "workflow_id", + "name", + "created_at", + "updated_at", + "workflow" + ], "title": "WorkflowRecordDTO" }, "WorkflowRecordListItemWithThumbnailDTO": { @@ -55236,12 +58348,25 @@ } }, "type": "object", - "required": ["workflow_id", "name", "created_at", "updated_at", "description", "category", "tags"], + "required": [ + "workflow_id", + "name", + "created_at", + "updated_at", + "description", + "category", + "tags" + ], "title": "WorkflowRecordListItemWithThumbnailDTO" }, "WorkflowRecordOrderBy": { "type": "string", - "enum": ["created_at", "updated_at", "opened_at", "name"], + "enum": [ + "created_at", + "updated_at", + "opened_at", + "name" + ], "title": "WorkflowRecordOrderBy", "description": "The order by options for workflow records" }, @@ -55317,7 +58442,13 @@ } }, "type": "object", - "required": ["workflow_id", "name", "created_at", "updated_at", "workflow"], + "required": [ + "workflow_id", + "name", + "created_at", + "updated_at", + "workflow" + ], "title": "WorkflowRecordWithThumbnailDTO" }, "WorkflowWithoutID": { @@ -55444,7 +58575,9 @@ "description": "The mask associated with this conditioning tensor for regional prompting. Excluded regions should be set to False, included regions should be set to True." } }, - "required": ["conditioning_name"], + "required": [ + "conditioning_name" + ], "title": "ZImageConditioningField", "type": "object" }, @@ -55466,7 +58599,12 @@ "type": "string" } }, - "required": ["output_meta", "conditioning", "type", "type"], + "required": [ + "output_meta", + "conditioning", + "type", + "type" + ], "title": "ZImageConditioningOutput", "type": "object" }, @@ -55712,8 +58850,14 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "z-image"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "z-image" + ], "title": "Denoise - Z-Image", "type": "object", "version": "1.2.0", @@ -55822,8 +58966,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["image", "latents", "vae", "i2l", "z-image"], + "required": [ + "type", + "id" + ], + "tags": [ + "image", + "latents", + "vae", + "i2l", + "z-image" + ], "title": "Image to Latents - Z-Image", "type": "object", "version": "1.1.0", @@ -55932,8 +59085,17 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["latents", "image", "vae", "l2i", "z-image"], + "required": [ + "type", + "id" + ], + "tags": [ + "latents", + "image", + "vae", + "l2i", + "z-image" + ], "title": "Latents to Image - Z-Image", "type": "object", "version": "1.1.0", @@ -56037,8 +59199,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["lora", "model", "z-image"], + "required": [ + "type", + "id" + ], + "tags": [ + "lora", + "model", + "z-image" + ], "title": "Apply LoRA Collection - Z-Image", "type": "object", "version": "1.0.0", @@ -56092,8 +59261,12 @@ "input": "any", "orig_required": true, "title": "LoRA", - "ui_model_base": ["z-image"], - "ui_model_type": ["lora"] + "ui_model_base": [ + "z-image" + ], + "ui_model_type": [ + "lora" + ] }, "weight": { "default": 0.75, @@ -56147,8 +59320,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["lora", "model", "z-image"], + "required": [ + "type", + "id" + ], + "tags": [ + "lora", + "model", + "z-image" + ], "title": "Apply LoRA - Z-Image", "type": "object", "version": "1.0.0", @@ -56198,7 +59378,13 @@ "type": "string" } }, - "required": ["output_meta", "transformer", "qwen3_encoder", "type", "type"], + "required": [ + "output_meta", + "transformer", + "qwen3_encoder", + "type", + "type" + ], "title": "ZImageLoRALoaderOutput", "type": "object" }, @@ -56240,8 +59426,12 @@ "input": "direct", "orig_required": true, "title": "Transformer", - "ui_model_base": ["z-image"], - "ui_model_type": ["main"] + "ui_model_base": [ + "z-image" + ], + "ui_model_type": [ + "main" + ] }, "vae_model": { "anyOf": [ @@ -56259,8 +59449,12 @@ "orig_default": null, "orig_required": false, "title": "VAE", - "ui_model_base": ["flux"], - "ui_model_type": ["vae"] + "ui_model_base": [ + "flux" + ], + "ui_model_type": [ + "vae" + ] }, "qwen3_encoder_model": { "anyOf": [ @@ -56278,7 +59472,9 @@ "orig_default": null, "orig_required": false, "title": "Qwen3 Encoder", - "ui_model_type": ["qwen3_encoder"] + "ui_model_type": [ + "qwen3_encoder" + ] }, "qwen3_source_model": { "anyOf": [ @@ -56296,9 +59492,15 @@ "orig_default": null, "orig_required": false, "title": "Qwen3 Source (Diffusers)", - "ui_model_base": ["z-image"], - "ui_model_format": ["diffusers"], - "ui_model_type": ["main"] + "ui_model_base": [ + "z-image" + ], + "ui_model_format": [ + "diffusers" + ], + "ui_model_type": [ + "main" + ] }, "type": { "const": "z_image_model_loader", @@ -56308,8 +59510,15 @@ "type": "string" } }, - "required": ["model", "type", "id"], - "tags": ["model", "z-image"], + "required": [ + "model", + "type", + "id" + ], + "tags": [ + "model", + "z-image" + ], "title": "Main Model - Z-Image", "type": "object", "version": "3.0.0", @@ -56350,7 +59559,14 @@ "type": "string" } }, - "required": ["output_meta", "transformer", "qwen3_encoder", "vae", "type", "type"], + "required": [ + "output_meta", + "transformer", + "qwen3_encoder", + "vae", + "type", + "type" + ], "title": "ZImageModelLoaderOutput", "type": "object" }, @@ -56442,8 +59658,15 @@ "type": "string" } }, - "required": ["type", "id"], - "tags": ["prompt", "conditioning", "z-image"], + "required": [ + "type", + "id" + ], + "tags": [ + "prompt", + "conditioning", + "z-image" + ], "title": "Prompt - Z-Image", "type": "object", "version": "1.1.0", @@ -56453,4 +59676,4 @@ } } } -} +} \ No newline at end of file diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 4b9f5458f34..e9dc403fdeb 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -1,2888 +1,2942 @@ { - "accessibility": { - "about": "About", - "createIssue": "Create Issue", - "submitSupportTicket": "Submit Support Ticket", - "invokeProgressBar": "Invoke progress bar", - "menu": "Menu", - "mode": "Mode", - "nextImage": "Next Image", - "previousImage": "Previous Image", - "reset": "Reset", - "resetUI": "$t(accessibility.reset) UI", - "toggleRightPanel": "Toggle Right Panel (G)", - "toggleLeftPanel": "Toggle Left Panel (T)", - "uploadImage": "Upload Image", - "uploadImages": "Upload Image(s)" - }, - "boards": { - "addBoard": "Add Board", - "addPrivateBoard": "Add Private Board", - "addSharedBoard": "Add Shared Board", - "archiveBoard": "Archive Board", - "archived": "Archived", - "autoAddBoard": "Auto-Add Board", - "boards": "Boards", - "selectedForAutoAdd": "Selected for Auto-Add", - "bottomMessage": "Deleting images will reset any features currently using them.", - "cancel": "Cancel", - "changeBoard": "Change Board", - "clearSearch": "Clear Search", - "deleteBoard": "Delete Board", - "deleteBoardAndImages": "Delete Board and Images", - "deleteBoardOnly": "Delete Board Only", - "deletedBoardsCannotbeRestored": "Deleted boards and images cannot be restored. Selecting 'Delete Board Only' will move images to an uncategorized state.", - "deletedPrivateBoardsCannotbeRestored": "Deleted boards and images cannot be restored. Selecting 'Delete Board Only' will move images to a private uncategorized state for the image's creator.", - "uncategorizedImages": "Uncategorized Images", - "deleteAllUncategorizedImages": "Delete All Uncategorized Images", - "deletedImagesCannotBeRestored": "Deleted images cannot be restored.", - "hideBoards": "Hide Boards", - "loading": "Loading...", - "locateInGalery": "Locate in Gallery", - "menuItemAutoAdd": "Auto-add to this Board", - "move": "Move", - "movingImagesToBoard_one": "Moving {{count}} image to board:", - "movingImagesToBoard_other": "Moving {{count}} images to board:", - "myBoard": "My Board", - "noBoards": "No {{boardType}} Boards", - "noMatching": "No matching Boards", - "private": "Private Boards", - "searchBoard": "Search Boards...", - "selectBoard": "Select a Board", - "shared": "Shared Boards", - "topMessage": "This selection contains images used in the following features:", - "unarchiveBoard": "Unarchive Board", - "uncategorized": "Uncategorized", - "viewBoards": "View Boards", - "downloadBoard": "Download Board", - "imagesWithCount_one": "{{count}} image", - "imagesWithCount_other": "{{count}} images", - "assetsWithCount_one": "{{count}} asset", - "assetsWithCount_other": "{{count}} assets", - "updateBoardError": "Error updating board" - }, - "accordions": { - "generation": { - "title": "Generation" - }, - "image": { - "title": "Image" - }, - "advanced": { - "title": "Advanced", - "options": "$t(accordions.advanced.title) Options" - }, - "control": { - "title": "Control" - }, - "compositing": { - "title": "Compositing", - "coherenceTab": "Coherence Pass", - "infillTab": "Infill" - } + "accessibility": { + "about": "About", + "createIssue": "Create Issue", + "submitSupportTicket": "Submit Support Ticket", + "invokeProgressBar": "Invoke progress bar", + "menu": "Menu", + "mode": "Mode", + "nextImage": "Next Image", + "previousImage": "Previous Image", + "reset": "Reset", + "resetUI": "$t(accessibility.reset) UI", + "toggleRightPanel": "Toggle Right Panel (G)", + "toggleLeftPanel": "Toggle Left Panel (T)", + "uploadImage": "Upload Image", + "uploadImages": "Upload Image(s)" + }, + "boards": { + "addBoard": "Add Board", + "addPrivateBoard": "Add Private Board", + "addSharedBoard": "Add Shared Board", + "archiveBoard": "Archive Board", + "archived": "Archived", + "autoAddBoard": "Auto-Add Board", + "boards": "Boards", + "selectedForAutoAdd": "Selected for Auto-Add", + "bottomMessage": "Deleting images will reset any features currently using them.", + "cancel": "Cancel", + "changeBoard": "Change Board", + "clearSearch": "Clear Search", + "deleteBoard": "Delete Board", + "deleteBoardAndImages": "Delete Board and Images", + "deleteBoardOnly": "Delete Board Only", + "deletedBoardsCannotbeRestored": "Deleted boards and images cannot be restored. Selecting 'Delete Board Only' will move images to an uncategorized state.", + "deletedPrivateBoardsCannotbeRestored": "Deleted boards and images cannot be restored. Selecting 'Delete Board Only' will move images to a private uncategorized state for the image's creator.", + "uncategorizedImages": "Uncategorized Images", + "deleteAllUncategorizedImages": "Delete All Uncategorized Images", + "deletedImagesCannotBeRestored": "Deleted images cannot be restored.", + "hideBoards": "Hide Boards", + "loading": "Loading...", + "locateInGalery": "Locate in Gallery", + "menuItemAutoAdd": "Auto-add to this Board", + "move": "Move", + "movingImagesToBoard_one": "Moving {{count}} image to board:", + "movingImagesToBoard_other": "Moving {{count}} images to board:", + "myBoard": "My Board", + "noBoards": "No {{boardType}} Boards", + "noMatching": "No matching Boards", + "private": "Private Boards", + "searchBoard": "Search Boards...", + "selectBoard": "Select a Board", + "shared": "Shared Boards", + "topMessage": "This selection contains images used in the following features:", + "unarchiveBoard": "Unarchive Board", + "uncategorized": "Uncategorized", + "viewBoards": "View Boards", + "downloadBoard": "Download Board", + "imagesWithCount_one": "{{count}} image", + "imagesWithCount_other": "{{count}} images", + "assetsWithCount_one": "{{count}} asset", + "assetsWithCount_other": "{{count}} assets", + "updateBoardError": "Error updating board" + }, + "accordions": { + "generation": { + "title": "Generation" }, - "common": { - "aboutDesc": "Using Invoke for work? Check out:", - "aboutHeading": "Own Your Creative Power", - "accept": "Accept", - "apply": "Apply", - "add": "Add", - "advanced": "Advanced", - "ai": "ai", - "areYouSure": "Are you sure?", - "auto": "Auto", - "back": "Back", - "batch": "Batch Manager", - "beta": "Beta", - "board": "Board", - "cancel": "Cancel", - "close": "Close", - "copy": "Copy", - "copyError": "$t(gallery.copy) Error", - "clipboard": "Clipboard", - "crop": "Crop", - "on": "On", - "off": "Off", - "or": "or", - "ok": "Ok", - "checkpoint": "Checkpoint", - "communityLabel": "Community", - "controlNet": "ControlNet", - "data": "Data", - "delete": "Delete", - "details": "Details", - "direction": "Direction", - "ipAdapter": "IP Adapter", - "t2iAdapter": "T2I Adapter", - "positivePrompt": "Positive Prompt", - "negativePrompt": "Negative Prompt", - "removeNegativePrompt": "Remove Negative Prompt", - "addNegativePrompt": "Add Negative Prompt", - "selectYourModel": "Select Your Model", - "discordLabel": "Discord", - "dontAskMeAgain": "Don't ask me again", - "dontShowMeThese": "Don't show me these", - "editor": "Editor", - "error": "Error", - "error_withCount_one": "{{count}} error", - "error_withCount_other": "{{count}} errors", - "model_withCount_one": "{{count}} model", - "model_withCount_other": "{{count}} models", - "file": "File", - "folder": "Folder", - "format": "format", - "githubLabel": "Github", - "goTo": "Go to", - "hotkeysLabel": "Hotkeys", - "loadingImage": "Loading Image", - "loadingModel": "Loading Model", - "imageFailedToLoad": "Unable to Load Image", - "img2img": "Image To Image", - "inpaint": "inpaint", - "input": "Input", - "installed": "Installed", - "languagePickerLabel": "Language", - "linear": "Linear", - "load": "Load", - "loading": "Loading", - "localSystem": "Local System", - "learnMore": "Learn More", - "modelManager": "Model Manager", - "noMatches": "No matches", - "noOptions": "No options", - "nodes": "Workflows", - "notInstalled": "Not $t(common.installed)", - "openInNewTab": "Open in New Tab", - "openInViewer": "Open in Viewer", - "orderBy": "Order By", - "outpaint": "outpaint", - "outputs": "Outputs", - "postprocessing": "Post Processing", - "random": "Random", - "reportBugLabel": "Report Bug", - "safetensors": "Safetensors", - "save": "Save", - "saveAs": "Save As", - "saveChanges": "Save Changes", - "settingsLabel": "Settings", - "simple": "Simple", - "somethingWentWrong": "Something went wrong", - "statusDisconnected": "Disconnected", - "template": "Template", - "toResolve": "To resolve", - "txt2img": "Text To Image", - "unknown": "Unknown", - "upload": "Upload", - "updated": "Updated", - "created": "Created", - "prevPage": "Previous Page", - "nextPage": "Next Page", - "unknownError": "Unknown Error", - "red": "Red", - "green": "Green", - "blue": "Blue", - "alpha": "Alpha", - "selected": "Selected", - "search": "Search", - "clear": "Clear", - "tab": "Tab", - "view": "View", - "edit": "Edit", - "enabled": "Enabled", - "disabled": "Disabled", - "placeholderSelectAModel": "Select a model", - "reset": "Reset", - "none": "None", - "new": "New", - "generating": "Generating", - "warnings": "Warnings", - "start": "Start", - "count": "Count", - "step": "Step", - "end": "End", - "min": "Min", - "max": "Max", - "values": "Values", - "resetToDefaults": "Reset to Defaults", - "seed": "Seed", - "combinatorial": "Combinatorial", - "layout": "Layout", - "row": "Row", - "column": "Column", - "value": "Value", - "label": "Label", - "systemInformation": "System Information", - "compactView": "Compact View", - "fullView": "Full View", - "options_withCount_one": "{{count}} option", - "options_withCount_other": "{{count}} options" - }, - "hrf": { - "hrf": "High Resolution Fix", - "enableHrf": "Enable High Resolution Fix", - "upscaleMethod": "Upscale Method", - "metadata": { - "enabled": "High Resolution Fix Enabled", - "strength": "High Resolution Fix Strength", - "method": "High Resolution Fix Method" - } + "image": { + "title": "Image" + }, + "advanced": { + "title": "Advanced", + "options": "$t(accordions.advanced.title) Options" + }, + "control": { + "title": "Control" + }, + "compositing": { + "title": "Compositing", + "coherenceTab": "Coherence Pass", + "infillTab": "Infill" + } + }, + "common": { + "aboutDesc": "Using Invoke for work? Check out:", + "aboutHeading": "Own Your Creative Power", + "accept": "Accept", + "apply": "Apply", + "add": "Add", + "advanced": "Advanced", + "ai": "ai", + "areYouSure": "Are you sure?", + "auto": "Auto", + "back": "Back", + "batch": "Batch Manager", + "beta": "Beta", + "board": "Board", + "cancel": "Cancel", + "close": "Close", + "copy": "Copy", + "copyError": "$t(gallery.copy) Error", + "clipboard": "Clipboard", + "crop": "Crop", + "on": "On", + "off": "Off", + "or": "or", + "ok": "Ok", + "checkpoint": "Checkpoint", + "communityLabel": "Community", + "controlNet": "ControlNet", + "data": "Data", + "delete": "Delete", + "details": "Details", + "direction": "Direction", + "ipAdapter": "IP Adapter", + "t2iAdapter": "T2I Adapter", + "positivePrompt": "Positive Prompt", + "negativePrompt": "Negative Prompt", + "removeNegativePrompt": "Remove Negative Prompt", + "addNegativePrompt": "Add Negative Prompt", + "selectYourModel": "Select Your Model", + "discordLabel": "Discord", + "dontAskMeAgain": "Don't ask me again", + "dontShowMeThese": "Don't show me these", + "editor": "Editor", + "error": "Error", + "error_withCount_one": "{{count}} error", + "error_withCount_other": "{{count}} errors", + "model_withCount_one": "{{count}} model", + "model_withCount_other": "{{count}} models", + "file": "File", + "folder": "Folder", + "format": "format", + "githubLabel": "Github", + "goTo": "Go to", + "hotkeysLabel": "Hotkeys", + "loadingImage": "Loading Image", + "loadingModel": "Loading Model", + "imageFailedToLoad": "Unable to Load Image", + "img2img": "Image To Image", + "inpaint": "inpaint", + "input": "Input", + "installed": "Installed", + "languagePickerLabel": "Language", + "linear": "Linear", + "load": "Load", + "loading": "Loading", + "localSystem": "Local System", + "learnMore": "Learn More", + "modelManager": "Model Manager", + "noMatches": "No matches", + "noOptions": "No options", + "nodes": "Workflows", + "notInstalled": "Not $t(common.installed)", + "openInNewTab": "Open in New Tab", + "openInViewer": "Open in Viewer", + "orderBy": "Order By", + "outpaint": "outpaint", + "outputs": "Outputs", + "postprocessing": "Post Processing", + "random": "Random", + "reportBugLabel": "Report Bug", + "safetensors": "Safetensors", + "save": "Save", + "saveAs": "Save As", + "saveChanges": "Save Changes", + "settingsLabel": "Settings", + "simple": "Simple", + "somethingWentWrong": "Something went wrong", + "statusDisconnected": "Disconnected", + "template": "Template", + "toResolve": "To resolve", + "txt2img": "Text To Image", + "unknown": "Unknown", + "upload": "Upload", + "updated": "Updated", + "created": "Created", + "prevPage": "Previous Page", + "nextPage": "Next Page", + "unknownError": "Unknown Error", + "red": "Red", + "green": "Green", + "blue": "Blue", + "alpha": "Alpha", + "selected": "Selected", + "search": "Search", + "clear": "Clear", + "tab": "Tab", + "view": "View", + "edit": "Edit", + "enabled": "Enabled", + "disabled": "Disabled", + "placeholderSelectAModel": "Select a model", + "reset": "Reset", + "none": "None", + "new": "New", + "generating": "Generating", + "warnings": "Warnings", + "start": "Start", + "count": "Count", + "step": "Step", + "end": "End", + "min": "Min", + "max": "Max", + "values": "Values", + "resetToDefaults": "Reset to Defaults", + "seed": "Seed", + "combinatorial": "Combinatorial", + "layout": "Layout", + "row": "Row", + "column": "Column", + "value": "Value", + "label": "Label", + "systemInformation": "System Information", + "compactView": "Compact View", + "fullView": "Full View", + "options_withCount_one": "{{count}} option", + "options_withCount_other": "{{count}} options" + }, + "hrf": { + "hrf": "High Resolution Fix", + "enableHrf": "Enable High Resolution Fix", + "upscaleMethod": "Upscale Method", + "metadata": { + "enabled": "High Resolution Fix Enabled", + "strength": "High Resolution Fix Strength", + "method": "High Resolution Fix Method" + } + }, + "prompt": { + "addPromptTrigger": "Add Prompt Trigger", + "compatibleEmbeddings": "Compatible Embeddings", + "noMatchingTriggers": "No matching triggers", + "generateFromImage": "Generate prompt from image", + "expandCurrentPrompt": "Expand Current Prompt", + "uploadImageForPromptGeneration": "Upload Image for Prompt Generation", + "expandingPrompt": "Expanding prompt...", + "resultTitle": "Prompt Expansion Complete", + "resultSubtitle": "Choose how to handle the expanded prompt:", + "replace": "Replace", + "insert": "Insert", + "discard": "Discard", + "noPromptHistory": "No prompt history recorded.", + "noMatchingPrompts": "No matching prompts in history.", + "toSwitchBetweenPrompts": "to switch between prompts." + }, + "queue": { + "queue": "Queue", + "queueFront": "Add to Front of Queue", + "queueBack": "Add to Queue", + "queueEmpty": "Queue Empty", + "enqueueing": "Queueing Batch", + "resume": "Resume", + "resumeTooltip": "Resume Processor", + "resumeSucceeded": "Processor Resumed", + "resumeFailed": "Problem Resuming Processor", + "pause": "Pause", + "pauseTooltip": "Pause Processor", + "pauseSucceeded": "Processor Paused", + "pauseFailed": "Problem Pausing Processor", + "cancel": "Cancel", + "cancelAllExceptCurrentQueueItemAlertDialog": "Canceling all queue items except the current one will stop pending items but allow the in-progress one to finish.", + "cancelAllExceptCurrentQueueItemAlertDialog2": "Are you sure you want to cancel all pending queue items?", + "cancelAllExceptCurrent": "Cancel All Except Current", + "cancelAllExceptCurrentTooltip": "Cancel All Except Current Item", + "cancelTooltip": "Cancel Current Item", + "cancelSucceeded": "Item Canceled", + "cancelFailed": "Problem Canceling Item", + "retrySucceeded": "Item Retried", + "retryFailed": "Problem Retrying Item", + "confirm": "Confirm", + "prune": "Prune", + "pruneTooltip": "Prune {{item_count}} Completed Items", + "pruneSucceeded": "Pruned {{item_count}} Completed Items from Queue", + "pruneFailed": "Problem Pruning Queue", + "clear": "Clear", + "clearTooltip": "Cancel and Clear All Items", + "clearSucceeded": "Queue Cleared", + "clearFailed": "Problem Clearing Queue", + "cancelBatch": "Cancel Batch", + "cancelItem": "Cancel Item", + "retryItem": "Retry Item", + "cancelBatchSucceeded": "Batch Canceled", + "cancelBatchFailed": "Problem Canceling Batch", + "clearQueueAlertDialog": "Clearing the queue immediately cancels any processing items and clears the queue entirely. Pending filters will be canceled and the Canvas Staging Area will be reset.", + "clearQueueAlertDialog2": "Are you sure you want to clear the queue?", + "current": "Current", + "next": "Next", + "status": "Status", + "total": "Total", + "time": "Time", + "credits": "Credits", + "pending": "Pending", + "in_progress": "In Progress", + "completed": "Completed", + "failed": "Failed", + "canceled": "Canceled", + "completedIn": "Completed in", + "batch": "Batch", + "origin": "Origin", + "destination": "Dest", + "upscaling": "Upscaling", + "canvas": "Canvas", + "generation": "Generation", + "workflows": "Workflows", + "other": "Other", + "gallery": "Gallery", + "batchFieldValues": "Batch Field Values", + "item": "Item", + "session": "Session", + "notReady": "Unable to Queue", + "batchQueued": "Batch Queued", + "batchQueuedDesc_one": "Added {{count}} sessions to {{direction}} of queue", + "batchQueuedDesc_other": "Added {{count}} sessions to {{direction}} of queue", + "front": "front", + "back": "back", + "batchFailedToQueue": "Failed to Queue Batch", + "graphQueued": "Graph queued", + "graphFailedToQueue": "Failed to queue graph", + "openQueue": "Open Queue", + "prompts_one": "Prompt", + "prompts_other": "Prompts", + "iterations_one": "Iteration", + "iterations_other": "Iterations", + "generations_one": "Generation", + "generations_other": "Generations", + "batchSize": "Batch Size", + "createdAt": "Created At", + "completedAt": "Completed At", + "sortColumn": "Sort Column", + "sortBy": "Sort by {{column}}", + "sortOrderAscending": "Ascending", + "sortOrderDescending": "Descending" + }, + "invocationCache": { + "invocationCache": "Invocation Cache", + "cacheSize": "Cache Size", + "maxCacheSize": "Max Cache Size", + "hits": "Cache Hits", + "misses": "Cache Misses", + "clear": "Clear", + "clearSucceeded": "Invocation Cache Cleared", + "clearFailed": "Problem Clearing Invocation Cache", + "enable": "Enable", + "enableSucceeded": "Invocation Cache Enabled", + "enableFailed": "Problem Enabling Invocation Cache", + "disable": "Disable", + "disableSucceeded": "Invocation Cache Disabled", + "disableFailed": "Problem Disabling Invocation Cache", + "useCache": "Use Cache" + }, + "modelCache": { + "clear": "Clear Model Cache", + "clearSucceeded": "Model Cache Cleared", + "clearFailed": "Problem Clearing Model Cache" + }, + "gallery": { + "gallery": "Gallery", + "images": "Images", + "assets": "Assets", + "alwaysShowImageSizeBadge": "Always Show Image Size Badge", + "assetsTab": "Files you've uploaded for use in your projects.", + "autoAssignBoardOnClick": "Auto-Assign Board on Click", + "autoSwitchNewImages": "Auto-Switch to New Images", + "boardsSettings": "Boards Settings", + "copy": "Copy", + "currentlyInUse": "This image is currently in use in the following features:", + "drop": "Drop", + "dropOrUpload": "Drop or Upload", + "dropToUpload": "$t(gallery.drop) to Upload", + "deleteImage_one": "Delete Image", + "deleteImage_other": "Delete {{count}} Images", + "deleteImagePermanent": "Deleted images cannot be restored.", + "displayBoardSearch": "Board Search", + "displaySearch": "Image Search", + "download": "Download", + "exitBoardSearch": "Exit Board Search", + "exitSearch": "Exit Image Search", + "featuresWillReset": "If you delete this image, those features will immediately be reset.", + "galleryImageSize": "Image Size", + "gallerySettings": "Gallery Settings", + "go": "Go", + "image": "image", + "imagesTab": "Images you've created and saved within Invoke.", + "imagesSettings": "Gallery Images Settings", + "jump": "Jump", + "loading": "Loading", + "newestFirst": "Newest First", + "oldestFirst": "Oldest First", + "sortDirection": "Sort Direction", + "showStarredImagesFirst": "Show Starred Images First", + "noImageSelected": "No Image Selected", + "noImagesInGallery": "No Images to Display", + "starImage": "Star", + "unstarImage": "Unstar", + "unableToLoad": "Unable to load Gallery", + "deleteSelection": "Delete Selection", + "downloadSelection": "Download Selection", + "bulkDownloadRequested": "Preparing Download", + "bulkDownloadRequestedDesc": "Your download request is being prepared. This may take a few moments.", + "bulkDownloadRequestFailed": "Problem Preparing Download", + "bulkDownloadFailed": "Download Failed", + "viewerImage": "Viewer Image", + "compareImage": "Compare Image", + "openInViewer": "Open in Viewer", + "searchImages": "Search by Metadata", + "selectAllOnPage": "Select All On Page", + "showArchivedBoards": "Show Archived Boards", + "selectForCompare": "Select for Compare", + "selectAnImageToCompare": "Select an Image to Compare", + "slider": "Slider", + "sideBySide": "Side-by-Side", + "hover": "Hover", + "swapImages": "Swap Images", + "stretchToFit": "Stretch to Fit", + "exitCompare": "Exit Compare", + "compareHelp1": "Hold Alt while clicking a gallery image or using the arrow keys to change the compare image.", + "compareHelp2": "Press M to cycle through comparison modes.", + "compareHelp3": "Press C to swap the compared images.", + "compareHelp4": "Press Z or Esc to exit.", + "openViewer": "Open Viewer", + "closeViewer": "Close Viewer", + "move": "Move", + "useForPromptGeneration": "Use for Prompt Generation" + }, + "hotkeys": { + "hotkeys": "Hotkeys", + "searchHotkeys": "Search Hotkeys", + "clearSearch": "Clear Search", + "noHotkeysFound": "No Hotkeys Found", + "editMode": "Edit Mode", + "viewMode": "View Mode", + "editHotkey": "Edit Hotkey", + "addHotkey": "Add Hotkey", + "resetToDefault": "Reset to Default", + "resetAll": "Reset All to Default", + "resetAllConfirmation": "Are you sure you want to reset all hotkeys to their default values? This cannot be undone.", + "enterHotkeys": "Enter hotkey(s), separated by commas", + "save": "Save", + "cancel": "Cancel", + "modifiers": "Modifiers", + "syntaxHelp": "Syntax Help", + "combineWith": "Combine with +", + "multipleHotkeys": "Multiple hotkeys with comma", + "validKeys": "Valid keys", + "help": "Help", + "noHotkeysRecorded": "No hotkeys recorded yet", + "pressKeys": "Press keys...", + "setHotkey": "SET", + "setAnother": "SET ANOTHER", + "removeLastHotkey": "Remove last hotkey", + "clearAll": "Clear All", + "duplicateWarning": "This hotkey is already recorded", + "conflictWarning": "is already used by \"{{hotkeyTitle}}\"", + "thisHotkey": "this hotkey", + "app": { + "title": "App", + "invoke": { + "title": "Invoke", + "desc": "Queue a generation, adding it to the end of the queue." + }, + "invokeFront": { + "title": "Invoke (Front)", + "desc": "Queue a generation, adding it to the front of the queue." + }, + "cancelQueueItem": { + "title": "Cancel", + "desc": "Cancel the currently processing queue item." + }, + "clearQueue": { + "title": "Clear Queue", + "desc": "Cancel and clear all queue items." + }, + "selectCanvasTab": { + "title": "Select the Canvas Tab", + "desc": "Selects the Canvas tab." + }, + "selectUpscalingTab": { + "title": "Select the Upscaling Tab", + "desc": "Selects the Upscaling tab." + }, + "selectWorkflowsTab": { + "title": "Select the Workflows Tab", + "desc": "Selects the Workflows tab." + }, + "selectModelsTab": { + "title": "Select the Models Tab", + "desc": "Selects the Models tab." + }, + "selectQueueTab": { + "title": "Select the Queue Tab", + "desc": "Selects the Queue tab." + }, + "focusPrompt": { + "title": "Focus Prompt", + "desc": "Move cursor focus to the positive prompt." + }, + "promptHistoryPrev": { + "title": "Previous Prompt in History", + "desc": "When the prompt is focused, move to the previous (older) prompt in your history." + }, + "promptHistoryNext": { + "title": "Next Prompt in History", + "desc": "When the prompt is focused, move to the next (newer) prompt in your history." + }, + "promptWeightUp": { + "title": "Increase Weight of Prompt Selection", + "desc": "When the prompt is focused and text is selected, increase the weight of the selected prompt." + }, + "promptWeightDown": { + "title": "Decrease Weight of Prompt Selection", + "desc": "When the prompt is focused and text is selected, decrease the weight of the selected prompt." + }, + "toggleLeftPanel": { + "title": "Toggle Left Panel", + "desc": "Show or hide the left panel." + }, + "toggleRightPanel": { + "title": "Toggle Right Panel", + "desc": "Show or hide the right panel." + }, + "resetPanelLayout": { + "title": "Reset Panel Layout", + "desc": "Reset the left and right panels to their default size and layout." + }, + "togglePanels": { + "title": "Toggle Panels", + "desc": "Show or hide both left and right panels at once." + }, + "selectGenerateTab": { + "title": "Select the Generate Tab", + "desc": "Selects the Generate tab.", + "key": "1" + } + }, + "canvas": { + "title": "Canvas", + "selectBrushTool": { + "title": "Brush Tool", + "desc": "Select the brush tool." + }, + "selectBboxTool": { + "title": "Bbox Tool", + "desc": "Select the bounding box tool." + }, + "decrementToolWidth": { + "title": "Decrement Tool Width", + "desc": "Decrement the brush or eraser tool width, whichever is selected." + }, + "incrementToolWidth": { + "title": "Increment Tool Width", + "desc": "Increment the brush or eraser tool width, whichever is selected." + }, + "selectColorPickerTool": { + "title": "Color Picker Tool", + "desc": "Select the color picker tool." + }, + "selectEraserTool": { + "title": "Eraser Tool", + "desc": "Select the eraser tool." + }, + "selectMoveTool": { + "title": "Move Tool", + "desc": "Select the move tool." + }, + "selectRectTool": { + "title": "Rect Tool", + "desc": "Select the rect tool." + }, + "selectViewTool": { + "title": "View Tool", + "desc": "Select the view tool." + }, + "fitLayersToCanvas": { + "title": "Fit Layers to Canvas", + "desc": "Scale and position the view to fit all visible layers." + }, + "fitBboxToCanvas": { + "title": "Fit Bbox to Canvas", + "desc": "Scale and position the view to fit the bbox." + }, + "setZoomTo100Percent": { + "title": "Zoom to 100%", + "desc": "Set the canvas zoom to 100%." + }, + "setZoomTo200Percent": { + "title": "Zoom to 200%", + "desc": "Set the canvas zoom to 200%." + }, + "setZoomTo400Percent": { + "title": "Zoom to 400%", + "desc": "Set the canvas zoom to 400%." + }, + "setZoomTo800Percent": { + "title": "Zoom to 800%", + "desc": "Set the canvas zoom to 800%." + }, + "quickSwitch": { + "title": "Layer Quick Switch", + "desc": "Switch between the last two selected layers. If a layer is bookmarked, always switch between it and the last non-bookmarked layer." + }, + "deleteSelected": { + "title": "Delete Layer", + "desc": "Delete the selected layer." + }, + "resetSelected": { + "title": "Reset Layer", + "desc": "Reset the selected layer. Only applies to Inpaint Mask and Regional Guidance." + }, + "undo": { + "title": "Undo", + "desc": "Undo the last canvas action." + }, + "redo": { + "title": "Redo", + "desc": "Redo the last canvas action." + }, + "nextEntity": { + "title": "Next Layer", + "desc": "Select the next layer in the list." + }, + "prevEntity": { + "title": "Prev Layer", + "desc": "Select the previous layer in the list." + }, + "setFillColorsToDefault": { + "title": "Set Colors to Default", + "desc": "Set the current tool colors to default." + }, + "toggleFillColor": { + "title": "Toggle Fill Color", + "desc": "Toggle the current tool fill color." + }, + "filterSelected": { + "title": "Filter", + "desc": "Filter the selected layer. Only applies to Raster and Control layers." + }, + "transformSelected": { + "title": "Transform", + "desc": "Transform the selected layer." + }, + "invertMask": { + "title": "Invert Mask", + "desc": "Invert the selected inpaint mask, creating a new mask with opposite transparency." + }, + "applyFilter": { + "title": "Apply Filter", + "desc": "Apply the pending filter to the selected layer." + }, + "cancelFilter": { + "title": "Cancel Filter", + "desc": "Cancel the pending filter." + }, + "applyTransform": { + "title": "Apply Transform", + "desc": "Apply the pending transform to the selected layer." + }, + "cancelTransform": { + "title": "Cancel Transform", + "desc": "Cancel the pending transform." + }, + "settings": { + "behavior": "Behavior", + "display": "Display", + "grid": "Grid", + "debug": "Debug" + }, + "toggleNonRasterLayers": { + "title": "Toggle Non-Raster Layers", + "desc": "Show or hide all non-raster layer categories (Control Layers, Inpaint Masks, Regional Guidance)." + }, + "fitBboxToLayers": { + "title": "Fit Bbox To Layers", + "desc": "Automatically adjust the generation bounding box to fit visible layers" + }, + "fitBboxToMasks": { + "title": "Fit Bbox To Masks", + "desc": "Automatically adjust the generation bounding box to fit visible inpaint masks" + }, + "toggleBbox": { + "title": "Toggle Bbox Visibility", + "desc": "Hide or show the generation bounding box" + }, + "applySegmentAnything": { + "title": "Apply Segment Anything", + "desc": "Apply the current Segment Anything mask.", + "key": "enter" + }, + "cancelSegmentAnything": { + "title": "Cancel Segment Anything", + "desc": "Cancel the current Segment Anything operation.", + "key": "esc" + } }, - "prompt": { - "addPromptTrigger": "Add Prompt Trigger", - "compatibleEmbeddings": "Compatible Embeddings", - "noMatchingTriggers": "No matching triggers", - "generateFromImage": "Generate prompt from image", - "expandCurrentPrompt": "Expand Current Prompt", - "uploadImageForPromptGeneration": "Upload Image for Prompt Generation", - "expandingPrompt": "Expanding prompt...", - "resultTitle": "Prompt Expansion Complete", - "resultSubtitle": "Choose how to handle the expanded prompt:", - "replace": "Replace", - "insert": "Insert", - "discard": "Discard", - "noPromptHistory": "No prompt history recorded.", - "noMatchingPrompts": "No matching prompts in history.", - "toSwitchBetweenPrompts": "to switch between prompts." - }, - "queue": { - "queue": "Queue", - "queueFront": "Add to Front of Queue", - "queueBack": "Add to Queue", - "queueEmpty": "Queue Empty", - "enqueueing": "Queueing Batch", - "resume": "Resume", - "resumeTooltip": "Resume Processor", - "resumeSucceeded": "Processor Resumed", - "resumeFailed": "Problem Resuming Processor", - "pause": "Pause", - "pauseTooltip": "Pause Processor", - "pauseSucceeded": "Processor Paused", - "pauseFailed": "Problem Pausing Processor", - "cancel": "Cancel", - "cancelAllExceptCurrentQueueItemAlertDialog": "Canceling all queue items except the current one will stop pending items but allow the in-progress one to finish.", - "cancelAllExceptCurrentQueueItemAlertDialog2": "Are you sure you want to cancel all pending queue items?", - "cancelAllExceptCurrent": "Cancel All Except Current", - "cancelAllExceptCurrentTooltip": "Cancel All Except Current Item", - "cancelTooltip": "Cancel Current Item", - "cancelSucceeded": "Item Canceled", - "cancelFailed": "Problem Canceling Item", - "retrySucceeded": "Item Retried", - "retryFailed": "Problem Retrying Item", - "confirm": "Confirm", - "prune": "Prune", - "pruneTooltip": "Prune {{item_count}} Completed Items", - "pruneSucceeded": "Pruned {{item_count}} Completed Items from Queue", - "pruneFailed": "Problem Pruning Queue", - "clear": "Clear", - "clearTooltip": "Cancel and Clear All Items", - "clearSucceeded": "Queue Cleared", - "clearFailed": "Problem Clearing Queue", - "cancelBatch": "Cancel Batch", - "cancelItem": "Cancel Item", - "retryItem": "Retry Item", - "cancelBatchSucceeded": "Batch Canceled", - "cancelBatchFailed": "Problem Canceling Batch", - "clearQueueAlertDialog": "Clearing the queue immediately cancels any processing items and clears the queue entirely. Pending filters will be canceled and the Canvas Staging Area will be reset.", - "clearQueueAlertDialog2": "Are you sure you want to clear the queue?", - "current": "Current", - "next": "Next", - "status": "Status", - "total": "Total", - "time": "Time", - "credits": "Credits", - "pending": "Pending", - "in_progress": "In Progress", - "completed": "Completed", - "failed": "Failed", - "canceled": "Canceled", - "completedIn": "Completed in", - "batch": "Batch", - "origin": "Origin", - "destination": "Dest", - "upscaling": "Upscaling", - "canvas": "Canvas", - "generation": "Generation", - "workflows": "Workflows", - "other": "Other", - "gallery": "Gallery", - "batchFieldValues": "Batch Field Values", - "item": "Item", - "session": "Session", - "notReady": "Unable to Queue", - "batchQueued": "Batch Queued", - "batchQueuedDesc_one": "Added {{count}} sessions to {{direction}} of queue", - "batchQueuedDesc_other": "Added {{count}} sessions to {{direction}} of queue", - "front": "front", - "back": "back", - "batchFailedToQueue": "Failed to Queue Batch", - "graphQueued": "Graph queued", - "graphFailedToQueue": "Failed to queue graph", - "openQueue": "Open Queue", - "prompts_one": "Prompt", - "prompts_other": "Prompts", - "iterations_one": "Iteration", - "iterations_other": "Iterations", - "generations_one": "Generation", - "generations_other": "Generations", - "batchSize": "Batch Size", - "createdAt": "Created At", - "completedAt": "Completed At", - "sortColumn": "Sort Column", - "sortBy": "Sort by {{column}}", - "sortOrderAscending": "Ascending", - "sortOrderDescending": "Descending" - }, - "invocationCache": { - "invocationCache": "Invocation Cache", - "cacheSize": "Cache Size", - "maxCacheSize": "Max Cache Size", - "hits": "Cache Hits", - "misses": "Cache Misses", - "clear": "Clear", - "clearSucceeded": "Invocation Cache Cleared", - "clearFailed": "Problem Clearing Invocation Cache", - "enable": "Enable", - "enableSucceeded": "Invocation Cache Enabled", - "enableFailed": "Problem Enabling Invocation Cache", - "disable": "Disable", - "disableSucceeded": "Invocation Cache Disabled", - "disableFailed": "Problem Disabling Invocation Cache", - "useCache": "Use Cache" - }, - "modelCache": { - "clear": "Clear Model Cache", - "clearSucceeded": "Model Cache Cleared", - "clearFailed": "Problem Clearing Model Cache" + "workflows": { + "title": "Workflows", + "addNode": { + "title": "Add Node", + "desc": "Open the add node menu." + }, + "copySelection": { + "title": "Copy", + "desc": "Copy selected nodes and edges." + }, + "pasteSelection": { + "title": "Paste", + "desc": "Paste copied nodes and edges." + }, + "pasteSelectionWithEdges": { + "title": "Paste with Edges", + "desc": "Paste copied nodes, edges, and all edges connected to copied nodes." + }, + "selectAll": { + "title": "Select All", + "desc": "Select all nodes and edges." + }, + "deleteSelection": { + "title": "Delete", + "desc": "Delete selected nodes and edges." + }, + "undo": { + "title": "Undo", + "desc": "Undo the last workflow action." + }, + "redo": { + "title": "Redo", + "desc": "Redo the last workflow action." + } + }, + "viewer": { + "title": "Image Viewer", + "toggleViewer": { + "title": "Show/Hide Image Viewer", + "desc": "Show or hide the image viewer. Only available on the Canvas tab." + }, + "swapImages": { + "title": "Swap Comparison Images", + "desc": "Swap the images being compared." + }, + "nextComparisonMode": { + "title": "Next Comparison Mode", + "desc": "Cycle through comparison modes." + }, + "loadWorkflow": { + "title": "Load Workflow", + "desc": "Load the current image's saved workflow (if it has one)." + }, + "recallAll": { + "title": "Recall All Metadata", + "desc": "Recall all metadata for the current image." + }, + "recallSeed": { + "title": "Recall Seed", + "desc": "Recall the seed for the current image." + }, + "recallPrompts": { + "title": "Recall Prompts", + "desc": "Recall the positive and negative prompts for the current image." + }, + "remix": { + "title": "Remix", + "desc": "Recall all metadata except for the seed for the current image." + }, + "useSize": { + "title": "Use Size", + "desc": "Use the current image's size as the bbox size." + }, + "runPostprocessing": { + "title": "Run Postprocessing", + "desc": "Run the selected postprocessing on the current image." + }, + "toggleMetadata": { + "title": "Show/Hide Metadata", + "desc": "Show or hide the current image's metadata overlay." + } }, "gallery": { - "gallery": "Gallery", - "images": "Images", - "assets": "Assets", - "alwaysShowImageSizeBadge": "Always Show Image Size Badge", - "assetsTab": "Files you've uploaded for use in your projects.", - "autoAssignBoardOnClick": "Auto-Assign Board on Click", - "autoSwitchNewImages": "Auto-Switch to New Images", - "boardsSettings": "Boards Settings", - "copy": "Copy", - "currentlyInUse": "This image is currently in use in the following features:", - "drop": "Drop", - "dropOrUpload": "Drop or Upload", - "dropToUpload": "$t(gallery.drop) to Upload", - "deleteImage_one": "Delete Image", - "deleteImage_other": "Delete {{count}} Images", - "deleteImagePermanent": "Deleted images cannot be restored.", - "displayBoardSearch": "Board Search", - "displaySearch": "Image Search", - "download": "Download", - "exitBoardSearch": "Exit Board Search", - "exitSearch": "Exit Image Search", - "featuresWillReset": "If you delete this image, those features will immediately be reset.", - "galleryImageSize": "Image Size", - "gallerySettings": "Gallery Settings", - "go": "Go", - "image": "image", - "imagesTab": "Images you've created and saved within Invoke.", - "imagesSettings": "Gallery Images Settings", - "jump": "Jump", - "loading": "Loading", - "newestFirst": "Newest First", - "oldestFirst": "Oldest First", - "sortDirection": "Sort Direction", - "showStarredImagesFirst": "Show Starred Images First", - "noImageSelected": "No Image Selected", - "noImagesInGallery": "No Images to Display", - "starImage": "Star", - "unstarImage": "Unstar", - "unableToLoad": "Unable to load Gallery", - "deleteSelection": "Delete Selection", - "downloadSelection": "Download Selection", - "bulkDownloadRequested": "Preparing Download", - "bulkDownloadRequestedDesc": "Your download request is being prepared. This may take a few moments.", - "bulkDownloadRequestFailed": "Problem Preparing Download", - "bulkDownloadFailed": "Download Failed", - "viewerImage": "Viewer Image", - "compareImage": "Compare Image", - "openInViewer": "Open in Viewer", - "searchImages": "Search by Metadata", - "selectAllOnPage": "Select All On Page", - "showArchivedBoards": "Show Archived Boards", - "selectForCompare": "Select for Compare", - "selectAnImageToCompare": "Select an Image to Compare", - "slider": "Slider", - "sideBySide": "Side-by-Side", - "hover": "Hover", - "swapImages": "Swap Images", - "stretchToFit": "Stretch to Fit", - "exitCompare": "Exit Compare", - "compareHelp1": "Hold Alt while clicking a gallery image or using the arrow keys to change the compare image.", - "compareHelp2": "Press M to cycle through comparison modes.", - "compareHelp3": "Press C to swap the compared images.", - "compareHelp4": "Press Z or Esc to exit.", - "openViewer": "Open Viewer", - "closeViewer": "Close Viewer", - "move": "Move", - "useForPromptGeneration": "Use for Prompt Generation" - }, - "hotkeys": { - "hotkeys": "Hotkeys", - "searchHotkeys": "Search Hotkeys", - "clearSearch": "Clear Search", - "noHotkeysFound": "No Hotkeys Found", - "editMode": "Edit Mode", - "viewMode": "View Mode", - "editHotkey": "Edit Hotkey", - "addHotkey": "Add Hotkey", - "resetToDefault": "Reset to Default", - "resetAll": "Reset All to Default", - "resetAllConfirmation": "Are you sure you want to reset all hotkeys to their default values? This cannot be undone.", - "enterHotkeys": "Enter hotkey(s), separated by commas", - "save": "Save", - "cancel": "Cancel", - "modifiers": "Modifiers", - "syntaxHelp": "Syntax Help", - "combineWith": "Combine with +", - "multipleHotkeys": "Multiple hotkeys with comma", - "validKeys": "Valid keys", - "help": "Help", - "noHotkeysRecorded": "No hotkeys recorded yet", - "pressKeys": "Press keys...", - "setHotkey": "SET", - "setAnother": "SET ANOTHER", - "removeLastHotkey": "Remove last hotkey", - "clearAll": "Clear All", - "duplicateWarning": "This hotkey is already recorded", - "conflictWarning": "is already used by \"{{hotkeyTitle}}\"", - "thisHotkey": "this hotkey", - "app": { - "title": "App", - "invoke": { - "title": "Invoke", - "desc": "Queue a generation, adding it to the end of the queue." - }, - "invokeFront": { - "title": "Invoke (Front)", - "desc": "Queue a generation, adding it to the front of the queue." - }, - "cancelQueueItem": { - "title": "Cancel", - "desc": "Cancel the currently processing queue item." - }, - "clearQueue": { - "title": "Clear Queue", - "desc": "Cancel and clear all queue items." - }, - "selectCanvasTab": { - "title": "Select the Canvas Tab", - "desc": "Selects the Canvas tab." - }, - "selectUpscalingTab": { - "title": "Select the Upscaling Tab", - "desc": "Selects the Upscaling tab." - }, - "selectWorkflowsTab": { - "title": "Select the Workflows Tab", - "desc": "Selects the Workflows tab." - }, - "selectModelsTab": { - "title": "Select the Models Tab", - "desc": "Selects the Models tab." - }, - "selectQueueTab": { - "title": "Select the Queue Tab", - "desc": "Selects the Queue tab." - }, - "focusPrompt": { - "title": "Focus Prompt", - "desc": "Move cursor focus to the positive prompt." - }, - "promptHistoryPrev": { - "title": "Previous Prompt in History", - "desc": "When the prompt is focused, move to the previous (older) prompt in your history." - }, - "promptHistoryNext": { - "title": "Next Prompt in History", - "desc": "When the prompt is focused, move to the next (newer) prompt in your history." - }, - "promptWeightUp": { - "title": "Increase Weight of Prompt Selection", - "desc": "When the prompt is focused and text is selected, increase the weight of the selected prompt." - }, - "promptWeightDown": { - "title": "Decrease Weight of Prompt Selection", - "desc": "When the prompt is focused and text is selected, decrease the weight of the selected prompt." - }, - "toggleLeftPanel": { - "title": "Toggle Left Panel", - "desc": "Show or hide the left panel." - }, - "toggleRightPanel": { - "title": "Toggle Right Panel", - "desc": "Show or hide the right panel." - }, - "resetPanelLayout": { - "title": "Reset Panel Layout", - "desc": "Reset the left and right panels to their default size and layout." - }, - "togglePanels": { - "title": "Toggle Panels", - "desc": "Show or hide both left and right panels at once." - }, - "selectGenerateTab": { - "title": "Select the Generate Tab", - "desc": "Selects the Generate tab.", - "key": "1" - } - }, - "canvas": { - "title": "Canvas", - "selectBrushTool": { - "title": "Brush Tool", - "desc": "Select the brush tool." - }, - "selectBboxTool": { - "title": "Bbox Tool", - "desc": "Select the bounding box tool." - }, - "decrementToolWidth": { - "title": "Decrement Tool Width", - "desc": "Decrement the brush or eraser tool width, whichever is selected." - }, - "incrementToolWidth": { - "title": "Increment Tool Width", - "desc": "Increment the brush or eraser tool width, whichever is selected." - }, - "selectColorPickerTool": { - "title": "Color Picker Tool", - "desc": "Select the color picker tool." - }, - "selectEraserTool": { - "title": "Eraser Tool", - "desc": "Select the eraser tool." - }, - "selectMoveTool": { - "title": "Move Tool", - "desc": "Select the move tool." - }, - "selectRectTool": { - "title": "Rect Tool", - "desc": "Select the rect tool." - }, - "selectViewTool": { - "title": "View Tool", - "desc": "Select the view tool." - }, - "fitLayersToCanvas": { - "title": "Fit Layers to Canvas", - "desc": "Scale and position the view to fit all visible layers." - }, - "fitBboxToCanvas": { - "title": "Fit Bbox to Canvas", - "desc": "Scale and position the view to fit the bbox." - }, - "setZoomTo100Percent": { - "title": "Zoom to 100%", - "desc": "Set the canvas zoom to 100%." - }, - "setZoomTo200Percent": { - "title": "Zoom to 200%", - "desc": "Set the canvas zoom to 200%." - }, - "setZoomTo400Percent": { - "title": "Zoom to 400%", - "desc": "Set the canvas zoom to 400%." - }, - "setZoomTo800Percent": { - "title": "Zoom to 800%", - "desc": "Set the canvas zoom to 800%." - }, - "quickSwitch": { - "title": "Layer Quick Switch", - "desc": "Switch between the last two selected layers. If a layer is bookmarked, always switch between it and the last non-bookmarked layer." - }, - "deleteSelected": { - "title": "Delete Layer", - "desc": "Delete the selected layer." - }, - "resetSelected": { - "title": "Reset Layer", - "desc": "Reset the selected layer. Only applies to Inpaint Mask and Regional Guidance." - }, - "undo": { - "title": "Undo", - "desc": "Undo the last canvas action." - }, - "redo": { - "title": "Redo", - "desc": "Redo the last canvas action." - }, - "nextEntity": { - "title": "Next Layer", - "desc": "Select the next layer in the list." - }, - "prevEntity": { - "title": "Prev Layer", - "desc": "Select the previous layer in the list." - }, - "setFillColorsToDefault": { - "title": "Set Colors to Default", - "desc": "Set the current tool colors to default." - }, - "toggleFillColor": { - "title": "Toggle Fill Color", - "desc": "Toggle the current tool fill color." - }, - "filterSelected": { - "title": "Filter", - "desc": "Filter the selected layer. Only applies to Raster and Control layers." - }, - "transformSelected": { - "title": "Transform", - "desc": "Transform the selected layer." - }, - "invertMask": { - "title": "Invert Mask", - "desc": "Invert the selected inpaint mask, creating a new mask with opposite transparency." - }, - "applyFilter": { - "title": "Apply Filter", - "desc": "Apply the pending filter to the selected layer." - }, - "cancelFilter": { - "title": "Cancel Filter", - "desc": "Cancel the pending filter." - }, - "applyTransform": { - "title": "Apply Transform", - "desc": "Apply the pending transform to the selected layer." - }, - "cancelTransform": { - "title": "Cancel Transform", - "desc": "Cancel the pending transform." - }, - "settings": { - "behavior": "Behavior", - "display": "Display", - "grid": "Grid", - "debug": "Debug" - }, - "toggleNonRasterLayers": { - "title": "Toggle Non-Raster Layers", - "desc": "Show or hide all non-raster layer categories (Control Layers, Inpaint Masks, Regional Guidance)." - }, - "fitBboxToLayers": { - "title": "Fit Bbox To Layers", - "desc": "Automatically adjust the generation bounding box to fit visible layers" - }, - "fitBboxToMasks": { - "title": "Fit Bbox To Masks", - "desc": "Automatically adjust the generation bounding box to fit visible inpaint masks" - }, - "toggleBbox": { - "title": "Toggle Bbox Visibility", - "desc": "Hide or show the generation bounding box" - }, - "applySegmentAnything": { - "title": "Apply Segment Anything", - "desc": "Apply the current Segment Anything mask.", - "key": "enter" - }, - "cancelSegmentAnything": { - "title": "Cancel Segment Anything", - "desc": "Cancel the current Segment Anything operation.", - "key": "esc" - } - }, - "workflows": { - "title": "Workflows", - "addNode": { - "title": "Add Node", - "desc": "Open the add node menu." - }, - "copySelection": { - "title": "Copy", - "desc": "Copy selected nodes and edges." - }, - "pasteSelection": { - "title": "Paste", - "desc": "Paste copied nodes and edges." - }, - "pasteSelectionWithEdges": { - "title": "Paste with Edges", - "desc": "Paste copied nodes, edges, and all edges connected to copied nodes." - }, - "selectAll": { - "title": "Select All", - "desc": "Select all nodes and edges." - }, - "deleteSelection": { - "title": "Delete", - "desc": "Delete selected nodes and edges." - }, - "undo": { - "title": "Undo", - "desc": "Undo the last workflow action." - }, - "redo": { - "title": "Redo", - "desc": "Redo the last workflow action." - } - }, - "viewer": { - "title": "Image Viewer", - "toggleViewer": { - "title": "Show/Hide Image Viewer", - "desc": "Show or hide the image viewer. Only available on the Canvas tab." - }, - "swapImages": { - "title": "Swap Comparison Images", - "desc": "Swap the images being compared." - }, - "nextComparisonMode": { - "title": "Next Comparison Mode", - "desc": "Cycle through comparison modes." - }, - "loadWorkflow": { - "title": "Load Workflow", - "desc": "Load the current image's saved workflow (if it has one)." - }, - "recallAll": { - "title": "Recall All Metadata", - "desc": "Recall all metadata for the current image." - }, - "recallSeed": { - "title": "Recall Seed", - "desc": "Recall the seed for the current image." - }, - "recallPrompts": { - "title": "Recall Prompts", - "desc": "Recall the positive and negative prompts for the current image." - }, - "remix": { - "title": "Remix", - "desc": "Recall all metadata except for the seed for the current image." - }, - "useSize": { - "title": "Use Size", - "desc": "Use the current image's size as the bbox size." - }, - "runPostprocessing": { - "title": "Run Postprocessing", - "desc": "Run the selected postprocessing on the current image." - }, - "toggleMetadata": { - "title": "Show/Hide Metadata", - "desc": "Show or hide the current image's metadata overlay." - } - }, - "gallery": { - "title": "Gallery", - "selectAllOnPage": { - "title": "Select All On Page", - "desc": "Select all images on the current page." - }, - "clearSelection": { - "title": "Clear Selection", - "desc": "Clear the current selection, if any." - }, - "galleryNavUp": { - "title": "Navigate Up", - "desc": "Navigate up in the gallery grid, selecting that image. If at the top of the page, go to the previous page." - }, - "galleryNavRight": { - "title": "Navigate Right", - "desc": "Navigate right in the gallery grid, selecting that image. If at the last image of the row, go to the next row. If at the last image of the page, go to the next page." - }, - "galleryNavDown": { - "title": "Navigate Down", - "desc": "Navigate down in the gallery grid, selecting that image. If at the bottom of the page, go to the next page." - }, - "galleryNavLeft": { - "title": "Navigate Left", - "desc": "Navigate left in the gallery grid, selecting that image. If at the first image of the row, go to the previous row. If at the first image of the page, go to the previous page." - }, - "galleryNavUpAlt": { - "title": "Navigate Up (Compare Image)", - "desc": "Same as Navigate Up, but selects the compare image, opening compare mode if it isn't already open." - }, - "galleryNavRightAlt": { - "title": "Navigate Right (Compare Image)", - "desc": "Same as Navigate Right, but selects the compare image, opening compare mode if it isn't already open." - }, - "galleryNavDownAlt": { - "title": "Navigate Down (Compare Image)", - "desc": "Same as Navigate Down, but selects the compare image, opening compare mode if it isn't already open." - }, - "galleryNavLeftAlt": { - "title": "Navigate Left (Compare Image)", - "desc": "Same as Navigate Left, but selects the compare image, opening compare mode if it isn't already open." - }, - "deleteSelection": { - "title": "Delete", - "desc": "Delete all selected images. By default, you will be prompted to confirm deletion. If the images are currently in use in the app, you will be warned." - }, - "starImage": { - "title": "Star/Unstar Image", - "desc": "Star or unstar the selected image." - } - } + "title": "Gallery", + "selectAllOnPage": { + "title": "Select All On Page", + "desc": "Select all images on the current page." + }, + "clearSelection": { + "title": "Clear Selection", + "desc": "Clear the current selection, if any." + }, + "galleryNavUp": { + "title": "Navigate Up", + "desc": "Navigate up in the gallery grid, selecting that image. If at the top of the page, go to the previous page." + }, + "galleryNavRight": { + "title": "Navigate Right", + "desc": "Navigate right in the gallery grid, selecting that image. If at the last image of the row, go to the next row. If at the last image of the page, go to the next page." + }, + "galleryNavDown": { + "title": "Navigate Down", + "desc": "Navigate down in the gallery grid, selecting that image. If at the bottom of the page, go to the next page." + }, + "galleryNavLeft": { + "title": "Navigate Left", + "desc": "Navigate left in the gallery grid, selecting that image. If at the first image of the row, go to the previous row. If at the first image of the page, go to the previous page." + }, + "galleryNavUpAlt": { + "title": "Navigate Up (Compare Image)", + "desc": "Same as Navigate Up, but selects the compare image, opening compare mode if it isn't already open." + }, + "galleryNavRightAlt": { + "title": "Navigate Right (Compare Image)", + "desc": "Same as Navigate Right, but selects the compare image, opening compare mode if it isn't already open." + }, + "galleryNavDownAlt": { + "title": "Navigate Down (Compare Image)", + "desc": "Same as Navigate Down, but selects the compare image, opening compare mode if it isn't already open." + }, + "galleryNavLeftAlt": { + "title": "Navigate Left (Compare Image)", + "desc": "Same as Navigate Left, but selects the compare image, opening compare mode if it isn't already open." + }, + "deleteSelection": { + "title": "Delete", + "desc": "Delete all selected images. By default, you will be prompted to confirm deletion. If the images are currently in use in the app, you will be warned." + }, + "starImage": { + "title": "Star/Unstar Image", + "desc": "Star or unstar the selected image." + } + } + }, + "lora": { + "weight": "Weight" + }, + "metadata": { + "allPrompts": "All Prompts", + "cfgScale": "CFG scale", + "cfgRescaleMultiplier": "$t(parameters.cfgRescaleMultiplier)", + "clipSkip": "$t(parameters.clipSkip)", + "createdBy": "Created By", + "generationMode": "Generation Mode", + "guidance": "Guidance", + "height": "Height", + "imageDetails": "Image Details", + "imageDimensions": "Image Dimensions", + "metadata": "Metadata", + "model": "Model", + "negativePrompt": "Negative Prompt", + "noImageDetails": "No image details found", + "noMetaData": "No metadata found", + "noRecallParameters": "No parameters to recall found", + "parameterSet": "Parameter {{parameter}} set", + "parsingFailed": "Parsing Failed", + "positivePrompt": "Positive Prompt", + "qwen3Encoder": "Qwen3 Encoder", + "qwen3Source": "Qwen3 Source", + "recallParameters": "Recall Parameters", + "recallParameter": "Recall {{label}}", + "scheduler": "Scheduler", + "seamlessXAxis": "Seamless X Axis", + "seamlessYAxis": "Seamless Y Axis", + "seedVarianceEnabled": "Seed Variance Enabled", + "seedVarianceStrength": "Seed Variance Strength", + "seedVarianceRandomizePercent": "Seed Variance Randomize %", + "seed": "Seed", + "steps": "Steps", + "strength": "Image to image strength", + "Threshold": "Noise Threshold", + "vae": "VAE", + "width": "Width", + "workflow": "Workflow", + "canvasV2Metadata": "Canvas Layers" + }, + "modelManager": { + "active": "active", + "actions": "Bulk Actions", + "addModel": "Add Model", + "addModels": "Add Models", + "advanced": "Advanced", + "allModels": "All Models", + "alpha": "Alpha", + "availableModels": "Available Models", + "baseModel": "Base Model", + "cancel": "Cancel", + "clipEmbed": "CLIP Embed", + "clipLEmbed": "CLIP-L Embed", + "clipGEmbed": "CLIP-G Embed", + "config": "Config", + "reidentify": "Reidentify", + "reidentifyTooltip": "If a model didn't install correctly (e.g. it has the wrong type or doesn't work), you can try reidentifying it. This will reset any custom settings you may have applied.", + "reidentifySuccess": "Model reidentified successfully", + "reidentifyUnknown": "Unable to identify model", + "reidentifyError": "Error reidentifying model", + "updatePath": "Update Path", + "updatePathTooltip": "Update the file path for this model if you have moved the model files to a new location.", + "updatePathDescription": "Enter the new path to the model file or directory. Use this if you have manually moved the model files on disk.", + "currentPath": "Current Path", + "newPath": "New Path", + "newPathPlaceholder": "Enter new path...", + "pathUpdated": "Model path updated successfully", + "pathUpdateFailed": "Failed to update model path", + "invalidPathFormat": "Path must be an absolute path (e.g., C:\\Models\\... or /home/user/models/...)", + "convert": "Convert", + "convertingModelBegin": "Converting Model. Please wait.", + "convertToDiffusers": "Convert To Diffusers", + "convertToDiffusersHelpText1": "This model will be converted to the 🧨 Diffusers format.", + "convertToDiffusersHelpText2": "This process will replace your Model Manager entry with the Diffusers version of the same model.", + "convertToDiffusersHelpText3": "Your checkpoint file on disk WILL be deleted if it is in the InvokeAI root folder. If it is in a custom location, then it WILL NOT be deleted.", + "convertToDiffusersHelpText4": "This is a one time process only. It might take around 30s-60s depending on the specifications of your computer.", + "convertToDiffusersHelpText5": "Please make sure you have enough disk space. Models generally vary between 2GB-7GB in size.", + "convertToDiffusersHelpText6": "Do you wish to convert this model?", + "cpuOnly": "CPU Only", + "runOnCpu": "Run model on CPU only", + "noDefaultSettings": "No default settings configured for this model. Visit the Model Manager to add default settings.", + "defaultSettings": "Default Settings", + "defaultSettingsSaved": "Default Settings Saved", + "defaultSettingsOutOfSync": "Some settings do not match the model's defaults:", + "restoreDefaultSettings": "Click to use the model's default settings.", + "usingDefaultSettings": "Using model's default settings", + "delete": "Delete", + "deleteConfig": "Delete Config", + "deleteModel": "Delete Model", + "deleteModels": "Delete Models", + "deleteModelImage": "Delete Model Image", + "deleteMsg1": "Are you sure you want to delete this model from InvokeAI?", + "deleteMsg2": "This WILL delete the model from disk if it is in the InvokeAI root folder. If you are using a custom location, then the model WILL NOT be deleted from disk.", + "description": "Description", + "edit": "Edit", + "fileSize": "File Size", + "filterModels": "Filter models", + "fluxRedux": "FLUX Redux", + "height": "Height", + "huggingFace": "HuggingFace", + "huggingFacePlaceholder": "owner/model-name", + "huggingFaceRepoID": "HuggingFace Repo ID", + "huggingFaceHelper": "If multiple models are found in this repo, you will be prompted to select one to install.", + "hfTokenLabel": "HuggingFace Token (Required for some models)", + "hfTokenHelperText": "A HF token is required to use some models. Click here to create or get your token.", + "hfTokenInvalid": "Invalid or Missing HF Token", + "hfForbidden": "You do not have access to this HF model", + "hfForbiddenErrorMessage": "We recommend visiting the repo. The owner may require acceptance of terms in order to download.", + "urlForbidden": "You do not have access to this model", + "urlForbiddenErrorMessage": "You may need to request permission from the site that is distributing the model.", + "hfTokenInvalidErrorMessage": "Invalid or missing HuggingFace token.", + "hfTokenRequired": "You are trying to download a model that requires a valid HuggingFace Token.", + "hfTokenInvalidErrorMessage2": "Update it in the ", + "hfTokenUnableToVerify": "Unable to Verify HF Token", + "hfTokenUnableToVerifyErrorMessage": "Unable to verify HuggingFace token. This is likely due to a network error. Please try again later.", + "hfTokenSaved": "HF Token Saved", + "hfTokenReset": "HF Token Reset", + "urlUnauthorizedErrorMessage": "You may need to configure an API token to access this model.", + "urlUnauthorizedErrorMessage2": "Learn how here.", + "unidentifiedModelTitle": "Unable to identify model", + "unidentifiedModelMessage": "We were unable to identify the type, base and/or format of the installed model. Try editing the model and selecting the appropriate settings for the model.", + "unidentifiedModelMessage2": "If you don't see the correct settings, or the model doesn't work after changing them, ask for help on or create an issue on .", + "imageEncoderModelId": "Image Encoder Model ID", + "installedModelsCount": "{{installed}} of {{total}} models installed.", + "includesNModels": "Includes {{n}} models and their dependencies.", + "allNModelsInstalled": "All {{count}} models installed", + "nToInstall": "{{count}} to install", + "nAlreadyInstalled": "{{count}} already installed", + "installQueue": "Install Queue", + "inplaceInstall": "In-place install", + "inplaceInstallDesc": "Install models without moving the files. When using the model, it will be loaded from its original location. If disabled, the model file(s) will be moved into the Invoke-managed models directory during installation.", + "install": "Install", + "installAll": "Install All", + "installRepo": "Install Repo", + "installBundle": "Install Bundle", + "installBundleMsg1": "Are you sure you want to install the {{bundleName}} bundle?", + "installBundleMsg2": "This bundle will install the following {{count}} models:", + "ipAdapters": "IP Adapters", + "learnMoreAboutSupportedModels": "Learn more about the models we support", + "load": "Load", + "localOnly": "local only", + "manual": "Manual", + "loraModels": "LoRAs", + "main": "Main", + "metadata": "Metadata", + "model": "Model", + "modelConversionFailed": "Model Conversion Failed", + "modelConverted": "Model Converted", + "modelDeleted": "Model Deleted", + "modelDeleteFailed": "Failed to delete model", + "modelFormat": "Model Format", + "modelImageDeleted": "Model Image Deleted", + "modelImageDeleteFailed": "Model Image Delete Failed", + "modelImageUpdated": "Model Image Updated", + "modelImageUpdateFailed": "Model Image Update Failed", + "modelManager": "Model Manager", + "modelName": "Model Name", + "modelSettings": "Model Settings", + "modelSettingsWarning": "These settings tell Invoke what kind of model this is and how to load it. If Invoke didn't detect these correctly when you installed the model, or if the model is classified as Unknown, you may need to edit them manually.", + "modelType": "Model Type", + "modelUpdated": "Model Updated", + "modelUpdateFailed": "Model Update Failed", + "name": "Name", + "modelPickerFallbackNoModelsInstalled": "No models installed.", + "modelPickerFallbackNoModelsInstalled2": "Visit the Model Manager to install models.", + "noModelsInstalledDesc1": "Install models with the", + "noModelSelected": "No Model Selected", + "noMatchingModels": "No matching models", + "noModelsInstalled": "No models installed", + "none": "none", + "path": "Path", + "pathToConfig": "Path To Config", + "predictionType": "Prediction Type", + "prune": "Prune", + "pruneTooltip": "Prune finished imports from queue", + "relatedModels": "Related Models", + "showOnlyRelatedModels": "Related", + "repo_id": "Repo ID", + "repoVariant": "Repo Variant", + "scanFolder": "Scan Folder", + "scanFolderHelper": "The folder will be recursively scanned for models. This can take a few moments for very large folders.", + "scanPlaceholder": "Path to a local folder", + "scanResults": "Scan Results", + "search": "Search", + "selected": "Selected", + "selectModel": "Select Model", + "settings": "Settings", + "simpleModelPlaceholder": "URL or path to a local file or diffusers folder", + "source": "Source", + "sigLip": "SigLIP", + "spandrelImageToImage": "Image to Image (Spandrel)", + "starterBundles": "Starter Bundles", + "starterBundleHelpText": "Easily install all models needed to get started with a base model, including a main model, controlnets, IP adapters, and more. Selecting a bundle will skip any models that you already have installed.", + "starterModels": "Starter Models", + "starterModelsInModelManager": "Starter Models can be found in Model Manager", + "bundleAlreadyInstalled": "Bundle already installed", + "bundleAlreadyInstalledDesc": "All models in the {{bundleName}} bundle are already installed.", + "launchpadTab": "Launchpad", + "launchpad": { + "welcome": "Welcome to Model Management", + "description": "Invoke requires models to be installed to utilize most features of the platform. Choose from manual installation options or explore curated starter models.", + "manualInstall": "Manual Installation", + "urlDescription": "Install models from a URL or local file path. Perfect for specific models you want to add.", + "huggingFaceDescription": "Browse and install models directly from HuggingFace repositories.", + "scanFolderDescription": "Scan a local folder to automatically detect and install models.", + "recommendedModels": "Recommended Models", + "exploreStarter": "Or browse all available starter models", + "quickStart": "Quick Start Bundles", + "bundleDescription": "Each bundle includes essential models for each model family and curated base models to get started.", + "browseAll": "Or browse all available models:", + "stableDiffusion15": "Stable Diffusion 1.5", + "sdxl": "SDXL", + "fluxDev": "FLUX.1 dev" + }, + "controlLora": "Control LoRA", + "llavaOnevision": "LLaVA OneVision", + "syncModels": "Sync Models", + "textualInversions": "Textual Inversions", + "triggerPhrases": "Trigger Phrases", + "loraTriggerPhrases": "LoRA Trigger Phrases", + "mainModelTriggerPhrases": "Main Model Trigger Phrases", + "selectAll": "Select All", + "typePhraseHere": "Type phrase here", + "t5Encoder": "T5 Encoder", + "qwen3Encoder": "Qwen3 Encoder", + "zImageVae": "VAE (optional)", + "zImageVaePlaceholder": "From VAE source model", + "zImageQwen3Encoder": "Qwen3 Encoder (optional)", + "zImageQwen3EncoderPlaceholder": "From Qwen3 source model", + "zImageQwen3Source": "Qwen3 & VAE Source Model", + "zImageQwen3SourcePlaceholder": "Required if VAE/Encoder empty", + "upcastAttention": "Upcast Attention", + "uploadImage": "Upload Image", + "urlOrLocalPath": "URL or Local Path", + "urlOrLocalPathHelper": "URLs should point to a single file. Local paths can point to a single file or folder for a single diffusers model.", + "vae": "VAE", + "vaePrecision": "VAE Precision", + "variant": "Variant", + "width": "Width", + "installingBundle": "Installing Bundle", + "installingModel": "Installing Model", + "installingXModels_one": "Installing {{count}} model", + "installingXModels_other": "Installing {{count}} models", + "skippingXDuplicates_one": ", skipping {{count}} duplicate", + "skippingXDuplicates_other": ", skipping {{count}} duplicates", + "manageModels": "Manage Models" + }, + "models": { + "addLora": "Add LoRA", + "concepts": "Concepts", + "loading": "loading", + "noMatchingLoRAs": "No matching LoRAs", + "noMatchingModels": "No matching Models", + "noModelsAvailable": "No models available", + "lora": "LoRA", + "selectModel": "Select a Model", + "noLoRAsInstalled": "No LoRAs installed", + "noRefinerModelsInstalled": "No SDXL Refiner models installed", + "defaultVAE": "Default VAE", + "noCompatibleLoRAs": "No Compatible LoRAs" + }, + "nodes": { + "arithmeticSequence": "Arithmetic Sequence", + "linearDistribution": "Linear Distribution", + "uniformRandomDistribution": "Uniform Random Distribution", + "parseString": "Parse String", + "splitOn": "Split On", + "noBatchGroup": "no group", + "generatorImagesCategory": "Category", + "generatorImages_one": "{{count}} image", + "generatorImages_other": "{{count}} images", + "generatorNRandomValues_one": "{{count}} random value", + "generatorNRandomValues_other": "{{count}} random values", + "generatorNoValues": "empty", + "generatorLoading": "loading", + "generatorLoadFromFile": "Load from File", + "generatorImagesFromBoard": "Images from Board", + "dynamicPromptsRandom": "Dynamic Prompts (Random)", + "dynamicPromptsCombinatorial": "Dynamic Prompts (Combinatorial)", + "addNode": "Add Node", + "addNodeToolTip": "Add Node (Shift+A, Space)", + "addLinearView": "Add to Linear View", + "animatedEdges": "Animated Edges", + "animatedEdgesHelp": "Animate selected edges and edges connected to selected nodes", + "boolean": "Booleans", + "cannotConnectInputToInput": "Cannot connect input to input", + "cannotConnectOutputToOutput": "Cannot connect output to output", + "cannotConnectToSelf": "Cannot connect to self", + "cannotDuplicateConnection": "Cannot create duplicate connections", + "cannotMixAndMatchCollectionItemTypes": "Cannot mix and match collection item types", + "missingNode": "Missing invocation node", + "missingInvocationTemplate": "Missing invocation template", + "missingFieldTemplate": "Missing field template", + "missingSourceOrTargetNode": "Missing source or target node", + "missingSourceOrTargetHandle": "Missing source or target handle", + "nodePack": "Node pack", + "collection": "Collection", + "singleFieldType": "{{name}} (Single)", + "collectionFieldType": "{{name}} (Collection)", + "collectionOrScalarFieldType": "{{name}} (Single or Collection)", + "colorCodeEdges": "Color-Code Edges", + "colorCodeEdgesHelp": "Color-code edges according to their connected fields", + "connectionWouldCreateCycle": "Connection would create a cycle", + "currentImage": "Current Image", + "currentImageDescription": "Displays the current image in the Node Editor", + "downloadWorkflow": "Download Workflow JSON", + "downloadWorkflowError": "Error downloading workflow", + "edge": "Edge", + "edit": "Edit", + "editMode": "Edit in Workflow Editor", + "enum": "Enum", + "executionStateCompleted": "Completed", + "executionStateError": "Error", + "executionStateInProgress": "In Progress", + "fieldTypesMustMatch": "Field types must match", + "fitViewportNodes": "Fit View", + "float": "Float", + "fullyContainNodes": "Fully Contain Nodes to Select", + "fullyContainNodesHelp": "Nodes must be fully inside the selection box to be selected", + "showEdgeLabels": "Show Edge Labels", + "showEdgeLabelsHelp": "Show labels on edges, indicating the connected nodes", + "hideLegendNodes": "Hide Field Type Legend", + "hideMinimapnodes": "Hide MiniMap", + "inputMayOnlyHaveOneConnection": "Input may only have one connection", + "integer": "Integer", + "ipAdapter": "IP-Adapter", + "loadingNodes": "Loading Nodes...", + "loadWorkflow": "Load Workflow", + "noWorkflows": "No Workflows", + "noMatchingWorkflows": "No Matching Workflows", + "noWorkflow": "No Workflow", + "unableToUpdateNode": "Node update failed: node {{node}} of type {{type}} (may require deleting and recreating)", + "mismatchedVersion": "Invalid node: node {{node}} of type {{type}} has mismatched version (try updating?)", + "missingTemplate": "Invalid node: node {{node}} of type {{type}} missing template (not installed?)", + "sourceNodeDoesNotExist": "Invalid edge: source/output node {{node}} does not exist", + "targetNodeDoesNotExist": "Invalid edge: target/input node {{node}} does not exist", + "sourceNodeFieldDoesNotExist": "Invalid edge: source/output field {{node}}.{{field}} does not exist", + "targetNodeFieldDoesNotExist": "Invalid edge: target/input field {{node}}.{{field}} does not exist", + "deletedInvalidEdge": "Deleted invalid edge {{source}} -> {{target}}", + "deletedMissingNodeFieldFormElement": "Deleted missing form field: node {{nodeId}} field {{fieldName}}", + "noConnectionInProgress": "No connection in progress", + "node": "Node", + "nodeOutputs": "Node Outputs", + "nodeSearch": "Search for nodes", + "nodeTemplate": "Node Template", + "nodeType": "Node Type", + "nodeName": "Node Name", + "noFieldsLinearview": "No fields added to Linear View", + "noFieldsViewMode": "This workflow has no selected fields to display. View the full workflow to configure values.", + "workflowHelpText": "Need Help? Check out our guide to Getting Started with Workflows.", + "noNodeSelected": "No node selected", + "nodeOpacity": "Node Opacity", + "nodeVersion": "Node Version", + "noOutputRecorded": "No outputs recorded", + "notes": "Notes", + "description": "Description", + "notesDescription": "Add notes about your workflow", + "problemSettingTitle": "Problem Setting Title", + "resetToDefaultValue": "Reset to default value", + "reloadNodeTemplates": "Reload Node Templates", + "removeLinearView": "Remove from Linear View", + "reorderLinearView": "Reorder Linear View", + "newWorkflow": "New Workflow", + "newWorkflowDesc": "Create a new workflow?", + "newWorkflowDesc2": "Your current workflow has unsaved changes.", + "loadWorkflowDesc": "Load workflow?", + "loadWorkflowDesc2": "Your current workflow has unsaved changes.", + "clearWorkflow": "Clear Workflow", + "clearWorkflowDesc": "Clear this workflow and start a new one?", + "clearWorkflowDesc2": "Your current workflow has unsaved changes.", + "scheduler": "Scheduler", + "showLegendNodes": "Show Field Type Legend", + "showMinimapnodes": "Show MiniMap", + "snapToGrid": "Snap to Grid", + "snapToGridHelp": "Snap nodes to grid when moved", + "string": "String", + "unableToLoadWorkflow": "Unable to Load Workflow", + "unableToValidateWorkflow": "Unable to Validate Workflow", + "unknownErrorValidatingWorkflow": "Unknown error validating workflow", + "inputFieldTypeParseError": "Unable to parse type of input field {{node}}.{{field}} ({{message}})", + "outputFieldTypeParseError": "Unable to parse type of output field {{node}}.{{field}} ({{message}})", + "unableToExtractSchemaNameFromRef": "unable to extract schema name from ref", + "unsupportedArrayItemType": "unsupported array item type \"{{type}}\"", + "unsupportedAnyOfLength": "too many union members ({{count}})", + "unsupportedMismatchedUnion": "mismatched CollectionOrScalar type with base types {{firstType}} and {{secondType}}", + "unableToParseFieldType": "unable to parse field type", + "unableToExtractEnumOptions": "unable to extract enum options", + "unknownField": "Unknown field", + "unknownFieldType": "$t(nodes.unknownField) type: {{type}}", + "unknownNode": "Unknown Node", + "unknownNodeType": "Unknown node type", + "unknownTemplate": "Unknown Template", + "unknownInput": "Unknown input: {{name}}", + "missingField_withName": "Missing field \"{{name}}\"", + "unexpectedField_withName": "Unexpected field \"{{name}}\"", + "unknownField_withName": "Unknown field \"{{name}}\"", + "unknownFieldEditWorkflowToFix_withName": "Workflow contains an unknown field \"{{name}}\".\nEdit the workflow to fix the issue.", + "updateNode": "Update Node", + "updateApp": "Update App", + "loadingTemplates": "Loading {{name}}", + "updateAllNodes": "Update Nodes", + "allNodesUpdated": "All Nodes Updated", + "unableToUpdateNodes_one": "Unable to update {{count}} node", + "unableToUpdateNodes_other": "Unable to update {{count}} nodes", + "validateConnections": "Validate Connections and Graph", + "validateConnectionsHelp": "Prevent invalid connections from being made, and invalid graphs from being invoked", + "viewMode": "Use in Linear View", + "unableToGetWorkflowVersion": "Unable to get workflow schema version", + "version": "Version", + "versionUnknown": " Version Unknown", + "workflow": "Workflow", + "graph": "Graph", + "noGraph": "No Graph", + "workflowAuthor": "Author", + "workflowContact": "Contact", + "workflowDescription": "Short Description", + "workflowName": "Name", + "workflowNotes": "Notes", + "workflowSettings": "Workflow Editor Settings", + "workflowTags": "Tags", + "workflowValidation": "Workflow Validation Error", + "workflowVersion": "Version", + "zoomInNodes": "Zoom In", + "zoomOutNodes": "Zoom Out", + "betaDesc": "This invocation is in beta. Until it is stable, it may have breaking changes during app updates. We plan to support this invocation long-term.", + "prototypeDesc": "This invocation is a prototype. It may have breaking changes during app updates and may be removed at any time.", + "internalDesc": "This invocation is used internally by Invoke. It may have breaking changes during app updates and may be removed at any time.", + "specialDesc": "This invocation some special handling in the app. For example, Batch nodes are used to queue multiple graphs from a single workflow.", + "imageAccessError": "Unable to find image {{image_name}}, resetting to default", + "boardAccessError": "Unable to find board {{board_id}}, resetting to default", + "modelAccessError": "Unable to find model {{key}}, resetting to default", + "saveToGallery": "Save To Gallery", + "addItem": "Add Item", + "generateValues": "Generate Values", + "floatRangeGenerator": "Float Range Generator", + "integerRangeGenerator": "Integer Range Generator", + "layout": { + "autoLayout": "Auto Layout", + "layeringStrategy": "Layering Strategy", + "networkSimplex": "Network Simplex", + "longestPath": "Longest Path", + "nodeSpacing": "Node Spacing", + "layerSpacing": "Layer Spacing", + "layoutDirection": "Layout Direction", + "layoutDirectionRight": "Right", + "layoutDirectionDown": "Down", + "alignment": "Node Alignment", + "alignmentUL": "Top Left", + "alignmentDL": "Bottom Left", + "alignmentUR": "Top Right", + "alignmentDR": "Bottom Right" + } + }, + "parameters": { + "aspect": "Aspect", + "duration": "Duration", + "lockAspectRatio": "Lock Aspect Ratio", + "swapDimensions": "Swap Dimensions", + "setToOptimalSize": "Optimize size for model", + "setToOptimalSizeTooSmall": "$t(parameters.setToOptimalSize) (may be too small)", + "setToOptimalSizeTooLarge": "$t(parameters.setToOptimalSize) (may be too large)", + "cancel": { + "cancel": "Cancel" + }, + "cfgScale": "CFG Scale", + "cfgRescaleMultiplier": "CFG Rescale Multiplier", + "clipSkip": "CLIP Skip", + "coherenceMode": "Mode", + "coherenceEdgeSize": "Edge Size", + "coherenceMinDenoise": "Min Denoise", + "controlNetControlMode": "Control Mode", + "copyImage": "Copy Image", + "denoisingStrength": "Denoising Strength", + "disabledNoRasterContent": "Disabled (No Raster Content)", + "downloadImage": "Download Image", + "general": "General", + "guidance": "Guidance", + "height": "Height", + "imageFit": "Fit Initial Image To Output Size", + "images": "Images", + "images_withCount_one": "Image", + "images_withCount_other": "Images", + "infillMethod": "Infill Method", + "infillColorValue": "Fill Color", + "info": "Info", + "invoke": { + "addingImagesTo": "Adding images to", + "modelDisabledForTrial": "Generating with {{modelName}} is not available on trial accounts. Visit your account settings to upgrade.", + "invoke": "Invoke", + "missingFieldTemplate": "Missing field template", + "missingInputForField": "missing input", + "missingNodeTemplate": "Missing node template", + "emptyBatches": "empty batches", + "batchNodeNotConnected": "Batch node not connected: {{label}}", + "batchNodeEmptyCollection": "Some batch nodes have empty collections", + "collectionEmpty": "empty collection", + "collectionTooFewItems": "too few items, minimum {{minItems}}", + "collectionTooManyItems": "too many items, maximum {{maxItems}}", + "collectionStringTooLong": "too long, max {{maxLength}}", + "collectionStringTooShort": "too short, min {{minLength}}", + "collectionNumberGTMax": "{{value}} > {{maximum}} (inc max)", + "collectionNumberLTMin": "{{value}} < {{minimum}} (inc min)", + "collectionNumberGTExclusiveMax": "{{value}} >= {{exclusiveMaximum}} (exc max)", + "collectionNumberLTExclusiveMin": "{{value}} <= {{exclusiveMinimum}} (exc min)", + "collectionNumberNotMultipleOf": "{{value}} not multiple of {{multipleOf}}", + "batchNodeCollectionSizeMismatchNoGroupId": "Batch group collection size mismatch", + "batchNodeCollectionSizeMismatch": "Collection size mismatch on Batch {{batchGroupId}}", + "noModelSelected": "No model selected", + "noStartingFrameImage": "No starting frame image", + "noT5EncoderModelSelected": "No T5 Encoder model selected for FLUX generation", + "noFLUXVAEModelSelected": "No VAE model selected for FLUX generation", + "noCLIPEmbedModelSelected": "No CLIP Embed model selected for FLUX generation", + "noZImageVaeSourceSelected": "No VAE source: Select VAE (FLUX) or Qwen3 Source model", + "noZImageQwen3EncoderSourceSelected": "No Qwen3 Encoder source: Select Qwen3 Encoder or Qwen3 Source model", + "fluxModelIncompatibleBboxWidth": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), bbox width is {{width}}", + "fluxModelIncompatibleBboxHeight": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), bbox height is {{height}}", + "fluxModelIncompatibleScaledBboxWidth": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), scaled bbox width is {{width}}", + "fluxModelIncompatibleScaledBboxHeight": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), scaled bbox height is {{height}}", + "modelIncompatibleBboxWidth": "Bbox width is {{width}} but {{model}} requires multiple of {{multiple}}", + "modelIncompatibleBboxHeight": "Bbox height is {{height}} but {{model}} requires multiple of {{multiple}}", + "modelIncompatibleScaledBboxWidth": "Scaled bbox width is {{width}} but {{model}} requires multiple of {{multiple}}", + "modelIncompatibleScaledBboxHeight": "Scaled bbox height is {{height}} but {{model}} requires multiple of {{multiple}}", + "fluxModelMultipleControlLoRAs": "Can only use 1 Control LoRA at a time", + "incompatibleLoRAs": "Incompatible LoRA(s) added", + "canvasIsFiltering": "Canvas is busy (filtering)", + "canvasIsTransforming": "Canvas is busy (transforming)", + "canvasIsRasterizing": "Canvas is busy (rasterizing)", + "canvasIsCompositing": "Canvas is busy (compositing)", + "canvasIsSelectingObject": "Canvas is busy (selecting object)", + "noPrompts": "No prompts generated", + "noNodesInGraph": "No nodes in graph", + "systemDisconnected": "System disconnected", + "promptExpansionPending": "Prompt expansion in progress", + "promptExpansionResultPending": "Please accept or discard your prompt expansion result" + }, + "maskBlur": "Mask Blur", + "negativePromptPlaceholder": "Negative Prompt", + "noiseThreshold": "Noise Threshold", + "patchmatchDownScaleSize": "Downscale", + "perlinNoise": "Perlin Noise", + "positivePromptPlaceholder": "Positive Prompt", + "recallMetadata": "Recall Metadata", + "iterations": "Iterations", + "scale": "Scale", + "scaleBeforeProcessing": "Scale Before Processing", + "scaledHeight": "Scaled H", + "scaledWidth": "Scaled W", + "scheduler": "Scheduler", + "seamlessXAxis": "Seamless X Axis", + "seamlessYAxis": "Seamless Y Axis", + "colorCompensation": "Color Compensation", + "seed": "Seed", + "seedVarianceEnabled": "Seed Variance Enhancer", + "seedVarianceStrength": "Variance Strength", + "seedVarianceRandomizePercent": "Randomize Percent", + "imageActions": "Image Actions", + "sendToCanvas": "Send To Canvas", + "sendToUpscale": "Send To Upscale", + "showOptionsPanel": "Show Side Panel (O or T)", + "shuffle": "Shuffle Seed", + "steps": "Steps", + "strength": "Strength", + "symmetry": "Symmetry", + "tileSize": "Tile Size", + "optimizedImageToImage": "Optimized Image-to-Image", + "type": "Type", + "postProcessing": "Post-Processing (Shift + U)", + "processImage": "Process Image", + "upscaling": "Upscaling", + "useAll": "Use All", + "useSize": "Use Size", + "useCpuNoise": "Use CPU Noise", + "remixImage": "Remix Image", + "usePrompt": "Use Prompt", + "useSeed": "Use Seed", + "useClipSkip": "Use CLIP Skip", + "width": "Width", + "gaussianBlur": "Gaussian Blur", + "boxBlur": "Box Blur", + "staged": "Staged", + "resolution": "Resolution", + "modelDisabledForTrial": "Generating with {{modelName}} is not available on trial accounts. Visit your account settings to upgrade." + }, + "dynamicPrompts": { + "showDynamicPrompts": "Show Dynamic Prompts", + "dynamicPrompts": "Dynamic Prompts", + "maxPrompts": "Max Prompts", + "promptsPreview": "Prompts Preview", + "seedBehaviour": { + "label": "Seed Behaviour", + "perIterationLabel": "Seed per Iteration", + "perIterationDesc": "Use a different seed for each iteration", + "perPromptLabel": "Seed per Image", + "perPromptDesc": "Use a different seed for each image" + }, + "loading": "Generating Dynamic Prompts...", + "promptsToGenerate": "Prompts to Generate" + }, + "sdxl": { + "cfgScale": "CFG Scale", + "concatPromptStyle": "Linking Prompt & Style", + "freePromptStyle": "Manual Style Prompting", + "denoisingStrength": "Denoising Strength", + "loading": "Loading...", + "negAestheticScore": "Negative Aesthetic Score", + "negStylePrompt": "Negative Style Prompt", + "noModelsAvailable": "No models available", + "posAestheticScore": "Positive Aesthetic Score", + "posStylePrompt": "Positive Style Prompt", + "refiner": "Refiner", + "refinermodel": "Refiner Model", + "refinerStart": "Refiner Start", + "refinerSteps": "Refiner Steps", + "scheduler": "Scheduler", + "steps": "Steps" + }, + "settings": { + "antialiasProgressImages": "Antialias Progress Images", + "beta": "Beta", + "confirmOnDelete": "Confirm On Delete", + "confirmOnNewSession": "Confirm On New Session", + "developer": "Developer", + "displayInProgress": "Display Progress Images", + "enableInformationalPopovers": "Enable Informational Popovers", + "informationalPopoversDisabled": "Informational Popovers Disabled", + "informationalPopoversDisabledDesc": "Informational popovers have been disabled. Enable them in Settings.", + "enableModelDescriptions": "Enable Model Descriptions in Dropdowns", + "enableHighlightFocusedRegions": "Highlight Focused Regions", + "modelDescriptionsDisabled": "Model Descriptions in Dropdowns Disabled", + "modelDescriptionsDisabledDesc": "Model descriptions in dropdowns have been disabled. Enable them in Settings.", + "enableInvisibleWatermark": "Enable Invisible Watermark", + "enableNSFWChecker": "Enable NSFW Checker", + "general": "General", + "generation": "Generation", + "models": "Models", + "resetComplete": "Web UI has been reset.", + "resetWebUI": "Reset Web UI", + "resetWebUIDesc1": "Resetting the web UI only resets the browser's local cache of your images and remembered settings. It does not delete any images from disk.", + "resetWebUIDesc2": "If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub.", + "showDetailedInvocationProgress": "Show Progress Details", + "showProgressInViewer": "Show Progress Images in Viewer", + "ui": "User Interface", + "clearIntermediatesDisabled": "Queue must be empty to clear intermediates", + "clearIntermediatesDesc1": "Clearing intermediates will reset your Canvas and ControlNet state.", + "clearIntermediatesDesc2": "Intermediate images are byproducts of generation, different from the result images in the gallery. Clearing intermediates will free disk space.", + "clearIntermediatesDesc3": "Your gallery images will not be deleted.", + "clearIntermediates": "Clear Intermediates", + "clearIntermediatesWithCount_one": "Clear {{count}} Intermediate", + "clearIntermediatesWithCount_other": "Clear {{count}} Intermediates", + "intermediatesCleared_one": "Cleared {{count}} Intermediate", + "intermediatesCleared_other": "Cleared {{count}} Intermediates", + "intermediatesClearedFailed": "Problem Clearing Intermediates", + "reloadingIn": "Reloading in" + }, + "toast": { + "addedToBoard": "Added to board {{name}}'s assets", + "addedToUncategorized": "Added to board $t(boards.uncategorized)'s assets", + "baseModelChanged": "Base Model Changed", + "baseModelChangedCleared_one": "Updated, cleared or disabled {{count}} incompatible submodel", + "baseModelChangedCleared_other": "Updated, cleared or disabled {{count}} incompatible submodels", + "canceled": "Processing Canceled", + "connected": "Connected to Server", + "imageCopied": "Image Copied", + "linkCopied": "Link Copied", + "unableToLoadImage": "Unable to Load Image", + "unableToLoadImageMetadata": "Unable to Load Image Metadata", + "unableToLoadStylePreset": "Unable to Load Style Preset", + "stylePresetLoaded": "Style Preset Loaded", + "imageNotLoadedDesc": "Could not find image", + "imageSaved": "Image Saved", + "imageSavingFailed": "Image Saving Failed", + "imageUploaded": "Image Uploaded", + "imageUploadFailed": "Image Upload Failed", + "importFailed": "Import Failed", + "importSuccessful": "Import Successful", + "invalidUpload": "Invalid Upload", + "layerCopiedToClipboard": "Layer Copied to Clipboard", + "layerSavedToAssets": "Layer Saved to Assets", + "loadedWithWarnings": "Workflow Loaded with Warnings", + "modelAddedSimple": "Model Added to Queue", + "modelImportCanceled": "Model Import Canceled", + "outOfMemoryError": "Out of Memory Error", + "outOfMemoryErrorDescLocal": "Follow our Low VRAM guide to reduce OOMs.", + "outOfMemoryErrorDesc": "Your current generation settings exceed system capacity. Please adjust your settings and try again.", + "parameters": "Parameters", + "parameterSet": "Parameter Recalled", + "parameterSetDesc": "Recalled {{parameter}}", + "parameterNotSet": "Parameter Not Recalled", + "parameterNotSetDesc": "Unable to recall {{parameter}}", + "parameterNotSetDescWithMessage": "Unable to recall {{parameter}}: {{message}}", + "parametersSet": "Parameters Recalled", + "parametersNotSet": "Parameters Not Recalled", + "errorCopied": "Error Copied", + "problemCopyingImage": "Unable to Copy Image", + "problemCopyingLayer": "Unable to Copy Layer", + "problemSavingLayer": "Unable to Save Layer", + "problemDownloadingImage": "Unable to Download Image", + "noRasterLayers": "No Raster Layers Found", + "noRasterLayersDesc": "Create at least one raster layer to export to PSD", + "noActiveRasterLayers": "No Active Raster Layers", + "noActiveRasterLayersDesc": "Enable at least one raster layer to export to PSD", + "noVisibleRasterLayers": "No Visible Raster Layers", + "noVisibleRasterLayersDesc": "Enable at least one raster layer to export to PSD", + "invalidCanvasDimensions": "Invalid Canvas Dimensions", + "canvasTooLarge": "Canvas Too Large", + "canvasTooLargeDesc": "Canvas dimensions exceed the maximum allowed size for PSD export. Reduce the total width and height of the canvas of the canvas and try again.", + "failedToProcessLayers": "Failed to Process Layers", + "psdExportSuccess": "PSD Export Complete", + "psdExportSuccessDesc": "Successfully exported {{count}} layers to PSD file", + "problemExportingPSD": "Problem Exporting PSD", + "canvasManagerNotAvailable": "Canvas Manager Not Available", + "noValidLayerAdapters": "No Valid Layer Adapters Found", + "pasteSuccess": "Pasted to {{destination}}", + "pasteFailed": "Paste Failed", + "prunedQueue": "Pruned Queue", + "sentToCanvas": "Sent to Canvas", + "sentToUpscale": "Sent to Upscale", + "serverError": "Server Error", + "sessionRef": "Session: {{sessionId}}", + "setControlImage": "Set as control image", + "setNodeField": "Set as node field", + "somethingWentWrong": "Something Went Wrong", + "uploadFailed": "Upload failed", + "imagesWillBeAddedTo": "Uploaded images will be added to board {{boardName}}'s assets.", + "uploadFailedInvalidUploadDesc_withCount_one": "Must be maximum of 1 PNG, JPEG or WEBP image.", + "uploadFailedInvalidUploadDesc_withCount_other": "Must be maximum of {{count}} PNG, JPEG or WEBP images.", + "uploadFailedInvalidUploadDesc": "Must be PNG, JPEG or WEBP images.", + "workflowLoaded": "Workflow Loaded", + "problemRetrievingWorkflow": "Problem Retrieving Workflow", + "workflowDeleted": "Workflow Deleted", + "problemDeletingWorkflow": "Problem Deleting Workflow", + "unableToCopy": "Unable to Copy", + "unableToCopyDesc": "Your browser does not support clipboard access. Firefox users may be able to fix this by following ", + "unableToCopyDesc_theseSteps": "these steps", + "fluxFillIncompatibleWithT2IAndI2I": "FLUX Fill is not compatible with Text to Image or Image to Image. Use other FLUX models for these tasks.", + "imagenIncompatibleGenerationMode": "Google {{model}} supports Text to Image only. Use other models for Image to Image, Inpainting and Outpainting tasks.", + "chatGPT4oIncompatibleGenerationMode": "ChatGPT 4o supports Text to Image and Image to Image only. Use other models Inpainting and Outpainting tasks.", + "fluxKontextIncompatibleGenerationMode": "FLUX Kontext does not support generation from images placed on the canvas. Re-try using the Reference Image section and disable any Raster Layers.", + "problemUnpublishingWorkflow": "Problem Unpublishing Workflow", + "problemUnpublishingWorkflowDescription": "There was a problem unpublishing the workflow. Please try again.", + "workflowUnpublished": "Workflow Unpublished", + "promptGenerationStarted": "Prompt generation started", + "uploadAndPromptGenerationFailed": "Failed to upload image and generate prompt", + "promptExpansionFailed": "We ran into an issue. Please try prompt expansion again.", + "maskInverted": "Mask Inverted", + "maskInvertFailed": "Failed to Invert Mask", + "noVisibleMasks": "No Visible Masks", + "noVisibleMasksDesc": "Create or enable at least one inpaint mask to invert", + "noInpaintMaskSelected": "No Inpaint Mask Selected", + "noInpaintMaskSelectedDesc": "Select an inpaint mask to invert", + "invalidBbox": "Invalid Bounding Box", + "invalidBboxDesc": "The bounding box has no valid dimensions" + }, + "popovers": { + "clipSkip": { + "heading": "CLIP Skip", + "paragraphs": [ + "How many layers of the CLIP model to skip.", + "Certain models are better suited to be used with CLIP Skip." + ] + }, + "paramNegativeConditioning": { + "heading": "Negative Prompt", + "paragraphs": [ + "The generation process avoids the concepts in the negative prompt. Use this to exclude qualities or objects from the output.", + "Supports Compel syntax and embeddings." + ] + }, + "paramPositiveConditioning": { + "heading": "Positive Prompt", + "paragraphs": [ + "Guides the generation process. You may use any words or phrases.", + "Compel and Dynamic Prompts syntaxes and embeddings." + ] + }, + "paramScheduler": { + "heading": "Scheduler", + "paragraphs": [ + "Scheduler used during the generation process.", + "Each scheduler defines how to iteratively add noise to an image or how to update a sample based on a model's output." + ] + }, + "seedVarianceEnhancer": { + "heading": "Seed Variance Enhancer", + "paragraphs": [ + "Z-Image-Turbo can produce relatively similar images with different seeds. This feature adds seed-based noise to the text embeddings to increase visual variation while maintaining reproducibility.", + "Enable this to get more diverse results when exploring different seeds." + ] + }, + "seedVarianceStrength": { + "heading": "Variance Strength", + "paragraphs": [ + "Controls the intensity of the noise added to embeddings. The strength is automatically calibrated relative to the embedding's standard deviation.", + "Values less than 0.1 will produce subtle variations, increasing to stronger ones at 0.5. Values above 0.5 may lead to unexpected results." + ] + }, + "seedVarianceRandomizePercent": { + "heading": "Randomize Percent", + "paragraphs": [ + "Percentage of embedding values that receive noise (1-100%).", + "Lower values create more selective noise patterns, while 100% affects all values equally." + ] + }, + "compositingMaskBlur": { + "heading": "Mask Blur", + "paragraphs": [ + "The blur radius of the mask." + ] + }, + "compositingBlurMethod": { + "heading": "Blur Method", + "paragraphs": [ + "The method of blur applied to the masked area." + ] + }, + "compositingCoherencePass": { + "heading": "Coherence Pass", + "paragraphs": [ + "A second round of denoising helps to composite the Inpainted/Outpainted image." + ] + }, + "compositingCoherenceMode": { + "heading": "Mode", + "paragraphs": [ + "Method used to create a coherent image with the newly generated masked area." + ] + }, + "compositingCoherenceEdgeSize": { + "heading": "Edge Size", + "paragraphs": [ + "The edge size of the coherence pass." + ] + }, + "compositingCoherenceMinDenoise": { + "heading": "Minimum Denoise", + "paragraphs": [ + "Minimum denoise strength for the Coherence mode", + "The minimum denoise strength for the coherence region when inpainting or outpainting" + ] + }, + "compositingMaskAdjustments": { + "heading": "Mask Adjustments", + "paragraphs": [ + "Adjust the mask." + ] + }, + "inpainting": { + "heading": "Inpainting", + "paragraphs": [ + "Controls which area is modified, guided by Denoising Strength." + ] + }, + "rasterLayer": { + "heading": "Raster Layer", + "paragraphs": [ + "Pixel-based content of your canvas, used during image generation." + ] + }, + "regionalGuidance": { + "heading": "Regional Guidance", + "paragraphs": [ + "Brush to guide where elements from global prompts should appear." + ] + }, + "regionalGuidanceAndReferenceImage": { + "heading": "Regional Guidance and Regional Reference Image", + "paragraphs": [ + "For Regional Guidance, brush to guide where elements from global prompts should appear.", + "For Regional Reference Image, brush to apply a reference image to specific areas." + ] + }, + "globalReferenceImage": { + "heading": "Global Reference Image", + "paragraphs": [ + "Applies a reference image to influence the entire generation." + ] + }, + "regionalReferenceImage": { + "heading": "Regional Reference Image", + "paragraphs": [ + "Brush to apply a reference image to specific areas." + ] + }, + "controlNet": { + "heading": "ControlNet", + "paragraphs": [ + "ControlNets provide guidance to the generation process, helping create images with controlled composition, structure, or style, depending on the model selected." + ] + }, + "controlNetBeginEnd": { + "heading": "Begin / End Step Percentage", + "paragraphs": [ + "This setting determines which portion of the denoising (generation) process incorporates the guidance from this layer.", + "• Start Step (%): Specifies when to begin applying the guidance from this layer during the generation process.", + "• End Step (%): Specifies when to stop applying this layer's guidance and revert general guidance from the model and other settings." + ] + }, + "controlNetControlMode": { + "heading": "Control Mode", + "paragraphs": [ + "Lend more weight to either the prompt or ControlNet." + ] + }, + "controlNetProcessor": { + "heading": "Processor", + "paragraphs": [ + "Method of processing the input image to guide the generation process. Different processors will provide different effects or styles in your generated images." + ] + }, + "controlNetResizeMode": { + "heading": "Resize Mode", + "paragraphs": [ + "Method to fit Control Adapter's input image size to the output generation size." + ] + }, + "ipAdapterMethod": { + "heading": "Mode", + "paragraphs": [ + "The mode defines how the reference image will guide the generation process." + ] + }, + "controlNetWeight": { + "heading": "Weight", + "paragraphs": [ + "Adjusts how strongly the layer influences the generation process", + "• Higher Weight (.75-2): Creates a more significant impact on the final result.", + "• Lower Weight (0-.75): Creates a smaller impact on the final result." + ] + }, + "dynamicPrompts": { + "heading": "Dynamic Prompts", + "paragraphs": [ + "Dynamic Prompts parses a single prompt into many.", + "The basic syntax is \"a {red|green|blue} ball\". This will produce three prompts: \"a red ball\", \"a green ball\" and \"a blue ball\".", + "You can use the syntax as many times as you like in a single prompt, but be sure to keep the number of prompts generated in check with the Max Prompts setting." + ] + }, + "dynamicPromptsMaxPrompts": { + "heading": "Max Prompts", + "paragraphs": [ + "Limits the number of prompts that can be generated by Dynamic Prompts." + ] + }, + "dynamicPromptsSeedBehaviour": { + "heading": "Seed Behaviour", + "paragraphs": [ + "Controls how the seed is used when generating prompts.", + "Per Iteration will use a unique seed for each iteration. Use this to explore prompt variations on a single seed.", + "For example, if you have 5 prompts, each image will use the same seed.", + "Per Image will use a unique seed for each image. This provides more variation." + ] + }, + "imageFit": { + "heading": "Fit Initial Image to Output Size", + "paragraphs": [ + "Resizes the initial image to the width and height of the output image. Recommended to enable." + ] + }, + "infillMethod": { + "heading": "Infill Method", + "paragraphs": [ + "Method of infilling during the Outpainting or Inpainting process." + ] }, "lora": { - "weight": "Weight" + "heading": "LoRA", + "paragraphs": [ + "Lightweight models that are used in conjunction with base models." + ] }, - "metadata": { - "allPrompts": "All Prompts", - "cfgScale": "CFG scale", - "cfgRescaleMultiplier": "$t(parameters.cfgRescaleMultiplier)", - "clipSkip": "$t(parameters.clipSkip)", - "createdBy": "Created By", - "generationMode": "Generation Mode", - "guidance": "Guidance", - "height": "Height", - "imageDetails": "Image Details", - "imageDimensions": "Image Dimensions", - "metadata": "Metadata", - "model": "Model", - "negativePrompt": "Negative Prompt", - "noImageDetails": "No image details found", - "noMetaData": "No metadata found", - "noRecallParameters": "No parameters to recall found", - "parameterSet": "Parameter {{parameter}} set", - "parsingFailed": "Parsing Failed", - "positivePrompt": "Positive Prompt", - "qwen3Encoder": "Qwen3 Encoder", - "qwen3Source": "Qwen3 Source", - "recallParameters": "Recall Parameters", - "recallParameter": "Recall {{label}}", - "scheduler": "Scheduler", - "seamlessXAxis": "Seamless X Axis", - "seamlessYAxis": "Seamless Y Axis", - "seedVarianceEnabled": "Seed Variance Enabled", - "seedVarianceStrength": "Seed Variance Strength", - "seedVarianceRandomizePercent": "Seed Variance Randomize %", - "seed": "Seed", - "steps": "Steps", - "strength": "Image to image strength", - "Threshold": "Noise Threshold", - "vae": "VAE", - "width": "Width", - "workflow": "Workflow", - "canvasV2Metadata": "Canvas Layers" - }, - "modelManager": { - "active": "active", - "actions": "Bulk Actions", - "addModel": "Add Model", - "addModels": "Add Models", - "advanced": "Advanced", - "allModels": "All Models", - "alpha": "Alpha", - "availableModels": "Available Models", - "baseModel": "Base Model", - "cancel": "Cancel", - "clipEmbed": "CLIP Embed", - "clipLEmbed": "CLIP-L Embed", - "clipGEmbed": "CLIP-G Embed", - "config": "Config", - "reidentify": "Reidentify", - "reidentifyTooltip": "If a model didn't install correctly (e.g. it has the wrong type or doesn't work), you can try reidentifying it. This will reset any custom settings you may have applied.", - "reidentifySuccess": "Model reidentified successfully", - "reidentifyUnknown": "Unable to identify model", - "reidentifyError": "Error reidentifying model", - "updatePath": "Update Path", - "updatePathTooltip": "Update the file path for this model if you have moved the model files to a new location.", - "updatePathDescription": "Enter the new path to the model file or directory. Use this if you have manually moved the model files on disk.", - "currentPath": "Current Path", - "newPath": "New Path", - "newPathPlaceholder": "Enter new path...", - "pathUpdated": "Model path updated successfully", - "pathUpdateFailed": "Failed to update model path", - "invalidPathFormat": "Path must be an absolute path (e.g., C:\\Models\\... or /home/user/models/...)", - "convert": "Convert", - "convertingModelBegin": "Converting Model. Please wait.", - "convertToDiffusers": "Convert To Diffusers", - "convertToDiffusersHelpText1": "This model will be converted to the 🧨 Diffusers format.", - "convertToDiffusersHelpText2": "This process will replace your Model Manager entry with the Diffusers version of the same model.", - "convertToDiffusersHelpText3": "Your checkpoint file on disk WILL be deleted if it is in the InvokeAI root folder. If it is in a custom location, then it WILL NOT be deleted.", - "convertToDiffusersHelpText4": "This is a one time process only. It might take around 30s-60s depending on the specifications of your computer.", - "convertToDiffusersHelpText5": "Please make sure you have enough disk space. Models generally vary between 2GB-7GB in size.", - "convertToDiffusersHelpText6": "Do you wish to convert this model?", - "cpuOnly": "CPU Only", - "runOnCpu": "Run model on CPU only", - "noDefaultSettings": "No default settings configured for this model. Visit the Model Manager to add default settings.", - "defaultSettings": "Default Settings", - "defaultSettingsSaved": "Default Settings Saved", - "defaultSettingsOutOfSync": "Some settings do not match the model's defaults:", - "restoreDefaultSettings": "Click to use the model's default settings.", - "usingDefaultSettings": "Using model's default settings", - "delete": "Delete", - "deleteConfig": "Delete Config", - "deleteModel": "Delete Model", - "deleteModels": "Delete Models", - "deleteModelImage": "Delete Model Image", - "deleteMsg1": "Are you sure you want to delete this model from InvokeAI?", - "deleteMsg2": "This WILL delete the model from disk if it is in the InvokeAI root folder. If you are using a custom location, then the model WILL NOT be deleted from disk.", - "description": "Description", - "edit": "Edit", - "fileSize": "File Size", - "filterModels": "Filter models", - "fluxRedux": "FLUX Redux", - "height": "Height", - "huggingFace": "HuggingFace", - "huggingFacePlaceholder": "owner/model-name", - "huggingFaceRepoID": "HuggingFace Repo ID", - "huggingFaceHelper": "If multiple models are found in this repo, you will be prompted to select one to install.", - "hfTokenLabel": "HuggingFace Token (Required for some models)", - "hfTokenHelperText": "A HF token is required to use some models. Click here to create or get your token.", - "hfTokenInvalid": "Invalid or Missing HF Token", - "hfForbidden": "You do not have access to this HF model", - "hfForbiddenErrorMessage": "We recommend visiting the repo. The owner may require acceptance of terms in order to download.", - "urlForbidden": "You do not have access to this model", - "urlForbiddenErrorMessage": "You may need to request permission from the site that is distributing the model.", - "hfTokenInvalidErrorMessage": "Invalid or missing HuggingFace token.", - "hfTokenRequired": "You are trying to download a model that requires a valid HuggingFace Token.", - "hfTokenInvalidErrorMessage2": "Update it in the ", - "hfTokenUnableToVerify": "Unable to Verify HF Token", - "hfTokenUnableToVerifyErrorMessage": "Unable to verify HuggingFace token. This is likely due to a network error. Please try again later.", - "hfTokenSaved": "HF Token Saved", - "hfTokenReset": "HF Token Reset", - "urlUnauthorizedErrorMessage": "You may need to configure an API token to access this model.", - "urlUnauthorizedErrorMessage2": "Learn how here.", - "unidentifiedModelTitle": "Unable to identify model", - "unidentifiedModelMessage": "We were unable to identify the type, base and/or format of the installed model. Try editing the model and selecting the appropriate settings for the model.", - "unidentifiedModelMessage2": "If you don't see the correct settings, or the model doesn't work after changing them, ask for help on or create an issue on .", - "imageEncoderModelId": "Image Encoder Model ID", - "installedModelsCount": "{{installed}} of {{total}} models installed.", - "includesNModels": "Includes {{n}} models and their dependencies.", - "allNModelsInstalled": "All {{count}} models installed", - "nToInstall": "{{count}} to install", - "nAlreadyInstalled": "{{count}} already installed", - "installQueue": "Install Queue", - "inplaceInstall": "In-place install", - "inplaceInstallDesc": "Install models without moving the files. When using the model, it will be loaded from its original location. If disabled, the model file(s) will be moved into the Invoke-managed models directory during installation.", - "install": "Install", - "installAll": "Install All", - "installRepo": "Install Repo", - "installBundle": "Install Bundle", - "installBundleMsg1": "Are you sure you want to install the {{bundleName}} bundle?", - "installBundleMsg2": "This bundle will install the following {{count}} models:", - "ipAdapters": "IP Adapters", - "learnMoreAboutSupportedModels": "Learn more about the models we support", - "load": "Load", - "localOnly": "local only", - "manual": "Manual", - "loraModels": "LoRAs", - "main": "Main", - "metadata": "Metadata", + "loraWeight": { + "heading": "Weight", + "paragraphs": [ + "Weight of the LoRA. Higher weight will lead to larger impacts on the final image." + ] + }, + "noiseUseCPU": { + "heading": "Use CPU Noise", + "paragraphs": [ + "Controls whether noise is generated on the CPU or GPU.", + "With CPU Noise enabled, a particular seed will produce the same image on any machine.", + "There is no performance impact to enabling CPU Noise." + ] + }, + "paramAspect": { + "heading": "Aspect", + "paragraphs": [ + "Aspect ratio of the generated image. Changing the ratio will update the Width and Height accordingly.", + "\"Optimize\" will set the Width and Height to optimal dimensions for the chosen model." + ] + }, + "paramCFGScale": { + "heading": "CFG Scale", + "paragraphs": [ + "Controls how much the prompt influences the generation process.", + "High CFG Scale values can result in over-saturation and distorted generation results. " + ] + }, + "paramGuidance": { + "heading": "Guidance", + "paragraphs": [ + "Controls how much the prompt influences the generation process.", + "High guidance values can result in over-saturation and high or low guidance may result in distorted generation results. Guidance only applies to FLUX DEV models." + ] + }, + "paramCFGRescaleMultiplier": { + "heading": "CFG Rescale Multiplier", + "paragraphs": [ + "Rescale multiplier for CFG guidance, used for models trained using zero-terminal SNR (ztsnr).", + "Suggested value of 0.7 for these models." + ] + }, + "paramDenoisingStrength": { + "heading": "Denoising Strength", + "paragraphs": [ + "Controls how much the generated image varies from the raster layer(s).", + "Lower strength stays closer to the combined visible raster layers. Higher strength relies more on the global prompt.", + "When there are no raster layers with visible content, this setting is ignored." + ] + }, + "paramHeight": { + "heading": "Height", + "paragraphs": [ + "Height of the generated image. Must be a multiple of 8." + ] + }, + "paramHrf": { + "heading": "Enable High Resolution Fix", + "paragraphs": [ + "Generate high quality images at a larger resolution than optimal for the model. Generally used to prevent duplication in the generated image." + ] + }, + "paramIterations": { + "heading": "Iterations", + "paragraphs": [ + "The number of images to generate.", + "If Dynamic Prompts is enabled, each of the prompts will be generated this many times." + ] + }, + "paramModel": { + "heading": "Model", + "paragraphs": [ + "Model used for generation. Different models are trained to specialize in producing different aesthetic results and content." + ] + }, + "paramRatio": { + "heading": "Aspect Ratio", + "paragraphs": [ + "The aspect ratio of the dimensions of the image generated.", + "An image size (in number of pixels) equivalent to 512x512 is recommended for SD1.5 models and a size equivalent to 1024x1024 is recommended for SDXL models." + ] + }, + "paramSeed": { + "heading": "Seed", + "paragraphs": [ + "Controls the starting noise used for generation.", + "Disable the \"Random\" option to produce identical results with the same generation settings." + ] + }, + "paramSteps": { + "heading": "Steps", + "paragraphs": [ + "Number of steps that will be performed in each generation.", + "Higher step counts will typically create better images but will require more generation time." + ] + }, + "paramUpscaleMethod": { + "heading": "Upscale Method", + "paragraphs": [ + "Method used to upscale the image for High Resolution Fix." + ] + }, + "paramVAE": { + "heading": "VAE", + "paragraphs": [ + "Model used for translating AI output into the final image." + ] + }, + "paramVAEPrecision": { + "heading": "VAE Precision", + "paragraphs": [ + "The precision used during VAE encoding and decoding.", + "Fp16/Half precision is more efficient, at the expense of minor image variations." + ] + }, + "paramWidth": { + "heading": "Width", + "paragraphs": [ + "Width of the generated image. Must be a multiple of 8." + ] + }, + "patchmatchDownScaleSize": { + "heading": "Downscale", + "paragraphs": [ + "How much downscaling occurs before infilling.", + "Higher downscaling will improve performance and reduce quality." + ] + }, + "refinerModel": { + "heading": "Refiner Model", + "paragraphs": [ + "Model used during the refiner portion of the generation process.", + "Similar to the Generation Model." + ] + }, + "refinerPositiveAestheticScore": { + "heading": "Positive Aesthetic Score", + "paragraphs": [ + "Weight generations to be more similar to images with a high aesthetic score, based on the training data." + ] + }, + "refinerNegativeAestheticScore": { + "heading": "Negative Aesthetic Score", + "paragraphs": [ + "Weight generations to be more similar to images with a low aesthetic score, based on the training data." + ] + }, + "refinerScheduler": { + "heading": "Scheduler", + "paragraphs": [ + "Scheduler used during the refiner portion of the generation process.", + "Similar to the Generation Scheduler." + ] + }, + "refinerStart": { + "heading": "Refiner Start", + "paragraphs": [ + "Where in the generation process the refiner will start to be used.", + "0 means the refiner will be used for the entire generation process, 0.8 means the refiner will be used for the last 20% of the generation process." + ] + }, + "refinerSteps": { + "heading": "Steps", + "paragraphs": [ + "Number of steps that will be performed during the refiner portion of the generation process.", + "Similar to the Generation Steps." + ] + }, + "refinerCfgScale": { + "heading": "CFG Scale", + "paragraphs": [ + "Controls how much the prompt influences the generation process.", + "Similar to the Generation CFG Scale." + ] + }, + "scaleBeforeProcessing": { + "heading": "Scale Before Processing", + "paragraphs": [ + "\"Auto\" scales the selected area to the size best suited for the model before the image generation process.", + "\"Manual\" allows you to choose the width and height the selected area will be scaled to before the image generation process." + ] + }, + "seamlessTilingXAxis": { + "heading": "Seamless Tiling X Axis", + "paragraphs": [ + "Seamlessly tile an image along the horizontal axis." + ] + }, + "seamlessTilingYAxis": { + "heading": "Seamless Tiling Y Axis", + "paragraphs": [ + "Seamlessly tile an image along the vertical axis." + ] + }, + "colorCompensation": { + "heading": "Color Compensation", + "paragraphs": [ + "Adjust the input image to reduce color shifts during inpainting or img2img (SDXL Only)." + ] + }, + "upscaleModel": { + "heading": "Upscale Model", + "paragraphs": [ + "The upscale model scales the image to the output size before details are added. Any supported upscale model may be used, but some are specialized for different kinds of images, like photos or line drawings." + ] + }, + "scale": { + "heading": "Scale", + "paragraphs": [ + "Scale controls the output image size, and is based on a multiple of the input image resolution. For example a 2x upscale on a 1024x1024 image would produce a 2048 x 2048 output." + ] + }, + "creativity": { + "heading": "Creativity", + "paragraphs": [ + "Creativity controls the amount of freedom granted to the model when adding details. Low creativity stays close to the original image, while high creativity allows for more change. When using a prompt, high creativity increases the influence of the prompt." + ] + }, + "structure": { + "heading": "Structure", + "paragraphs": [ + "Structure controls how closely the output image will keep to the layout of the original. Low structure allows major changes, while high structure strictly maintains the original composition and layout." + ] + }, + "tileSize": { + "heading": "Tile Size", + "paragraphs": [ + "Controls the size of tiles used during the upscaling process. Larger tiles use more memory but may produce better results.", + "SD1.5 models default to 768, while SDXL models default to 1024. Reduce tile size if you encounter memory issues." + ] + }, + "tileOverlap": { + "heading": "Tile Overlap", + "paragraphs": [ + "Controls the overlap between adjacent tiles during upscaling. Higher overlap values help reduce visible seams between tiles but use more memory.", + "The default value of 128 works well for most cases, but you can adjust based on your specific needs and memory constraints." + ] + }, + "fluxDevLicense": { + "heading": "Non-Commercial License", + "paragraphs": [ + "FLUX.1 [dev] models are licensed under the FLUX [dev] non-commercial license. To use this model type for commercial purposes in Invoke, visit our website to learn more." + ] + }, + "optimizedDenoising": { + "heading": "Optimized Image-to-Image", + "paragraphs": [ + "Enable 'Optimized Image-to-Image' for a more gradual Denoise Strength scale for image-to-image and inpainting transformations with Flux models. This setting improves the ability to control the amount of change applied to an image, but may be turned off if you prefer to use the standard Denoise Strength scale. This setting is still being tuned and is in beta status." + ] + }, + "cpuOnly": { + "heading": "CPU Only", + "paragraphs": [ + "When enabled, only the text encoder component will run on CPU instead of GPU.", + "This saves VRAM for the denoiser while only slightly impacting performance. The conditioning outputs are automatically moved to GPU for the denoiser." + ] + } + }, + "workflows": { + "chooseWorkflowFromLibrary": "Choose Workflow from Library", + "defaultWorkflows": "Default Workflows", + "userWorkflows": "User Workflows", + "projectWorkflows": "Project Workflows", + "ascending": "Ascending", + "created": "Created", + "descending": "Descending", + "workflows": "Workflows", + "workflowLibrary": "Workflow Library", + "loadMore": "Load More", + "allLoaded": "All Workflows Loaded", + "searchPlaceholder": "Search by name, description or tags", + "filterByTags": "Filter by Tags", + "tags": "Tags", + "yourWorkflows": "Your Workflows", + "recentlyOpened": "Recently Opened", + "noRecentWorkflows": "No Recent Workflows", + "private": "Private", + "shared": "Shared", + "published": "Published", + "browseWorkflows": "Browse Workflows", + "deselectAll": "Deselect All", + "recommended": "Recommended For You", + "opened": "Opened", + "openWorkflow": "Open Workflow", + "updated": "Updated", + "uploadWorkflow": "Load from File", + "deleteWorkflow": "Delete Workflow", + "deleteWorkflow2": "Are you sure you want to delete this workflow? This cannot be undone.", + "unnamedWorkflow": "Unnamed Workflow", + "downloadWorkflow": "Save to File", + "saveWorkflow": "Save Workflow", + "saveWorkflowAs": "Save Workflow As", + "saveWorkflowToProject": "Save Workflow to Project", + "savingWorkflow": "Saving Workflow...", + "problemSavingWorkflow": "Problem Saving Workflow", + "workflowSaved": "Workflow Saved", + "name": "Name", + "noWorkflows": "No Workflows", + "problemLoading": "Problem Loading Workflows", + "loading": "Loading Workflows", + "noDescription": "No description", + "searchWorkflows": "Search Workflows", + "clearWorkflowSearchFilter": "Clear Workflow Search Filter", + "workflowName": "Workflow Name", + "newWorkflowCreated": "New Workflow Created", + "workflowCleared": "Workflow Cleared", + "workflowEditorMenu": "Workflow Editor Menu", + "loadFromGraph": "Load Workflow from Graph", + "convertGraph": "Convert Graph", + "loadWorkflow": "$t(common.load) Workflow", + "autoLayout": "Auto Layout", + "edit": "Edit", + "view": "View", + "download": "Download", + "copyShareLink": "Copy Share Link", + "copyShareLinkForWorkflow": "Copy Share Link for Workflow", + "delete": "Delete", + "openLibrary": "Open Library", + "workflowThumbnail": "Workflow Thumbnail", + "saveChanges": "Save Changes", + "emptyStringPlaceholder": "", + "builder": { + "deleteAllElements": "Delete All Form Elements", + "resetAllNodeFields": "Reset All Node Fields", + "builder": "Form Builder", + "layout": "Layout", + "row": "Row", + "column": "Column", + "container": "Container", + "containerRowLayout": "Container (row layout)", + "containerColumnLayout": "Container (column layout)", + "heading": "Heading", + "text": "Text", + "divider": "Divider", + "nodeField": "Node Field", + "zoomToNode": "Zoom to Node", + "nodeFieldTooltip": "To add a node field, click the small plus sign button on the field in the Workflow Editor, or drag the field by its name into the form.", + "addToForm": "Add to Form", + "removeFromForm": "Remove from Form", + "label": "Label", + "showDescription": "Show Description", + "showShuffle": "Show Shuffle", + "shuffle": "Shuffle", + "component": "Component", + "numberInput": "Number Input", + "singleLine": "Single Line", + "multiLine": "Multi Line", + "slider": "Slider", + "dropdown": "Dropdown", + "addOption": "Add Option", + "resetOptions": "Reset Options", + "both": "Both", + "emptyRootPlaceholderViewMode": "Click Edit to start building a form for this workflow.", + "emptyRootPlaceholderEditMode": "Drag a form element or node field here to get started.", + "containerPlaceholder": "Empty Container", + "headingPlaceholder": "Empty Heading", + "textPlaceholder": "Empty Text", + "workflowBuilderAlphaWarning": "The workflow builder is currently in alpha. There may be breaking changes before the stable release.", + "minimum": "Minimum", + "maximum": "Maximum", + "publish": "Publish", + "unpublish": "Unpublish", + "published": "Published", + "workflowLocked": "Workflow Locked", + "workflowLockedPublished": "Published workflows are locked for editing.\nYou can unpublish the workflow to edit it, or make a copy of it.", + "workflowLockedDuringPublishing": "Workflow is locked while configuring for publishing.", + "selectOutputNode": "Select Output Node", + "changeOutputNode": "Change Output Node", + "publishedWorkflowOutputs": "Outputs", + "publishedWorkflowInputs": "Inputs", + "unpublishableInputs": "These unpublishable inputs will be omitted", + "noPublishableInputs": "No publishable inputs", + "noOutputNodeSelected": "No output node selected", + "cannotPublish": "Cannot publish workflow", + "publishWarnings": "Warnings", + "errorWorkflowHasUnsavedChanges": "Workflow has unsaved changes", + "errorWorkflowHasUnpublishableNodes": "Workflow has batch, generator, or metadata extraction nodes", + "errorWorkflowHasInvalidGraph": "Workflow graph invalid (hover Invoke button for details)", + "errorWorkflowHasNoOutputNode": "No output node selected", + "warningWorkflowHasNoPublishableInputFields": "No publishable input fields selected - published workflow will run with only default values", + "warningWorkflowHasUnpublishableInputFields": "Workflow has some unpublishable inputs - these will be omitted from the published workflow", + "publishFailed": "Publish failed", + "publishFailedDesc": "There was a problem publishing the workflow. Please try again.", + "publishSuccess": "Your workflow is being published", + "publishSuccessDesc": "Check your Project Dashboard to see its progress.", + "publishInProgress": "Publishing in progress", + "publishedWorkflowIsLocked": "Published workflow is locked", + "publishingValidationRun": "Publishing Validation Run", + "publishingValidationRunInProgress": "Publishing validation run in progress.", + "publishedWorkflowsLocked": "Published workflows are locked and cannot be edited or run. Either unpublish the workflow or save a copy to edit or run this workflow.", + "selectingOutputNode": "Selecting output node", + "selectingOutputNodeDesc": "Click a node to select it as the workflow's output node." + } + }, + "controlLayers": { + "regional": "Regional", + "global": "Global", + "canvas": "Canvas", + "bookmark": "Bookmark for Quick Switch", + "fitBboxToLayers": "Fit Bbox To Layers", + "fitBboxToMasks": "Fit Bbox To Masks", + "removeBookmark": "Remove Bookmark", + "saveCanvasToGallery": "Save Canvas to Gallery", + "saveBboxToGallery": "Save Bbox to Gallery", + "saveLayerToAssets": "Save Layer to Assets", + "exportCanvasToPSD": "Export Canvas to PSD", + "cropLayerToBbox": "Crop Layer to Bbox", + "savedToGalleryOk": "Saved to Gallery", + "savedToGalleryError": "Error saving to gallery", + "regionCopiedToClipboard": "{{region}} Copied to Clipboard", + "copyRegionError": "Error copying {{region}}", + "newGlobalReferenceImageOk": "Created Global Reference Image", + "newGlobalReferenceImageError": "Problem Creating Global Reference Image", + "newRegionalReferenceImageOk": "Created Regional Reference Image", + "newRegionalReferenceImageError": "Problem Creating Regional Reference Image", + "newControlLayerOk": "Created Control Layer", + "newControlLayerError": "Problem Creating Control Layer", + "newRasterLayerOk": "Created Raster Layer", + "newRasterLayerError": "Problem Creating Raster Layer", + "pullBboxIntoLayerOk": "Bbox Pulled Into Layer", + "pullBboxIntoLayerError": "Problem Pulling BBox Into Layer", + "pullBboxIntoReferenceImageOk": "Bbox Pulled Into ReferenceImage", + "pullBboxIntoReferenceImageError": "Problem Pulling BBox Into ReferenceImage", + "addAdjustments": "Add Adjustments", + "removeAdjustments": "Remove Adjustments", + "adjustments": { + "simple": "Simple", + "curves": "Curves", + "heading": "Adjustments", + "expand": "Expand adjustments", + "collapse": "Collapse adjustments", + "brightness": "Brightness", + "contrast": "Contrast", + "saturation": "Saturation", + "temperature": "Temperature", + "tint": "Tint", + "sharpness": "Sharpness", + "finish": "Finish", + "reset": "Reset", + "master": "Master" + }, + "regionIsEmpty": "Selected region is empty", + "mergeVisible": "Merge Visible", + "mergeDown": "Merge Down", + "mergeVisibleOk": "Merged layers", + "mergeVisibleError": "Error merging layers", + "mergingLayers": "Merging layers", + "clearHistory": "Clear History", + "bboxOverlay": "Show Bbox Overlay", + "ruleOfThirds": "Show Rule of Thirds", + "newSession": "New Session", + "clearCaches": "Clear Caches", + "recalculateRects": "Recalculate Rects", + "clipToBbox": "Clip Strokes to Bbox", + "extractRegion": "Extract Region", + "outputOnlyMaskedRegions": "Output Only Generated Regions", + "addLayer": "Add Layer", + "duplicate": "Duplicate", + "moveToFront": "Move to Front", + "moveToBack": "Move to Back", + "moveForward": "Move Forward", + "moveBackward": "Move Backward", + "width": "Width", + "autoNegative": "Auto Negative", + "enableAutoNegative": "Enable Auto Negative", + "disableAutoNegative": "Disable Auto Negative", + "deletePrompt": "Delete Prompt", + "deleteReferenceImage": "Delete Reference Image", + "showHUD": "Show HUD", + "rectangle": "Rectangle", + "maskFill": "Mask Fill", + "maskLayerEmpty": "Mask layer is empty", + "extractMaskedAreaFailed": "Unable to extract masked area.", + "extractMaskedAreaMissingData": "Cannot extract: image or mask data is missing.", + "addPositivePrompt": "Add $t(controlLayers.prompt)", + "addNegativePrompt": "Add $t(controlLayers.negativePrompt)", + "addReferenceImage": "Add $t(controlLayers.referenceImage)", + "addImageNoise": "Add $t(controlLayers.imageNoise)", + "addRasterLayer": "Add $t(controlLayers.rasterLayer)", + "addControlLayer": "Add $t(controlLayers.controlLayer)", + "addInpaintMask": "Add $t(controlLayers.inpaintMask)", + "addRegionalGuidance": "Add $t(controlLayers.regionalGuidance)", + "addGlobalReferenceImage": "Add $t(controlLayers.globalReferenceImage)", + "addDenoiseLimit": "Add $t(controlLayers.denoiseLimit)", + "rasterLayer": "Raster Layer", + "controlLayer": "Control Layer", + "inpaintMask": "Inpaint Mask", + "invertMask": "Invert Mask", + "regionalGuidance": "Regional Guidance", + "referenceImageRegional": "Reference Image (Regional)", + "referenceImageGlobal": "Reference Image (Global)", + "asRasterLayer": "As $t(controlLayers.rasterLayer)", + "asRasterLayerResize": "As $t(controlLayers.rasterLayer) (Resize)", + "asControlLayer": "As $t(controlLayers.controlLayer)", + "asControlLayerResize": "As $t(controlLayers.controlLayer) (Resize)", + "referenceImage": "Reference Image", + "maxRefImages": "Max Ref Images", + "useAsReferenceImage": "Use as Reference Image", + "regionalReferenceImage": "Regional Reference Image", + "globalReferenceImage": "Global Reference Image", + "sendingToCanvas": "Staging Generations on Canvas", + "sendingToGallery": "Sending Generations to Gallery", + "sendToGallery": "Send To Gallery", + "sendToGalleryDesc": "Pressing Invoke generates and saves a unique image to your gallery.", + "sendToCanvas": "Send To Canvas", + "newLayerFromImage": "New Layer from Image", + "newCanvasFromImage": "New Canvas from Image", + "newImg2ImgCanvasFromImage": "New Img2Img from Image", + "copyToClipboard": "Copy to Clipboard", + "sendToCanvasDesc": "Pressing Invoke stages your work in progress on the canvas.", + "viewProgressInViewer": "View progress and outputs in the Image Viewer.", + "viewProgressOnCanvas": "View progress and stage outputs on the Canvas.", + "rasterLayer_withCount_one": "$t(controlLayers.rasterLayer)", + "rasterLayer_withCount_other": "Raster Layers", + "controlLayer_withCount_one": "$t(controlLayers.controlLayer)", + "controlLayer_withCount_other": "Control Layers", + "inpaintMask_withCount_one": "$t(controlLayers.inpaintMask)", + "inpaintMask_withCount_other": "Inpaint Masks", + "regionalGuidance_withCount_one": "$t(controlLayers.regionalGuidance)", + "regionalGuidance_withCount_other": "Regional Guidance", + "globalReferenceImage_withCount_one": "$t(controlLayers.globalReferenceImage)", + "globalReferenceImage_withCount_other": "Global Reference Images", + "opacity": "Opacity", + "regionalGuidance_withCount_hidden": "Regional Guidance ({{count}} hidden)", + "controlLayers_withCount_hidden": "Control Layers ({{count}} hidden)", + "rasterLayers_withCount_hidden": "Raster Layers ({{count}} hidden)", + "globalReferenceImages_withCount_hidden": "Global Reference Images ({{count}} hidden)", + "inpaintMasks_withCount_hidden": "Inpaint Masks ({{count}} hidden)", + "regionalGuidance_withCount_visible": "Regional Guidance ({{count}})", + "controlLayers_withCount_visible": "Control Layers ({{count}})", + "rasterLayers_withCount_visible": "Raster Layers ({{count}})", + "globalReferenceImages_withCount_visible": "Global Reference Images ({{count}})", + "inpaintMasks_withCount_visible": "Inpaint Masks ({{count}})", + "layer_one": "Layer", + "layer_other": "Layers", + "layer_withCount_one": "Layer ({{count}})", + "layer_withCount_other": "Layers ({{count}})", + "convertRasterLayerTo": "Convert $t(controlLayers.rasterLayer) To", + "convertControlLayerTo": "Convert $t(controlLayers.controlLayer) To", + "convertInpaintMaskTo": "Convert $t(controlLayers.inpaintMask) To", + "convertRegionalGuidanceTo": "Convert $t(controlLayers.regionalGuidance) To", + "copyRasterLayerTo": "Copy $t(controlLayers.rasterLayer) To", + "copyControlLayerTo": "Copy $t(controlLayers.controlLayer) To", + "copyInpaintMaskTo": "Copy $t(controlLayers.inpaintMask) To", + "copyRegionalGuidanceTo": "Copy $t(controlLayers.regionalGuidance) To", + "newRasterLayer": "New $t(controlLayers.rasterLayer)", + "newControlLayer": "New $t(controlLayers.controlLayer)", + "newInpaintMask": "New $t(controlLayers.inpaintMask)", + "newRegionalGuidance": "New $t(controlLayers.regionalGuidance)", + "pasteTo": "Paste To", + "pasteToAssets": "Assets", + "pasteToAssetsDesc": "Paste to Assets", + "pasteToBbox": "Bbox", + "pasteToBboxDesc": "New Layer (in Bbox)", + "pasteToCanvas": "Canvas", + "pasteToCanvasDesc": "New Layer (in Canvas)", + "pastedTo": "Pasted to {{destination}}", + "transparency": "Transparency", + "enableTransparencyEffect": "Enable Transparency Effect", + "disableTransparencyEffect": "Disable Transparency Effect", + "hidingType": "Hiding {{type}}", + "showingType": "Showing {{type}}", + "showNonRasterLayers": "Show Non-Raster Layers (Shift+H)", + "hideNonRasterLayers": "Hide Non-Raster Layers (Shift+H)", + "dynamicGrid": "Dynamic Grid", + "logDebugInfo": "Log Debug Info", + "locked": "Locked", + "unlocked": "Unlocked", + "deleteSelected": "Delete Selected", + "stagingOnCanvas": "Staging images on", + "replaceLayer": "Replace Layer", + "pullBboxIntoLayer": "Pull Bbox into Layer", + "pullBboxIntoReferenceImage": "Pull Bbox into Reference Image", + "showProgressOnCanvas": "Show Progress on Canvas", + "useImage": "Use Image", + "prompt": "Prompt", + "negativePrompt": "Negative Prompt", + "beginEndStepPercentShort": "Begin/End %", + "weight": "Weight", + "newGallerySession": "New Gallery Session", + "newGallerySessionDesc": "This will clear the canvas and all settings except for your model selection. Generations will be sent to the gallery.", + "newCanvasSession": "New Canvas Session", + "newCanvasSessionDesc": "This will clear the canvas and all settings except for your model selection. Generations will be staged on the canvas.", + "resetCanvasLayers": "Reset Canvas Layers", + "resetGenerationSettings": "Reset Generation Settings", + "replaceCurrent": "Replace Current", + "controlLayerEmptyState": "Upload an image, drag an image from the gallery onto this layer, pull the bounding box into this layer, or draw on the canvas to get started.", + "referenceImageEmptyStateWithCanvasOptions": "Upload an image, drag an image from the gallery onto this Reference Image or pull the bounding box into this Reference Image to get started.", + "referenceImageEmptyState": "Upload an image or drag an image from the gallery onto this Reference Image to get started.", + "uploadOrDragAnImage": "Drag an image from the gallery or upload an image.", + "imageNoise": "Image Noise", + "denoiseLimit": "Denoise Limit", + "warnings": { + "problemsFound": "Problems found", + "unsupportedModel": "layer not supported for selected base model", + "controlAdapterNoModelSelected": "no Control Layer model selected", + "controlAdapterIncompatibleBaseModel": "incompatible Control Layer base model", + "controlAdapterNoControl": "no control selected/drawn", + "ipAdapterNoModelSelected": "no Reference Image model selected", + "ipAdapterIncompatibleBaseModel": "incompatible Reference Image base model", + "ipAdapterNoImageSelected": "no Reference Image image selected", + "rgNoPromptsOrIPAdapters": "no text prompts or Reference Images", + "rgNegativePromptNotSupported": "Negative Prompt not supported for selected base model", + "rgReferenceImagesNotSupported": "regional Reference Images not supported for selected base model", + "rgAutoNegativeNotSupported": "Auto-Negative not supported for selected base model", + "rgNoRegion": "no region drawn", + "fluxFillIncompatibleWithControlLoRA": "Control LoRA is not compatible with FLUX Fill", + "bboxHidden": "Bounding box is hidden (shift+o to toggle)" + }, + "errors": { + "unableToFindImage": "Unable to find image", + "unableToLoadImage": "Unable to Load Image" + }, + "controlMode": { + "controlMode": "Control Mode", + "balanced": "Balanced (recommended)", + "prompt": "Prompt", + "control": "Control", + "megaControl": "Mega Control" + }, + "ipAdapterMethod": { + "ipAdapterMethod": "Mode", + "full": "Style and Composition", + "fullDesc": "Applies visual style (colors, textures) & composition (layout, structure).", + "style": "Style (Simple)", + "styleDesc": "Applies visual style (colors, textures) without considering its layout. Previously called Style Only.", + "composition": "Composition Only", + "compositionDesc": "Replicates layout & structure while ignoring the reference's style.", + "styleStrong": "Style (Strong)", + "styleStrongDesc": "Applies a strong visual style, with a slightly reduced composition influence.", + "stylePrecise": "Style (Precise)", + "stylePreciseDesc": "Applies a precise visual style, eliminating subject influence." + }, + "fluxReduxImageInfluence": { + "imageInfluence": "Image Influence", + "lowest": "Lowest", + "low": "Low", + "medium": "Medium", + "high": "High", + "highest": "Highest" + }, + "fill": { + "fillColor": "Fill Color", + "bgFillColor": "Background Color", + "fgFillColor": "Foreground Color", + "fillStyle": "Fill Style", + "solid": "Solid", + "grid": "Grid", + "crosshatch": "Crosshatch", + "vertical": "Vertical", + "horizontal": "Horizontal", + "diagonal": "Diagonal" + }, + "tool": { + "brush": "Brush", + "eraser": "Eraser", + "rectangle": "Rectangle", + "bbox": "Bbox", + "move": "Move", + "view": "View", + "colorPicker": "Color Picker" + }, + "filter": { + "filter": "Filter", + "filters": "Filters", + "filterType": "Filter Type", + "autoProcess": "Auto Process", + "reset": "Reset", + "process": "Process", + "apply": "Apply", + "cancel": "Cancel", + "advanced": "Advanced", + "processingLayerWith": "Processing layer with the {{type}} filter.", + "forMoreControl": "For more control, click Advanced below.", + "spandrel_filter": { + "label": "Image-to-Image Model", + "description": "Run an image-to-image model on the selected layer.", "model": "Model", - "modelConversionFailed": "Model Conversion Failed", - "modelConverted": "Model Converted", - "modelDeleted": "Model Deleted", - "modelDeleteFailed": "Failed to delete model", - "modelFormat": "Model Format", - "modelImageDeleted": "Model Image Deleted", - "modelImageDeleteFailed": "Model Image Delete Failed", - "modelImageUpdated": "Model Image Updated", - "modelImageUpdateFailed": "Model Image Update Failed", - "modelManager": "Model Manager", - "modelName": "Model Name", - "modelSettings": "Model Settings", - "modelSettingsWarning": "These settings tell Invoke what kind of model this is and how to load it. If Invoke didn't detect these correctly when you installed the model, or if the model is classified as Unknown, you may need to edit them manually.", - "modelType": "Model Type", - "modelUpdated": "Model Updated", - "modelUpdateFailed": "Model Update Failed", - "name": "Name", - "modelPickerFallbackNoModelsInstalled": "No models installed.", - "modelPickerFallbackNoModelsInstalled2": "Visit the Model Manager to install models.", - "noModelsInstalledDesc1": "Install models with the", - "noModelSelected": "No Model Selected", - "noMatchingModels": "No matching models", - "noModelsInstalled": "No models installed", - "none": "none", - "path": "Path", - "pathToConfig": "Path To Config", - "predictionType": "Prediction Type", - "prune": "Prune", - "pruneTooltip": "Prune finished imports from queue", - "relatedModels": "Related Models", - "showOnlyRelatedModels": "Related", - "repo_id": "Repo ID", - "repoVariant": "Repo Variant", - "scanFolder": "Scan Folder", - "scanFolderHelper": "The folder will be recursively scanned for models. This can take a few moments for very large folders.", - "scanPlaceholder": "Path to a local folder", - "scanResults": "Scan Results", - "search": "Search", - "selected": "Selected", - "selectModel": "Select Model", - "settings": "Settings", - "simpleModelPlaceholder": "URL or path to a local file or diffusers folder", - "source": "Source", - "sigLip": "SigLIP", - "spandrelImageToImage": "Image to Image (Spandrel)", - "starterBundles": "Starter Bundles", - "starterBundleHelpText": "Easily install all models needed to get started with a base model, including a main model, controlnets, IP adapters, and more. Selecting a bundle will skip any models that you already have installed.", - "starterModels": "Starter Models", - "starterModelsInModelManager": "Starter Models can be found in Model Manager", - "bundleAlreadyInstalled": "Bundle already installed", - "bundleAlreadyInstalledDesc": "All models in the {{bundleName}} bundle are already installed.", - "launchpadTab": "Launchpad", - "launchpad": { - "welcome": "Welcome to Model Management", - "description": "Invoke requires models to be installed to utilize most features of the platform. Choose from manual installation options or explore curated starter models.", - "manualInstall": "Manual Installation", - "urlDescription": "Install models from a URL or local file path. Perfect for specific models you want to add.", - "huggingFaceDescription": "Browse and install models directly from HuggingFace repositories.", - "scanFolderDescription": "Scan a local folder to automatically detect and install models.", - "recommendedModels": "Recommended Models", - "exploreStarter": "Or browse all available starter models", - "quickStart": "Quick Start Bundles", - "bundleDescription": "Each bundle includes essential models for each model family and curated base models to get started.", - "browseAll": "Or browse all available models:", - "stableDiffusion15": "Stable Diffusion 1.5", - "sdxl": "SDXL", - "fluxDev": "FLUX.1 dev" - }, - "controlLora": "Control LoRA", - "llavaOnevision": "LLaVA OneVision", - "syncModels": "Sync Models", - "textualInversions": "Textual Inversions", - "triggerPhrases": "Trigger Phrases", - "loraTriggerPhrases": "LoRA Trigger Phrases", - "mainModelTriggerPhrases": "Main Model Trigger Phrases", - "selectAll": "Select All", - "typePhraseHere": "Type phrase here", - "t5Encoder": "T5 Encoder", - "qwen3Encoder": "Qwen3 Encoder", - "zImageVae": "VAE (optional)", - "zImageVaePlaceholder": "From VAE source model", - "zImageQwen3Encoder": "Qwen3 Encoder (optional)", - "zImageQwen3EncoderPlaceholder": "From Qwen3 source model", - "zImageQwen3Source": "Qwen3 & VAE Source Model", - "zImageQwen3SourcePlaceholder": "Required if VAE/Encoder empty", - "upcastAttention": "Upcast Attention", - "uploadImage": "Upload Image", - "urlOrLocalPath": "URL or Local Path", - "urlOrLocalPathHelper": "URLs should point to a single file. Local paths can point to a single file or folder for a single diffusers model.", - "vae": "VAE", - "vaePrecision": "VAE Precision", - "variant": "Variant", - "width": "Width", - "installingBundle": "Installing Bundle", - "installingModel": "Installing Model", - "installingXModels_one": "Installing {{count}} model", - "installingXModels_other": "Installing {{count}} models", - "skippingXDuplicates_one": ", skipping {{count}} duplicate", - "skippingXDuplicates_other": ", skipping {{count}} duplicates", - "manageModels": "Manage Models" - }, - "models": { - "addLora": "Add LoRA", - "concepts": "Concepts", - "loading": "loading", - "noMatchingLoRAs": "No matching LoRAs", - "noMatchingModels": "No matching Models", - "noModelsAvailable": "No models available", - "lora": "LoRA", - "selectModel": "Select a Model", - "noLoRAsInstalled": "No LoRAs installed", - "noRefinerModelsInstalled": "No SDXL Refiner models installed", - "defaultVAE": "Default VAE", - "noCompatibleLoRAs": "No Compatible LoRAs" - }, - "nodes": { - "arithmeticSequence": "Arithmetic Sequence", - "linearDistribution": "Linear Distribution", - "uniformRandomDistribution": "Uniform Random Distribution", - "parseString": "Parse String", - "splitOn": "Split On", - "noBatchGroup": "no group", - "generatorImagesCategory": "Category", - "generatorImages_one": "{{count}} image", - "generatorImages_other": "{{count}} images", - "generatorNRandomValues_one": "{{count}} random value", - "generatorNRandomValues_other": "{{count}} random values", - "generatorNoValues": "empty", - "generatorLoading": "loading", - "generatorLoadFromFile": "Load from File", - "generatorImagesFromBoard": "Images from Board", - "dynamicPromptsRandom": "Dynamic Prompts (Random)", - "dynamicPromptsCombinatorial": "Dynamic Prompts (Combinatorial)", - "addNode": "Add Node", - "addNodeToolTip": "Add Node (Shift+A, Space)", - "addLinearView": "Add to Linear View", - "animatedEdges": "Animated Edges", - "animatedEdgesHelp": "Animate selected edges and edges connected to selected nodes", - "boolean": "Booleans", - "cannotConnectInputToInput": "Cannot connect input to input", - "cannotConnectOutputToOutput": "Cannot connect output to output", - "cannotConnectToSelf": "Cannot connect to self", - "cannotDuplicateConnection": "Cannot create duplicate connections", - "cannotMixAndMatchCollectionItemTypes": "Cannot mix and match collection item types", - "missingNode": "Missing invocation node", - "missingInvocationTemplate": "Missing invocation template", - "missingFieldTemplate": "Missing field template", - "missingSourceOrTargetNode": "Missing source or target node", - "missingSourceOrTargetHandle": "Missing source or target handle", - "nodePack": "Node pack", - "collection": "Collection", - "singleFieldType": "{{name}} (Single)", - "collectionFieldType": "{{name}} (Collection)", - "collectionOrScalarFieldType": "{{name}} (Single or Collection)", - "colorCodeEdges": "Color-Code Edges", - "colorCodeEdgesHelp": "Color-code edges according to their connected fields", - "connectionWouldCreateCycle": "Connection would create a cycle", - "currentImage": "Current Image", - "currentImageDescription": "Displays the current image in the Node Editor", - "downloadWorkflow": "Download Workflow JSON", - "downloadWorkflowError": "Error downloading workflow", - "edge": "Edge", - "edit": "Edit", - "editMode": "Edit in Workflow Editor", - "enum": "Enum", - "executionStateCompleted": "Completed", - "executionStateError": "Error", - "executionStateInProgress": "In Progress", - "fieldTypesMustMatch": "Field types must match", - "fitViewportNodes": "Fit View", - "float": "Float", - "fullyContainNodes": "Fully Contain Nodes to Select", - "fullyContainNodesHelp": "Nodes must be fully inside the selection box to be selected", - "showEdgeLabels": "Show Edge Labels", - "showEdgeLabelsHelp": "Show labels on edges, indicating the connected nodes", - "hideLegendNodes": "Hide Field Type Legend", - "hideMinimapnodes": "Hide MiniMap", - "inputMayOnlyHaveOneConnection": "Input may only have one connection", - "integer": "Integer", - "ipAdapter": "IP-Adapter", - "loadingNodes": "Loading Nodes...", - "loadWorkflow": "Load Workflow", - "noWorkflows": "No Workflows", - "noMatchingWorkflows": "No Matching Workflows", - "noWorkflow": "No Workflow", - "unableToUpdateNode": "Node update failed: node {{node}} of type {{type}} (may require deleting and recreating)", - "mismatchedVersion": "Invalid node: node {{node}} of type {{type}} has mismatched version (try updating?)", - "missingTemplate": "Invalid node: node {{node}} of type {{type}} missing template (not installed?)", - "sourceNodeDoesNotExist": "Invalid edge: source/output node {{node}} does not exist", - "targetNodeDoesNotExist": "Invalid edge: target/input node {{node}} does not exist", - "sourceNodeFieldDoesNotExist": "Invalid edge: source/output field {{node}}.{{field}} does not exist", - "targetNodeFieldDoesNotExist": "Invalid edge: target/input field {{node}}.{{field}} does not exist", - "deletedInvalidEdge": "Deleted invalid edge {{source}} -> {{target}}", - "deletedMissingNodeFieldFormElement": "Deleted missing form field: node {{nodeId}} field {{fieldName}}", - "noConnectionInProgress": "No connection in progress", - "node": "Node", - "nodeOutputs": "Node Outputs", - "nodeSearch": "Search for nodes", - "nodeTemplate": "Node Template", - "nodeType": "Node Type", - "nodeName": "Node Name", - "noFieldsLinearview": "No fields added to Linear View", - "noFieldsViewMode": "This workflow has no selected fields to display. View the full workflow to configure values.", - "workflowHelpText": "Need Help? Check out our guide to Getting Started with Workflows.", - "noNodeSelected": "No node selected", - "nodeOpacity": "Node Opacity", - "nodeVersion": "Node Version", - "noOutputRecorded": "No outputs recorded", - "notes": "Notes", - "description": "Description", - "notesDescription": "Add notes about your workflow", - "problemSettingTitle": "Problem Setting Title", - "resetToDefaultValue": "Reset to default value", - "reloadNodeTemplates": "Reload Node Templates", - "removeLinearView": "Remove from Linear View", - "reorderLinearView": "Reorder Linear View", - "newWorkflow": "New Workflow", - "newWorkflowDesc": "Create a new workflow?", - "newWorkflowDesc2": "Your current workflow has unsaved changes.", - "loadWorkflowDesc": "Load workflow?", - "loadWorkflowDesc2": "Your current workflow has unsaved changes.", - "clearWorkflow": "Clear Workflow", - "clearWorkflowDesc": "Clear this workflow and start a new one?", - "clearWorkflowDesc2": "Your current workflow has unsaved changes.", - "scheduler": "Scheduler", - "showLegendNodes": "Show Field Type Legend", - "showMinimapnodes": "Show MiniMap", - "snapToGrid": "Snap to Grid", - "snapToGridHelp": "Snap nodes to grid when moved", - "string": "String", - "unableToLoadWorkflow": "Unable to Load Workflow", - "unableToValidateWorkflow": "Unable to Validate Workflow", - "unknownErrorValidatingWorkflow": "Unknown error validating workflow", - "inputFieldTypeParseError": "Unable to parse type of input field {{node}}.{{field}} ({{message}})", - "outputFieldTypeParseError": "Unable to parse type of output field {{node}}.{{field}} ({{message}})", - "unableToExtractSchemaNameFromRef": "unable to extract schema name from ref", - "unsupportedArrayItemType": "unsupported array item type \"{{type}}\"", - "unsupportedAnyOfLength": "too many union members ({{count}})", - "unsupportedMismatchedUnion": "mismatched CollectionOrScalar type with base types {{firstType}} and {{secondType}}", - "unableToParseFieldType": "unable to parse field type", - "unableToExtractEnumOptions": "unable to extract enum options", - "unknownField": "Unknown field", - "unknownFieldType": "$t(nodes.unknownField) type: {{type}}", - "unknownNode": "Unknown Node", - "unknownNodeType": "Unknown node type", - "unknownTemplate": "Unknown Template", - "unknownInput": "Unknown input: {{name}}", - "missingField_withName": "Missing field \"{{name}}\"", - "unexpectedField_withName": "Unexpected field \"{{name}}\"", - "unknownField_withName": "Unknown field \"{{name}}\"", - "unknownFieldEditWorkflowToFix_withName": "Workflow contains an unknown field \"{{name}}\".\nEdit the workflow to fix the issue.", - "updateNode": "Update Node", - "updateApp": "Update App", - "loadingTemplates": "Loading {{name}}", - "updateAllNodes": "Update Nodes", - "allNodesUpdated": "All Nodes Updated", - "unableToUpdateNodes_one": "Unable to update {{count}} node", - "unableToUpdateNodes_other": "Unable to update {{count}} nodes", - "validateConnections": "Validate Connections and Graph", - "validateConnectionsHelp": "Prevent invalid connections from being made, and invalid graphs from being invoked", - "viewMode": "Use in Linear View", - "unableToGetWorkflowVersion": "Unable to get workflow schema version", - "version": "Version", - "versionUnknown": " Version Unknown", - "workflow": "Workflow", - "graph": "Graph", - "noGraph": "No Graph", - "workflowAuthor": "Author", - "workflowContact": "Contact", - "workflowDescription": "Short Description", - "workflowName": "Name", - "workflowNotes": "Notes", - "workflowSettings": "Workflow Editor Settings", - "workflowTags": "Tags", - "workflowValidation": "Workflow Validation Error", - "workflowVersion": "Version", - "zoomInNodes": "Zoom In", - "zoomOutNodes": "Zoom Out", - "betaDesc": "This invocation is in beta. Until it is stable, it may have breaking changes during app updates. We plan to support this invocation long-term.", - "prototypeDesc": "This invocation is a prototype. It may have breaking changes during app updates and may be removed at any time.", - "internalDesc": "This invocation is used internally by Invoke. It may have breaking changes during app updates and may be removed at any time.", - "specialDesc": "This invocation some special handling in the app. For example, Batch nodes are used to queue multiple graphs from a single workflow.", - "imageAccessError": "Unable to find image {{image_name}}, resetting to default", - "boardAccessError": "Unable to find board {{board_id}}, resetting to default", - "modelAccessError": "Unable to find model {{key}}, resetting to default", - "saveToGallery": "Save To Gallery", - "addItem": "Add Item", - "generateValues": "Generate Values", - "floatRangeGenerator": "Float Range Generator", - "integerRangeGenerator": "Integer Range Generator", - "layout": { - "autoLayout": "Auto Layout", - "layeringStrategy": "Layering Strategy", - "networkSimplex": "Network Simplex", - "longestPath": "Longest Path", - "nodeSpacing": "Node Spacing", - "layerSpacing": "Layer Spacing", - "layoutDirection": "Layout Direction", - "layoutDirectionRight": "Right", - "layoutDirectionDown": "Down", - "alignment": "Node Alignment", - "alignmentUL": "Top Left", - "alignmentDL": "Bottom Left", - "alignmentUR": "Top Right", - "alignmentDR": "Bottom Right" - } + "autoScale": "Auto Scale", + "autoScaleDesc": "The selected model will be run until the target scale is reached.", + "scale": "Target Scale" + }, + "canny_edge_detection": { + "label": "Canny Edge Detection", + "description": "Generates an edge map from the selected layer using the Canny edge detection algorithm.", + "low_threshold": "Low Threshold", + "high_threshold": "High Threshold" + }, + "color_map": { + "label": "Color Map", + "description": "Create a color map from the selected layer.", + "tile_size": "Tile Size" + }, + "content_shuffle": { + "label": "Content Shuffle", + "description": "Shuffles the content of the selected layer, similar to a 'liquify' effect.", + "scale_factor": "Scale Factor" + }, + "depth_anything_depth_estimation": { + "label": "Depth Anything", + "description": "Generates a depth map from the selected layer using a Depth Anything model.", + "model_size": "Model Size", + "model_size_small": "Small", + "model_size_small_v2": "Small v2", + "model_size_base": "Base", + "model_size_large": "Large" + }, + "dw_openpose_detection": { + "label": "DW Openpose Detection", + "description": "Detects human poses in the selected layer using the DW Openpose model.", + "draw_hands": "Draw Hands", + "draw_face": "Draw Face", + "draw_body": "Draw Body" + }, + "hed_edge_detection": { + "label": "HED Edge Detection", + "description": "Generates an edge map from the selected layer using the HED edge detection model.", + "scribble": "Scribble" + }, + "lineart_anime_edge_detection": { + "label": "Lineart Anime Edge Detection", + "description": "Generates an edge map from the selected layer using the Lineart Anime edge detection model." + }, + "lineart_edge_detection": { + "label": "Lineart Edge Detection", + "description": "Generates an edge map from the selected layer using the Lineart edge detection model.", + "coarse": "Coarse" + }, + "mediapipe_face_detection": { + "label": "MediaPipe Face Detection", + "description": "Detects faces in the selected layer using the MediaPipe face detection model.", + "max_faces": "Max Faces", + "min_confidence": "Min Confidence" + }, + "mlsd_detection": { + "label": "Line Segment Detection", + "description": "Generates a line segment map from the selected layer using the MLSD line segment detection model.", + "score_threshold": "Score Threshold", + "distance_threshold": "Distance Threshold" + }, + "normal_map": { + "label": "Normal Map", + "description": "Generates a normal map from the selected layer." + }, + "pidi_edge_detection": { + "label": "PiDiNet Edge Detection", + "description": "Generates an edge map from the selected layer using the PiDiNet edge detection model.", + "scribble": "Scribble", + "quantize_edges": "Quantize Edges" + }, + "img_blur": { + "label": "Blur Image", + "description": "Blurs the selected layer.", + "blur_type": "Blur Type", + "blur_radius": "Radius", + "gaussian_type": "Gaussian", + "box_type": "Box" + }, + "img_noise": { + "label": "Noise Image", + "description": "Adds noise to the selected layer.", + "noise_type": "Noise Type", + "noise_amount": "Amount", + "gaussian_type": "Gaussian", + "salt_and_pepper_type": "Salt and Pepper", + "noise_color": "Colored Noise", + "size": "Noise Size" + }, + "adjust_image": { + "label": "Adjust Image", + "description": "Adjusts the selected channel of an image.", + "channel": "Channel", + "value_setting": "Value", + "scale_values": "Scale Values", + "red": "Red (RGBA)", + "green": "Green (RGBA)", + "blue": "Blue (RGBA)", + "alpha": "Alpha (RGBA)", + "cyan": "Cyan (CMYK)", + "magenta": "Magenta (CMYK)", + "yellow": "Yellow (CMYK)", + "black": "Black (CMYK)", + "hue": "Hue (HSV)", + "saturation": "Saturation (HSV)", + "value": "Value (HSV)", + "luminosity": "Luminosity (LAB)", + "a": "A (LAB)", + "b": "B (LAB)", + "y": "Y (YCbCr)", + "cb": "Cb (YCbCr)", + "cr": "Cr (YCbCr)" + }, + "pbr_maps": { + "label": "Create PBR Maps" + } }, - "parameters": { - "aspect": "Aspect", - "duration": "Duration", - "lockAspectRatio": "Lock Aspect Ratio", - "swapDimensions": "Swap Dimensions", - "setToOptimalSize": "Optimize size for model", - "setToOptimalSizeTooSmall": "$t(parameters.setToOptimalSize) (may be too small)", - "setToOptimalSizeTooLarge": "$t(parameters.setToOptimalSize) (may be too large)", - "cancel": { - "cancel": "Cancel" - }, - "cfgScale": "CFG Scale", - "cfgRescaleMultiplier": "CFG Rescale Multiplier", - "clipSkip": "CLIP Skip", - "coherenceMode": "Mode", - "coherenceEdgeSize": "Edge Size", - "coherenceMinDenoise": "Min Denoise", - "controlNetControlMode": "Control Mode", - "copyImage": "Copy Image", - "denoisingStrength": "Denoising Strength", - "disabledNoRasterContent": "Disabled (No Raster Content)", - "downloadImage": "Download Image", - "general": "General", - "guidance": "Guidance", - "height": "Height", - "imageFit": "Fit Initial Image To Output Size", - "images": "Images", - "images_withCount_one": "Image", - "images_withCount_other": "Images", - "infillMethod": "Infill Method", - "infillColorValue": "Fill Color", - "info": "Info", - "invoke": { - "addingImagesTo": "Adding images to", - "modelDisabledForTrial": "Generating with {{modelName}} is not available on trial accounts. Visit your account settings to upgrade.", - "invoke": "Invoke", - "missingFieldTemplate": "Missing field template", - "missingInputForField": "missing input", - "missingNodeTemplate": "Missing node template", - "emptyBatches": "empty batches", - "batchNodeNotConnected": "Batch node not connected: {{label}}", - "batchNodeEmptyCollection": "Some batch nodes have empty collections", - "collectionEmpty": "empty collection", - "collectionTooFewItems": "too few items, minimum {{minItems}}", - "collectionTooManyItems": "too many items, maximum {{maxItems}}", - "collectionStringTooLong": "too long, max {{maxLength}}", - "collectionStringTooShort": "too short, min {{minLength}}", - "collectionNumberGTMax": "{{value}} > {{maximum}} (inc max)", - "collectionNumberLTMin": "{{value}} < {{minimum}} (inc min)", - "collectionNumberGTExclusiveMax": "{{value}} >= {{exclusiveMaximum}} (exc max)", - "collectionNumberLTExclusiveMin": "{{value}} <= {{exclusiveMinimum}} (exc min)", - "collectionNumberNotMultipleOf": "{{value}} not multiple of {{multipleOf}}", - "batchNodeCollectionSizeMismatchNoGroupId": "Batch group collection size mismatch", - "batchNodeCollectionSizeMismatch": "Collection size mismatch on Batch {{batchGroupId}}", - "noModelSelected": "No model selected", - "noStartingFrameImage": "No starting frame image", - "noT5EncoderModelSelected": "No T5 Encoder model selected for FLUX generation", - "noFLUXVAEModelSelected": "No VAE model selected for FLUX generation", - "noCLIPEmbedModelSelected": "No CLIP Embed model selected for FLUX generation", - "noZImageVaeSourceSelected": "No VAE source: Select VAE (FLUX) or Qwen3 Source model", - "noZImageQwen3EncoderSourceSelected": "No Qwen3 Encoder source: Select Qwen3 Encoder or Qwen3 Source model", - "fluxModelIncompatibleBboxWidth": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), bbox width is {{width}}", - "fluxModelIncompatibleBboxHeight": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), bbox height is {{height}}", - "fluxModelIncompatibleScaledBboxWidth": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), scaled bbox width is {{width}}", - "fluxModelIncompatibleScaledBboxHeight": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), scaled bbox height is {{height}}", - "modelIncompatibleBboxWidth": "Bbox width is {{width}} but {{model}} requires multiple of {{multiple}}", - "modelIncompatibleBboxHeight": "Bbox height is {{height}} but {{model}} requires multiple of {{multiple}}", - "modelIncompatibleScaledBboxWidth": "Scaled bbox width is {{width}} but {{model}} requires multiple of {{multiple}}", - "modelIncompatibleScaledBboxHeight": "Scaled bbox height is {{height}} but {{model}} requires multiple of {{multiple}}", - "fluxModelMultipleControlLoRAs": "Can only use 1 Control LoRA at a time", - "incompatibleLoRAs": "Incompatible LoRA(s) added", - "canvasIsFiltering": "Canvas is busy (filtering)", - "canvasIsTransforming": "Canvas is busy (transforming)", - "canvasIsRasterizing": "Canvas is busy (rasterizing)", - "canvasIsCompositing": "Canvas is busy (compositing)", - "canvasIsSelectingObject": "Canvas is busy (selecting object)", - "noPrompts": "No prompts generated", - "noNodesInGraph": "No nodes in graph", - "systemDisconnected": "System disconnected", - "promptExpansionPending": "Prompt expansion in progress", - "promptExpansionResultPending": "Please accept or discard your prompt expansion result" - }, - "maskBlur": "Mask Blur", - "negativePromptPlaceholder": "Negative Prompt", - "noiseThreshold": "Noise Threshold", - "patchmatchDownScaleSize": "Downscale", - "perlinNoise": "Perlin Noise", - "positivePromptPlaceholder": "Positive Prompt", - "recallMetadata": "Recall Metadata", - "iterations": "Iterations", - "scale": "Scale", - "scaleBeforeProcessing": "Scale Before Processing", - "scaledHeight": "Scaled H", - "scaledWidth": "Scaled W", - "scheduler": "Scheduler", - "seamlessXAxis": "Seamless X Axis", - "seamlessYAxis": "Seamless Y Axis", - "colorCompensation": "Color Compensation", - "seed": "Seed", - "seedVarianceEnabled": "Seed Variance Enhancer", - "seedVarianceStrength": "Variance Strength", - "seedVarianceRandomizePercent": "Randomize Percent", - "imageActions": "Image Actions", - "sendToCanvas": "Send To Canvas", - "sendToUpscale": "Send To Upscale", - "showOptionsPanel": "Show Side Panel (O or T)", - "shuffle": "Shuffle Seed", - "steps": "Steps", - "strength": "Strength", - "symmetry": "Symmetry", - "tileSize": "Tile Size", - "optimizedImageToImage": "Optimized Image-to-Image", - "type": "Type", - "postProcessing": "Post-Processing (Shift + U)", - "processImage": "Process Image", - "upscaling": "Upscaling", - "useAll": "Use All", - "useSize": "Use Size", - "useCpuNoise": "Use CPU Noise", - "remixImage": "Remix Image", - "usePrompt": "Use Prompt", - "useSeed": "Use Seed", - "useClipSkip": "Use CLIP Skip", - "width": "Width", - "gaussianBlur": "Gaussian Blur", - "boxBlur": "Box Blur", - "staged": "Staged", - "resolution": "Resolution", - "modelDisabledForTrial": "Generating with {{modelName}} is not available on trial accounts. Visit your account settings to upgrade." + "transform": { + "transform": "Transform", + "fitToBbox": "Fit to Bbox", + "fitMode": "Fit Mode", + "fitModeContain": "Contain", + "fitModeCover": "Cover", + "fitModeFill": "Fill", + "smoothing": "Smoothing", + "smoothingDesc": "Apply a high-quality backend resample when committing transforms.", + "smoothingMode": "Resample Mode", + "smoothingModeBilinear": "Bilinear", + "smoothingModeBicubic": "Bicubic", + "smoothingModeHamming": "Hamming", + "smoothingModeLanczos": "Lanczos", + "reset": "Reset", + "apply": "Apply", + "cancel": "Cancel" }, - "dynamicPrompts": { - "showDynamicPrompts": "Show Dynamic Prompts", - "dynamicPrompts": "Dynamic Prompts", - "maxPrompts": "Max Prompts", - "promptsPreview": "Prompts Preview", - "seedBehaviour": { - "label": "Seed Behaviour", - "perIterationLabel": "Seed per Iteration", - "perIterationDesc": "Use a different seed for each iteration", - "perPromptLabel": "Seed per Image", - "perPromptDesc": "Use a different seed for each image" - }, - "loading": "Generating Dynamic Prompts...", - "promptsToGenerate": "Prompts to Generate" - }, - "sdxl": { - "cfgScale": "CFG Scale", - "concatPromptStyle": "Linking Prompt & Style", - "freePromptStyle": "Manual Style Prompting", - "denoisingStrength": "Denoising Strength", - "loading": "Loading...", - "negAestheticScore": "Negative Aesthetic Score", - "negStylePrompt": "Negative Style Prompt", - "noModelsAvailable": "No models available", - "posAestheticScore": "Positive Aesthetic Score", - "posStylePrompt": "Positive Style Prompt", - "refiner": "Refiner", - "refinermodel": "Refiner Model", - "refinerStart": "Refiner Start", - "refinerSteps": "Refiner Steps", - "scheduler": "Scheduler", - "steps": "Steps" + "selectObject": { + "selectObject": "Select Object", + "pointType": "Point Type", + "invertSelection": "Invert Selection", + "include": "Include", + "exclude": "Exclude", + "neutral": "Neutral", + "apply": "Apply", + "reset": "Reset", + "saveAs": "Save As", + "cancel": "Cancel", + "process": "Process", + "desc": "Select a single target object. After selection is complete, click Apply to discard everything outside the selected area, or save the selection as a new layer.", + "visualModeDesc": "Visual mode uses box and point inputs to select an object.", + "visualMode1": "Click and drag to draw a box around the object you want to select. You may get better results by drawing the box a bit larger or smaller than the object.", + "visualMode2": "Click to add a green include point, or shift-click to add a red exclude point to tell the model what to include or exclude.", + "visualMode3": "Points can be used to refine a box selection or used independently.", + "promptModeDesc": "Prompt mode uses text input to select an object.", + "promptMode1": "Type a brief description of the object you want to select.", + "promptMode2": "Use simple language, avoiding complex descriptions or multiple objects.", + "clickToAdd": "Click on the layer to add a point", + "dragToMove": "Drag a point to move it", + "clickToRemove": "Click on a point to remove it", + "model": "Model", + "segmentAnything1": "Segment Anything 1", + "segmentAnything2": "Segment Anything 2", + "prompt": "Selection Prompt" }, "settings": { - "antialiasProgressImages": "Antialias Progress Images", - "beta": "Beta", - "confirmOnDelete": "Confirm On Delete", - "confirmOnNewSession": "Confirm On New Session", - "developer": "Developer", - "displayInProgress": "Display Progress Images", - "enableInformationalPopovers": "Enable Informational Popovers", - "informationalPopoversDisabled": "Informational Popovers Disabled", - "informationalPopoversDisabledDesc": "Informational popovers have been disabled. Enable them in Settings.", - "enableModelDescriptions": "Enable Model Descriptions in Dropdowns", - "enableHighlightFocusedRegions": "Highlight Focused Regions", - "modelDescriptionsDisabled": "Model Descriptions in Dropdowns Disabled", - "modelDescriptionsDisabledDesc": "Model descriptions in dropdowns have been disabled. Enable them in Settings.", - "enableInvisibleWatermark": "Enable Invisible Watermark", - "enableNSFWChecker": "Enable NSFW Checker", - "general": "General", - "generation": "Generation", - "models": "Models", - "resetComplete": "Web UI has been reset.", - "resetWebUI": "Reset Web UI", - "resetWebUIDesc1": "Resetting the web UI only resets the browser's local cache of your images and remembered settings. It does not delete any images from disk.", - "resetWebUIDesc2": "If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub.", - "showDetailedInvocationProgress": "Show Progress Details", - "showProgressInViewer": "Show Progress Images in Viewer", - "ui": "User Interface", - "clearIntermediatesDisabled": "Queue must be empty to clear intermediates", - "clearIntermediatesDesc1": "Clearing intermediates will reset your Canvas and ControlNet state.", - "clearIntermediatesDesc2": "Intermediate images are byproducts of generation, different from the result images in the gallery. Clearing intermediates will free disk space.", - "clearIntermediatesDesc3": "Your gallery images will not be deleted.", - "clearIntermediates": "Clear Intermediates", - "clearIntermediatesWithCount_one": "Clear {{count}} Intermediate", - "clearIntermediatesWithCount_other": "Clear {{count}} Intermediates", - "intermediatesCleared_one": "Cleared {{count}} Intermediate", - "intermediatesCleared_other": "Cleared {{count}} Intermediates", - "intermediatesClearedFailed": "Problem Clearing Intermediates", - "reloadingIn": "Reloading in" - }, - "toast": { - "addedToBoard": "Added to board {{name}}'s assets", - "addedToUncategorized": "Added to board $t(boards.uncategorized)'s assets", - "baseModelChanged": "Base Model Changed", - "baseModelChangedCleared_one": "Updated, cleared or disabled {{count}} incompatible submodel", - "baseModelChangedCleared_other": "Updated, cleared or disabled {{count}} incompatible submodels", - "canceled": "Processing Canceled", - "connected": "Connected to Server", - "imageCopied": "Image Copied", - "linkCopied": "Link Copied", - "unableToLoadImage": "Unable to Load Image", - "unableToLoadImageMetadata": "Unable to Load Image Metadata", - "unableToLoadStylePreset": "Unable to Load Style Preset", - "stylePresetLoaded": "Style Preset Loaded", - "imageNotLoadedDesc": "Could not find image", - "imageSaved": "Image Saved", - "imageSavingFailed": "Image Saving Failed", - "imageUploaded": "Image Uploaded", - "imageUploadFailed": "Image Upload Failed", - "importFailed": "Import Failed", - "importSuccessful": "Import Successful", - "invalidUpload": "Invalid Upload", - "layerCopiedToClipboard": "Layer Copied to Clipboard", - "layerSavedToAssets": "Layer Saved to Assets", - "loadedWithWarnings": "Workflow Loaded with Warnings", - "modelAddedSimple": "Model Added to Queue", - "modelImportCanceled": "Model Import Canceled", - "outOfMemoryError": "Out of Memory Error", - "outOfMemoryErrorDescLocal": "Follow our Low VRAM guide to reduce OOMs.", - "outOfMemoryErrorDesc": "Your current generation settings exceed system capacity. Please adjust your settings and try again.", - "parameters": "Parameters", - "parameterSet": "Parameter Recalled", - "parameterSetDesc": "Recalled {{parameter}}", - "parameterNotSet": "Parameter Not Recalled", - "parameterNotSetDesc": "Unable to recall {{parameter}}", - "parameterNotSetDescWithMessage": "Unable to recall {{parameter}}: {{message}}", - "parametersSet": "Parameters Recalled", - "parametersNotSet": "Parameters Not Recalled", - "errorCopied": "Error Copied", - "problemCopyingImage": "Unable to Copy Image", - "problemCopyingLayer": "Unable to Copy Layer", - "problemSavingLayer": "Unable to Save Layer", - "problemDownloadingImage": "Unable to Download Image", - "noRasterLayers": "No Raster Layers Found", - "noRasterLayersDesc": "Create at least one raster layer to export to PSD", - "noActiveRasterLayers": "No Active Raster Layers", - "noActiveRasterLayersDesc": "Enable at least one raster layer to export to PSD", - "noVisibleRasterLayers": "No Visible Raster Layers", - "noVisibleRasterLayersDesc": "Enable at least one raster layer to export to PSD", - "invalidCanvasDimensions": "Invalid Canvas Dimensions", - "canvasTooLarge": "Canvas Too Large", - "canvasTooLargeDesc": "Canvas dimensions exceed the maximum allowed size for PSD export. Reduce the total width and height of the canvas of the canvas and try again.", - "failedToProcessLayers": "Failed to Process Layers", - "psdExportSuccess": "PSD Export Complete", - "psdExportSuccessDesc": "Successfully exported {{count}} layers to PSD file", - "problemExportingPSD": "Problem Exporting PSD", - "canvasManagerNotAvailable": "Canvas Manager Not Available", - "noValidLayerAdapters": "No Valid Layer Adapters Found", - "pasteSuccess": "Pasted to {{destination}}", - "pasteFailed": "Paste Failed", - "prunedQueue": "Pruned Queue", - "sentToCanvas": "Sent to Canvas", - "sentToUpscale": "Sent to Upscale", - "serverError": "Server Error", - "sessionRef": "Session: {{sessionId}}", - "setControlImage": "Set as control image", - "setNodeField": "Set as node field", - "somethingWentWrong": "Something Went Wrong", - "uploadFailed": "Upload failed", - "imagesWillBeAddedTo": "Uploaded images will be added to board {{boardName}}'s assets.", - "uploadFailedInvalidUploadDesc_withCount_one": "Must be maximum of 1 PNG, JPEG or WEBP image.", - "uploadFailedInvalidUploadDesc_withCount_other": "Must be maximum of {{count}} PNG, JPEG or WEBP images.", - "uploadFailedInvalidUploadDesc": "Must be PNG, JPEG or WEBP images.", - "workflowLoaded": "Workflow Loaded", - "problemRetrievingWorkflow": "Problem Retrieving Workflow", - "workflowDeleted": "Workflow Deleted", - "problemDeletingWorkflow": "Problem Deleting Workflow", - "unableToCopy": "Unable to Copy", - "unableToCopyDesc": "Your browser does not support clipboard access. Firefox users may be able to fix this by following ", - "unableToCopyDesc_theseSteps": "these steps", - "fluxFillIncompatibleWithT2IAndI2I": "FLUX Fill is not compatible with Text to Image or Image to Image. Use other FLUX models for these tasks.", - "imagenIncompatibleGenerationMode": "Google {{model}} supports Text to Image only. Use other models for Image to Image, Inpainting and Outpainting tasks.", - "chatGPT4oIncompatibleGenerationMode": "ChatGPT 4o supports Text to Image and Image to Image only. Use other models Inpainting and Outpainting tasks.", - "fluxKontextIncompatibleGenerationMode": "FLUX Kontext does not support generation from images placed on the canvas. Re-try using the Reference Image section and disable any Raster Layers.", - "problemUnpublishingWorkflow": "Problem Unpublishing Workflow", - "problemUnpublishingWorkflowDescription": "There was a problem unpublishing the workflow. Please try again.", - "workflowUnpublished": "Workflow Unpublished", - "sentToCanvas": "Sent to Canvas", - "sentToUpscale": "Sent to Upscale", - "promptGenerationStarted": "Prompt generation started", - "uploadAndPromptGenerationFailed": "Failed to upload image and generate prompt", - "promptExpansionFailed": "We ran into an issue. Please try prompt expansion again.", - "maskInverted": "Mask Inverted", - "maskInvertFailed": "Failed to Invert Mask", - "noVisibleMasks": "No Visible Masks", - "noVisibleMasksDesc": "Create or enable at least one inpaint mask to invert", - "noInpaintMaskSelected": "No Inpaint Mask Selected", - "noInpaintMaskSelectedDesc": "Select an inpaint mask to invert", - "invalidBbox": "Invalid Bounding Box", - "invalidBboxDesc": "The bounding box has no valid dimensions" - }, - "popovers": { - "clipSkip": { - "heading": "CLIP Skip", - "paragraphs": [ - "How many layers of the CLIP model to skip.", - "Certain models are better suited to be used with CLIP Skip." - ] - }, - "paramNegativeConditioning": { - "heading": "Negative Prompt", - "paragraphs": [ - "The generation process avoids the concepts in the negative prompt. Use this to exclude qualities or objects from the output.", - "Supports Compel syntax and embeddings." - ] - }, - "paramPositiveConditioning": { - "heading": "Positive Prompt", - "paragraphs": [ - "Guides the generation process. You may use any words or phrases.", - "Compel and Dynamic Prompts syntaxes and embeddings." - ] - }, - "paramScheduler": { - "heading": "Scheduler", - "paragraphs": [ - "Scheduler used during the generation process.", - "Each scheduler defines how to iteratively add noise to an image or how to update a sample based on a model's output." - ] - }, - "seedVarianceEnhancer": { - "heading": "Seed Variance Enhancer", - "paragraphs": [ - "Z-Image-Turbo can produce relatively similar images with different seeds. This feature adds seed-based noise to the text embeddings to increase visual variation while maintaining reproducibility.", - "Enable this to get more diverse results when exploring different seeds." - ] - }, - "seedVarianceStrength": { - "heading": "Variance Strength", - "paragraphs": [ - "Controls the intensity of the noise added to embeddings. The strength is automatically calibrated relative to the embedding's standard deviation.", - "Values less than 0.1 will produce subtle variations, increasing to stronger ones at 0.5. Values above 0.5 may lead to unexpected results." - ] - }, - "seedVarianceRandomizePercent": { - "heading": "Randomize Percent", - "paragraphs": [ - "Percentage of embedding values that receive noise (1-100%).", - "Lower values create more selective noise patterns, while 100% affects all values equally." - ] - }, - "compositingMaskBlur": { - "heading": "Mask Blur", - "paragraphs": ["The blur radius of the mask."] - }, - "compositingBlurMethod": { - "heading": "Blur Method", - "paragraphs": ["The method of blur applied to the masked area."] - }, - "compositingCoherencePass": { - "heading": "Coherence Pass", - "paragraphs": ["A second round of denoising helps to composite the Inpainted/Outpainted image."] - }, - "compositingCoherenceMode": { - "heading": "Mode", - "paragraphs": ["Method used to create a coherent image with the newly generated masked area."] - }, - "compositingCoherenceEdgeSize": { - "heading": "Edge Size", - "paragraphs": ["The edge size of the coherence pass."] - }, - "compositingCoherenceMinDenoise": { - "heading": "Minimum Denoise", - "paragraphs": [ - "Minimum denoise strength for the Coherence mode", - "The minimum denoise strength for the coherence region when inpainting or outpainting" - ] - }, - "compositingMaskAdjustments": { - "heading": "Mask Adjustments", - "paragraphs": ["Adjust the mask."] - }, - "inpainting": { - "heading": "Inpainting", - "paragraphs": ["Controls which area is modified, guided by Denoising Strength."] - }, - "rasterLayer": { - "heading": "Raster Layer", - "paragraphs": ["Pixel-based content of your canvas, used during image generation."] - }, - "regionalGuidance": { - "heading": "Regional Guidance", - "paragraphs": ["Brush to guide where elements from global prompts should appear."] - }, - "regionalGuidanceAndReferenceImage": { - "heading": "Regional Guidance and Regional Reference Image", - "paragraphs": [ - "For Regional Guidance, brush to guide where elements from global prompts should appear.", - "For Regional Reference Image, brush to apply a reference image to specific areas." - ] - }, - "globalReferenceImage": { - "heading": "Global Reference Image", - "paragraphs": ["Applies a reference image to influence the entire generation."] - }, - "regionalReferenceImage": { - "heading": "Regional Reference Image", - "paragraphs": ["Brush to apply a reference image to specific areas."] - }, - "controlNet": { - "heading": "ControlNet", - "paragraphs": [ - "ControlNets provide guidance to the generation process, helping create images with controlled composition, structure, or style, depending on the model selected." - ] - }, - "controlNetBeginEnd": { - "heading": "Begin / End Step Percentage", - "paragraphs": [ - "This setting determines which portion of the denoising (generation) process incorporates the guidance from this layer.", - "• Start Step (%): Specifies when to begin applying the guidance from this layer during the generation process.", - "• End Step (%): Specifies when to stop applying this layer's guidance and revert general guidance from the model and other settings." - ] - }, - "controlNetControlMode": { - "heading": "Control Mode", - "paragraphs": ["Lend more weight to either the prompt or ControlNet."] - }, - "controlNetProcessor": { - "heading": "Processor", - "paragraphs": [ - "Method of processing the input image to guide the generation process. Different processors will provide different effects or styles in your generated images." - ] - }, - "controlNetResizeMode": { - "heading": "Resize Mode", - "paragraphs": ["Method to fit Control Adapter's input image size to the output generation size."] - }, - "ipAdapterMethod": { - "heading": "Mode", - "paragraphs": ["The mode defines how the reference image will guide the generation process."] - }, - "controlNetWeight": { - "heading": "Weight", - "paragraphs": [ - "Adjusts how strongly the layer influences the generation process", - "• Higher Weight (.75-2): Creates a more significant impact on the final result.", - "• Lower Weight (0-.75): Creates a smaller impact on the final result." - ] - }, - "dynamicPrompts": { - "heading": "Dynamic Prompts", - "paragraphs": [ - "Dynamic Prompts parses a single prompt into many.", - "The basic syntax is \"a {red|green|blue} ball\". This will produce three prompts: \"a red ball\", \"a green ball\" and \"a blue ball\".", - "You can use the syntax as many times as you like in a single prompt, but be sure to keep the number of prompts generated in check with the Max Prompts setting." - ] - }, - "dynamicPromptsMaxPrompts": { - "heading": "Max Prompts", - "paragraphs": ["Limits the number of prompts that can be generated by Dynamic Prompts."] - }, - "dynamicPromptsSeedBehaviour": { - "heading": "Seed Behaviour", - "paragraphs": [ - "Controls how the seed is used when generating prompts.", - "Per Iteration will use a unique seed for each iteration. Use this to explore prompt variations on a single seed.", - "For example, if you have 5 prompts, each image will use the same seed.", - "Per Image will use a unique seed for each image. This provides more variation." - ] - }, - "imageFit": { - "heading": "Fit Initial Image to Output Size", - "paragraphs": [ - "Resizes the initial image to the width and height of the output image. Recommended to enable." - ] - }, - "infillMethod": { - "heading": "Infill Method", - "paragraphs": ["Method of infilling during the Outpainting or Inpainting process."] - }, - "lora": { - "heading": "LoRA", - "paragraphs": ["Lightweight models that are used in conjunction with base models."] - }, - "loraWeight": { - "heading": "Weight", - "paragraphs": ["Weight of the LoRA. Higher weight will lead to larger impacts on the final image."] - }, - "noiseUseCPU": { - "heading": "Use CPU Noise", - "paragraphs": [ - "Controls whether noise is generated on the CPU or GPU.", - "With CPU Noise enabled, a particular seed will produce the same image on any machine.", - "There is no performance impact to enabling CPU Noise." - ] - }, - "paramAspect": { - "heading": "Aspect", - "paragraphs": [ - "Aspect ratio of the generated image. Changing the ratio will update the Width and Height accordingly.", - "\"Optimize\" will set the Width and Height to optimal dimensions for the chosen model." - ] - }, - "paramCFGScale": { - "heading": "CFG Scale", - "paragraphs": [ - "Controls how much the prompt influences the generation process.", - "High CFG Scale values can result in over-saturation and distorted generation results. " - ] - }, - "paramGuidance": { - "heading": "Guidance", - "paragraphs": [ - "Controls how much the prompt influences the generation process.", - "High guidance values can result in over-saturation and high or low guidance may result in distorted generation results. Guidance only applies to FLUX DEV models." - ] - }, - "paramCFGRescaleMultiplier": { - "heading": "CFG Rescale Multiplier", - "paragraphs": [ - "Rescale multiplier for CFG guidance, used for models trained using zero-terminal SNR (ztsnr).", - "Suggested value of 0.7 for these models." - ] - }, - "paramDenoisingStrength": { - "heading": "Denoising Strength", - "paragraphs": [ - "Controls how much the generated image varies from the raster layer(s).", - "Lower strength stays closer to the combined visible raster layers. Higher strength relies more on the global prompt.", - "When there are no raster layers with visible content, this setting is ignored." - ] - }, - "paramHeight": { - "heading": "Height", - "paragraphs": ["Height of the generated image. Must be a multiple of 8."] - }, - "paramHrf": { - "heading": "Enable High Resolution Fix", - "paragraphs": [ - "Generate high quality images at a larger resolution than optimal for the model. Generally used to prevent duplication in the generated image." - ] - }, - "paramIterations": { - "heading": "Iterations", - "paragraphs": [ - "The number of images to generate.", - "If Dynamic Prompts is enabled, each of the prompts will be generated this many times." - ] - }, - "paramModel": { - "heading": "Model", - "paragraphs": [ - "Model used for generation. Different models are trained to specialize in producing different aesthetic results and content." - ] - }, - "paramRatio": { - "heading": "Aspect Ratio", - "paragraphs": [ - "The aspect ratio of the dimensions of the image generated.", - "An image size (in number of pixels) equivalent to 512x512 is recommended for SD1.5 models and a size equivalent to 1024x1024 is recommended for SDXL models." - ] - }, - "paramSeed": { - "heading": "Seed", - "paragraphs": [ - "Controls the starting noise used for generation.", - "Disable the \"Random\" option to produce identical results with the same generation settings." - ] - }, - "paramSteps": { - "heading": "Steps", - "paragraphs": [ - "Number of steps that will be performed in each generation.", - "Higher step counts will typically create better images but will require more generation time." - ] - }, - "paramUpscaleMethod": { - "heading": "Upscale Method", - "paragraphs": ["Method used to upscale the image for High Resolution Fix."] - }, - "paramVAE": { - "heading": "VAE", - "paragraphs": ["Model used for translating AI output into the final image."] - }, - "paramVAEPrecision": { - "heading": "VAE Precision", - "paragraphs": [ - "The precision used during VAE encoding and decoding.", - "Fp16/Half precision is more efficient, at the expense of minor image variations." - ] - }, - "paramWidth": { - "heading": "Width", - "paragraphs": ["Width of the generated image. Must be a multiple of 8."] - }, - "patchmatchDownScaleSize": { - "heading": "Downscale", - "paragraphs": [ - "How much downscaling occurs before infilling.", - "Higher downscaling will improve performance and reduce quality." - ] - }, - "refinerModel": { - "heading": "Refiner Model", - "paragraphs": [ - "Model used during the refiner portion of the generation process.", - "Similar to the Generation Model." - ] - }, - "refinerPositiveAestheticScore": { - "heading": "Positive Aesthetic Score", - "paragraphs": [ - "Weight generations to be more similar to images with a high aesthetic score, based on the training data." - ] - }, - "refinerNegativeAestheticScore": { - "heading": "Negative Aesthetic Score", - "paragraphs": [ - "Weight generations to be more similar to images with a low aesthetic score, based on the training data." - ] - }, - "refinerScheduler": { - "heading": "Scheduler", - "paragraphs": [ - "Scheduler used during the refiner portion of the generation process.", - "Similar to the Generation Scheduler." - ] - }, - "refinerStart": { - "heading": "Refiner Start", - "paragraphs": [ - "Where in the generation process the refiner will start to be used.", - "0 means the refiner will be used for the entire generation process, 0.8 means the refiner will be used for the last 20% of the generation process." - ] - }, - "refinerSteps": { - "heading": "Steps", - "paragraphs": [ - "Number of steps that will be performed during the refiner portion of the generation process.", - "Similar to the Generation Steps." - ] - }, - "refinerCfgScale": { - "heading": "CFG Scale", - "paragraphs": [ - "Controls how much the prompt influences the generation process.", - "Similar to the Generation CFG Scale." - ] - }, - "scaleBeforeProcessing": { - "heading": "Scale Before Processing", - "paragraphs": [ - "\"Auto\" scales the selected area to the size best suited for the model before the image generation process.", - "\"Manual\" allows you to choose the width and height the selected area will be scaled to before the image generation process." - ] - }, - "seamlessTilingXAxis": { - "heading": "Seamless Tiling X Axis", - "paragraphs": ["Seamlessly tile an image along the horizontal axis."] - }, - "seamlessTilingYAxis": { - "heading": "Seamless Tiling Y Axis", - "paragraphs": ["Seamlessly tile an image along the vertical axis."] - }, - "colorCompensation": { - "heading": "Color Compensation", - "paragraphs": ["Adjust the input image to reduce color shifts during inpainting or img2img (SDXL Only)."] - }, - "upscaleModel": { - "heading": "Upscale Model", - "paragraphs": [ - "The upscale model scales the image to the output size before details are added. Any supported upscale model may be used, but some are specialized for different kinds of images, like photos or line drawings." - ] - }, - "scale": { - "heading": "Scale", - "paragraphs": [ - "Scale controls the output image size, and is based on a multiple of the input image resolution. For example a 2x upscale on a 1024x1024 image would produce a 2048 x 2048 output." - ] - }, - "creativity": { - "heading": "Creativity", - "paragraphs": [ - "Creativity controls the amount of freedom granted to the model when adding details. Low creativity stays close to the original image, while high creativity allows for more change. When using a prompt, high creativity increases the influence of the prompt." - ] - }, - "structure": { - "heading": "Structure", - "paragraphs": [ - "Structure controls how closely the output image will keep to the layout of the original. Low structure allows major changes, while high structure strictly maintains the original composition and layout." - ] - }, - "tileSize": { - "heading": "Tile Size", - "paragraphs": [ - "Controls the size of tiles used during the upscaling process. Larger tiles use more memory but may produce better results.", - "SD1.5 models default to 768, while SDXL models default to 1024. Reduce tile size if you encounter memory issues." - ] - }, - "tileOverlap": { - "heading": "Tile Overlap", - "paragraphs": [ - "Controls the overlap between adjacent tiles during upscaling. Higher overlap values help reduce visible seams between tiles but use more memory.", - "The default value of 128 works well for most cases, but you can adjust based on your specific needs and memory constraints." - ] - }, - "fluxDevLicense": { - "heading": "Non-Commercial License", - "paragraphs": [ - "FLUX.1 [dev] models are licensed under the FLUX [dev] non-commercial license. To use this model type for commercial purposes in Invoke, visit our website to learn more." - ] - }, - "optimizedDenoising": { - "heading": "Optimized Image-to-Image", - "paragraphs": [ - "Enable 'Optimized Image-to-Image' for a more gradual Denoise Strength scale for image-to-image and inpainting transformations with Flux models. This setting improves the ability to control the amount of change applied to an image, but may be turned off if you prefer to use the standard Denoise Strength scale. This setting is still being tuned and is in beta status." - ] - } + "snapToGrid": { + "label": "Snap to Grid", + "on": "On", + "off": "Off" + }, + "preserveMask": { + "label": "Preserve Masked Region", + "alert": "Preserving Masked Region" + }, + "saveAllImagesToGallery": { + "label": "Send New Generations to Gallery", + "alert": "Sending new generations to Gallery, bypassing Canvas" + }, + "isolatedStagingPreview": "Isolated Staging Preview", + "isolatedPreview": "Isolated Preview", + "isolatedLayerPreview": "Isolated Layer Preview", + "isolatedLayerPreviewDesc": "Whether to show only this layer when performing operations like filtering or transforming.", + "invertBrushSizeScrollDirection": "Invert Scroll for Brush Size", + "pressureSensitivity": "Pressure Sensitivity" }, - "workflows": { - "chooseWorkflowFromLibrary": "Choose Workflow from Library", - "defaultWorkflows": "Default Workflows", - "userWorkflows": "User Workflows", - "projectWorkflows": "Project Workflows", - "ascending": "Ascending", - "created": "Created", - "descending": "Descending", - "workflows": "Workflows", - "workflowLibrary": "Workflow Library", - "loadMore": "Load More", - "allLoaded": "All Workflows Loaded", - "searchPlaceholder": "Search by name, description or tags", - "filterByTags": "Filter by Tags", - "tags": "Tags", - "yourWorkflows": "Your Workflows", - "recentlyOpened": "Recently Opened", - "noRecentWorkflows": "No Recent Workflows", - "private": "Private", - "shared": "Shared", - "published": "Published", - "browseWorkflows": "Browse Workflows", - "deselectAll": "Deselect All", - "recommended": "Recommended For You", - "opened": "Opened", - "openWorkflow": "Open Workflow", - "updated": "Updated", - "uploadWorkflow": "Load from File", - "deleteWorkflow": "Delete Workflow", - "deleteWorkflow2": "Are you sure you want to delete this workflow? This cannot be undone.", - "unnamedWorkflow": "Unnamed Workflow", - "downloadWorkflow": "Save to File", - "saveWorkflow": "Save Workflow", - "saveWorkflowAs": "Save Workflow As", - "saveWorkflowToProject": "Save Workflow to Project", - "savingWorkflow": "Saving Workflow...", - "problemSavingWorkflow": "Problem Saving Workflow", - "workflowSaved": "Workflow Saved", - "name": "Name", - "noWorkflows": "No Workflows", - "problemLoading": "Problem Loading Workflows", - "loading": "Loading Workflows", - "noDescription": "No description", - "searchWorkflows": "Search Workflows", - "clearWorkflowSearchFilter": "Clear Workflow Search Filter", - "workflowName": "Workflow Name", - "newWorkflowCreated": "New Workflow Created", - "workflowCleared": "Workflow Cleared", - "workflowEditorMenu": "Workflow Editor Menu", - "loadFromGraph": "Load Workflow from Graph", - "convertGraph": "Convert Graph", - "loadWorkflow": "$t(common.load) Workflow", - "autoLayout": "Auto Layout", - "edit": "Edit", - "view": "View", - "download": "Download", - "copyShareLink": "Copy Share Link", - "copyShareLinkForWorkflow": "Copy Share Link for Workflow", - "delete": "Delete", - "openLibrary": "Open Library", - "workflowThumbnail": "Workflow Thumbnail", - "saveChanges": "Save Changes", - "emptyStringPlaceholder": "", - "builder": { - "deleteAllElements": "Delete All Form Elements", - "resetAllNodeFields": "Reset All Node Fields", - "builder": "Form Builder", - "layout": "Layout", - "row": "Row", - "column": "Column", - "container": "Container", - "containerRowLayout": "Container (row layout)", - "containerColumnLayout": "Container (column layout)", - "heading": "Heading", - "text": "Text", - "divider": "Divider", - "nodeField": "Node Field", - "zoomToNode": "Zoom to Node", - "nodeFieldTooltip": "To add a node field, click the small plus sign button on the field in the Workflow Editor, or drag the field by its name into the form.", - "addToForm": "Add to Form", - "removeFromForm": "Remove from Form", - "label": "Label", - "showDescription": "Show Description", - "showShuffle": "Show Shuffle", - "shuffle": "Shuffle", - "component": "Component", - "numberInput": "Number Input", - "singleLine": "Single Line", - "multiLine": "Multi Line", - "slider": "Slider", - "dropdown": "Dropdown", - "addOption": "Add Option", - "resetOptions": "Reset Options", - "both": "Both", - "emptyRootPlaceholderViewMode": "Click Edit to start building a form for this workflow.", - "emptyRootPlaceholderEditMode": "Drag a form element or node field here to get started.", - "containerPlaceholder": "Empty Container", - "headingPlaceholder": "Empty Heading", - "textPlaceholder": "Empty Text", - "workflowBuilderAlphaWarning": "The workflow builder is currently in alpha. There may be breaking changes before the stable release.", - "minimum": "Minimum", - "maximum": "Maximum", - "publish": "Publish", - "unpublish": "Unpublish", - "published": "Published", - "workflowLocked": "Workflow Locked", - "workflowLockedPublished": "Published workflows are locked for editing.\nYou can unpublish the workflow to edit it, or make a copy of it.", - "workflowLockedDuringPublishing": "Workflow is locked while configuring for publishing.", - "selectOutputNode": "Select Output Node", - "changeOutputNode": "Change Output Node", - "publishedWorkflowOutputs": "Outputs", - "publishedWorkflowInputs": "Inputs", - "unpublishableInputs": "These unpublishable inputs will be omitted", - "noPublishableInputs": "No publishable inputs", - "noOutputNodeSelected": "No output node selected", - "cannotPublish": "Cannot publish workflow", - "publishWarnings": "Warnings", - "errorWorkflowHasUnsavedChanges": "Workflow has unsaved changes", - "errorWorkflowHasUnpublishableNodes": "Workflow has batch, generator, or metadata extraction nodes", - "errorWorkflowHasInvalidGraph": "Workflow graph invalid (hover Invoke button for details)", - "errorWorkflowHasNoOutputNode": "No output node selected", - "warningWorkflowHasNoPublishableInputFields": "No publishable input fields selected - published workflow will run with only default values", - "warningWorkflowHasUnpublishableInputFields": "Workflow has some unpublishable inputs - these will be omitted from the published workflow", - "publishFailed": "Publish failed", - "publishFailedDesc": "There was a problem publishing the workflow. Please try again.", - "publishSuccess": "Your workflow is being published", - "publishSuccessDesc": "Check your Project Dashboard to see its progress.", - "publishInProgress": "Publishing in progress", - "publishedWorkflowIsLocked": "Published workflow is locked", - "publishingValidationRun": "Publishing Validation Run", - "publishingValidationRunInProgress": "Publishing validation run in progress.", - "publishedWorkflowsLocked": "Published workflows are locked and cannot be edited or run. Either unpublish the workflow or save a copy to edit or run this workflow.", - "selectingOutputNode": "Selecting output node", - "selectingOutputNodeDesc": "Click a node to select it as the workflow's output node." - } + "HUD": { + "bbox": "Bbox", + "scaledBbox": "Scaled Bbox", + "entityStatus": { + "isFiltering": "{{title}} is filtering", + "isTransforming": "{{title}} is transforming", + "isLocked": "{{title}} is locked", + "isHidden": "{{title}} is hidden", + "isDisabled": "{{title}} is disabled", + "isEmpty": "{{title}} is empty" + } }, - "controlLayers": { - "regional": "Regional", - "global": "Global", - "canvas": "Canvas", - "bookmark": "Bookmark for Quick Switch", - "fitBboxToLayers": "Fit Bbox To Layers", - "fitBboxToMasks": "Fit Bbox To Masks", - "removeBookmark": "Remove Bookmark", - "saveCanvasToGallery": "Save Canvas to Gallery", - "saveBboxToGallery": "Save Bbox to Gallery", - "saveLayerToAssets": "Save Layer to Assets", - "exportCanvasToPSD": "Export Canvas to PSD", - "cropLayerToBbox": "Crop Layer to Bbox", - "savedToGalleryOk": "Saved to Gallery", - "savedToGalleryError": "Error saving to gallery", - "regionCopiedToClipboard": "{{region}} Copied to Clipboard", - "copyRegionError": "Error copying {{region}}", - "newGlobalReferenceImageOk": "Created Global Reference Image", - "newGlobalReferenceImageError": "Problem Creating Global Reference Image", - "newRegionalReferenceImageOk": "Created Regional Reference Image", - "newRegionalReferenceImageError": "Problem Creating Regional Reference Image", - "newControlLayerOk": "Created Control Layer", - "newControlLayerError": "Problem Creating Control Layer", - "newRasterLayerOk": "Created Raster Layer", - "newRasterLayerError": "Problem Creating Raster Layer", - "pullBboxIntoLayerOk": "Bbox Pulled Into Layer", - "pullBboxIntoLayerError": "Problem Pulling BBox Into Layer", - "pullBboxIntoReferenceImageOk": "Bbox Pulled Into ReferenceImage", - "pullBboxIntoReferenceImageError": "Problem Pulling BBox Into ReferenceImage", - "addAdjustments": "Add Adjustments", - "removeAdjustments": "Remove Adjustments", - "adjustments": { - "simple": "Simple", - "curves": "Curves", - "heading": "Adjustments", - "expand": "Expand adjustments", - "collapse": "Collapse adjustments", - "brightness": "Brightness", - "contrast": "Contrast", - "saturation": "Saturation", - "temperature": "Temperature", - "tint": "Tint", - "sharpness": "Sharpness", - "finish": "Finish", - "reset": "Reset", - "master": "Master" - }, - "regionIsEmpty": "Selected region is empty", - "mergeVisible": "Merge Visible", - "mergeDown": "Merge Down", - "mergeVisibleOk": "Merged layers", - "mergeVisibleError": "Error merging layers", - "mergingLayers": "Merging layers", - "clearHistory": "Clear History", - "bboxOverlay": "Show Bbox Overlay", - "ruleOfThirds": "Show Rule of Thirds", - "newSession": "New Session", - "clearCaches": "Clear Caches", - "recalculateRects": "Recalculate Rects", - "clipToBbox": "Clip Strokes to Bbox", - "extractRegion": "Extract Region", - "outputOnlyMaskedRegions": "Output Only Generated Regions", - "addLayer": "Add Layer", - "duplicate": "Duplicate", - "moveToFront": "Move to Front", - "moveToBack": "Move to Back", - "moveForward": "Move Forward", - "moveBackward": "Move Backward", - "width": "Width", - "autoNegative": "Auto Negative", - "enableAutoNegative": "Enable Auto Negative", - "disableAutoNegative": "Disable Auto Negative", - "deletePrompt": "Delete Prompt", - "deleteReferenceImage": "Delete Reference Image", - "showHUD": "Show HUD", - "rectangle": "Rectangle", - "maskFill": "Mask Fill", - "maskLayerEmpty": "Mask layer is empty", - "extractMaskedAreaFailed": "Unable to extract masked area.", - "extractMaskedAreaMissingData": "Cannot extract: image or mask data is missing.", - "addPositivePrompt": "Add $t(controlLayers.prompt)", - "addNegativePrompt": "Add $t(controlLayers.negativePrompt)", - "addReferenceImage": "Add $t(controlLayers.referenceImage)", - "addImageNoise": "Add $t(controlLayers.imageNoise)", - "addRasterLayer": "Add $t(controlLayers.rasterLayer)", - "addControlLayer": "Add $t(controlLayers.controlLayer)", - "addInpaintMask": "Add $t(controlLayers.inpaintMask)", - "addRegionalGuidance": "Add $t(controlLayers.regionalGuidance)", - "addGlobalReferenceImage": "Add $t(controlLayers.globalReferenceImage)", - "addDenoiseLimit": "Add $t(controlLayers.denoiseLimit)", - "rasterLayer": "Raster Layer", - "controlLayer": "Control Layer", - "inpaintMask": "Inpaint Mask", - "invertMask": "Invert Mask", - "regionalGuidance": "Regional Guidance", - "referenceImageRegional": "Reference Image (Regional)", - "referenceImageGlobal": "Reference Image (Global)", - "asRasterLayer": "As $t(controlLayers.rasterLayer)", - "asRasterLayerResize": "As $t(controlLayers.rasterLayer) (Resize)", - "asControlLayer": "As $t(controlLayers.controlLayer)", - "asControlLayerResize": "As $t(controlLayers.controlLayer) (Resize)", - "referenceImage": "Reference Image", - "maxRefImages": "Max Ref Images", - "useAsReferenceImage": "Use as Reference Image", - "regionalReferenceImage": "Regional Reference Image", - "globalReferenceImage": "Global Reference Image", - "sendingToCanvas": "Staging Generations on Canvas", - "sendingToGallery": "Sending Generations to Gallery", - "sendToGallery": "Send To Gallery", - "sendToGalleryDesc": "Pressing Invoke generates and saves a unique image to your gallery.", - "sendToCanvas": "Send To Canvas", - "newLayerFromImage": "New Layer from Image", - "newCanvasFromImage": "New Canvas from Image", - "newImg2ImgCanvasFromImage": "New Img2Img from Image", - "copyToClipboard": "Copy to Clipboard", - "sendToCanvasDesc": "Pressing Invoke stages your work in progress on the canvas.", - "viewProgressInViewer": "View progress and outputs in the Image Viewer.", - "viewProgressOnCanvas": "View progress and stage outputs on the Canvas.", - "rasterLayer_withCount_one": "$t(controlLayers.rasterLayer)", - "rasterLayer_withCount_other": "Raster Layers", - "controlLayer_withCount_one": "$t(controlLayers.controlLayer)", - "controlLayer_withCount_other": "Control Layers", - "inpaintMask_withCount_one": "$t(controlLayers.inpaintMask)", - "inpaintMask_withCount_other": "Inpaint Masks", - "regionalGuidance_withCount_one": "$t(controlLayers.regionalGuidance)", - "regionalGuidance_withCount_other": "Regional Guidance", - "globalReferenceImage_withCount_one": "$t(controlLayers.globalReferenceImage)", - "globalReferenceImage_withCount_other": "Global Reference Images", - "opacity": "Opacity", - "regionalGuidance_withCount_hidden": "Regional Guidance ({{count}} hidden)", - "controlLayers_withCount_hidden": "Control Layers ({{count}} hidden)", - "rasterLayers_withCount_hidden": "Raster Layers ({{count}} hidden)", - "globalReferenceImages_withCount_hidden": "Global Reference Images ({{count}} hidden)", - "inpaintMasks_withCount_hidden": "Inpaint Masks ({{count}} hidden)", - "regionalGuidance_withCount_visible": "Regional Guidance ({{count}})", - "controlLayers_withCount_visible": "Control Layers ({{count}})", - "rasterLayers_withCount_visible": "Raster Layers ({{count}})", - "globalReferenceImages_withCount_visible": "Global Reference Images ({{count}})", - "inpaintMasks_withCount_visible": "Inpaint Masks ({{count}})", - "layer_one": "Layer", - "layer_other": "Layers", - "layer_withCount_one": "Layer ({{count}})", - "layer_withCount_other": "Layers ({{count}})", - "convertRasterLayerTo": "Convert $t(controlLayers.rasterLayer) To", - "convertControlLayerTo": "Convert $t(controlLayers.controlLayer) To", - "convertInpaintMaskTo": "Convert $t(controlLayers.inpaintMask) To", - "convertRegionalGuidanceTo": "Convert $t(controlLayers.regionalGuidance) To", - "copyRasterLayerTo": "Copy $t(controlLayers.rasterLayer) To", - "copyControlLayerTo": "Copy $t(controlLayers.controlLayer) To", - "copyInpaintMaskTo": "Copy $t(controlLayers.inpaintMask) To", - "copyRegionalGuidanceTo": "Copy $t(controlLayers.regionalGuidance) To", - "newRasterLayer": "New $t(controlLayers.rasterLayer)", - "newControlLayer": "New $t(controlLayers.controlLayer)", - "newInpaintMask": "New $t(controlLayers.inpaintMask)", - "newRegionalGuidance": "New $t(controlLayers.regionalGuidance)", - "pasteTo": "Paste To", - "pasteToAssets": "Assets", - "pasteToAssetsDesc": "Paste to Assets", - "pasteToBbox": "Bbox", - "pasteToBboxDesc": "New Layer (in Bbox)", - "pasteToCanvas": "Canvas", - "pasteToCanvasDesc": "New Layer (in Canvas)", - "pastedTo": "Pasted to {{destination}}", - "transparency": "Transparency", - "enableTransparencyEffect": "Enable Transparency Effect", - "disableTransparencyEffect": "Disable Transparency Effect", - "hidingType": "Hiding {{type}}", - "showingType": "Showing {{type}}", - "showNonRasterLayers": "Show Non-Raster Layers (Shift+H)", - "hideNonRasterLayers": "Hide Non-Raster Layers (Shift+H)", - "dynamicGrid": "Dynamic Grid", - "logDebugInfo": "Log Debug Info", - "locked": "Locked", - "unlocked": "Unlocked", - "deleteSelected": "Delete Selected", - "stagingOnCanvas": "Staging images on", - "replaceLayer": "Replace Layer", - "pullBboxIntoLayer": "Pull Bbox into Layer", - "pullBboxIntoReferenceImage": "Pull Bbox into Reference Image", - "showProgressOnCanvas": "Show Progress on Canvas", - "useImage": "Use Image", - "prompt": "Prompt", - "negativePrompt": "Negative Prompt", - "beginEndStepPercentShort": "Begin/End %", - "weight": "Weight", - "newGallerySession": "New Gallery Session", - "newGallerySessionDesc": "This will clear the canvas and all settings except for your model selection. Generations will be sent to the gallery.", - "newCanvasSession": "New Canvas Session", - "newCanvasSessionDesc": "This will clear the canvas and all settings except for your model selection. Generations will be staged on the canvas.", - "resetCanvasLayers": "Reset Canvas Layers", - "resetGenerationSettings": "Reset Generation Settings", - "replaceCurrent": "Replace Current", - "controlLayerEmptyState": "Upload an image, drag an image from the gallery onto this layer, pull the bounding box into this layer, or draw on the canvas to get started.", - "referenceImageEmptyStateWithCanvasOptions": "Upload an image, drag an image from the gallery onto this Reference Image or pull the bounding box into this Reference Image to get started.", - "referenceImageEmptyState": "Upload an image or drag an image from the gallery onto this Reference Image to get started.", - "uploadOrDragAnImage": "Drag an image from the gallery or upload an image.", - "imageNoise": "Image Noise", - "denoiseLimit": "Denoise Limit", - "warnings": { - "problemsFound": "Problems found", - "unsupportedModel": "layer not supported for selected base model", - "controlAdapterNoModelSelected": "no Control Layer model selected", - "controlAdapterIncompatibleBaseModel": "incompatible Control Layer base model", - "controlAdapterNoControl": "no control selected/drawn", - "ipAdapterNoModelSelected": "no Reference Image model selected", - "ipAdapterIncompatibleBaseModel": "incompatible Reference Image base model", - "ipAdapterNoImageSelected": "no Reference Image image selected", - "rgNoPromptsOrIPAdapters": "no text prompts or Reference Images", - "rgNegativePromptNotSupported": "Negative Prompt not supported for selected base model", - "rgReferenceImagesNotSupported": "regional Reference Images not supported for selected base model", - "rgAutoNegativeNotSupported": "Auto-Negative not supported for selected base model", - "rgNoRegion": "no region drawn", - "fluxFillIncompatibleWithControlLoRA": "Control LoRA is not compatible with FLUX Fill", - "bboxHidden": "Bounding box is hidden (shift+o to toggle)" - }, - "errors": { - "unableToFindImage": "Unable to find image", - "unableToLoadImage": "Unable to Load Image" - }, - "controlMode": { - "controlMode": "Control Mode", - "balanced": "Balanced (recommended)", - "prompt": "Prompt", - "control": "Control", - "megaControl": "Mega Control" - }, - "ipAdapterMethod": { - "ipAdapterMethod": "Mode", - "full": "Style and Composition", - "fullDesc": "Applies visual style (colors, textures) & composition (layout, structure).", - "style": "Style (Simple)", - "styleDesc": "Applies visual style (colors, textures) without considering its layout. Previously called Style Only.", - "composition": "Composition Only", - "compositionDesc": "Replicates layout & structure while ignoring the reference's style.", - "styleStrong": "Style (Strong)", - "styleStrongDesc": "Applies a strong visual style, with a slightly reduced composition influence.", - "stylePrecise": "Style (Precise)", - "stylePreciseDesc": "Applies a precise visual style, eliminating subject influence." - }, - "fluxReduxImageInfluence": { - "imageInfluence": "Image Influence", - "lowest": "Lowest", - "low": "Low", - "medium": "Medium", - "high": "High", - "highest": "Highest" - }, - "fill": { - "fillColor": "Fill Color", - "bgFillColor": "Background Color", - "fgFillColor": "Foreground Color", - "fillStyle": "Fill Style", - "solid": "Solid", - "grid": "Grid", - "crosshatch": "Crosshatch", - "vertical": "Vertical", - "horizontal": "Horizontal", - "diagonal": "Diagonal" - }, - "tool": { - "brush": "Brush", - "eraser": "Eraser", - "rectangle": "Rectangle", - "bbox": "Bbox", - "move": "Move", - "view": "View", - "colorPicker": "Color Picker" - }, - "filter": { - "filter": "Filter", - "filters": "Filters", - "filterType": "Filter Type", - "autoProcess": "Auto Process", - "reset": "Reset", - "process": "Process", - "apply": "Apply", - "cancel": "Cancel", - "advanced": "Advanced", - "processingLayerWith": "Processing layer with the {{type}} filter.", - "forMoreControl": "For more control, click Advanced below.", - "spandrel_filter": { - "label": "Image-to-Image Model", - "description": "Run an image-to-image model on the selected layer.", - "model": "Model", - "autoScale": "Auto Scale", - "autoScaleDesc": "The selected model will be run until the target scale is reached.", - "scale": "Target Scale" - }, - "canny_edge_detection": { - "label": "Canny Edge Detection", - "description": "Generates an edge map from the selected layer using the Canny edge detection algorithm.", - "low_threshold": "Low Threshold", - "high_threshold": "High Threshold" - }, - "color_map": { - "label": "Color Map", - "description": "Create a color map from the selected layer.", - "tile_size": "Tile Size" - }, - "content_shuffle": { - "label": "Content Shuffle", - "description": "Shuffles the content of the selected layer, similar to a 'liquify' effect.", - "scale_factor": "Scale Factor" - }, - "depth_anything_depth_estimation": { - "label": "Depth Anything", - "description": "Generates a depth map from the selected layer using a Depth Anything model.", - "model_size": "Model Size", - "model_size_small": "Small", - "model_size_small_v2": "Small v2", - "model_size_base": "Base", - "model_size_large": "Large" - }, - "dw_openpose_detection": { - "label": "DW Openpose Detection", - "description": "Detects human poses in the selected layer using the DW Openpose model.", - "draw_hands": "Draw Hands", - "draw_face": "Draw Face", - "draw_body": "Draw Body" - }, - "hed_edge_detection": { - "label": "HED Edge Detection", - "description": "Generates an edge map from the selected layer using the HED edge detection model.", - "scribble": "Scribble" - }, - "lineart_anime_edge_detection": { - "label": "Lineart Anime Edge Detection", - "description": "Generates an edge map from the selected layer using the Lineart Anime edge detection model." - }, - "lineart_edge_detection": { - "label": "Lineart Edge Detection", - "description": "Generates an edge map from the selected layer using the Lineart edge detection model.", - "coarse": "Coarse" - }, - "mediapipe_face_detection": { - "label": "MediaPipe Face Detection", - "description": "Detects faces in the selected layer using the MediaPipe face detection model.", - "max_faces": "Max Faces", - "min_confidence": "Min Confidence" - }, - "mlsd_detection": { - "label": "Line Segment Detection", - "description": "Generates a line segment map from the selected layer using the MLSD line segment detection model.", - "score_threshold": "Score Threshold", - "distance_threshold": "Distance Threshold" - }, - "normal_map": { - "label": "Normal Map", - "description": "Generates a normal map from the selected layer." - }, - "pidi_edge_detection": { - "label": "PiDiNet Edge Detection", - "description": "Generates an edge map from the selected layer using the PiDiNet edge detection model.", - "scribble": "Scribble", - "quantize_edges": "Quantize Edges" - }, - "img_blur": { - "label": "Blur Image", - "description": "Blurs the selected layer.", - "blur_type": "Blur Type", - "blur_radius": "Radius", - "gaussian_type": "Gaussian", - "box_type": "Box" - }, - "img_noise": { - "label": "Noise Image", - "description": "Adds noise to the selected layer.", - "noise_type": "Noise Type", - "noise_amount": "Amount", - "gaussian_type": "Gaussian", - "salt_and_pepper_type": "Salt and Pepper", - "noise_color": "Colored Noise", - "size": "Noise Size" - }, - "adjust_image": { - "label": "Adjust Image", - "description": "Adjusts the selected channel of an image.", - "channel": "Channel", - "value_setting": "Value", - "scale_values": "Scale Values", - "red": "Red (RGBA)", - "green": "Green (RGBA)", - "blue": "Blue (RGBA)", - "alpha": "Alpha (RGBA)", - "cyan": "Cyan (CMYK)", - "magenta": "Magenta (CMYK)", - "yellow": "Yellow (CMYK)", - "black": "Black (CMYK)", - "hue": "Hue (HSV)", - "saturation": "Saturation (HSV)", - "value": "Value (HSV)", - "luminosity": "Luminosity (LAB)", - "a": "A (LAB)", - "b": "B (LAB)", - "y": "Y (YCbCr)", - "cb": "Cb (YCbCr)", - "cr": "Cr (YCbCr)" - }, - "pbr_maps": { - "label": "Create PBR Maps" - } - }, - "transform": { - "transform": "Transform", - "fitToBbox": "Fit to Bbox", - "fitMode": "Fit Mode", - "fitModeContain": "Contain", - "fitModeCover": "Cover", - "fitModeFill": "Fill", - "smoothing": "Smoothing", - "smoothingDesc": "Apply a high-quality backend resample when committing transforms.", - "smoothingMode": "Resample Mode", - "smoothingModeBilinear": "Bilinear", - "smoothingModeBicubic": "Bicubic", - "smoothingModeHamming": "Hamming", - "smoothingModeLanczos": "Lanczos", - "reset": "Reset", - "apply": "Apply", - "cancel": "Cancel" - }, - "selectObject": { - "selectObject": "Select Object", - "pointType": "Point Type", - "invertSelection": "Invert Selection", - "include": "Include", - "exclude": "Exclude", - "neutral": "Neutral", - "apply": "Apply", - "reset": "Reset", - "saveAs": "Save As", - "cancel": "Cancel", - "process": "Process", - "desc": "Select a single target object. After selection is complete, click Apply to discard everything outside the selected area, or save the selection as a new layer.", - "visualModeDesc": "Visual mode uses box and point inputs to select an object.", - "visualMode1": "Click and drag to draw a box around the object you want to select. You may get better results by drawing the box a bit larger or smaller than the object.", - "visualMode2": "Click to add a green include point, or shift-click to add a red exclude point to tell the model what to include or exclude.", - "visualMode3": "Points can be used to refine a box selection or used independently.", - "promptModeDesc": "Prompt mode uses text input to select an object.", - "promptMode1": "Type a brief description of the object you want to select.", - "promptMode2": "Use simple language, avoiding complex descriptions or multiple objects.", - "clickToAdd": "Click on the layer to add a point", - "dragToMove": "Drag a point to move it", - "clickToRemove": "Click on a point to remove it", - "model": "Model", - "segmentAnything1": "Segment Anything 1", - "segmentAnything2": "Segment Anything 2", - "prompt": "Selection Prompt" - }, - "settings": { - "snapToGrid": { - "label": "Snap to Grid", - "on": "On", - "off": "Off" - }, - "preserveMask": { - "label": "Preserve Masked Region", - "alert": "Preserving Masked Region" - }, - "saveAllImagesToGallery": { - "label": "Send New Generations to Gallery", - "alert": "Sending new generations to Gallery, bypassing Canvas" - }, - "isolatedStagingPreview": "Isolated Staging Preview", - "isolatedPreview": "Isolated Preview", - "isolatedLayerPreview": "Isolated Layer Preview", - "isolatedLayerPreviewDesc": "Whether to show only this layer when performing operations like filtering or transforming.", - "invertBrushSizeScrollDirection": "Invert Scroll for Brush Size", - "pressureSensitivity": "Pressure Sensitivity" + "canvasContextMenu": { + "canvasGroup": "Canvas", + "saveToGalleryGroup": "Save To Gallery", + "saveCanvasToGallery": "Save Canvas To Gallery", + "saveBboxToGallery": "Save Bbox To Gallery", + "bboxGroup": "Create From Bbox", + "newGlobalReferenceImage": "New Global Reference Image", + "newRegionalReferenceImage": "New Regional Reference Image", + "newControlLayer": "New Control Layer", + "newResizedControlLayer": "New Resized Control Layer", + "newRasterLayer": "New Raster Layer", + "newInpaintMask": "New Inpaint Mask", + "newRegionalGuidance": "New Regional Guidance", + "cropCanvasToBbox": "Crop Canvas to Bbox", + "copyToClipboard": "Copy to Clipboard", + "copyCanvasToClipboard": "Copy Canvas to Clipboard", + "copyBboxToClipboard": "Copy Bbox to Clipboard" + }, + "stagingArea": { + "accept": "Accept", + "discardAll": "Discard All", + "discard": "Discard", + "previous": "Previous", + "next": "Next", + "saveToGallery": "Save To Gallery", + "showResultsOn": "Showing Results", + "showResultsOff": "Hiding Results" + }, + "autoSwitch": { + "off": "Off", + "switchOnStart": "On Start", + "switchOnFinish": "On Finish" + } + }, + "upscaling": { + "upscale": "Upscale", + "creativity": "Creativity", + "exceedsMaxSize": "Upscale settings exceed max size limit", + "exceedsMaxSizeDetails": "Max upscale limit is {{maxUpscaleDimension}}x{{maxUpscaleDimension}} pixels. Please try a smaller image or decrease your scale selection.", + "structure": "Structure", + "upscaleModel": "Upscale Model", + "postProcessingModel": "Post-Processing Model", + "scale": "Scale", + "tileControl": "Tile Control", + "tileSize": "Tile Size", + "tileOverlap": "Tile Overlap", + "postProcessingMissingModelWarning": "Visit the Model Manager to install a post-processing (image to image) model.", + "missingModelsWarning": "Visit the Model Manager to install the required models:", + "mainModelDesc": "Main model (SD1.5 or SDXL architecture)", + "tileControlNetModelDesc": "Tile ControlNet model for the chosen main model architecture", + "upscaleModelDesc": "Upscale (image to image) model", + "missingUpscaleInitialImage": "Missing initial image for upscaling", + "missingUpscaleModel": "Missing upscale model", + "missingTileControlNetModel": "No valid tile ControlNet models installed", + "incompatibleBaseModel": "Unsupported main model architecture for upscaling", + "incompatibleBaseModelDesc": "Upscaling is supported for SD1.5 and SDXL architecture models only. Change the main model to enable upscaling." + }, + "stylePresets": { + "active": "Active", + "choosePromptTemplate": "Choose Prompt Template", + "clearTemplateSelection": "Clear Template Selection", + "copyTemplate": "Copy Template", + "createPromptTemplate": "Create Prompt Template", + "defaultTemplates": "Default Templates", + "deleteImage": "Delete Image", + "deleteTemplate": "Delete Template", + "deleteTemplate2": "Are you sure you want to delete this template? This cannot be undone.", + "exportPromptTemplates": "Export My Prompt Templates (CSV)", + "editTemplate": "Edit Template", + "exportDownloaded": "Export Downloaded", + "exportFailed": "Unable to generate and download CSV", + "flatten": "Flatten selected template into current prompt", + "importTemplates": "Import Prompt Templates (CSV/JSON)", + "acceptedColumnsKeys": "Accepted columns/keys:", + "nameColumn": "'name'", + "positivePromptColumn": "'prompt' or 'positive_prompt'", + "negativePromptColumn": "'negative_prompt'", + "insertPlaceholder": "Insert placeholder", + "myTemplates": "My Templates", + "name": "Name", + "negativePrompt": "Negative Prompt", + "noTemplates": "No templates", + "noMatchingTemplates": "No matching templates", + "promptTemplatesDesc1": "Prompt templates add text to the prompts you write in the prompt box.", + "promptTemplatesDesc2": "Use the placeholder string
{{placeholder}}
to specify where your prompt should be included in the template.", + "promptTemplatesDesc3": "If you omit the placeholder, the template will be appended to the end of your prompt.", + "positivePrompt": "Positive Prompt", + "preview": "Preview", + "private": "Private", + "promptTemplateCleared": "Prompt Template Cleared", + "searchByName": "Search by name", + "shared": "Shared", + "sharedTemplates": "Shared Templates", + "templateDeleted": "Prompt template deleted", + "toggleViewMode": "Toggle View Mode", + "type": "Type", + "unableToDeleteTemplate": "Unable to delete prompt template", + "updatePromptTemplate": "Update Prompt Template", + "uploadImage": "Upload Image", + "useForTemplate": "Use For Prompt Template", + "viewList": "View Template List", + "viewModeTooltip": "This is how your prompt will look with your currently selected template. To edit your prompt, click anywhere in the text box.", + "togglePromptPreviews": "Toggle Prompt Previews", + "selectPreset": "Select Style Preset", + "noMatchingPresets": "No matching presets" + }, + "ui": { + "tabs": { + "generate": "Generate", + "canvas": "Canvas", + "workflows": "Workflows", + "workflowsTab": "$t(ui.tabs.workflows) $t(common.tab)", + "models": "Models", + "modelsTab": "$t(ui.tabs.models) $t(common.tab)", + "queue": "Queue", + "upscaling": "Upscaling", + "upscalingTab": "$t(ui.tabs.upscaling) $t(common.tab)", + "gallery": "Gallery" + }, + "panels": { + "launchpad": "Launchpad", + "workflowEditor": "Workflow Editor", + "imageViewer": "Viewer", + "canvas": "Canvas" + }, + "launchpad": { + "workflowsTitle": "Go deep with Workflows.", + "upscalingTitle": "Upscale and add detail.", + "canvasTitle": "Edit and refine on Canvas.", + "generateTitle": "Generate images from text prompts.", + "modelGuideText": "Want to learn what prompts work best for each model?", + "modelGuideLink": "Check out our Model Guide.", + "createNewWorkflowFromScratch": "Create a new Workflow from scratch", + "browseAndLoadWorkflows": "Browse and load existing workflows", + "addStyleRef": { + "title": "Add a Style Reference", + "description": "Add an image to transfer its look." + }, + "editImage": { + "title": "Edit Image", + "description": "Add an image to refine." + }, + "generateFromText": { + "title": "Generate from Text", + "description": "Enter a prompt and Invoke." + }, + "useALayoutImage": { + "title": "Use a Layout Image", + "description": "Add an image to control composition." + }, + "generate": { + "canvasCalloutTitle": "Looking to get more control, edit, and iterate on your images?", + "canvasCalloutLink": "Navigate to Canvas for more capabilities." + }, + "workflows": { + "description": "Workflows are reusable templates that automate image generation tasks, allowing you to quickly perform complex operations and get consistent results.", + "learnMoreLink": "Learn more about creating workflows", + "browseTemplates": { + "title": "Browse Workflow Templates", + "description": "Choose from pre-built workflows for common tasks" + }, + "createNew": { + "title": "Create a new Workflow", + "description": "Start a new workflow from scratch" + }, + "loadFromFile": { + "title": "Load workflow from file", + "description": "Upload a workflow to start with an existing setup" + } + }, + "upscaling": { + "uploadImage": { + "title": "Upload Image to Upscale", + "description": "Click or drag an image to upscale (JPG, PNG, WebP up to 100MB)" }, - "HUD": { - "bbox": "Bbox", - "scaledBbox": "Scaled Bbox", - "entityStatus": { - "isFiltering": "{{title}} is filtering", - "isTransforming": "{{title}} is transforming", - "isLocked": "{{title}} is locked", - "isHidden": "{{title}} is hidden", - "isDisabled": "{{title}} is disabled", - "isEmpty": "{{title}} is empty" - } + "replaceImage": { + "title": "Replace Current Image", + "description": "Click or drag a new image to replace the current one" }, - "canvasContextMenu": { - "canvasGroup": "Canvas", - "saveToGalleryGroup": "Save To Gallery", - "saveCanvasToGallery": "Save Canvas To Gallery", - "saveBboxToGallery": "Save Bbox To Gallery", - "bboxGroup": "Create From Bbox", - "newGlobalReferenceImage": "New Global Reference Image", - "newRegionalReferenceImage": "New Regional Reference Image", - "newControlLayer": "New Control Layer", - "newResizedControlLayer": "New Resized Control Layer", - "newRasterLayer": "New Raster Layer", - "newInpaintMask": "New Inpaint Mask", - "newRegionalGuidance": "New Regional Guidance", - "cropCanvasToBbox": "Crop Canvas to Bbox", - "copyToClipboard": "Copy to Clipboard", - "copyCanvasToClipboard": "Copy Canvas to Clipboard", - "copyBboxToClipboard": "Copy Bbox to Clipboard" + "imageReady": { + "title": "Image Ready", + "description": "Press Invoke to begin upscaling" }, - "stagingArea": { - "accept": "Accept", - "discardAll": "Discard All", - "discard": "Discard", - "previous": "Previous", - "next": "Next", - "saveToGallery": "Save To Gallery", - "showResultsOn": "Showing Results", - "showResultsOff": "Hiding Results" + "readyToUpscale": { + "title": "Ready to upscale!", + "description": "Configure your settings below, then click the Invoke button to begin upscaling your image." }, - "autoSwitch": { - "off": "Off", - "switchOnStart": "On Start", - "switchOnFinish": "On Finish" - } - }, - "upscaling": { - "upscale": "Upscale", - "creativity": "Creativity", - "exceedsMaxSize": "Upscale settings exceed max size limit", - "exceedsMaxSizeDetails": "Max upscale limit is {{maxUpscaleDimension}}x{{maxUpscaleDimension}} pixels. Please try a smaller image or decrease your scale selection.", - "structure": "Structure", "upscaleModel": "Upscale Model", - "postProcessingModel": "Post-Processing Model", + "model": "Model", "scale": "Scale", - "tileControl": "Tile Control", - "tileSize": "Tile Size", - "tileOverlap": "Tile Overlap", - "postProcessingMissingModelWarning": "Visit the Model Manager to install a post-processing (image to image) model.", - "missingModelsWarning": "Visit the Model Manager to install the required models:", - "mainModelDesc": "Main model (SD1.5 or SDXL architecture)", - "tileControlNetModelDesc": "Tile ControlNet model for the chosen main model architecture", - "upscaleModelDesc": "Upscale (image to image) model", - "missingUpscaleInitialImage": "Missing initial image for upscaling", - "missingUpscaleModel": "Missing upscale model", - "missingTileControlNetModel": "No valid tile ControlNet models installed", - "incompatibleBaseModel": "Unsupported main model architecture for upscaling", - "incompatibleBaseModelDesc": "Upscaling is supported for SD1.5 and SDXL architecture models only. Change the main model to enable upscaling." - }, - "stylePresets": { - "active": "Active", - "choosePromptTemplate": "Choose Prompt Template", - "clearTemplateSelection": "Clear Template Selection", - "copyTemplate": "Copy Template", - "createPromptTemplate": "Create Prompt Template", - "defaultTemplates": "Default Templates", - "deleteImage": "Delete Image", - "deleteTemplate": "Delete Template", - "deleteTemplate2": "Are you sure you want to delete this template? This cannot be undone.", - "exportPromptTemplates": "Export My Prompt Templates (CSV)", - "editTemplate": "Edit Template", - "exportDownloaded": "Export Downloaded", - "exportFailed": "Unable to generate and download CSV", - "flatten": "Flatten selected template into current prompt", - "importTemplates": "Import Prompt Templates (CSV/JSON)", - "acceptedColumnsKeys": "Accepted columns/keys:", - "nameColumn": "'name'", - "positivePromptColumn": "'prompt' or 'positive_prompt'", - "negativePromptColumn": "'negative_prompt'", - "insertPlaceholder": "Insert placeholder", - "myTemplates": "My Templates", - "name": "Name", - "negativePrompt": "Negative Prompt", - "noTemplates": "No templates", - "noMatchingTemplates": "No matching templates", - "promptTemplatesDesc1": "Prompt templates add text to the prompts you write in the prompt box.", - "promptTemplatesDesc2": "Use the placeholder string
{{placeholder}}
to specify where your prompt should be included in the template.", - "promptTemplatesDesc3": "If you omit the placeholder, the template will be appended to the end of your prompt.", - "positivePrompt": "Positive Prompt", - "preview": "Preview", - "private": "Private", - "promptTemplateCleared": "Prompt Template Cleared", - "searchByName": "Search by name", - "shared": "Shared", - "sharedTemplates": "Shared Templates", - "templateDeleted": "Prompt template deleted", - "toggleViewMode": "Toggle View Mode", - "type": "Type", - "unableToDeleteTemplate": "Unable to delete prompt template", - "updatePromptTemplate": "Update Prompt Template", - "uploadImage": "Upload Image", - "useForTemplate": "Use For Prompt Template", - "viewList": "View Template List", - "viewModeTooltip": "This is how your prompt will look with your currently selected template. To edit your prompt, click anywhere in the text box.", - "togglePromptPreviews": "Toggle Prompt Previews", - "selectPreset": "Select Style Preset", - "noMatchingPresets": "No matching presets" - }, - - "ui": { - "tabs": { - "generate": "Generate", - "canvas": "Canvas", - "workflows": "Workflows", - "workflowsTab": "$t(ui.tabs.workflows) $t(common.tab)", - "models": "Models", - "modelsTab": "$t(ui.tabs.models) $t(common.tab)", - "queue": "Queue", - "upscaling": "Upscaling", - "upscalingTab": "$t(ui.tabs.upscaling) $t(common.tab)", - "gallery": "Gallery" - }, - "panels": { - "launchpad": "Launchpad", - "workflowEditor": "Workflow Editor", - "imageViewer": "Viewer", - "canvas": "Canvas" - }, - "launchpad": { - "workflowsTitle": "Go deep with Workflows.", - "upscalingTitle": "Upscale and add detail.", - "canvasTitle": "Edit and refine on Canvas.", - "generateTitle": "Generate images from text prompts.", - "modelGuideText": "Want to learn what prompts work best for each model?", - "modelGuideLink": "Check out our Model Guide.", - "createNewWorkflowFromScratch": "Create a new Workflow from scratch", - "browseAndLoadWorkflows": "Browse and load existing workflows", - "addStyleRef": { - "title": "Add a Style Reference", - "description": "Add an image to transfer its look." - }, - "editImage": { - "title": "Edit Image", - "description": "Add an image to refine." - }, - "generateFromText": { - "title": "Generate from Text", - "description": "Enter a prompt and Invoke." - }, - "useALayoutImage": { - "title": "Use a Layout Image", - "description": "Add an image to control composition." - }, - "generate": { - "canvasCalloutTitle": "Looking to get more control, edit, and iterate on your images?", - "canvasCalloutLink": "Navigate to Canvas for more capabilities." - }, - "workflows": { - "description": "Workflows are reusable templates that automate image generation tasks, allowing you to quickly perform complex operations and get consistent results.", - "learnMoreLink": "Learn more about creating workflows", - "browseTemplates": { - "title": "Browse Workflow Templates", - "description": "Choose from pre-built workflows for common tasks" - }, - "createNew": { - "title": "Create a new Workflow", - "description": "Start a new workflow from scratch" - }, - "loadFromFile": { - "title": "Load workflow from file", - "description": "Upload a workflow to start with an existing setup" - } - }, - "upscaling": { - "uploadImage": { - "title": "Upload Image to Upscale", - "description": "Click or drag an image to upscale (JPG, PNG, WebP up to 100MB)" - }, - "replaceImage": { - "title": "Replace Current Image", - "description": "Click or drag a new image to replace the current one" - }, - "imageReady": { - "title": "Image Ready", - "description": "Press Invoke to begin upscaling" - }, - "readyToUpscale": { - "title": "Ready to upscale!", - "description": "Configure your settings below, then click the Invoke button to begin upscaling your image." - }, - "upscaleModel": "Upscale Model", - "model": "Model", - "scale": "Scale", - "creativityAndStructure": { - "title": "Creativity & Structure Defaults", - "conservative": "Conservative", - "balanced": "Balanced", - "creative": "Creative", - "artistic": "Artistic" - }, - "helpText": { - "promptAdvice": "When upscaling, use a prompt that describes the medium and style. Avoid describing specific content details in the image.", - "styleAdvice": "Upscaling works best with the general style of your image." - } - } - } - }, - "system": { - "enableLogging": "Enable Logging", - "logLevel": { - "logLevel": "Log Level", - "trace": "Trace", - "debug": "Debug", - "info": "Info", - "warn": "Warn", - "error": "Error", - "fatal": "Fatal" - }, - "logNamespaces": { - "logNamespaces": "Log Namespaces", - "dnd": "Drag and Drop", - "gallery": "Gallery", - "models": "Models", - "config": "Config", - "canvas": "Canvas", - "generation": "Generation", - "workflows": "Workflows", - "system": "System", - "events": "Events", - "queue": "Queue", - "metadata": "Metadata" + "creativityAndStructure": { + "title": "Creativity & Structure Defaults", + "conservative": "Conservative", + "balanced": "Balanced", + "creative": "Creative", + "artistic": "Artistic" + }, + "helpText": { + "promptAdvice": "When upscaling, use a prompt that describes the medium and style. Avoid describing specific content details in the image.", + "styleAdvice": "Upscaling works best with the general style of your image." } + } + } + }, + "system": { + "enableLogging": "Enable Logging", + "logLevel": { + "logLevel": "Log Level", + "trace": "Trace", + "debug": "Debug", + "info": "Info", + "warn": "Warn", + "error": "Error", + "fatal": "Fatal" }, - "newUserExperience": { - "toGetStartedLocal": "To get started, make sure to download or import models needed to run Invoke. Then, enter a prompt in the box and click Invoke to generate your first image. Select a prompt template to improve results. You can choose to save your images directly to the Gallery or edit them to the Canvas.", - "toGetStarted": "To get started, enter a prompt in the box and click Invoke to generate your first image. Select a prompt template to improve results. You can choose to save your images directly to the Gallery or edit them to the Canvas.", - "toGetStartedWorkflow": "To get started, fill in the fields on the left and press Invoke to generate your image. Want to explore more workflows? Click the folder icon next to the workflow title to see a list of other templates you can try.", - "gettingStartedSeries": "Want more guidance? Check out our Getting Started Series for tips on unlocking the full potential of the Invoke Studio.", - "lowVRAMMode": "For best performance, follow our Low VRAM guide.", - "noModelsInstalled": "It looks like you don't have any models installed! You can download a starter model bundle or import models." - }, - "whatsNew": { - "whatsNewInInvoke": "What's New in Invoke", - "items": [ - "Support for Z-Image-Turbo: InvokeAI now supports the fast and accurate Z-Image-Turbo model. See 'Starter Models' to get started.", - "Hotkeys: Add and edit keyboard shortcuts for any of Invoke's major functions.", - "Model Manager: The Model Manager user interface now supports bulk tagging and deletion." - ], - "takeUserSurvey": "📣 Let us know how you like InvokeAI. Take our User Experience Survey!", - "readReleaseNotes": "Read Release Notes", - "watchRecentReleaseVideos": "Watch Recent Release Videos", - "watchUiUpdatesOverview": "Watch UI Updates Overview" - }, - "supportVideos": { - "supportVideos": "Support Videos", - "gettingStarted": "Getting Started", - "watch": "Watch", - "studioSessionsDesc": "Join our to participate in the live sessions and ask questions. Sessions are uploaded to the playlist the following week.", - "videos": { - "gettingStarted": { - "title": "Getting Started with Invoke", - "description": "Complete video series covering everything you need to know to get started with Invoke, from creating your first image to advanced techniques." - }, - "studioSessions": { - "title": "Studio Sessions", - "description": "Deep dive sessions exploring advanced Invoke features, creative workflows, and community discussions." - } - } + "logNamespaces": { + "logNamespaces": "Log Namespaces", + "dnd": "Drag and Drop", + "gallery": "Gallery", + "models": "Models", + "config": "Config", + "canvas": "Canvas", + "generation": "Generation", + "workflows": "Workflows", + "system": "System", + "events": "Events", + "queue": "Queue", + "metadata": "Metadata" + } + }, + "newUserExperience": { + "toGetStartedLocal": "To get started, make sure to download or import models needed to run Invoke. Then, enter a prompt in the box and click Invoke to generate your first image. Select a prompt template to improve results. You can choose to save your images directly to the Gallery or edit them to the Canvas.", + "toGetStarted": "To get started, enter a prompt in the box and click Invoke to generate your first image. Select a prompt template to improve results. You can choose to save your images directly to the Gallery or edit them to the Canvas.", + "toGetStartedWorkflow": "To get started, fill in the fields on the left and press Invoke to generate your image. Want to explore more workflows? Click the folder icon next to the workflow title to see a list of other templates you can try.", + "gettingStartedSeries": "Want more guidance? Check out our Getting Started Series for tips on unlocking the full potential of the Invoke Studio.", + "lowVRAMMode": "For best performance, follow our Low VRAM guide.", + "noModelsInstalled": "It looks like you don't have any models installed! You can download a starter model bundle or import models." + }, + "whatsNew": { + "whatsNewInInvoke": "What's New in Invoke", + "items": [ + "Support for Z-Image-Turbo: InvokeAI now supports the fast and accurate Z-Image-Turbo model. See 'Starter Models' to get started.", + "Hotkeys: Add and edit keyboard shortcuts for any of Invoke's major functions.", + "Model Manager: The Model Manager user interface now supports bulk tagging and deletion." + ], + "takeUserSurvey": "📣 Let us know how you like InvokeAI. Take our User Experience Survey!", + "readReleaseNotes": "Read Release Notes", + "watchRecentReleaseVideos": "Watch Recent Release Videos", + "watchUiUpdatesOverview": "Watch UI Updates Overview" + }, + "supportVideos": { + "supportVideos": "Support Videos", + "gettingStarted": "Getting Started", + "watch": "Watch", + "studioSessionsDesc": "Join our to participate in the live sessions and ask questions. Sessions are uploaded to the playlist the following week.", + "videos": { + "gettingStarted": { + "title": "Getting Started with Invoke", + "description": "Complete video series covering everything you need to know to get started with Invoke, from creating your first image to advanced techniques." + }, + "studioSessions": { + "title": "Studio Sessions", + "description": "Deep dive sessions exploring advanced Invoke features, creative workflows, and community discussions." + } } -} + } +} \ No newline at end of file diff --git a/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts b/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts index fc045356e0c..5c48c3c9979 100644 --- a/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts +++ b/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts @@ -73,7 +73,8 @@ export type Feature = | 'tileSize' | 'tileOverlap' | 'optimizedDenoising' - | 'fluxDevLicense'; + | 'fluxDevLicense' + | 'cpuOnly'; export type PopoverData = PopoverProps & { image?: string; diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/DefaultCpuOnly.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/DefaultCpuOnly.tsx index a84bbd18988..dfe8fc0057d 100644 --- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/DefaultCpuOnly.tsx +++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/MainModelDefaultSettings/DefaultCpuOnly.tsx @@ -1,8 +1,7 @@ -import { Flex, FormControl, FormLabel, Switch } from '@invoke-ai/ui-library'; +import { FormControl, FormLabel, Switch } from '@invoke-ai/ui-library'; import { InformationalPopover } from 'common/components/InformationalPopover/InformationalPopover'; -import { SettingToggle } from 'features/modelManagerV2/subpanels/ModelPanel/SettingToggle'; -import { memo, useCallback, useMemo } from 'react'; import type { ChangeEvent } from 'react'; +import { memo, useCallback, useMemo } from 'react'; import type { UseControllerProps } from 'react-hook-form'; import { useController } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; @@ -21,6 +20,7 @@ export const DefaultCpuOnly = memo((props: UseControllerProps { - return !(field.value as DefaultCpuOnly).isEnabled; - }, [field.value]); - return ( - - - - {t('modelManager.cpuOnly')} - - - - - - {t('modelManager.runOnCpu')} - + + + {t('modelManager.runOnCpu')} + + ); });