Shima Preview
Copy, Edit, Save on the node
- images
- shima.commonparams
- images
- preview_paths
ComfyUI's built-in Preview Image is fine, but it has one frustrating gap: after you look at a result you like, getting it somewhere useful means right-clicking, saving, dragging files around, or digging through output/. The Shima Preview puts three buttons right on the node - Copy, Edit, Save - so you can grab a result without leaving the canvas.
It's the image-preview node of the Shima (島, island) pack, which wraps workflows into composable subgraphs. That means Preview isn't just a viewer; it's wired into the pack's naming and folder machinery, so your saves land in the right place with workflow and metadata embedded.
How it works
On every execution the node writes the incoming batch to temp PNGs and pushes them to the frontend, where the Copy/Edit/Save toolbar is rendered in JS. The buttons act on the last executed batch via data the node stored server-side:
- Copy - image to clipboard via the JS Clipboard API.
- Edit - opens the image in your external editor.
- Save - writes to disk, embedding the workflow JSON and generation prompt as PNG metadata when
save_with_workflow/save_with_metadataare on (both default true).
Where it saves is the interesting part. If you connect a FileNamer node, its filename and folder_path outputs feed the Save button directly. If you connect shima.commonparams (from Shima.Commons) and keep use_commonparams on, the node assembles a filename from the bundle's project_name, timestamp, and collision_id and a folder from its save_path - so every island in a project can save with consistent, collision-free names.
The inputs that matter
Only images is required - feed it any IMAGE tensor and it works as a plain preview. The optional set is where the magic lives:
filenameandfolder_path- from FileNamer, control where Save writes.shima.commonparams+use_commonparams- pull save defaults from Shima.Commons.save_with_workflow/save_with_metadata- embed the workflow and prompt in saved PNGs (keep these on; it's how you later drag the image back in to reconstruct the graph).
The outputs
images- passthrough of the input batch, so you can keep chaining downstream.preview_paths- STRING, the temp file paths of the previewed images, semicolon-separated. Useful if you want to log or post-process where the previews landed.
It's marked as an output node, so ComfyUI will always execute it (the same "always runs, cache works backwards from here" behavior as core Preview Image).
Install
cd ComfyUI/custom_nodes
git clone https://github.com/KDB-USJP/shima_wf.git Shima
pip install -r requirements.txt
Restart and find it under Shima/Image → Shima Preview. ComfyUI Manager: search "Shima". The pack's installer auto-clones ComfyUI-Impact-Pack and cg-use-everywhere on first boot (the Use Everywhere dependency for island auto-linking) - expected, just not quiet.
Common issues
Two gotchas stand out. First, the Save button works on whatever was last previewed, so if you change the workflow and re-run before clicking Save, you save the new result - which is the correct behavior but a surprise if you expected the button to act on an older image you're looking at. Second, use_commonparams defaults to on; if a stale Commons bundle is connected it can silently redirect your saves to a folder you didn't expect. Check folder_path if files stop showing up in output/. And remember the buttons are frontend-only - they won't appear on the node in an API/headless run, so automation should use the preview_paths output instead.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Images to preview. | |
| shima.commonparamsopt | DICT | Configuration bundle from Shima.Commons (for Save defaults). | |
| filenameopt | STRING | Filename from FileNamer (for Save button). | |
| folder_pathopt | STRING | Folder path from FileNamer (for Save button). | |
| save_with_workflowopt | BOOLEAN | true | Embed workflow in saved image. |
| save_with_metadataopt | BOOLEAN | true | Embed generation metadata in saved image. |
| use_commonparamsopt | BOOLEAN | true | Use Shima.Commons settings if connected |
| allow_external_linkingopt | BOOLEAN | false | If ON, this node broadcasts/receives OUTSIDE the Island (ignores group regex) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | Passthrough of input images. |
| preview_paths | STRING | Paths to preview images (semicolon separated). |