Changelog¶
Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[5.0.0-alpha.2] — Hardening & Optimization Engine¶
Added¶
- Config-driven optimizations —
optimizations.packages[]independencies.jsonreplaces hardcoded Triton/SageAttention logic. Supports per-platform packages, GPU/OS filters (requires), torch version constraints, and retry options. Adding a new optimization = 1 JSON block, zero Python code. - FlashAttention — added as a Linux+NVIDIA-only package via the new optimization engine.
skip_step()logger —InstallerLogger.skip_step()decrementstotal_stepsand logs a dimmed message when a step is conditionally skipped, keeping the progress counter accurate.- 80 new tests — 6 new test files covering
commands,prompts,nodes,updater,gpu, anddownloadmodules.
Changed¶
- Docker: CUDA 13.0 runtime — base image changed from
python:3.12-slim(CPU-only) tonvidia/cuda:13.0.2-runtime-ubuntu22.04for full RTX 50X0/40X0/30X0 GPU support. - Docker: standalone uv — replaced
pip install uvwith the standalone binary viacurl(matches bootstrap approach). - Docker: fast startup — replaced
user: root+chown -Rat every boot withuser: "1000:1000"(fixed UID created at build time). - Error handling —
SystemExit(1)in updater replaced withInstallerFatalErrorfor consistent error handling. - Explicit
cuda_tag— removed hardcoded"cu130"defaults frominstall_core_dependencies,install_python_packages,install_wheelsfunction signatures. - macOS PyTorch — improved package detection to derive names dynamically instead of relying on fragile string matching.
- Install.sh — aligned with
Install.batby adding--python-preference only-systemas first venv creation attempt. - CI coverage threshold — bumped from 55% to 70%.
Fixed¶
- Updater step counter becoming inaccurate when
custom_nodes.jsonis missing (now usesskip_step()). - Logger singleton state leaking between tests (added
autousereset fixture inconftest.py). - Redundant import of
CommandErrorinnodes.py. - Extra blank lines between functions in
environment.py.
[5.0.0-alpha.1] — Python Rewrite¶
Added¶
- Universal Hardware Support — Auto-detects and configs PyTorch for NVIDIA (CUDA 13.0/12.8), AMD (ROCm 7.1/DirectML), and Apple Silicon (MPS).
- Full Python CLI (
umeairt-comfyui-installer) replacing all PowerShell scripts — commands:install,update,download-models,info,version. - Cross-platform support — Windows (.bat), Linux/macOS (.sh) launchers and installer scripts.
- Pydantic configuration — typed, validated config models for
dependencies.jsonand user settings. - Verbose mode (
-v/--verbose) — hides pip/git subprocess output by default, shows with flag. - Step counter —
[Step X/12]progress indicator across both installation phases. - Additive-only node manifest (
custom_nodes.json) — replaces destructive snapshot system. User-installed nodes are never removed. - Git clone retry — 3 attempts with 300s timeout, shallow clone (
--depth 1) on retries 2+. - Internalized Triton/SageAttention — version-constrained installation based on PyTorch compatibility matrix (inspired by DazzleML).
- Unified model downloader — catalog-driven system replacing 8 separate PowerShell scripts.
- Launcher generation — 4 scripts generated at install time: Start (Performance), Start (LowVRAM), Download Models, Update.
- Bootstrap version detection —
Install.bat/Install.shcompare installed vs repo version and prompt before updating. - GPU info command —
umeairt-comfyui-installer infodisplays GPU, VRAM, Python, and tool versions. - Agentic documentation —
AGENTS.md,.cursorrules,docs/codemaps/with mermaid diagrams. - 374 automated tests — unit and integration tests with pytest, 70% coverage.
- CI/CD pipeline — Fast PR linting/testing matrix (
ci.yml), plus a rigorous E2E manual workflow (integration.yml) that spins up a Windows VM, does a full install, and stream-validates all PyTorch/tool SHA-256 hashes. - Docker support —
Dockerfile+docker-compose.ymlwith CUDA 13.0 runtime and--skip-nodesfor lightweight images. Custom nodes installed at runtime via entrypoint into persistent volumes. Docker CI smoke test in GitHub Actions. - Model security scanner —
scan-modelsCLI command usingpicklescanto detect malicious pickle code in.ckpt/.pt/.pthmodel files. Non-blocking warning integrated into the update flow.
Changed¶
- Architecture: Migrated from PowerShell (
.ps1) to Python (src/), reducing ~3700 lines of scripts. - Installer Isolation: The bootstrap script (
install.bat) now creates a dedicated, isolated.installer_venvto prevent polluting the global Python environment. - Path Mapping Engine: The internal
PATH_TYPE_MAPis now decoupled, allowing paths to be dynamically defined viamodel_manifest.json. - Node management:
custom_nodes.json(JSON manifest) replacescustom_nodes.csv+snapshot.json. - Dependency management:
uvas primary package manager withpipfallback. - Logging:
InstallerLoggerwith 4 levels (step/item/sub/info) replacingWrite-LogPowerShell module.
Removed¶
- All PowerShell scripts (
.ps1,.psm1) — replaced by Python. snapshot.json— replaced by additive manifest.custom_nodes.csv— replaced bycustom_nodes.json.whl/directory (28 MB of bundled wheels) — now downloaded via URL.- External script download for Triton/SageAttention — security risk eliminated.
- Old root
.batlaunchers — now auto-generated at install time.
Security¶
- Eliminated external script execution — no more downloading
.pyfiles from the internet and running them. - Secure subprocess calls — all commands use explicit argument lists (no
shell=True). - HTTPS only — all download URLs validated.
Fixed¶
- Double arrow prefix on uv/pip install log lines.
- Step counter overflow (was showing 10/9).
- Verbose flag not working with lowercase
-v. - Duplicate log lines for uv/pip commands.
- Git clone timeouts on larger repositories.
[4.x and earlier] — PowerShell Era¶
See git history for the original PowerShell-based installer. Notable milestones:
- CUDA 13.0 support
- Miniconda integration
- Triton/SageAttention compilation
- Multi-model download scripts (FLUX, WAN, HiDream, LTX, QWEN)
repo-config.jsonfor fork customization- Junction-based architecture for clean updates
- CVE-2025-69277 fix (path traversal)