chore: add release workflow and third-party tracking scaffold
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project should be documented in this file.
|
||||
|
||||
The format is inspired by Keep a Changelog and SemVer.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- Initial release/process scaffolding:
|
||||
- `docs/RELEASE_WORKFLOW.md`
|
||||
- `docs/REPO_AUDIT_2026-02-14.md`
|
||||
- `third_party/THIRD_PARTY.md`
|
||||
- `third_party/forks_manifest.yaml`
|
||||
- `tools/report_mods.py`
|
||||
|
||||
## [0.1.0] - 2026-02-14
|
||||
|
||||
### Added
|
||||
- Project-level release/versioning strategy and third-party tracking scaffold.
|
||||
@@ -22,6 +22,14 @@ The code for the Easy Resize node is inspired by the Resize Image V2 node from C
|
||||
- **Error Handling**: Fallbacks for missing/invalid JSON in Wan 2.2 Easy Prompt; validation for aspect ratios and divisibility in Easy Resize.
|
||||
- **Compatibility**: Works with ComfyUI-Manager for easy installation via Git URL. No additional dependencies beyond standard Python and ComfyUI libraries.
|
||||
|
||||
## Release & Stability
|
||||
|
||||
For production usage, install a pinned stable tag/commit instead of following moving branch heads.
|
||||
|
||||
- Release workflow: `docs/RELEASE_WORKFLOW.md`
|
||||
- Change history: `CHANGELOG.md`
|
||||
- Third-party tracking: `third_party/THIRD_PARTY.md`, `third_party/forks_manifest.yaml`
|
||||
|
||||
## Installation
|
||||
### Via ComfyUI-Manager (Recommended)
|
||||
1. Open ComfyUI and access the Manager interface.
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# Release Workflow (Stable + Dev)
|
||||
|
||||
This project supports production users, so releases should be predictable.
|
||||
|
||||
## Branches
|
||||
|
||||
- `main` → active development
|
||||
- `release/stable` → tested commits only (optional but recommended)
|
||||
|
||||
If you do not want two long-lived branches yet, keep using `main` and only publish tested tags.
|
||||
|
||||
## Versioning (SemVer)
|
||||
|
||||
Use tags in the format `vMAJOR.MINOR.PATCH`:
|
||||
|
||||
- `v1.0.0` = first stable release
|
||||
- `v1.0.1` = bugfixes only
|
||||
- `v1.1.0` = new backward-compatible features
|
||||
- `v2.0.0` = breaking changes
|
||||
|
||||
## Minimal Release Checklist
|
||||
|
||||
1. Confirm node load on a clean ComfyUI install
|
||||
2. Confirm key workflows still run
|
||||
3. Update `CHANGELOG.md`
|
||||
4. Create and push annotated tag:
|
||||
|
||||
```bash
|
||||
git tag -a vX.Y.Z -m "Release vX.Y.Z"
|
||||
git push origin vX.Y.Z
|
||||
```
|
||||
|
||||
5. Publish GitHub release notes (what changed, tested matrix, known issues)
|
||||
|
||||
## Production Install Recommendation
|
||||
|
||||
Users in production should install by tag (not moving branch heads).
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
git clone --branch v1.0.0 https://github.com/malkuthro/ComfyUI-Koolook.git
|
||||
```
|
||||
|
||||
Or in ComfyUI Manager, pin to a known stable tag/commit.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Repo Audit — 2026-02-14
|
||||
|
||||
## Summary
|
||||
|
||||
The repository is functional but currently mixes multiple concerns (custom nodes, workflow assets, local environment artifacts, and experiments). This increases maintenance risk for production users.
|
||||
|
||||
## Findings
|
||||
|
||||
1. **Mixed-purpose layout**
|
||||
- Root contains node source, workflows, utility projects, docs, and assets.
|
||||
- Recommendation: gradually separate into clear areas (e.g. `nodes/`, `workflows/`, `runpod/`, `docs/`).
|
||||
|
||||
2. **Environment artifact present (`.venv/`)**
|
||||
- `.venv` is ignored by `.gitignore`, but still exists locally.
|
||||
- Recommendation: keep untracked; never commit virtual env artifacts.
|
||||
|
||||
3. **Release policy not explicit**
|
||||
- No formal SemVer/tag workflow documented.
|
||||
- Addressed by adding `docs/RELEASE_WORKFLOW.md` and `CHANGELOG.md`.
|
||||
|
||||
4. **Third-party modifications not centrally tracked**
|
||||
- Some code is derived/modified from external repos.
|
||||
- Addressed by adding `third_party/THIRD_PARTY.md` and `third_party/forks_manifest.yaml`.
|
||||
|
||||
## Immediate Next Steps
|
||||
|
||||
1. Fill `third_party/forks_manifest.yaml` for each external-derived node.
|
||||
2. Publish first stable tag after verification.
|
||||
3. Add CI release checks later (optional phase).
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
# Third-Party Code & Attribution
|
||||
|
||||
Use this file to track external repositories, licenses, and local modifications.
|
||||
|
||||
## Entry Template
|
||||
|
||||
- Name:
|
||||
- Upstream repo URL:
|
||||
- Upstream commit/tag used:
|
||||
- License:
|
||||
- Local path(s):
|
||||
- What changed locally:
|
||||
- Why changed:
|
||||
- Last reviewed:
|
||||
|
||||
## Notes
|
||||
|
||||
- Keep this file updated when syncing upstream changes.
|
||||
- If a node is heavily modified, document behavior differences clearly for users.
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
version: 1
|
||||
updated_at: "2026-02-14"
|
||||
entries:
|
||||
- id: "easy_resize_inspiration"
|
||||
name: "Easy Resize (inspired component)"
|
||||
source_repo: "https://github.com/kijai/ComfyUI-KJNodes"
|
||||
source_ref: "unknown"
|
||||
local_paths:
|
||||
- "k_easy_resize.py"
|
||||
status: "modified"
|
||||
license: "unknown"
|
||||
notes: "Inspired by Resize Image V2; verify exact upstream commit/license metadata."
|
||||
|
||||
- id: "promptjson_integration_reference"
|
||||
name: "PromptJSON interoperability reference"
|
||||
source_repo: "https://github.com/NeuralSamurAI/ComfyUI-PromptJSON"
|
||||
source_ref: "n/a"
|
||||
local_paths: []
|
||||
status: "reference_only"
|
||||
license: "unknown"
|
||||
notes: "No vendored code; integration reference in docs/workflows."
|
||||
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Simple report for third-party modification tracking.
|
||||
|
||||
Reads third_party/forks_manifest.yaml and prints a short summary for maintainers.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
try:
|
||||
import yaml
|
||||
except Exception:
|
||||
print("Missing dependency: pyyaml\nInstall with: pip install pyyaml", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
repo_root = Path(__file__).resolve().parents[1]
|
||||
manifest_path = repo_root / "third_party" / "forks_manifest.yaml"
|
||||
|
||||
if not manifest_path.exists():
|
||||
print(f"Manifest not found: {manifest_path}")
|
||||
return 1
|
||||
|
||||
data = yaml.safe_load(manifest_path.read_text(encoding="utf-8")) or {}
|
||||
entries = data.get("entries", [])
|
||||
|
||||
print("Third-party modification report")
|
||||
print("=" * 34)
|
||||
print(f"Manifest: {manifest_path}")
|
||||
print(f"Entries: {len(entries)}\n")
|
||||
|
||||
for i, entry in enumerate(entries, 1):
|
||||
print(f"{i}. {entry.get('name', entry.get('id', 'unnamed'))}")
|
||||
print(f" id: {entry.get('id', '-')}")
|
||||
print(f" status: {entry.get('status', '-')}")
|
||||
print(f" source: {entry.get('source_repo', '-')}")
|
||||
paths = entry.get("local_paths", []) or []
|
||||
if paths:
|
||||
print(" local paths:")
|
||||
for p in paths:
|
||||
print(f" - {p}")
|
||||
else:
|
||||
print(" local paths: (none)")
|
||||
print()
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user