From 3af42c56d2edf9978f2fc92727e124806b29db31 Mon Sep 17 00:00:00 2001
From: psychedelicious <4822129+psychedelicious@users.noreply.github.com>
Date: Fri, 10 Oct 2025 14:18:29 +1100
Subject: [PATCH] feat: allow users to edit models freely
---
invokeai/app/api/routers/model_manager.py | 2 +-
.../subpanels/ModelPanel/ModelEdit.tsx | 56 ++++++++-----------
.../frontend/web/src/services/api/schema.ts | 12 ++--
3 files changed, 30 insertions(+), 40 deletions(-)
diff --git a/invokeai/app/api/routers/model_manager.py b/invokeai/app/api/routers/model_manager.py
index ba84339a0e..0c325a4ce0 100644
--- a/invokeai/app/api/routers/model_manager.py
+++ b/invokeai/app/api/routers/model_manager.py
@@ -301,7 +301,7 @@ async def update_model_record(
logger = ApiDependencies.invoker.services.logger
record_store = ApiDependencies.invoker.services.model_manager.store
try:
- config = record_store.update_model(key, changes=changes)
+ config = record_store.update_model(key, changes=changes, allow_class_change=True)
config = add_cover_image_to_model_config(config, ApiDependencies)
logger.info(f"Updated model: {key}")
except UnknownModelException as e:
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelEdit.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelEdit.tsx
index 5a5c04c278..edda021523 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelEdit.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ModelEdit.tsx
@@ -123,11 +123,9 @@ export const ModelEdit = memo(({ modelConfig }: Props) => {
- {modelConfig.type !== 'clip_vision' && (
-
- {t('modelManager.modelSettings')}
-
- )}
+
+ {t('modelManager.modelSettings')}
+
{t('modelManager.modelType')}
@@ -137,34 +135,26 @@ export const ModelEdit = memo(({ modelConfig }: Props) => {
{t('modelManager.modelFormat')}
- {modelConfig.type !== 'clip_vision' && (
-
- {t('modelManager.baseModel')}
-
-
- )}
- {modelConfig.type === 'main' && (
-
- {t('modelManager.variant')}
-
-
- )}
- {modelConfig.type === 'main' && modelConfig.format === 'checkpoint' && (
- <>
-
- {t('modelManager.pathToConfig')}
-
-
-
- {t('modelManager.predictionType')}
-
-
-
- {t('modelManager.upcastAttention')}
-
-
- >
- )}
+
+ {t('modelManager.baseModel')}
+
+
+
+ {t('modelManager.variant')}
+
+
+
+ {t('modelManager.pathToConfig')}
+
+
+
+ {t('modelManager.predictionType')}
+
+
+
+ {t('modelManager.upcastAttention')}
+
+
diff --git a/invokeai/frontend/web/src/services/api/schema.ts b/invokeai/frontend/web/src/services/api/schema.ts
index 1dec79c2a8..68f1b55448 100644
--- a/invokeai/frontend/web/src/services/api/schema.ts
+++ b/invokeai/frontend/web/src/services/api/schema.ts
@@ -7204,7 +7204,7 @@ export type components = {
/**
* Use Cache
* @description Whether or not to use the cache
- * @default false
+ * @default true
*/
use_cache?: boolean;
/**
@@ -20477,7 +20477,7 @@ export type components = {
/**
* Use Cache
* @description Whether or not to use the cache
- * @default false
+ * @default true
*/
use_cache?: boolean;
/**
@@ -20524,7 +20524,7 @@ export type components = {
/**
* Use Cache
* @description Whether or not to use the cache
- * @default false
+ * @default true
*/
use_cache?: boolean;
/**
@@ -20565,7 +20565,7 @@ export type components = {
/**
* Use Cache
* @description Whether or not to use the cache
- * @default false
+ * @default true
*/
use_cache?: boolean;
/**
@@ -21656,7 +21656,7 @@ export type components = {
/**
* Use Cache
* @description Whether or not to use the cache
- * @default false
+ * @default true
*/
use_cache?: boolean;
/**
@@ -24545,7 +24545,7 @@ export type components = {
};
/**
* Unknown_Config
- * @description Model config for unknown models, used as a fallback when we cannot identify a model.
+ * @description Model config for unknown models, used as a fallback when we cannot positively identify a model.
*/
Unknown_Config: {
/**