Comfy-Org/ComfyUI · error · ValueError
Version {version} not found in releases
Error message
Version {version} not found in releases What it means
FrontendManager.get_release resolves a version string by scanning every GitHub release tag for an exact match of either '<version>' or 'v<version>'. If no tag matches, it raises ValueError. The string 'latest' and 'prerelease' are handled before this loop, so this error means a literal version that does not exist upstream.
Source
Thrown at app/frontend_management.py:172
"""Get the latest pre-release version - even if it's older than the latest release"""
release = [release for release in self.all_releases if release["prerelease"]]
if not release:
raise ValueError("No pre-releases found")
# GitHub returns releases in reverse chronological order, so first is latest
return release[0]
def get_release(self, version: str) -> Release:
if version == "latest":
return self.latest_release
elif version == "prerelease":
return self.latest_prerelease
else:
for release in self.all_releases:
if release["tag_name"] in [version, f"v{version}"]:
return release
raise ValueError(f"Version {version} not found in releases")
def download_release_asset_zip(release: Release, destination_path: str) -> None:
"""Download dist.zip from github release."""
asset_url = None
for asset in release.get("assets", []):
if asset["name"] == "dist.zip":
asset_url = asset["url"]
break
if not asset_url:
raise ValueError("dist.zip not found in the release assets")
# Use a temporary file to download the zip content
with tempfile.TemporaryFile() as tmp_file:
headers = {"Accept": "application/octet-stream"}
response = requests.get(
asset_url, headers=headers, allow_redirects=True, timeout=REQUEST_TIMEOUTView on GitHub (pinned to 1c6d8d45b3)
Solutions
- List valid tags first: check the releases page of the comfyui-frontend-release repo (or call all_releases) and copy the exact tag.
- Drop the leading 'v' if you used one, or add it — both forms are accepted, but the digits must match exactly.
- Use --front-end-version latest if you just want the current release.
Example fix
# before python main.py --front-end-version 1,24,2 # after python main.py --front-end-version 1.24.2
Defensive patterns
Strategy: validation
Validate before calling
valid = {r["tag_name"].lstrip("v") for r in fm.all_releases}
if version.lstrip("v") not in valid:
raise SystemExit(f"unknown frontend version {version}; valid: {sorted(valid)[-5:]}")
rel = fm.get_release(version) Type guard
def is_known_version(fm, version: str) -> bool:
return any(r["tag_name"] in (version, f"v{version}") for r in fm.all_releases) Try / catch
try:
release = fm.get_release(version)
except ValueError as e:
# list closest available tags for the user
print("available:", [r["tag_name"] for r in fm.all_releases][:10]); raise Prevention
- Derive version strings from all_releases tag_name values, never hand-type them.
- Validate versions against the tag list before calling get_release.
When it happens
Trigger: Calling --front-end-version (or get_release) with a typo'd or non-existent tag such as 1,24,2, 1.99.99, or v1.24.2 with unexpected casing/spacing; requesting a version that was deleted upstream; passing an empty string.
Common situations: Copy-pasting a version from an issue thread that was never released; using a full SHA or branch name instead of a release tag; locale-specific decimal separators producing '1,24'.
Related errors
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/af5e20cf0a495e2e.
Report an issue: GitHub.