Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a4ce52760 | ||
|
|
e761b3dd0b |
@@ -4,6 +4,12 @@ All notable changes to ComfyUI-AusBoss are documented here.
|
||||
|
||||
## Unreleased
|
||||
|
||||
## 2.21.1 - 2026-11-06
|
||||
|
||||
- **The README release badge stays available when the badge service is down.**
|
||||
The badge is served from the repository, shows the current version, and opens
|
||||
the latest GitHub Release.
|
||||
|
||||
## 2.21.0 - 2026-11-05
|
||||
|
||||
- **Crop + Rotate + Pad has clearer controls and steadier previews.** Image
|
||||
|
||||
+7
-1
@@ -346,11 +346,17 @@ before a release that follows a ComfyUI update.
|
||||
A new `version` in `pyproject.toml` that lands on main publishes to the Comfy
|
||||
Registry through the publish workflow (`.github/workflows/publish_action.yml`).
|
||||
After a successful upload, the same workflow tags that commit and creates a
|
||||
GitHub Release with the full changelog section. The README badge follows the
|
||||
GitHub Release with the full changelog section. The README badge links to the
|
||||
latest GitHub Release. If only that step fails, rerun the failed jobs to retry
|
||||
it without uploading the Registry version again. Existing releases are left
|
||||
unchanged on a rerun. Contributors never change `version`.
|
||||
|
||||
For an authorized release, update both `pyproject.toml` and
|
||||
`AUSBOSS_JS_VERSION`, date the changelog section, then run
|
||||
`python scripts/release_badge.py`. Preflight rejects a badge that does not
|
||||
match the pack version. Its SVG lives in the repository so the release
|
||||
number stays visible when an external badge service is unavailable.
|
||||
|
||||
The Registry shows notes with each version. They are that version's section
|
||||
of `CHANGELOG.md`, one line per entry: its bold opening, and for a new node
|
||||
the sentence that says what it does (`scripts/changelog_notes.py`). So open
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<p>ComfyUI nodes for image and video work.</p>
|
||||
<p>
|
||||
<img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="MIT License">
|
||||
<!-- The publish workflow creates a GitHub Release for each version.
|
||||
This badge follows it; release_preflight.py checks the source. -->
|
||||
<a href="https://github.com/ausboss/ComfyUI-AusBoss/releases/latest"><img src="https://img.shields.io/github/v/release/ausboss/ComfyUI-AusBoss?label=release&color=00b4aa&style=flat-square" alt="Latest release"></a>
|
||||
<!-- Generated by scripts/release_badge.py. Release preflight checks
|
||||
the badge against pyproject.toml so it cannot silently go stale. -->
|
||||
<a href="https://github.com/ausboss/ComfyUI-AusBoss/releases/latest"><img src="assets/readme/release.svg" alt="Latest release"></a>
|
||||
<a href="https://www.youtube.com/@ausbossdev"><img src="https://img.shields.io/badge/YouTube-%40ausbossdev-00b4aa?style=flat-square&logo=youtube&logoColor=white" alt="YouTube @ausbossdev"></a>
|
||||
<a href="https://discord.gg/RwVxY9Fuaj"><img src="https://img.shields.io/badge/Discord-AusBoss-00b4aa?style=flat-square&logo=discord&logoColor=white" alt="Discord: AusBoss"></a>
|
||||
</p>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="105" height="20" role="img" aria-label="release: v2.21.1">
|
||||
<title>release: v2.21.1</title>
|
||||
<path fill="#555" d="M0 0h48v20H0z"/>
|
||||
<path fill="#00b4aa" d="M48 0h57v20H48z"/>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11">
|
||||
<text x="24" y="14">release</text>
|
||||
<text x="76.5" y="14">v2.21.1</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 425 B |
+1
-1
@@ -9,7 +9,7 @@ import { app } from "../../../scripts/app.js";
|
||||
// Must match `version` in pyproject.toml — scripts/release_preflight.py
|
||||
// enforces it. The backend serves its copy at /ausboss/pack_version; a
|
||||
// mismatch means the browser cached JavaScript from an older install.
|
||||
export const AUSBOSS_JS_VERSION = "2.21.0";
|
||||
export const AUSBOSS_JS_VERSION = "2.21.1";
|
||||
|
||||
export const BRAND = "#00b4aa"; // AusBoss teal — keep node accents consistent.
|
||||
export const BRAND_DARK = "#007f78";
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ name = "ausboss-nodes"
|
||||
# Manager/registry search matches against this text, so it names the actual
|
||||
# nodes instead of describing the collection abstractly.
|
||||
description = "ComfyUI-AusBoss (AusBoss nodes): image and video nodes with compact controls: Image and Video Crop + Rotate + Pad (frame or clip), Load Image + Pad, Image Folder (run a workflow on a folder of pictures), Image Resize, Align Image, Image Size, Color Match, Image Compare A/B, Realign to Source (experimental), Save Image (PNG, lossless WebP/JXL, captions), Load Video, Save Video, Select Frame, Frame Interpolate, Mask Refine, Mask by Name and Mask by Touch (type a name or click a thing, get its mask), LaMa Inpaint, Crop For Inpaint, Stitch Inpaint, Tiled Upscale and Tiled Upscale Stitch, LoRA Loader, Krea 2 Encode and Outpaint Model Patch, Latent Size, Layout Boxes (draw where things and words go), Seed, Select Every Nth, Split Batch, Merge Batches, Text, Integer, Float, Math Expression, Show Text, Free Memory, Workflow Note, Callout (a note with arrows), Workflow Switches, Run Timer, and Step Preview (stop bad runs). Example workflows for Qwen Image 2.1, Krea 2, Klein 9B and LTX 2.3."
|
||||
version = "2.21.0"
|
||||
version = "2.21.1"
|
||||
# comfy-cli serializes this to JSON verbatim, so `file` publishes the literal
|
||||
# string {"file": "LICENSE"} to the registry listing. `text` puts a readable
|
||||
# name there instead. Both forms are supported; the LICENSE file is unchanged.
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Regenerate the repository's release badge from pyproject.toml."""
|
||||
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
from changelog_notes import pyproject_version
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
BADGE_PATH = "assets/readme/release.svg"
|
||||
|
||||
|
||||
def badge_svg(version: str) -> str:
|
||||
if not re.fullmatch(r"[0-9]+\.[0-9]+\.[0-9]+", version):
|
||||
raise ValueError(f"invalid release version: {version!r}")
|
||||
label = f"v{version}"
|
||||
value_width = max(54, len(label) * 7 + 8)
|
||||
width = 48 + value_width
|
||||
center = 48 + value_width / 2
|
||||
return f'''<svg xmlns="http://www.w3.org/2000/svg" width="{width}" height="20" role="img" aria-label="release: {label}">
|
||||
<title>release: {label}</title>
|
||||
<path fill="#555" d="M0 0h48v20H0z"/>
|
||||
<path fill="#00b4aa" d="M48 0h{value_width}v20H48z"/>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11">
|
||||
<text x="24" y="14">release</text>
|
||||
<text x="{center:g}" y="14">{label}</text>
|
||||
</g>
|
||||
</svg>
|
||||
'''
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
target = ROOT / BADGE_PATH
|
||||
target.write_text(badge_svg(pyproject_version()), encoding="utf-8")
|
||||
print(f"Updated {BADGE_PATH}")
|
||||
@@ -9,9 +9,8 @@ Checks:
|
||||
BOM breaks installs silently.
|
||||
2. AUSBOSS_JS_VERSION in js/shared/index.mjs equals the pyproject
|
||||
version, so the stale-browser warning never fires on a fresh install.
|
||||
3. The README release badge reads GitHub Releases and links to the latest
|
||||
release. The publish workflow creates it after the Registry upload.
|
||||
The check guards against a static version or unsupported badge route.
|
||||
3. The repository-hosted README badge matches pyproject.toml and links to
|
||||
the latest GitHub Release. Its image needs no external badge service.
|
||||
4. The Registry archive holds runtime files only. With git it is listed
|
||||
the way comfy-cli packs it - tracked files minus those .comfyignore
|
||||
matches - and every shipped path must sit under the runtime allowlist
|
||||
@@ -40,6 +39,7 @@ import sys
|
||||
|
||||
from changelog_notes import notes_for
|
||||
from registry_contract import git_paths
|
||||
from release_badge import BADGE_PATH, badge_svg
|
||||
from workflow_contract import example_problems
|
||||
|
||||
ROOT = pathlib.Path(__file__).resolve().parent.parent
|
||||
@@ -98,25 +98,19 @@ if pyproject_version:
|
||||
except (OSError, ValueError) as exc:
|
||||
errors.append(f"no release notes for {pyproject_version}: {exc}")
|
||||
|
||||
# --- 3. the README release badge stays dynamic -------------------------------
|
||||
DYNAMIC_BADGE = (
|
||||
"img.shields.io/github/v/release/ausboss/ComfyUI-AusBoss?"
|
||||
)
|
||||
# --- 3. the README release badge matches the version -------------------------
|
||||
try:
|
||||
readme = (ROOT / "README.md").read_text(encoding="utf-8")
|
||||
if DYNAMIC_BADGE not in readme:
|
||||
errors.append(
|
||||
"README.md release badge must use the shields.io GitHub release source"
|
||||
)
|
||||
if f'src="{BADGE_PATH}"' not in readme:
|
||||
errors.append(f"README.md release badge must use {BADGE_PATH}")
|
||||
if 'href="https://github.com/ausboss/ComfyUI-AusBoss/releases/latest"' not in readme:
|
||||
errors.append("README.md must link to the latest GitHub Release")
|
||||
if re.search(r"badge/release-\d+\.\d+\.\d+-", readme):
|
||||
errors.append(
|
||||
"README.md carries a hardcoded release-X.Y.Z badge; use the "
|
||||
"dynamic badge only"
|
||||
)
|
||||
except OSError as exc:
|
||||
errors.append(f"could not read README.md: {exc}")
|
||||
if pyproject_version:
|
||||
badge = (ROOT / BADGE_PATH).read_text(encoding="utf-8")
|
||||
if badge != badge_svg(pyproject_version):
|
||||
errors.append("release badge is stale; run python scripts/release_badge.py")
|
||||
except (OSError, ValueError) as exc:
|
||||
errors.append(f"could not validate the README release badge: {exc}")
|
||||
|
||||
# --- 4. the Registry archive holds runtime files only ------------------------
|
||||
# comfy-cli packs `git ls-files` minus whatever .comfyignore matches, and git
|
||||
|
||||
Reference in New Issue
Block a user