Nodes/URN_Queue_Viewer/URN Queue Media Viewer
ComfyUI Node

URN Queue Media Viewer

The node is a decoy, the sidebar tab is the whole product

By Clivey1234·Created a day ago·Updated a day ago· 2
URN Queue Media Viewer

      The node you googled does nothing on purpose

      If you searched for URNQueueImageViewer because it showed up as a missing node in some workflow, here's the anticlimax: it's a no-op. The Python class has empty INPUT_TYPES, RETURN_TYPES = (), and a noop function that returns nothing. You can drop it in a graph, and it will sit there doing absolutely zero.

      That's not a bug or an abandoned stub. It's a compatibility shim. URN Queue Media Viewer ships as a frontend extension, and the node exists only so workflows saved against older versions of the pack don't break when they load. The real feature lives in a sidebar tab called URN Queue, which is registered app-wide - you don't add it to a workflow, and it's there whichever workflow you have open.

      So the useful question isn't "how do I wire this node." It's "do I want a queue panel that shows me what's actually waiting."

      Why you'd want it

      Stock ComfyUI's queue is a list of prompt IDs. That's fine when you queue three things and awful when you queue a hundred 15-minute Wan video generations overnight and then forget which run belongs to which workflow and which input image. The community complaint here is old and consistent - people asking for reorder, pause, and a queue that survives a GPU hang got told, essentially, "no, and it's been my top feature wish for years." Tools like ComfyUI Queue Manager fill part of that gap. This one takes a different angle: keep ComfyUI's real queue as the source of truth, and just make it readable, with media attached.

      Each queued prompt becomes one card - not one card per media file, one card per job, with its images, video, and audio grouped onto it, a large primary preview, the originating workflow tab name, queue position, live progress, and buttons. It's the same instinct as rgthree's progress bar: patch the app's ergonomics instead of adding nodes to your graph.

      How it actually works

      The heavy lifting is split. The JavaScript side walks the queued prompt JSON, scanning node inputs up to five levels deep for filename-looking strings and matching them against extension lists for image, video, and audio. Filenames get their [input]/[output]/[temp] suffixes stripped and are served through ComfyUI's own /view route. That's why it doesn't care which loader you use - no VHS, no third-party preview extension, no node-name matching.

      The Python side registers a few local routes on ComfyUI's prompt server, because stock ComfyUI has no public endpoint for reordering or pausing. Reordering sorts the pending heap by (priority, prompt_id), moves the item, then rewrites every pending priority using math.nextafter so ties become strictly increasing - same prompt IDs, same payloads, just a real changed execution order. Pause is cheekier: it monkey-patches PromptQueue.get once, and while a _urn_qiv_paused flag is set, the worker waits on the condition even when jobs are pending. Clear Queue empties only the pending heap. Running jobs are never reordered or touched.

      Workflow tracking is browser-side: it wraps api.queuePrompt, grabs the active tab's title at submit time, and posts the prompt ID → title pair to a local route. Goto Workflow jumps back to that tab if it's still open.

      Installing it

      cd ComfyUI/custom_nodes
      git clone https://github.com/Clivey1234/Comfyui_URN_Queue_Viewer
      

      Restart ComfyUI and hard-refresh the browser (Ctrl-Shift-R) - the sidebar tab is registered by a frontend extension, and a stale cached page is the usual reason it "doesn't show up." It's also on ComfyUI Manager under the pack title, and the README mentions a comfy node install route via comfy-cli. There's no requirements.txt and no model download - the only imports are Python's standard library plus ComfyUI's own aiohttp, server, and execution modules.

      Common issues

      Pause doesn't stop the thing that's running. By design. The current job finishes normally, pending jobs stay queued, and nothing new starts until you resume. If you wanted the GPU back now, that's Delete/Cancel on the running card, which interrupts the active prompt.

      Reorder says the job is no longer pending. The route returns 409 when the item was dequeued between your click and the request. Working as intended - you can't reorder a job that's already executing.

      No preview on a card. Media is found by scanning filename strings in the queued prompt. Exotic widget formats that don't look like paths won't match, and text-only workflows deliberately fall back to a bundled placeholder image.

      Two honest limits. Nothing here is persisted: Clear Queue removes pending jobs with no undo and no save-to-disk, so this isn't your "resume the 200-job batch after a crash" tool. And the pause patch checks for ComfyUI's current PromptQueue internals before installing itself - if a future build renames those fields it falls back to stock behavior instead of breaking queue execution, which means pause quietly stops being available rather than throwing an error you can diagnose.

      CategoryUsefulRandomNodes/Queue

      Inputs (0)

      No inputs

      Outputs (0)

      No outputs