From 0acfc70c424b3f7666b0a8e4b40cdd6d02a5a68e Mon Sep 17 00:00:00 2001 From: CalamitousFelicitousness Date: Sun, 31 May 2026 04:49:05 +0100 Subject: [PATCH] fix(paths): don't create per-type output dirs at root when base set create_paths() pre-created every per-type output folder via fix_path(), which resolves relative values against data_path (the repo root). With a base images/grids folder configured, those bare dirs are never written to (generation uses the base-joined path), so they accumulate as empty stray folders at the repo root on every launch. Guard the bare creations behind an unset base; the resolved base+specific block already creates the real targets. --- modules/paths.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/modules/paths.py b/modules/paths.py index 0c1408f86..050d20d7e 100644 --- a/modules/paths.py +++ b/modules/paths.py @@ -116,25 +116,30 @@ def create_paths(opts): create_path(fix_path('embeddings_dir')) create_path(fix_path('onnx_temp_dir')) create_path(fix_path('outdir_samples')) - create_path(fix_path('outdir_txt2img_samples')) - create_path(fix_path('outdir_img2img_samples')) - create_path(fix_path('outdir_control_samples')) - create_path(fix_path('outdir_extras_samples')) - create_path(fix_path('outdir_init_images')) create_path(fix_path('outdir_grids')) - create_path(fix_path('outdir_txt2img_grids')) - create_path(fix_path('outdir_img2img_grids')) - create_path(fix_path('outdir_control_grids')) - create_path(fix_path('outdir_save')) - create_path(fix_path('outdir_video')) + # per-type output dirs resolve against data_path via fix_path(), so create them bare + # only when no base folder is set; with a base configured, the resolved base+specific + # paths below are the real targets and the bare versions would just litter data_path + base_samples = opts.data.get('outdir_samples', '') + base_grids = opts.data.get('outdir_grids', '') + if not base_samples: + create_path(fix_path('outdir_txt2img_samples')) + create_path(fix_path('outdir_img2img_samples')) + create_path(fix_path('outdir_control_samples')) + create_path(fix_path('outdir_extras_samples')) + create_path(fix_path('outdir_init_images')) + create_path(fix_path('outdir_save')) + create_path(fix_path('outdir_video')) + if not base_grids: + create_path(fix_path('outdir_txt2img_grids')) + create_path(fix_path('outdir_img2img_grids')) + create_path(fix_path('outdir_control_grids')) create_path(fix_path('styles_dir')) create_path(fix_path('yolo_dir')) create_path(fix_path('wildcards_dir')) create_path(fix_path('autocomplete_dir')) # Create resolved output paths (base + specific) - base_samples = opts.data.get('outdir_samples', '') - base_grids = opts.data.get('outdir_grids', '') if base_samples: create_path(resolve_output_path(base_samples, opts.data.get('outdir_txt2img_samples', ''))) create_path(resolve_output_path(base_samples, opts.data.get('outdir_img2img_samples', '')))