fix(other-models): default downloads to a flat path, not {base_model}/{first_tag}

get_download_path_template() fell back to "{base_model}/{first_tag}" for any
unconfigured model type, so other-model downloads were silently nested under an
arbitrary CivitAI tag even though the settings UI exposes no template row for
"other" and priority_tags has no "other" entry (making {first_tag} resolve to
tags[0]).

Add DEFAULT_DOWNLOAD_PATH_TEMPLATES with other -> "" so unconfigured and
unknown types resolve to a flat layout under the already sub_type-scoped
default_other_roots; explicit settings.json values still win. Mirror the flat
default in the frontend DEFAULT_PATH_TEMPLATES and stop the download/move
default-path previews from rendering "/undefined" or a dangling slash.
This commit is contained in:
Will Miao
2026-09-13 11:30:57 +08:00
parent 931dfbe1d3
commit 6fe0543d2e
9 changed files with 269 additions and 25 deletions
+8 -3
View File
@@ -2520,9 +2520,14 @@ export class DownloadManager {
const singularType = this._isDiffusionModel
? 'unet'
: this.apiClient.modelType.replace(/s$/, '');
const templates = state.global.settings.download_path_templates;
const template = templates[singularType];
fullPath += `/${template}`;
const templates = state.global?.settings?.download_path_templates;
const template = templates?.[singularType];
// An empty or absent template means a flat layout: keep the
// root as-is instead of appending "/undefined" or a
// dangling slash.
if (template) {
fullPath += `/${template}`;
}
} catch (error) {
console.error('Failed to fetch template:', error);
fullPath += '/' + translate('modals.download.autoOrganizedPath');