feat(ui): dynamically populate base model dropdown from CivitAI API, add Krea 2 constants (#1001)

This commit is contained in:
Will Miao
2026-06-30 22:41:17 +08:00
parent f9c3d8dc97
commit e8913f4481
4 changed files with 26 additions and 2 deletions

View File

@@ -196,6 +196,7 @@ class CivitaiBaseModelService:
"ernie": "ERNI", "ernie": "ERNI",
"ernie turbo": "ETRB", "ernie turbo": "ETRB",
"nucleus": "NUCL", "nucleus": "NUCL",
"krea 2": "KR2",
"svd": "SVD", "svd": "SVD",
"ltxv": "LTXV", "ltxv": "LTXV",
"ltxv2": "LTV2", "ltxv2": "LTV2",
@@ -424,6 +425,7 @@ class CivitaiBaseModelService:
"Ernie", "Ernie",
"Ernie Turbo", "Ernie Turbo",
"Nucleus", "Nucleus",
"Krea 2",
], ],
} }

View File

@@ -229,5 +229,6 @@ SUPPORTED_DOWNLOAD_SKIP_BASE_MODELS = frozenset(
"Ernie", "Ernie",
"Ernie Turbo", "Ernie Turbo",
"Nucleus", "Nucleus",
"Krea 2",
] ]
) )

View File

@@ -3,7 +3,7 @@
* Handles model metadata editing functionality - General version * Handles model metadata editing functionality - General version
*/ */
import { BASE_MODEL_CATEGORIES } from '../../utils/constants.js'; import { BASE_MODEL_CATEGORIES, getMergedBaseModels } from '../../utils/constants.js';
import { showToast } from '../../utils/uiHelpers.js'; import { showToast } from '../../utils/uiHelpers.js';
import { getModelApiClient } from '../../api/modelApiFactory.js'; import { getModelApiClient } from '../../api/modelApiFactory.js';
@@ -267,6 +267,7 @@ export function setupBaseModelEditing(filePath) {
// Add options from BASE_MODEL_CATEGORIES constants // Add options from BASE_MODEL_CATEGORIES constants
const baseModelCategories = BASE_MODEL_CATEGORIES; const baseModelCategories = BASE_MODEL_CATEGORIES;
const categorizedModels = new Set();
// Create option groups for better organization // Create option groups for better organization
Object.entries(baseModelCategories).forEach(([category, models]) => { Object.entries(baseModelCategories).forEach(([category, models]) => {
@@ -277,13 +278,30 @@ export function setupBaseModelEditing(filePath) {
const option = document.createElement('option'); const option = document.createElement('option');
option.value = model; option.value = model;
option.textContent = model; option.textContent = model;
option.selected = model === currentValue; if (model === currentValue) option.selected = true;
categorizedModels.add(model);
group.appendChild(option); group.appendChild(option);
}); });
dropdown.appendChild(group); dropdown.appendChild(group);
}); });
// Check for dynamic base models from API that aren't in any category
const mergedModels = getMergedBaseModels();
const uncategorizedModels = mergedModels.filter(model => !categorizedModels.has(model));
if (uncategorizedModels.length > 0) {
const group = document.createElement('optgroup');
group.label = 'Other (API)';
uncategorizedModels.forEach(model => {
const option = document.createElement('option');
option.value = model;
option.textContent = model;
if (model === currentValue) option.selected = true;
group.appendChild(option);
});
dropdown.appendChild(group);
}
// Replace content with dropdown // Replace content with dropdown
baseModelContent.style.display = 'none'; baseModelContent.style.display = 'none';
baseModelDisplay.insertBefore(dropdown, editBtn); baseModelDisplay.insertBefore(dropdown, editBtn);

View File

@@ -70,6 +70,7 @@ export const BASE_MODELS = {
ERNIE_TURBO: "Ernie Turbo", ERNIE_TURBO: "Ernie Turbo",
NUCLEUS: "Nucleus", NUCLEUS: "Nucleus",
PONY_V7: "Pony V7", PONY_V7: "Pony V7",
KREA_2: "Krea 2",
// Default // Default
UNKNOWN: "Other" UNKNOWN: "Other"
}; };
@@ -197,6 +198,7 @@ export const BASE_MODEL_ABBREVIATIONS = {
[BASE_MODELS.ERNIE]: 'ERNI', [BASE_MODELS.ERNIE]: 'ERNI',
[BASE_MODELS.ERNIE_TURBO]: 'ETRB', [BASE_MODELS.ERNIE_TURBO]: 'ETRB',
[BASE_MODELS.NUCLEUS]: 'NUCL', [BASE_MODELS.NUCLEUS]: 'NUCL',
[BASE_MODELS.KREA_2]: 'KR2',
// Default // Default
[BASE_MODELS.UNKNOWN]: 'OTH' [BASE_MODELS.UNKNOWN]: 'OTH'
@@ -401,6 +403,7 @@ export const BASE_MODEL_CATEGORIES = {
BASE_MODELS.PIXART_A, BASE_MODELS.PIXART_E, BASE_MODELS.HUNYUAN_1, BASE_MODELS.PIXART_A, BASE_MODELS.PIXART_E, BASE_MODELS.HUNYUAN_1,
BASE_MODELS.LUMINA, BASE_MODELS.KOLORS, BASE_MODELS.NOOBAI, BASE_MODELS.ANIMA, BASE_MODELS.LUMINA, BASE_MODELS.KOLORS, BASE_MODELS.NOOBAI, BASE_MODELS.ANIMA,
BASE_MODELS.ERNIE, BASE_MODELS.ERNIE_TURBO, BASE_MODELS.NUCLEUS, BASE_MODELS.ERNIE, BASE_MODELS.ERNIE_TURBO, BASE_MODELS.NUCLEUS,
BASE_MODELS.KREA_2,
BASE_MODELS.UNKNOWN BASE_MODELS.UNKNOWN
] ]
}; };