Keep accumulator previews stable when reordered

This commit is contained in:
2026-06-25 10:51:44 +02:00
parent cb63e806c1
commit c22c440d01
2 changed files with 53 additions and 3 deletions
+16 -1
View File
@@ -54,6 +54,14 @@ INDEX_SWITCH_MISSING_BEHAVIORS = ["fallback", "none", "clamp", "wrap"]
_ACCUMULATOR_STORES: dict[str, list[dict[str, Any]]] = {}
def _entry_preview_key(entry: dict[str, Any]) -> str:
key = str(entry.get("_sxcp_preview_key") or "").strip()
if not key:
key = f"entry_{random.getrandbits(64):016x}"
entry["_sxcp_preview_key"] = key
return key
class AnyType(str):
def __ne__(self, _other: object) -> bool:
return False
@@ -218,6 +226,7 @@ def _entry_infos(store: list[dict[str, Any]]) -> list[dict[str, Any]]:
{
"index": index,
"id": str(entry.get("id") or ""),
"preview_key": _entry_preview_key(entry),
"has_image": image is not None,
"has_metadata": has_metadata,
"shape": list(shape) if shape is not None else [],
@@ -424,7 +433,13 @@ def _preview_image_results(
metadata = _metadata_for_entry(entry, prompt, extra_pnginfo)
file = f"{filename}_{counter:05}_.png"
_image_to_pil(image).save(os.path.join(full_output_folder, file), pnginfo=metadata, compress_level=1)
results.append({"filename": file, "subfolder": subfolder, "type": "temp"})
results.append({
"filename": file,
"subfolder": subfolder,
"type": "temp",
"preview_key": _entry_preview_key(entry),
"entry_id": str(entry.get("id") or ""),
})
counter += 1
return results