diff --git a/README.md b/README.md
index a9526413e..08b960dae 100644
--- a/README.md
+++ b/README.md
@@ -130,7 +130,7 @@ The launcher can perform automatic update of main repository, requirements, exte
Check is performed on each startup and missing requirements are auto-installed, can be skipped with `--skip-requirements` flag
- Extensions and submodules:
Update is performed on each startup and installer for each extension is started, can be skipped with `--skip-extensions` flag
-- All checks can be skipped using `--quick` flag
+- If timestamp of last sucessful setup is newer than actual repository version or version of newest extension, launcher will run in *quick* mode
diff --git a/TODO.md b/TODO.md
index a27d7f200..323ace9ad 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,20 +1,19 @@
# TODO
-## Always-on
-
-- Pick & merge PRs from main repo
-
-## Fixes
+## Issues
Stuff to be fixed...
- Fix integration with
+- Fix integration with
- Reconnect UI to ops in progress on browser restart
- Create new GitHub hooks/actions for CI/CD
- Remove `models` from git repo
## Features
+Stuff to be added...
+
- Redo Extensions tab: see
- Stream-load models as option for slow storage
- Replace **PngInfo** / **EXIF** metadata handler
@@ -24,8 +23,52 @@ Stuff to be fixed...
## Investigate
+Stuff to be investigated...
+
- Revisit `torch.compile`
+## Merge PRs
+
+Pick & merge PRs from main repo...
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+Complete:
+
+-
+
## Integration
Tech that can be integrated as part of the core workflow...
diff --git a/extensions-builtin/sd-extension-system-info b/extensions-builtin/sd-extension-system-info
index 142c1ed05..f7be53474 160000
--- a/extensions-builtin/sd-extension-system-info
+++ b/extensions-builtin/sd-extension-system-info
@@ -1 +1 @@
-Subproject commit 142c1ed05c11b3aeca35c40784b6da8613450f7b
+Subproject commit f7be53474b01b8c7dace642179ae38b587a7ac2b
diff --git a/extensions-builtin/sd-webui-controlnet b/extensions-builtin/sd-webui-controlnet
index 80c7a6cc9..20a5310bc 160000
--- a/extensions-builtin/sd-webui-controlnet
+++ b/extensions-builtin/sd-webui-controlnet
@@ -1 +1 @@
-Subproject commit 80c7a6cc9547bce3a0b5833c367b3b23a422abf3
+Subproject commit 20a5310bc80bff223c4ae9f2a78c7f73955ce11c
diff --git a/modules/call_queue.py b/modules/call_queue.py
index 9582585d9..13d5d76a3 100644
--- a/modules/call_queue.py
+++ b/modules/call_queue.py
@@ -1,3 +1,4 @@
+import sys
import html
import threading
import time
@@ -51,7 +52,8 @@ def wrap_gradio_call(func, extra_outputs=None, add_stats=False):
if run_memmon:
shared.mem_mon.monitor()
t = time.perf_counter()
-
+ if sys.modules['xformers'] is not None and shared.opts.cross_attention_optimization != "xFormers":
+ sys.modules["xformers"] = None
try:
if shared.cmd_opts.profile:
pr = cProfile.Profile()
diff --git a/modules/sd_hijack.py b/modules/sd_hijack.py
index 03313b793..0c78db413 100644
--- a/modules/sd_hijack.py
+++ b/modules/sd_hijack.py
@@ -1,3 +1,4 @@
+import sys
from types import MethodType
from rich import print # pylint: disable=redefined-builtin
import torch
diff --git a/setup.py b/setup.py
index 514e9745c..c7a108de2 100644
--- a/setup.py
+++ b/setup.py
@@ -88,7 +88,7 @@ def installed(package, friendly: str = None):
# install package using pip if not already installed
-def install(package, friendly: str = None):
+def install(package, friendly: str = None, ignore: bool = False):
def pip(arg: str):
log.debug(f"Running pip: {arg}")
result = subprocess.run(f'"{sys.executable}" -m pip {arg}', shell=True, check=False, env=os.environ, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
@@ -96,7 +96,7 @@ def install(package, friendly: str = None):
if len(result.stderr) > 0:
txt += ('\n' if len(txt) > 0 else '') + result.stderr.decode(encoding="utf8", errors="ignore")
txt = txt.strip()
- if result.returncode != 0:
+ if result.returncode != 0 and not ignore:
global errors # pylint: disable=global-statement
errors += 1
log.error(f'Error running pip with args: {arg}')
@@ -201,9 +201,9 @@ def install_packages():
install(clip_package, 'clip')
try:
xformers_package = os.environ.get('XFORMERS_PACKAGE', 'xformers==0.0.17')
- install(f'--no-deps {xformers_package}')
+ install(f'--no-deps {xformers_package}', ignore=True)
except Exception as e:
- log.error(f'Cannot install xformers package: {e}')
+ log.debug(f'Cannot install xformers package: {e}')
# clone required repositories