- Reject filenames with path components; reduce server-derived names
(Content-Disposition, CivitAI redirect, URL) to a safe basename
- save_path must resolve inside models_dir or a registered model folder
(including extra_model_paths.yaml roots); relative paths resolve
against ComfyUI's base path
- Only http/https for user URLs and redirects; drop the Authorization
header on cross-host redirects
- Stream to <file>.part and rename on success, removing the partial file
on any failure, so a dropped connection no longer leaves a truncated
model that later runs treat as complete
- 60s timeout on every request; shared streaming loop in BaseDownloader
- Custom downloader honours Content-Disposition before the default name