diff --git a/CHANGELOG.md b/CHANGELOG.md index 9aaff68eb..05b1d9153 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ availability is limited (log shows '503 Service Unavailable'), so if remote processing fails SD.Next will fallback to using normal VAE decode process *note*: only passed item is final latent itself, no user or generate information at all +- **UI** + - modern ui reorg main tab + improve styling, improve scripts/extensions interface and separate ipadapters - **Other** - add `--extensions-dir` cli arg and `SD_EXTENSIONSDIR` env variable to specify extensions directory - update `zluda==3.9.0` diff --git a/extensions-builtin/sdnext-modernui b/extensions-builtin/sdnext-modernui index 7e1810fc3..1c71c1ca4 160000 --- a/extensions-builtin/sdnext-modernui +++ b/extensions-builtin/sdnext-modernui @@ -1 +1 @@ -Subproject commit 7e1810fc3b1a9fb91dc270460ca47504d2d2b411 +Subproject commit 1c71c1ca45f699767c7d7862d62c2fbc0f176250 diff --git a/html/locale_en.json b/html/locale_en.json index c835bbd55..400eb316b 100644 --- a/html/locale_en.json +++ b/html/locale_en.json @@ -26,16 +26,19 @@ {"id":"","label":"Negative prompt","localized":"","hint":"Describe what you don't want to see in generated image"}, {"id":"","label":"Text","localized":"","hint":"Create image from text"}, {"id":"","label":"Image","localized":"","hint":"Create image from image"}, - {"id":"","label":"Control","localized":"","hint":"Create image with additional control"}, + {"id":"","label":"Control","localized":"","hint":"Create image with full guidance"}, {"id":"","label":"Process","localized":"","hint":"Process existing image"}, + {"id":"","label":"Caption","localized":"","hint":"Analyze existing images and create text descriptions"}, {"id":"","label":"Interrogate","localized":"","hint":"Run interrogate to get description of your image"}, {"id":"","label":"Models","localized":"","hint":"Download, convert or merge your models and manage models metadata"}, {"id":"","label":"Agent Scheduler","localized":"","hint":"Enqueue your generate requests and run them in the background"}, + {"id":"","label":"AgentScheduler","localized":"","hint":"Enqueue your generate requests and run them in the background"}, {"id":"","label":"System","localized":"","hint":"System settings and information"}, {"id":"","label":"System Info","localized":"","hint":"System information"}, {"id":"","label":"Settings","localized":"","hint":"Application settings"}, {"id":"","label":"Script","localized":"","hint":"Additional scripts to be used"}, {"id":"","label":"Generate","localized":"","hint":"Start processing"}, + {"id":"","label":"Generate forever","localized":"","hint":"Start processing and continue until cancelled"}, {"id":"","label":"Enqueue","localized":"","hint":"Add task to background queue in Agent Scheduler"}, {"id":"","label":"Reprocess","localized":"","hint":"Reprocess previous generations using different parameters"}, {"id":"","label":"Stop","localized":"","hint":"Stop processing"}, @@ -47,6 +50,8 @@ {"id":"","label":"Default strength","localized":"","hint":"When adding extra network such as Lora to prompt, use this multiplier for it"}, {"id":"","label":"Upscale","localized":"","hint":"Upscale image"}, {"id":"","label":"Model","localized":"","hint":"Base model"}, + {"id":"","label":"Prompts","localized":"","hint":"Image prompt and negative prompt"}, + {"id":"","label":"Base","localized":"","hint":"Base settings used to run image generation"}, {"id":"","label":"Style","localized":"","hint":"Additional styles to be applied on selected generation parameters"}, {"id":"","label":"Styles","localized":"","hint":"Additional styles to be applied on selected generation parameters"}, {"id":"","label":"Lora","localized":"","hint":"LoRA: Low-Rank Adaptation. Fine-tuned model that is applied on top of a loaded model"}, @@ -67,10 +72,12 @@ {"id":"","label":"Reference","localized":"","hint":"List of reference models that can be automatically downloaded on first use"}, {"id":"","label":"Samplers","localized":"","hint":"Samplers/schedulers advanced settings"}, {"id":"","label":"Seed","localized":"","hint":"Initial seed and variation"}, - {"id":"","label":"Advanced","localized":"","hint":"Advanced settings"}, + {"id":"","label":"Advanced","localized":"","hint":"Advanced settings used to run image generation"}, + {"id":"","label":"Scripts","localized":"","hint":"Enable additional features by using selected scripts during generate process"}, {"id":"","label":"Corrections","localized":"","hint":"Control image color/sharpen/brighness corrections during generate process"}, - {"id":"","label":"Refine","localized":"","hint":"Settings related to Upscale, HiRes and Refine processing"}, - {"id":"","label":"Detailer","localized":"","hint":"Detailer settings"}, + {"id":"","label":"Parameters","localized":"","hint":"Base parameters used during image generation"}, + {"id":"","label":"Refine","localized":"","hint":"Refine runs additonal processing after initial processing has completed and can be used to upscale image and run optionally process it again to increase quality and details"}, + {"id":"","label":"Detailer","localized":"","hint":"Detailer runs additional generate at higher resolution for a detected objects"}, {"id":"","label":"Resize","localized":"","hint":"Image resizing, can be using fixed resolution on based on scale"}, {"id":"","label":"Batch","localized":"","hint":"Batch processing settings"}, {"id":"","label":"Denoise","localized":"","hint":"Denoising settings. Higher denoise means that more of existing image content is allowed to change during generate"}, @@ -78,6 +85,7 @@ {"id":"","label":"Input","localized":"","hint":"Selection of input media"}, {"id":"","label":"Video","localized":"","hint":"Settings related to video generation"}, {"id":"","label":"Control elements","localized":"","hint":"Control elements are advanced models that can guide generation towards desired outcome"}, + {"id":"","label":"IP adapter","localized":"","hint":"Guide generation towards desired outcome using IP adapters plugin models"}, {"id":"","label":"IP adapters","localized":"","hint":"IP adapters are plugin models that can guide generation towards desired outcome"}, {"id":"","label":"Extensions","localized":"","hint":"Application extensions"}, {"id":"","label":"XYZ Grid","localized":"","hint":"XYZ grid is a powerful module that create image grid based on varying multiple generation parameters"}, diff --git a/installer.py b/installer.py index 9ec7f9664..43de03632 100644 --- a/installer.py +++ b/installer.py @@ -62,7 +62,7 @@ extensions_commit = { # force specific commit for extensions # 'stable-diffusion-webui-images-browser': '27fe4a7', } control_extensions = [ # 3rd party extensions marked as safe for control ui - 'NudeNet', + 'NudeNet', 'IP Adapters', ] diff --git a/javascript/setHints.js b/javascript/setHints.js index 40c83a5d4..086367a6e 100644 --- a/javascript/setHints.js +++ b/javascript/setHints.js @@ -159,6 +159,7 @@ async function setHints(analyze = false) { if (Object.keys(opts).length === 0) return; const elements = [ ...Array.from(gradioApp().querySelectorAll('button')), + ...Array.from(gradioApp().querySelectorAll('h2')), ...Array.from(gradioApp().querySelectorAll('label > span')), ...Array.from(gradioApp().querySelectorAll('.label-wrap > span')), ]; diff --git a/modules/scripts.py b/modules/scripts.py index 9b86c14dd..97bb23ee9 100644 --- a/modules/scripts.py +++ b/modules/scripts.py @@ -34,8 +34,8 @@ class Script: parent = None name = None filename = None - args_from = None - args_to = None + args_from = 0 + args_to = 0 alwayson = False is_txt2img = False is_img2img = False diff --git a/scripts/ipadapter.py b/scripts/ipadapter.py index 5ca4ca578..51caee67e 100644 --- a/scripts/ipadapter.py +++ b/scripts/ipadapter.py @@ -44,7 +44,7 @@ class Script(scripts.Script): return [gr.update(visible=advanced), gr.update(visible=advanced)] def ui(self, _is_img2img): - with gr.Accordion('IP Adapters', open=False, elem_id='ipadapter'): + with gr.Accordion('IP Adapters', open=False, elem_id='ipadapter', elem_classes=['ipadapter']): units = [] adapters = [] scales = []