feat(download): add download root rules routing downloads by base model

Add a download_root_rules setting: ordered per-type rules
({match_type: base_model, match: [...], root: path}) that replace the
default download root when 'use default paths' is on. The first matching
rule wins; unmatched downloads fall back to default_*_root. Rules are
consulted under the final download type, so a checkpoint routed to the
unet roots uses the unet rule set.

- settings_manager: normalize/get/set with root validation against the
  configured roots (folder_paths + extra_folder_paths); invalid rules
  are dropped with a warning
- download_manager: apply the resolved root in the use_default_paths
  branches for lora/checkpoint(unet)/embedding downloads
- download routing handler: expose resolved_root so the download
  confirmation modal preselects the rule-routed root
- settings UI: per-type rule editor in the Organization section with
  base-model multi-select panels, root dropdowns, reorder and remove
This commit is contained in:
Will Miao
2026-10-09 11:50:26 +08:00
parent 1a6b0f78a3
commit 5dc2109d7c
25 changed files with 1849 additions and 11 deletions
+19
View File
@@ -495,6 +495,25 @@
"saveFailed": "לא ניתן לשמור את מודלי הבסיס המוחרגים: {message}"
}
},
"downloadRootRules": {
"title": "[TODO: Translate] Download Root Rules",
"help": "[TODO: Translate] Route downloads to a different root folder based on the model's base model.",
"description": "[TODO: Translate] Rules are checked in order. First match wins; unmatched downloads use the default root.",
"addRule": "[TODO: Translate] Add rule",
"removeRule": "[TODO: Translate] Remove rule",
"moveUp": "[TODO: Translate] Move up",
"moveDown": "[TODO: Translate] Move down",
"noRoots": "[TODO: Translate] No roots configured for this model type.",
"types": {
"loras": "[TODO: Translate] LoRA",
"checkpoints": "[TODO: Translate] Checkpoint",
"unet": "[TODO: Translate] Diffusion Model",
"embeddings": "[TODO: Translate] Embedding"
},
"validation": {
"saveFailed": "[TODO: Translate] Unable to save download root rules: {message}"
}
},
"skipPreviouslyDownloadedModelVersions": {
"label": "דלג על גרסאות מודלים שהורדו בעבר",
"help": "כאשר מופעל, LoRA Manager ידלג על הורדת גרסת מודל אם שירות היסטוריית ההורדות רושם את הגרסה המדויקת הזו ככבר שהורדה. חל על כל תהליכי ההורדה."