Toast
A real Windows toast when your ComfyUI job finishes
- image_trigger
You queued a big upscale, alt-tabbed to something else, and now you're refreshing the ComfyUI tab every thirty seconds like a nervous day trader. LiebsToast is the fix: drop it into a workflow and it fires a real Windows notification when that node executes, so you only come back when the job is actually done.
It comes from the same author as ComfyUI-Liebs-Picker, the interactive image-picker node that gets shared on r/comfyui, and it's built to pair with it. The Picker pauses your workflow and waits for you to look at a batch of images; hook a Toast after it and you get pinged the moment it's waiting - instead of discovering your queue has been stalled for twenty minutes. Same trick works at the end of the line, after a VAE Decode or an Ultimate Upscale, to announce "prompt finished." Which is the whole pitch: unattended ComfyUI, minus the tab-watching.
How it works
The mechanism is cleverer than a naive "send a notification" node. The node takes an IMAGE input, but it doesn't care about the pixels - it's a trigger, any image flowing through the graph at that point. The input is marked as a list, so a batch of ten images fires one toast, not ten. When it executes, the Python side asks the ComfyUI frontend "is your tab visible?" and waits for the answer. If you're actively looking at ComfyUI, it stays quiet - you don't need a notification about a window you're staring at. If the tab is in the background, it fires a Windows toast through the windows-toasts library.
Here's the catch, and it's in the README's own "Limitations" section: it's Windows-only. The shipped code has a stub for every other platform that just prints "Not a supported platform" and does nothing. If you're on Linux or macOS, this node is decoration.
The inputs that matter
Everything except the trigger is optional, and only a few are worth touching:
image_trigger- required IMAGE. Wire it from whatever you want to be notified about.title/body- what the toast says. The defaults ("ComfyUI Workflow" / "Attention requested") are useless; change them.duration-longorshort.silent- defaults to true, which quietly surprises people. If you want the notification chime, flip it off.center_on_node-none(default) does nothing; a node title likePreview Imagecenters the graph on that node when you click the toast's View Workflow button;Preview Image|1.4also sets the zoom;selfcenters on the toast node itself.
It has no outputs - it's an end-of-line notification node. There's also a hidden per-tab ID that makes sure the toast routes back to the browser tab that ran the prompt, so if you've got several ComfyUI tabs open, only the right one jumps forward when you click View Workflow.
Install
ComfyUI Manager (search "ComfyUI-Liebs-Toast"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/marklieberman/ComfyUI-Liebs-Toast
Then restart. No models to download - refreshing for once. Its only dependency, windows-toasts, is declared with a os_name == 'nt' marker and Manager pulls it automatically. The optional browser add-on (Firefox and Edge stores; Chrome is "not available yet") adds the View Workflow button that refocuses the tab and centers the graph. Without it, toasts still fire - you just don't get the button.
Where people get burned
- It's Windows-only. Not "mostly Windows, other platforms degraded" - nothing happens at all off Windows.
- No toast if the tab is visible, by design. If you want the ping even while watching, flip Settings → Liebs Toast → "Send a toast even if the page is visible."
- It waits on the browser. The node blocks until the frontend answers its visibility question, and there's no timeout - only a check that throws if you cancel the job. Queue a run with no ComfyUI tab open (headless or API-driven) and it can sit there waiting for a frontend that isn't listening.
- The add-on only runs on
127.0.0.1andlocalhostby default. Access ComfyUI via a LAN IP or a tunnel and you have to grant the domain in the add-on's options before the View Workflow button works.
The name is a lie in the good direction: it doesn't call any API, needs no key, and costs you nothing except one little IMAGE wire. If you babysit long renders on Windows, that's a fair trade for never having to watch the progress bar again.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image_trigger | IMAGE | — | |
| titleopt | STRING | ComfyUI Workflow | — |
| bodyopt | STRING | Attention requested | — |
| durationopt | COMBO | 2 options: long, short | |
| silentopt | BOOLEAN | true | — |
| center_on_nodeopt | STRING | none | — |
Outputs (0)
No outputs