From 25605c5e785cebd8f31b6a4f454c09b83cdf0fcc Mon Sep 17 00:00:00 2001 From: Will Miao Date: Wed, 29 Apr 2026 20:04:40 +0800 Subject: [PATCH] feat(ui): add setting to toggle version name display on model cards (#916) --- locales/de.json | 2 ++ locales/en.json | 2 ++ locales/es.json | 2 ++ locales/fr.json | 2 ++ locales/he.json | 2 ++ locales/ja.json | 2 ++ locales/ko.json | 2 ++ locales/ru.json | 2 ++ locales/zh-CN.json | 2 ++ locales/zh-TW.json | 2 ++ py/services/settings_manager.py | 1 + static/css/components/card.css | 5 +++++ static/js/components/shared/ModelCard.js | 2 +- static/js/managers/SettingsManager.js | 10 ++++++++++ static/js/state/index.js | 1 + .../components/modals/settings_modal.html | 18 ++++++++++++++++++ 16 files changed, 56 insertions(+), 1 deletion(-) diff --git a/locales/de.json b/locales/de.json index 8948ab59..b0f2a8cb 100644 --- a/locales/de.json +++ b/locales/de.json @@ -428,6 +428,8 @@ "hover": "Bei Hover anzeigen" }, "cardInfoDisplayHelp": "Wählen Sie, wann Modellinformationen und Aktionsschaltflächen angezeigt werden sollen", + "showVersionOnCard": "Version auf Karte anzeigen", + "showVersionOnCardHelp": "Den Versionsnamen auf Modellkarten ein- oder ausblenden", "modelCardFooterAction": "Aktion der Modellkarten-Schaltfläche", "modelCardFooterActionOptions": { "exampleImages": "Beispielbilder öffnen", diff --git a/locales/en.json b/locales/en.json index c32e19b3..66fbba9e 100644 --- a/locales/en.json +++ b/locales/en.json @@ -428,6 +428,8 @@ "hover": "Reveal on Hover" }, "cardInfoDisplayHelp": "Choose when to display model information and action buttons", + "showVersionOnCard": "Show Version on Card", + "showVersionOnCardHelp": "Show or hide the version name on model cards", "modelCardFooterAction": "Model Card Button Action", "modelCardFooterActionOptions": { "exampleImages": "Open Example Images", diff --git a/locales/es.json b/locales/es.json index 2f99771c..81880edb 100644 --- a/locales/es.json +++ b/locales/es.json @@ -428,6 +428,8 @@ "hover": "Mostrar al pasar el ratón" }, "cardInfoDisplayHelp": "Elige cuándo mostrar información del modelo y botones de acción", + "showVersionOnCard": "Mostrar versión en la tarjeta", + "showVersionOnCardHelp": "Mostrar u ocultar el nombre de versión en las tarjetas de modelo", "modelCardFooterAction": "Acción del botón de tarjeta de modelo", "modelCardFooterActionOptions": { "exampleImages": "Abrir imágenes de ejemplo", diff --git a/locales/fr.json b/locales/fr.json index 01ce3f77..c6d4a574 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -428,6 +428,8 @@ "hover": "Révéler au survol" }, "cardInfoDisplayHelp": "Choisissez quand afficher les informations du modèle et les boutons d'action", + "showVersionOnCard": "Afficher la version sur la carte", + "showVersionOnCardHelp": "Afficher ou masquer le nom de version sur les cartes de modèle", "modelCardFooterAction": "Action du bouton de carte de modèle", "modelCardFooterActionOptions": { "exampleImages": "Ouvrir les images d'exemple", diff --git a/locales/he.json b/locales/he.json index a78a52f3..5d515598 100644 --- a/locales/he.json +++ b/locales/he.json @@ -428,6 +428,8 @@ "hover": "חשוף בריחוף" }, "cardInfoDisplayHelp": "בחר מתי להציג מידע על המודל וכפתורי פעולה", + "showVersionOnCard": "הצג גרסה בכרטיס", + "showVersionOnCardHelp": "הצג או הסתר את שם הגרסה בכרטיסי המודל", "modelCardFooterAction": "פעולת כפתור כרטיס מודל", "modelCardFooterActionOptions": { "exampleImages": "פתח תמונות דוגמה", diff --git a/locales/ja.json b/locales/ja.json index 6eb8c996..56db5354 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -428,6 +428,8 @@ "hover": "ホバー時に表示" }, "cardInfoDisplayHelp": "モデル情報とアクションボタンの表示タイミングを選択", + "showVersionOnCard": "カードにバージョンを表示", + "showVersionOnCardHelp": "モデルカード上のバージョン名の表示/非表示を切り替えます", "modelCardFooterAction": "モデルカードボタンのアクション", "modelCardFooterActionOptions": { "exampleImages": "例画像を開く", diff --git a/locales/ko.json b/locales/ko.json index f9eac729..bfc3b908 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -428,6 +428,8 @@ "hover": "호버 시 표시" }, "cardInfoDisplayHelp": "모델 정보 및 액션 버튼을 언제 표시할지 선택하세요", + "showVersionOnCard": "카드에 버전 표시", + "showVersionOnCardHelp": "모델 카드에 버전 이름 표시 여부를 전환합니다", "modelCardFooterAction": "모델 카드 버튼 동작", "modelCardFooterActionOptions": { "exampleImages": "예시 이미지 열기", diff --git a/locales/ru.json b/locales/ru.json index 8593fdb8..54698b29 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -428,6 +428,8 @@ "hover": "Показать при наведении" }, "cardInfoDisplayHelp": "Выберите когда отображать информацию о модели и кнопки действий", + "showVersionOnCard": "Показывать версию на карточке", + "showVersionOnCardHelp": "Показать или скрыть название версии на карточках моделей", "modelCardFooterAction": "Действие кнопки карточки модели", "modelCardFooterActionOptions": { "exampleImages": "Открыть примеры изображений", diff --git a/locales/zh-CN.json b/locales/zh-CN.json index f400c530..64d0aa88 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -428,6 +428,8 @@ "hover": "悬停时显示" }, "cardInfoDisplayHelp": "选择何时显示模型信息和操作按钮", + "showVersionOnCard": "在卡片上显示版本", + "showVersionOnCardHelp": "在模型卡片上显示或隐藏版本名称", "modelCardFooterAction": "模型卡片按钮操作", "modelCardFooterActionOptions": { "exampleImages": "打开示例图片", diff --git a/locales/zh-TW.json b/locales/zh-TW.json index 645c5c5d..32e7090f 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -428,6 +428,8 @@ "hover": "滑鼠懸停顯示" }, "cardInfoDisplayHelp": "選擇何時顯示模型資訊與操作按鈕", + "showVersionOnCard": "在卡片上顯示版本", + "showVersionOnCardHelp": "在模型卡片上顯示或隱藏版本名稱", "modelCardFooterAction": "模型卡片按鈕操作", "modelCardFooterActionOptions": { "exampleImages": "開啟範例圖片", diff --git a/py/services/settings_manager.py b/py/services/settings_manager.py index 16cc2860..e4fb102d 100644 --- a/py/services/settings_manager.py +++ b/py/services/settings_manager.py @@ -97,6 +97,7 @@ DEFAULT_SETTINGS: Dict[str, Any] = { "priority_tags": DEFAULT_PRIORITY_TAG_CONFIG.copy(), "model_name_display": "model_name", "model_card_footer_action": "replace_preview", + "show_version_on_card": True, "update_flag_strategy": "same_base", "auto_organize_exclusions": [], "metadata_refresh_skip_paths": [], diff --git a/static/css/components/card.css b/static/css/components/card.css index 26d03e5c..cbfc54db 100644 --- a/static/css/components/card.css +++ b/static/css/components/card.css @@ -507,6 +507,11 @@ font-size: 0.75em; } +/* Hide civitai version name when setting is disabled */ +body.hide-card-version .civitai-version { + display: none; +} + /* Prevent text selection on cards and interactive elements */ .model-card, .model-card *, diff --git a/static/js/components/shared/ModelCard.js b/static/js/components/shared/ModelCard.js index 1c7fe2af..4af2fb93 100644 --- a/static/js/components/shared/ModelCard.js +++ b/static/js/components/shared/ModelCard.js @@ -645,7 +645,7 @@ export function createModelCard(model, modelType) {
${getDisplayName(model)}
- ${model.civitai?.name ? `${model.civitai.name}` : ''} + ${model.civitai?.name ? `${model.civitai.name}` : ''} ${hasUsageCount ? `${model.usage_count}×` : ''}
diff --git a/static/js/managers/SettingsManager.js b/static/js/managers/SettingsManager.js index 4cd92125..11b091a0 100644 --- a/static/js/managers/SettingsManager.js +++ b/static/js/managers/SettingsManager.js @@ -879,6 +879,12 @@ export class SettingsManager { modelCardFooterActionSelect.value = state.global.settings.model_card_footer_action || 'example_images'; } + // Set show version on card + const showVersionOnCardCheckbox = document.getElementById('showVersionOnCard'); + if (showVersionOnCardCheckbox) { + showVersionOnCardCheckbox.checked = state.global.settings.show_version_on_card !== false; + } + // Set model name display setting const modelNameDisplaySelect = document.getElementById('modelNameDisplay'); if (modelNameDisplaySelect) { @@ -2890,6 +2896,10 @@ export class SettingsManager { const cardInfoDisplay = state.global.settings.card_info_display || 'always'; document.body.classList.toggle('hover-reveal', cardInfoDisplay === 'hover'); + // Apply show version on card setting + const showVersionOnCard = state.global.settings.show_version_on_card !== false; + document.body.classList.toggle('hide-card-version', !showVersionOnCard); + const shouldShowSidebar = state.global.settings.show_folder_sidebar !== false; if (sidebarManager && typeof sidebarManager.setSidebarEnabled === 'function') { sidebarManager.setSidebarEnabled(shouldShowSidebar).catch((error) => { diff --git a/static/js/state/index.js b/static/js/state/index.js index 0729ca20..3e0166aa 100644 --- a/static/js/state/index.js +++ b/static/js/state/index.js @@ -38,6 +38,7 @@ const DEFAULT_SETTINGS_BASE = Object.freeze({ show_folder_sidebar: true, model_name_display: 'model_name', model_card_footer_action: 'example_images', + show_version_on_card: true, include_trigger_words: false, compact_mode: false, priority_tags: { ...DEFAULT_PRIORITY_TAG_CONFIG }, diff --git a/templates/components/modals/settings_modal.html b/templates/components/modals/settings_modal.html index 1fed24b3..cafd7d95 100644 --- a/templates/components/modals/settings_modal.html +++ b/templates/components/modals/settings_modal.html @@ -554,6 +554,24 @@ +
+
+
+ +
+
+ +
+
+
+