From 8012991a8b33e404505f889972f6ad717f7cf2b0 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 31 Aug 2026 09:43:06 +0200 Subject: [PATCH] detailer handling of stop/skip/pause Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 3 ++- modules/detailer/detailer.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5af3c0fb9..61c0d562b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log for SD.Next -## Update for 2026-08-30 +## Update for 2026-08-31 - **LoRA** - *TODO*: see [LoRA docs](https://vladmandic.github.io/sdnext-docs/LoRA) for all of the improvements and usage instructions @@ -36,6 +36,7 @@ - **Fixes** - unnecessary secondary prompt if same - js fetch exception handling + - detailer handling of stop/skip/pause ## Update for 2026-08-26 diff --git a/modules/detailer/detailer.py b/modules/detailer/detailer.py index 73bdd32f0..4556e242b 100644 --- a/modules/detailer/detailer.py +++ b/modules/detailer/detailer.py @@ -1,4 +1,5 @@ import re +import time from copy import copy import numpy as np import gradio as gr @@ -220,6 +221,19 @@ class Detailer(): matched_negative_classes = set() for i, model_val in enumerate(models): + if shared.state.skipped: + shared.state.skipped = False + continue + if shared.state.interrupted: + break + while shared.state.paused: + log.debug('Detail paused') + if shared.state.interrupted: + break + if shared.state.skipped: + continue + time.sleep(0.1) + if ':' in model_val: model_name, model_args = model_val.split(':', 1) else: @@ -309,10 +323,23 @@ class Detailer(): resolved_prompts = assign_prompts(prompt, items) resolved_negatives = assign_prompts(negative, items) for j, item in enumerate(items): + if shared.state.skipped: + shared.state.skipped = False + continue + if shared.state.interrupted: + break + while shared.state.paused: + log.debug('Detail paused') + if shared.state.interrupted: + break + if shared.state.skipped: + continue + time.sleep(0.1) if item.mask is None: continue - pc.keep_prompts = True + shared.sd_model.fail_on_switch_error = True + pc.keep_prompts = True pc.prompt = resolved_prompts[j] pc.negative_prompt = resolved_negatives[j] pc.prompts = [pc.prompt]