diff --git a/CHANGELOG.md b/CHANGELOG.md index 7110eb3f2..1d6bea72b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,12 +16,13 @@ Service release addressing all zero-day issues reported so far... - fix new style filename template - fix image name template using model name - fix model path using relative path -- fix torch-rocm version detection (thanks @xangelix) +- fix `torch-rocm` and `tensorflow-rocm` version detection (thanks @xangelix) - fix chainner upscalers color clipping - force second requirements check on startup - remove lyco, multiple_tqdm - enhance extension compatibility for exensions directly importing codeformers - enhance extension compatibility for exensions directly accessing processing params +- css fixes - clearly mark external themes in ui - new option: *settings -> images -> keep incomplete* can be used to skip vae decode on aborted/skipped/interrupted image generations diff --git a/TODO.md b/TODO.md index 8f83079bb..0c895d17b 100644 --- a/TODO.md +++ b/TODO.md @@ -1,79 +1,3 @@ # TODO -## Issues - -Stuff to be fixed, in no particular order... - -N/A - -## Features - -Stuff to be added, in no particular order... - -- Diffusers: - - Add ControlNet - - Add unCLIP model - - Add Training support -- Technical debt: - - Port **A1111** stuff - - Port `p.all_hr_prompts` - - Import core repos to reduce dependencies -- Non-technical: - - Update Wiki - - Rename repo: **automatic** -> **sdnext** -- Backends: - - PyTorch / XLA - - Diffusers / ONNX - - ScaleCrafter -- New Minor - - Prompt padding for positive/negative -- New Major - - Profile manager (for `config.json` and `ui-config.json`) - - Multi-user support - - Image phash and hdash using `imagehash` - - Model merge using `git-rebasin` - - Enable refiner-style workflow for `ldm` backend - - Add `sgm` backend - - Cache models in VRAM - - Train: - - Use `interrogator` - - Use `rembg` - - Templates for SD-XL training - - Lora train UI -- Redesign - - New UI - - New inpainting canvas controls (move from backend to purely frontend) - - New image browser (move from backend to purely frontend) - - Change workflows from static/legacy to steps-based -- Video processing - - -## Investigate - -Stuff to be investigated... - -## Merge PRs - -Pick & merge PRs from main repo... - -- up-to-date with: df004be -- current todo list: - -## Integration - -Tech that can be integrated as part of the core workflow... - -- [Git-ReBasin]([https://github.com/ogkalu2/Merge-Stable-Diffusion-models-without-distortion](https://github.com/vladmandic/automatic/issues/1176)) -- [Null-text inversion](https://github.com/ouhenio/null-text-inversion-colab) -- [Custom diffusion](https://github.com/guaneec/custom-diffusion-webui), [Custom diffusion](https://www.cs.cmu.edu/~custom-diffusion/) -- [Dream artist](https://github.com/7eu7d7/DreamArtist-sd-webui-extension) -- [QuickEmbedding](https://github.com/ethansmith2000/QuickEmbedding) -- [DragGAN](https://github.com/XingangPan/DragGAN) -- [LamaCleaner](https://github.com/Sanster/lama-cleaner) -- [SAG](https://huggingface.co/docs/diffusers/v0.19.3/en/api/pipelines/self_attention_guidance), [SAG](https://github.com/ashen-sensored/sd_webui_SAG) -- [Localization](https://app.transifex.com/signup/open-source/) -- `TensorRT` - -## Random - -- Bunch of stuff: +ToDo list has moved to [GitHub projects](https://github.com/users/vladmandic/projects) diff --git a/installer.py b/installer.py index e93ae9b01..205f16cee 100644 --- a/installer.py +++ b/installer.py @@ -575,7 +575,7 @@ def install_packages(): install('onnxruntime==1.15.1', 'onnxruntime', ignore=True) install('pi-heif', 'pi_heif', ignore=True) tensorflow_package = os.environ.get('TENSORFLOW_PACKAGE', 'tensorflow==2.13.0') - install(tensorflow_package, 'tensorflow', ignore=True) + install(tensorflow_package, 'tensorflow-rocm' if 'rocm' in tensorflow_package else 'tensorflow', ignore=True) # install('nvidia-ml-py', 'pynvml', ignore=True) bitsandbytes_package = os.environ.get('BITSANDBYTES_PACKAGE', None) if bitsandbytes_package is not None: diff --git a/javascript/base.css b/javascript/base.css index 86ef0f2a7..d6b2c126e 100644 --- a/javascript/base.css +++ b/javascript/base.css @@ -71,7 +71,7 @@ table.settings-value-table td { padding: 0.4em; border: 1px solid #ccc; max-widt #extensions .date{ opacity: 0.85; font-size: 90%; } /* extra networks */ -.extra-networks > div { margin: 0; gap: 0.2em; border-bottom: none !important; } +.extra-networks > div { margin: 0; border-bottom: none !important; } .extra-networks .second-line { display: flex; width: -moz-available; width: -webkit-fill-available; gap: 0.3em; box-shadow: var(--input-shadow); } .extra-networks .search { flex: 1; } .extra-networks .description { flex: 3; } diff --git a/javascript/sdnext.css b/javascript/sdnext.css index 4b0bdbeb1..63859f303 100644 --- a/javascript/sdnext.css +++ b/javascript/sdnext.css @@ -175,7 +175,7 @@ table.settings-value-table td { padding: 0.4em; border: 1px solid #ccc; max-widt #extensions .date{ opacity: 0.85; font-size: 90%; } /* extra networks */ -.extra-networks > div { margin: 0; gap: 0.2em; border-bottom: none !important; } +.extra-networks > div { margin: 0; border-bottom: none !important; gap: 0.3em 0; } .extra-networks .second-line { display: flex; width: -moz-available; width: -webkit-fill-available; gap: 0.3em; box-shadow: var(--input-shadow); } .extra-networks .search { flex: 1; } .extra-networks .description { flex: 3; } diff --git a/modules/ui_prompt_styles.py b/modules/ui_prompt_styles.py index 9f8a43c7c..c394cd852 100644 --- a/modules/ui_prompt_styles.py +++ b/modules/ui_prompt_styles.py @@ -20,9 +20,9 @@ def select_style(name): def save_style(name, prompt, negative_prompt): if not name: return gr.update(visible=False) - style = styles.PromptStyle(name, prompt, negative_prompt) + style = styles.Style(name, prompt, negative_prompt) shared.prompt_styles.styles[style.name] = style - shared.prompt_styles.save_styles(shared.styles_filename) + shared.prompt_styles.save_styles('') return gr.update(visible=True) @@ -30,7 +30,7 @@ def delete_style(name): if name == "": return shared.prompt_styles.styles.pop(name, None) - shared.prompt_styles.save_styles(shared.styles_filename) + shared.prompt_styles.save_styles('') return '', '', ''