From ca44c367b3460873afcc17cf00a753b842f27c72 Mon Sep 17 00:00:00 2001 From: Will Miao Date: Sun, 29 Mar 2026 15:33:30 +0800 Subject: [PATCH] fix(recipe): improve Civitai URL generation for missing LoRAs Use model-versions endpoint (https://civitai.com/model-versions/{id}) which auto-redirects to the correct model page when only versionId is available. This fixes the UX issue where clicking on 'Not in Library' LoRA entries in Recipe Modal would open a search page instead of the actual model page. Changes: - uiHelpers.js: Prioritize versionId over modelId for Civitai URLs - RecipeModal.js: Include versionId in navigation condition checks --- static/js/components/RecipeModal.js | 4 ++-- static/js/utils/uiHelpers.js | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/static/js/components/RecipeModal.js b/static/js/components/RecipeModal.js index a3b5807e..5ba00746 100644 --- a/static/js/components/RecipeModal.js +++ b/static/js/components/RecipeModal.js @@ -1259,7 +1259,7 @@ class RecipeModal { const versionId = checkpoint.id || checkpoint.modelVersionId; const modelName = checkpoint.name || checkpoint.modelName || checkpoint.file_name; - if (modelId || modelName) { + if (modelId || versionId || modelName) { openCivitaiByMetadata(modelId, versionId, modelName); return; } @@ -1317,7 +1317,7 @@ class RecipeModal { const versionId = lora.id || lora.modelVersionId; const modelName = lora.modelName || lora.name || lora.file_name; - if (modelId || modelName) { + if (modelId || versionId || modelName) { openCivitaiByMetadata(modelId, versionId, modelName); return; } diff --git a/static/js/utils/uiHelpers.js b/static/js/utils/uiHelpers.js index 421e3e84..739c274b 100644 --- a/static/js/utils/uiHelpers.js +++ b/static/js/utils/uiHelpers.js @@ -184,14 +184,13 @@ function filterByFolder(folderPath) { } export function openCivitaiByMetadata(civitaiId, versionId, modelName = null) { - if (civitaiId) { - let url = `https://civitai.com/models/${civitaiId}`; - if (versionId) { - url += `?modelVersionId=${versionId}`; - } - window.open(url, '_blank'); + if (versionId) { + // Use model-versions endpoint which auto-redirects to correct model page + window.open(`https://civitai.com/model-versions/${versionId}`, '_blank'); + } else if (civitaiId) { + window.open(`https://civitai.com/models/${civitaiId}`, '_blank'); } else if (modelName) { - // 如果没有ID,尝试使用名称搜索 + // Fallback: search by name window.open(`https://civitai.com/models?query=${encodeURIComponent(modelName)}`, '_blank'); } }