From 2146979cc4796b406582e555e63f85ffef4b976f Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sat, 23 Aug 2025 21:31:07 +0200 Subject: [PATCH 1/8] add base model tags --- modules/ui_extra_networks.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 06b3428fb..5dba914fc 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -25,6 +25,7 @@ debug = shared.log.trace if os.environ.get('SD_EN_DEBUG', None) is not None else debug('Trace: EN') card_full = '''
+ {base_model_box}
{title}
@@ -39,9 +40,9 @@ card_full = ''' ''' card_list = '''
+ {base_model_box}
- 🛈  -
{title}  + 🛈 
{title} 
@@ -322,6 +323,22 @@ class ExtraNetworksPage: return '#{:02x}{:02x}{:02x}'.format(r, g, b) # pylint: disable=consider-using-f-string try: + base_model = '' + base_model_box = '' + info = self.find_info(item.get('filename')) + item_hash = item.get('hash', None) + if info and item_hash and ('modelVersions' in info): + for version in info.get('modelVersions', []): + for file_info in version.get('files', []): + if any(h.lower().startswith(item_hash.lower()) for h in file_info.get('hashes', {}).values()): + base_model = version.get('baseModel', '') + break + if base_model: + break + if base_model: + base_model_box_style = "position: absolute; top: 4px; left: 4px; background-color: rgba(0, 0, 0, 0.8); color: white; padding: 2px 6px; border-radius: 4px; font-size: 0.7rem; z-index: 1;" + base_model_box = f"
{html.escape(base_model)}
" + onclick = f'cardClicked({item.get("prompt", None)})' args = { # "tabname": tabname, @@ -344,6 +361,7 @@ class ExtraNetworksPage: "version": item.get("version", ''), "color": random_bright_color(), "reference": "reference" if 'Reference' in item.get('name', '') else "", + "base_model_box": base_model_box, } # alias = item.get("alias", None) # if alias is not None: From 843b2b798de39acc12344426a0a452d1942ca378 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sat, 23 Aug 2025 21:47:43 +0200 Subject: [PATCH 2/8] Update ui_extra_networks.py --- modules/ui_extra_networks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 5dba914fc..911e22aae 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -42,7 +42,8 @@ card_list = '''
{base_model_box}
- 🛈 
{title}  + 🛈  +
{title} 
From ab5f863846ace8edee34ef53d2117e42487b236e Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 13:22:05 +0200 Subject: [PATCH 3/8] ported base_model info to version, removed base_model_box --- modules/ui_extra_networks.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 911e22aae..432dd41b3 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -25,7 +25,6 @@ debug = shared.log.trace if os.environ.get('SD_EN_DEBUG', None) is not None else debug('Trace: EN') card_full = '''
- {base_model_box}
{title}
@@ -40,11 +39,11 @@ card_full = ''' ''' card_list = '''
- {base_model_box}
🛈 
{title} 
+
{version}
@@ -325,7 +324,6 @@ class ExtraNetworksPage: try: base_model = '' - base_model_box = '' info = self.find_info(item.get('filename')) item_hash = item.get('hash', None) if info and item_hash and ('modelVersions' in info): @@ -336,9 +334,6 @@ class ExtraNetworksPage: break if base_model: break - if base_model: - base_model_box_style = "position: absolute; top: 4px; left: 4px; background-color: rgba(0, 0, 0, 0.8); color: white; padding: 2px 6px; border-radius: 4px; font-size: 0.7rem; z-index: 1;" - base_model_box = f"
{html.escape(base_model)}
" onclick = f'cardClicked({item.get("prompt", None)})' args = { @@ -359,10 +354,9 @@ class ExtraNetworksPage: "card_click": item.get("onclick", '"' + html.escape(onclick) + '"'), "mtime": item.get("mtime", 0), "size": item.get("size", 0), - "version": item.get("version", ''), + "version": html.escape(base_model), "color": random_bright_color(), "reference": "reference" if 'Reference' in item.get('name', '') else "", - "base_model_box": base_model_box, } # alias = item.get("alias", None) # if alias is not None: From c4192c0d765e77c858fe577cad09fb0294ed93bf Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 14:12:03 +0200 Subject: [PATCH 4/8] Revert "ported base_model info to version, removed base_model_box" This reverts commit ab5f863846ace8edee34ef53d2117e42487b236e. --- modules/ui_extra_networks.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 432dd41b3..911e22aae 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -25,6 +25,7 @@ debug = shared.log.trace if os.environ.get('SD_EN_DEBUG', None) is not None else debug('Trace: EN') card_full = '''
+ {base_model_box}
{title}
@@ -39,11 +40,11 @@ card_full = ''' ''' card_list = '''
+ {base_model_box}
🛈 
{title} 
-
{version}
@@ -324,6 +325,7 @@ class ExtraNetworksPage: try: base_model = '' + base_model_box = '' info = self.find_info(item.get('filename')) item_hash = item.get('hash', None) if info and item_hash and ('modelVersions' in info): @@ -334,6 +336,9 @@ class ExtraNetworksPage: break if base_model: break + if base_model: + base_model_box_style = "position: absolute; top: 4px; left: 4px; background-color: rgba(0, 0, 0, 0.8); color: white; padding: 2px 6px; border-radius: 4px; font-size: 0.7rem; z-index: 1;" + base_model_box = f"
{html.escape(base_model)}
" onclick = f'cardClicked({item.get("prompt", None)})' args = { @@ -354,9 +359,10 @@ class ExtraNetworksPage: "card_click": item.get("onclick", '"' + html.escape(onclick) + '"'), "mtime": item.get("mtime", 0), "size": item.get("size", 0), - "version": html.escape(base_model), + "version": item.get("version", ''), "color": random_bright_color(), "reference": "reference" if 'Reference' in item.get('name', '') else "", + "base_model_box": base_model_box, } # alias = item.get("alias", None) # if alias is not None: From ac725c1cd630e7d783213a80d6c73267d67f32f2 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 14:12:15 +0200 Subject: [PATCH 5/8] Revert "Update ui_extra_networks.py" This reverts commit 843b2b798de39acc12344426a0a452d1942ca378. --- modules/ui_extra_networks.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 911e22aae..5dba914fc 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -42,8 +42,7 @@ card_list = '''
{base_model_box}
- 🛈  -
{title}  + 🛈 
{title} 
From 389327c39b0cfd607d575a8da3639acbaec43be2 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 14:12:17 +0200 Subject: [PATCH 6/8] Revert "add base model tags" This reverts commit 2146979cc4796b406582e555e63f85ffef4b976f. --- modules/ui_extra_networks.py | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 5dba914fc..06b3428fb 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -25,7 +25,6 @@ debug = shared.log.trace if os.environ.get('SD_EN_DEBUG', None) is not None else debug('Trace: EN') card_full = '''
- {base_model_box}
{title}
@@ -40,9 +39,9 @@ card_full = ''' ''' card_list = '''
- {base_model_box}
- 🛈 
{title}  + 🛈  +
{title} 
@@ -323,22 +322,6 @@ class ExtraNetworksPage: return '#{:02x}{:02x}{:02x}'.format(r, g, b) # pylint: disable=consider-using-f-string try: - base_model = '' - base_model_box = '' - info = self.find_info(item.get('filename')) - item_hash = item.get('hash', None) - if info and item_hash and ('modelVersions' in info): - for version in info.get('modelVersions', []): - for file_info in version.get('files', []): - if any(h.lower().startswith(item_hash.lower()) for h in file_info.get('hashes', {}).values()): - base_model = version.get('baseModel', '') - break - if base_model: - break - if base_model: - base_model_box_style = "position: absolute; top: 4px; left: 4px; background-color: rgba(0, 0, 0, 0.8); color: white; padding: 2px 6px; border-radius: 4px; font-size: 0.7rem; z-index: 1;" - base_model_box = f"
{html.escape(base_model)}
" - onclick = f'cardClicked({item.get("prompt", None)})' args = { # "tabname": tabname, @@ -361,7 +344,6 @@ class ExtraNetworksPage: "version": item.get("version", ''), "color": random_bright_color(), "reference": "reference" if 'Reference' in item.get('name', '') else "", - "base_model_box": base_model_box, } # alias = item.get("alias", None) # if alias is not None: From b021f4a537a2095bda1612adba9888de8e885a12 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 14:36:23 +0200 Subject: [PATCH 7/8] Implementation V3 of base model tags on model cards --- modules/ui_extra_networks_checkpoints.py | 7 +++++++ modules/ui_extra_networks_lora.py | 5 ++++- modules/ui_extra_networks_vae.py | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py index 9713d47a3..e95ecd727 100644 --- a/modules/ui_extra_networks_checkpoints.py +++ b/modules/ui_extra_networks_checkpoints.py @@ -63,6 +63,13 @@ class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage): } record["info"] = self.find_info(checkpoint.filename) record["description"] = self.find_description(checkpoint.filename, record["info"]) + + # Base model extraction + record["version"] = ( + record["info"].get("modelVersions", [{}])[0].get("baseModel", "N/A") + if record["info"] else "N/A" + ) + except Exception as e: shared.log.debug(f'Networks error: type=model file="{name}" {e}') return record diff --git a/modules/ui_extra_networks_lora.py b/modules/ui_extra_networks_lora.py index 8ab95ce8d..0ae134cc2 100644 --- a/modules/ui_extra_networks_lora.py +++ b/modules/ui_extra_networks_lora.py @@ -97,7 +97,10 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage): "metadata": json.dumps(l.metadata, indent=4) if l.metadata else None, "mtime": mtime, "size": size, - "version": l.sd_version, + "version": ( # Base model extraction + info.get("modelVersions", [{}])[0].get("baseModel", "N/A") + if info else "N/A" + ), "info": info, "description": self.find_description(l.filename, info), "tags": self.get_tags(l, info), diff --git a/modules/ui_extra_networks_vae.py b/modules/ui_extra_networks_vae.py index 0db733a3c..4e9143b39 100644 --- a/modules/ui_extra_networks_vae.py +++ b/modules/ui_extra_networks_vae.py @@ -31,6 +31,10 @@ class ExtraNetworksPageVAEs(ui_extra_networks.ExtraNetworksPage): "size": size, "info": info, "description": self.find_description(filename, info), + "version": ( # Base model extraction + info.get("modelVersions", [{}])[0].get("baseModel", "N/A") + if info else "N/A" + ), } yield record except Exception as e: From 714c7b813b877449f44db0d395234f743e2d9ca1 Mon Sep 17 00:00:00 2001 From: Pablo Hellmann Date: Sun, 24 Aug 2025 14:44:42 +0200 Subject: [PATCH 8/8] l.sd_version as alternative when base model extraction fails --- modules/ui_extra_networks_lora.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ui_extra_networks_lora.py b/modules/ui_extra_networks_lora.py index 0ae134cc2..8ff0ecd5a 100644 --- a/modules/ui_extra_networks_lora.py +++ b/modules/ui_extra_networks_lora.py @@ -98,8 +98,8 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage): "mtime": mtime, "size": size, "version": ( # Base model extraction - info.get("modelVersions", [{}])[0].get("baseModel", "N/A") - if info else "N/A" + (info.get("modelVersions", [{}])[0].get("baseModel") or l.sd_version or "N/A") + if info else (l.sd_version or "N/A") ), "info": info, "description": self.find_description(l.filename, info),