diff --git a/CHANGELOG.md b/CHANGELOG.md index 67d234300..6c127de75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -476,6 +476,7 @@ Plus a lot of internal improvements and fixes - control: safe load non-sparse controlnet - control: fix marigold preprocessor with bfloat16 - auth: fix password being shown in clear text during login + - github: better handling of forks - firefox: remove obsolete checks, thanks @awsr - runai streamer: cleanup logging, thanks @CalamitousFelicitousness - gradio: event handlers, thanks @awsr diff --git a/README.md b/README.md index 01f81a4e5..7cbd3e8a6 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ All individual features are not listed here, instead check [ChangeLog](CHANGELOG **Desktop** interface
-screenshot-modernui-desktop +screenshot-modernui-desktop
**Mobile** interface diff --git a/html/screenshot-robot.jpg b/html/screenshot-robot.jpg new file mode 100644 index 000000000..1ad619405 Binary files /dev/null and b/html/screenshot-robot.jpg differ diff --git a/html/sdnext-robot-2k.jpg b/html/sdnext-robot-2k.jpg deleted file mode 100644 index 0a2578ccb..000000000 Binary files a/html/sdnext-robot-2k.jpg and /dev/null differ diff --git a/installer.py b/installer.py index e592a5a1e..9298856e2 100644 --- a/installer.py +++ b/installer.py @@ -63,6 +63,7 @@ args = Dot({ }) git_commit = "unknown" diffusers_commit = "unknown" +transformers_commit = "unknown" restart_required = False extensions_commit = { # force specific commit for extensions 'sd-webui-controlnet': 'ecd33eb', @@ -468,7 +469,7 @@ def check_diffusers(): t_start = time.time() if args.skip_all: return - target_commit = 'a80b19218b4bd4faf2d6d8c428dcf1ae6f11e43d' # diffusers commit hash + target_commit = '31058485f1eea5a33e60ce9456c83e16bc4fc221' # diffusers commit hash # if args.use_rocm or args.use_zluda or args.use_directml: # sha = '043ab2520f6a19fce78e6e060a68dbc947edb9f9' # lock diffusers versions for now pkg = package_spec('diffusers') @@ -495,23 +496,36 @@ def check_transformers(): return pkg_transformers = package_spec('transformers') pkg_tokenizers = package_spec('tokenizers') + target_commit = 'a28c974c7ac74c83dbf379e93ceecc2661730f63' # transformers commit hash if args.use_directml: target_transformers = '4.52.4' target_tokenizers = '0.21.4' - elif args.new: - target_transformers = '5.0.0rc2' - target_tokenizers = '0.22.2' else: - target_transformers = '4.57.5' + target_transformers = None # use git commit target_tokenizers = '0.22.2' - if (pkg_transformers is None) or ((pkg_transformers.version != target_transformers) or (pkg_tokenizers is None) or ((pkg_tokenizers.version != target_tokenizers) and (not args.experimental))): - if pkg_transformers is None: - log.info(f'Install: package="transformers" version={target_transformers}') - else: - log.info(f'Update: package="transformers" current={pkg_transformers.version} target={target_transformers}') - pip('uninstall --yes transformers', ignore=True, quiet=True, uv=False) - pip(f'install --upgrade tokenizers=={target_tokenizers}', ignore=False, quiet=True, uv=False) - pip(f'install --upgrade transformers=={target_transformers}', ignore=False, quiet=True, uv=False) + if target_transformers is not None: + # Pinned release version (e.g. DirectML) + if (pkg_transformers is None) or ((pkg_transformers.version != target_transformers) or (pkg_tokenizers is None) or ((pkg_tokenizers.version != target_tokenizers) and (not args.experimental))): + if pkg_transformers is None: + log.info(f'Install: package="transformers" version={target_transformers}') + else: + log.info(f'Update: package="transformers" current={pkg_transformers.version} target={target_transformers}') + pip('uninstall --yes transformers', ignore=True, quiet=True, uv=False) + pip(f'install --upgrade tokenizers=={target_tokenizers}', ignore=False, quiet=True, uv=False) + pip(f'install --upgrade transformers=={target_transformers}', ignore=False, quiet=True, uv=False) + else: + # Git commit-pinned version + current = opts.get('transformers_version', '') + if (pkg_transformers is None) or (current != target_commit): + if pkg_transformers is None: + log.info(f'Install: package="transformers" commit={target_commit}') + else: + log.info(f'Update: package="transformers" current={pkg_transformers.version} hash={current} target={target_commit}') + pip('uninstall --yes transformers', ignore=True, quiet=True, uv=False) + pip(f'install --upgrade tokenizers=={target_tokenizers}', ignore=False, quiet=True, uv=False) + pip(f'install --upgrade git+https://github.com/huggingface/transformers@{target_commit}', ignore=False, quiet=True, uv=False) + global transformers_commit # pylint: disable=global-statement + transformers_commit = target_commit ts('transformers', t_start) @@ -1297,6 +1311,8 @@ def check_ui(ver): ui = ver['ui'] if ver is not None and 'ui' in ver else 'unknown' return (core == ui) or (core == 'master' and ui == 'main') or (core == 'dev' and ui == 'dev') or (core == 'HEAD') + if 'vladmandic/sdnext' not in ver.get('url', ''): + return t_start = time.time() if not same(ver): log.debug(f'Branch mismatch: {ver}') @@ -1373,7 +1389,12 @@ def check_version(reset=True): # pylint: disable=unused-argument commits = None branch_names = [] try: - branches = requests.get('https://api.github.com/repos/vladmandic/sdnext/branches', timeout=10).json() + if ver and 'url' in ver: + url_parts = ver['url'].replace('https://github.com/', '').split('/tree/')[0] + api_base = f'https://api.github.com/repos/{url_parts}' + else: + api_base = 'https://api.github.com/repos/vladmandic/sdnext' + branches = requests.get(f'{api_base}/branches', timeout=10).json() branch_names = [b['name'] for b in branches if 'name' in b] log.trace(f'Repository branches: active={branch_name} available={branch_names}') except Exception as e: @@ -1384,7 +1405,7 @@ def check_version(reset=True): # pylint: disable=unused-argument ts('latest', t_start) return try: - commits = requests.get(f'https://api.github.com/repos/vladmandic/sdnext/branches/{branch_name}', timeout=10).json() + commits = requests.get(f'{api_base}/branches/{branch_name}', timeout=10).json() latest = commits['commit']['sha'] if len(latest) != 40: log.error(f'Repository error: commit={latest} invalid')