Repository navigation
Releases: jimlee2048/comfyui-docker-helper
Release list
v0.16.0
Highlights
- Build custom nodes from a local source directory with
type = "local". cdh applies the source root's.dockerignoreand copies selected files into a self-contained build context, which can be built without the original source directory. Local nodes run in declaration order alongside Git and Registry nodes. (#73) - Use pre-install hooks to prepare a local node's root
requirements.txtor optionalinstall.py, then run post-install hooks after successful installation. Existingfilesmappings can overlay node files afterward without automatically reinstalling dependencies. (#73) - Enable
content_lock = trueto bind the selected local source content before installation. After editing selected source files, render again and rebuild the updated context. See local-node capture and locking and custom-node configuration. (#73) - Update the isolated
uv_buildpackaging backend to 0.12.24 and refresh the setup-uv, upload-artifact and download-artifact Actions used for CI and package publication. (#75, #76, #77, #78, #79, #80)
Using local custom nodes
[[comfyui.custom_nodes]]
type = "local"
source = "./my-custom-node"
target_dir = "my-custom-node"
content_lock = trueRelative source paths resolve from the configuration file that declares the node. Keep the source directory available while rendering; the resulting context contains its selected source snapshot. Content locking protects that input and does not constrain changes subsequently made by trusted hooks or installers.
Full changelog: v0.15.0...v0.16.0
v0.15.0
Highlights
- Read retained runtime output with
cdh container runtime logs, select recent lines with--tail, and continue watching with--follow. History remains available across a ComfyUI restart, and recorded files survive an ordinary restart of the same container. Original container stdout and stderr remain separate for Docker's logging backend. (#69) - Patch a Git custom node's requirements or
install.pybefore automatic installation. Git nodes now executepre_clone_hooks, prepare and verify their checkout, runpre_install_hooks, install requirements and the optional installer, then run success-onlypost_install_hooks. (#70) - Find image-build helpers under the
cdh container buildcommand group, with simpler names and image-owned installer defaults. (#71) - Update the isolated
uv_buildpackaging backend from 0.12.5 to 0.12.7. (#66)
Upgrade notes
This alpha release changes command paths and Git hook timing. Update scripts and hook configuration before rebuilding images.
- Replace
cdh container runtime followwithcdh container runtime logs --tail 0 --followto preserve live-only viewing.logs --followwithout a tail limit also replays all retained history. - Git
pre_install_hooksnow run after source preparation. Move existing work that must happen before cloning topre_clone_hooks. Registry hooks keep their existing Manager execution boundaries. - Add the
buildgroup to image-build helper commands. Renamevalidate-local-treestovalidate-tree-targetsandemit-final-manifesttowrite-final-manifest; for example, usecdh container build write-final-manifest. - Remove explicit installer
--constraintsand--build-hooks-directoryoptions; installers use the image-owned paths. Regenerate rendered build contexts when adopting the new helpers. - Runtime log recording defaults to rotating files under
/var/log/cdhalongside bounded memory history. Use[cdh.logs]to choose recording and retention settings. To retain files across container replacement, mount persistent storage with the required ownership and private-directory permissions. Recording settings take effect when the container starts; a ComfyUI-only restart keeps the active settings. See the runtime log guide.
Full changelog: v0.14.0...v0.15.0
v0.14.0
Changed
- Add Docker-style local directory inputs:
[[files]]entries withtype = "local"can now copy an entire directory's contents into an exact image target while preserving nested files, hidden files, and empty directories. #65 - Unify HTTP and local file configuration around
type,source, and a completetargetpath across build-time and runtime inputs. This intentionally replaces the previous HTTPurl/target_dir/filenameand local single-file configuration without compatibility aliases. #65 - Extend content locking, build planning, private context materialization, and final image verification to cover complete local directory trees while keeping host source paths out of portable artifacts. #65
Full changelog: v0.13.2...v0.14.0
v0.13.2
Changed
- Make rendered Dockerfiles easier to inspect and troubleshoot by organizing build work into semantic phases and consolidating redundant installation checks into final image verification. #62
- Improve uv-backed image builds with a reusable managed-Python cache, concurrency-safe shared cache mounts, and explicit copy-based package materialization while keeping those build-only settings out of runtime images. #62
Full changelog: v0.13.1...v0.13.2
v0.13.1
Fixed
- Preserve synchronous and asynchronous runtime download completion results when shutdown cleanup begins only after the admitted downloads have already succeeded, avoiding missing completion output despite complete files and persisted state. #60
Full changelog: v0.13.0...v0.13.1
v0.13.0
What's changed
- Reorganize the package around clearer configuration, build, runtime, process, presentation, and filesystem ownership boundaries, making future changes easier to isolate and maintain. #57
- Simplify validation and runtime responsibilities and remove obsolete internal paths and fallback branches while preserving the documented CLI, configuration, serialization, security, and runtime behavior. #57
Quality and maintenance
- Reorganize tests by layer and behavior owner, remove redundant or implementation-coupled checks, and strengthen architecture, cross-platform, import, packaging, and acceptance evidence. #57
- Synchronize package metadata for the
0.13.0release. #58
The documented cdh CLI and configuration formats remain unchanged. Internal Python module paths were reorganized and are not compatibility interfaces.
Full changelog: v0.12.0...v0.13.0
v0.12.0
What's changed
- Preserve the effective container-start environment in authenticated root SSH sessions, keep per-connection
TERMandSSH_AUTH_SOCKunder OpenSSH ownership, and make login shells start inWORKSPACEwith barecdhanduvavailable when/opt/uv/binremains onPATH. #55 - Add consistent quiet, normal, verbose, and debug output behavior; observable host, render, build, download, and runtime progress; durable noninteractive output; and safer user-facing diagnostics. #52
- Support container timezones by installing
tzdataand propagating configured or runtime-overriddenTZvalues. #49
Maintenance
Full changelog: v0.11.1...v0.12.0
v0.11.1
What's changed
- Fix custom-node build isolation and final-manifest projection for dependencies that require project-owned Python and PyTorch package sources. #47
- Support pip-compatible whole-line and inline comments in ComfyUI, Manager, and custom-node requirements files. #46
- Preserve supported compiler, linker, and CUDA toolchain variables during managed application and custom-node package builds. #45
Full changelog: v0.11.0...v0.11.1
v0.11.0
Highlights
- Accept standard named Python dependency specifiers in
python.extra_packages,python.uv_tools, andpytorch.extra_packages. The fields now usepackaging.Requirementas their syntax authority instead of the previous project-specific selector whitelist. - Add named direct references for public HTTP(S) packages and public
git+http(s)repositories. This includes wheel releases such as SageAttention when written aspackage-name @ https://.../package.whl. - Add target-aware environment markers and support the standard selector forms handled by
packaging, including wildcard, prerelease, development, local-version, arbitrary-equality, and multi-clause specifiers.
Package source behavior
- Evaluate markers against the configured Linux/amd64 CPython image target before package ownership and resolution. Inactive requirements are not resolved or installed as direct inputs.
- Preserve each active authored direct source through resolution and image installation, while continuing to verify the exact installed top-level distribution name and version.
- Allow non-foundation PyTorch extras to use their own direct sources.
torch,torchvision, andtorchaudioremain protected by the selected PyTorch index and cannot be replaced with direct references. - Keep configured uv tools isolated while allowing the same named selector, marker, and direct-reference forms.
Supported boundaries
- Direct references support
http,https,git+http, andgit+httpssources with a valid host and no URL user information. - Bare URLs, local paths,
file:andgit+file:references, SSH sources, editable requirements, requirement-file options, and other raw installer options remain unsupported. - Dependency strings are ordinary build configuration, not a credential channel. Do not place secrets in their path, query, or fragment.
Lock and replay semantics
- Every target-active direct reference is treated as moving input when upgrading a lock.
- Locks continue to bind the authored request to the exact resolved top-level distribution identity; they do not become artifact locks for URL bytes, redirects, wheel tags, hashes, transitive graphs, or VCS commits.
- Locked host reconciliation does not contact a direct source, but a later image build may still need to fetch and install it.
Existing name-based package declarations continue to work. Use the standard named form for direct packages, for example:
[python]
extra_packages = [
"sageattention @ https://github.com/jimlee2048/SageAttention/releases/download/v2.2.0/sageattention-2.2.0+cu130torch2.13-cp39-abi3-linux_x86_64.whl",
]Regenerate current lock data and rendered build contexts after upgrading so they use the v0.11.0 request and BuildPlan models.
Full Changelog: v0.10.0...v0.11.0
v0.10.0
Highlights
- Add authoritative host-local build files. A typed
[[files]]entry can place a relative or absolute host file at an explicit ComfyUI target, optionally lock its SHA-256 identity, and use copy-on-write context materialization where supported without retaining the host locator in cdh-owned serialized build evidence. - Add Bearer authentication for private HTTPX downloads, including Hugging Face private or gated repositories. Named Secrets remain separate from credential routes, credentials are selected for each actual request and redirect by the longest matching URL path, and unmatched redirects receive no cdh-managed authorization value.
- Keep the canonical BuildPlan as an ephemeral build input. Build helpers still verify the exact Plan digest, while the cdh-owned final image filesystem retains only the final manifest binding instead of the complete Plan.
Build and runtime behavior
- Make build-time file placement authoritative: HTTP downloads atomically replace their declared targets, and local files use
COPY --link --chmod=0644. Build file declarations no longer share runtime overwrite policy. - Add bounded-memory local-file admission and materialization on Linux and Windows, with
auto,clone, andcopycontext modes. Optionalcontent_lockenables SHA-256 lock and replay verification; the default avoids a planning-time hash for large files. - Keep host-local sources build-only. Only HTTP file declarations become baked runtime defaults, while runtime configuration accepts HTTP files and retains its independent
overwritebehavior. - Support independent build and runtime downloader credentials. Build secrets are mounted only into the download instruction; runtime secrets are read lazily from deployment-provided environment variables or absolute container file paths and are refreshed with each runtime generation.
- Restrict authenticated downloads to HTTPX so redirects can be authorized per request without forwarding a Bearer token outside its declared protection space. Public downloads continue to support both HTTPX and aria2.
Breaking configuration changes
- Every host and runtime
[[files]]entry now requirestype = "http"or, for host build configuration only,type = "local". - Rename the file target field from
dirtotarget_dir. - Remove
overwritefrom host/build file declarations. Build inputs are authoritative; runtime configuration continues to supportoverwrite = falseby default. - Regenerate existing rendered contexts and current-only lock artifacts after upgrading. Build downloader routes and Secret source definitions are not baked into runtime configuration, so authenticated runtime downloads must declare their deployment-time routes and Secret sources independently.
Full Changelog: v0.9.0...v0.10.0