Shima Rich Display (Viewer)
The Rich Display viewer
- content_bundle
- content_bundle
ComfyUI's built-in note nodes are plain text boxes, and there's a reason so many packs try to build something richer: when you're sharing or debugging a workflow, a wall of raw text is the last thing you want to read. The Shima Rich Display is the viewer half of the pack's "content bundle" system - it takes a CONTENT_BUNDLE and renders it on the node with real formatting: HTML, Markdown, images, even URLs. It's the counterpart to Shima Content (Supplier), which is where you author the content.
The pair works like a supplier/viewer split: Shima Content defines what to show (type, title, content) and emits the bundle; Rich Display consumes the bundle and renders it. You don't strictly need the supplier - any node that emits a CONTENT_BUNDLE dict with the right keys will feed it - but the supplier is the natural authoring tool.
How it works
The CONTENT_BUNDLE is a small dict with type, title, content, and show_title keys. Rich Display takes it in, forwards it to the frontend for rendering, and passes the bundle through unchanged. The content_type field (set at the supplier) decides how it renders - HTML and Markdown get formatted, URL can embed a link, Image and Video handle media.
One useful touch: title_override lets you relabel the display without touching the underlying bundle - handy when the same content bundle flows into several viewers and you want each one labeled differently.
The inputs and outputs
content_bundle(CONTENT_BUNDLE, required) - the thing to display.title_override(STRING, optional) - a display-only title override.content_bundleoutput - a passthrough of the input, so a display can sit inline in a chain without ending it.
Where it fits
Best use is documentation that travels with a workflow: put a Shima Content node next to a complex island with a Markdown explainer ("this block upscales at 1.5x, then the second pass denoises at 0.5"), render it with a Rich Display, and anyone who opens the workflow gets readable instructions instead of hunting through node titles. In a shared or tutorial workflow that's genuinely valuable. If you just want a quick sticky-note-style label, it's heavier than a core note node - reach for the pack's Dymo Label or plain notes instead.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/KDB-USJP/shima_wf.git Shima
pip install -r requirements.txt
Restart, then Shima/Utilities → Shima Rich Display (Viewer). ComfyUI Manager: search "Shima". First boot auto-clones ComfyUI-Impact-Pack and cg-use-everywhere if missing (Use Everywhere is the island auto-linking backbone) - expected.
Common issues
The classic error is wiring the wrong dict in: CONTENT_BUNDLE is a typed socket, but any DICT-shaped object with the right keys can type-check while missing type or content, and the renderer will show an empty box rather than an error. Also, the content is rendered client-side - a headless/API run will execute the node but there's no canvas to draw on, so don't rely on it as your only record of a run. The pack is new with little community signal, so when formatting looks off, the rendering code in the JS side is where the answer lives.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| content_bundle | CONTENT_BUNDLE | — | |
| title_overrideopt | STRING | — | |
| allow_external_linkingopt | BOOLEAN | false | If ON, this node broadcasts/receives OUTSIDE the Island (ignores group regex) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| content_bundle | CONTENT_BUNDLE | — |