Nodes/ComfyUI-DonutNodes/DonutHotReload
ComfyUI Node

DonutHotReload

The dev node that's intentionally disabled

By DonutsDelivery·Created about a year ago·Updated about 13 hours ago· 25
DonutHotReload
    • status
    actionstart_watching

    Here's an honest one: DonutHotReload is a development utility whose main job in the current release is to not do its job. The node lets you start watching the pack's source files and trigger a live reload so you can iterate on custom node code without restarting ComfyUI every time. But the shipped code disables both watching and reloading - the comments say it plainly: "DISABLED to prevent interference with other extensions." So before you wire this into anything, know what you're getting.

    Why it's disabled is the more interesting story. ComfyUI loads every custom node into one shared namespace. A hot-reload that blindly re-imports modules and re-registers classes is exactly the kind of thing that stomps on another pack's state - the pack author clearly hit that wall, and chose to ship the control surface with the machinery parked rather than remove the node and break saved workflows. That's a thoughtful call, honestly. It also means this is a donut/dev category node: it's for people who fork the pack and poke at the source, not for normal generation workflows.

    How it works

    The single required input is action, an enum with three values:

    • start_watching - in theory starts a background thread that polls the tracked module files' mtimes and reloads them on change. In the shipped build it just prints "Hot reload watching disabled" and returns.
    • stop_watching - stops the (already off) watcher.
    • reload_now - fires an immediate reload attempt, which currently returns "Reload failed" because the reload path is disabled.

    Everything routes through a single global hot_reload object in the pack's hot_reload.py. The status STRING output echoes what just happened, so you can read it in the UI if you have the node in a graph.

    Install

    Same as the rest of the pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/DonutsDelivery/ComfyUI-DonutNodes.git donutnodes
    cd donutnodes
    python -m pip install -r requirements.txt
    

    or ComfyUI Manager → "DonutNodes," then restart.

    Should you use it?

    If you're just generating images: no, skip it entirely - it doesn't do anything useful for you right now, and it's not in any menu you'd browse. If you're developing on the pack itself: it's a reminder that the reliable workflow is still "edit a .py file, restart ComfyUI." Hot reload of arbitrary Python in-process is a genuinely hard problem, and this pack's honest answer - disable rather than risk other people's setups - is the right trade. If you need a real reload-on-edit experience while developing, a better use of your time is the standard dev loop plus importlib.reload in a scratch environment, not this node.

    Categorydonut/dev

    Inputs (1)

    NameTypeDefaultDescription
    actionCOMBOstart_watching3 options: start_watching, stop_watching, reload_now

    Outputs (1)

    NameTypeDescription
    statusSTRING