Node Peek 0.5.5 adds individual preview sizing to the Shader Editor.
Select one or more nodes and use Individual Preview Size in the Node Peek sidebar to scale their previews from 25% to 300%. Each node keeps its own size, while multiple selected nodes can be resized together.
Reset Selected restores the selected previews, and Reset All restores every preview to its default size.
Resizing is instant, does not trigger a new render, and never modifies or dirties the .blend file.
Version 0.5.2 adds an optional Normalize Data Previews setting.
It makes HDR maps and values outside the 0 to 1 range easier to inspect by normalizing each RGB channel of data previews.
Shader previews remain unchanged, preserving their lighting, reflections, and cached results.
This release also adds compatibility with the latest Blender Compositor API.
v0.5.1 — safety fix from an internal review of the custom-node feature.
Fixed
No other changes. Full regression suite passes (tests/ in the repository).
v0.5.0 — custom node support (most requested feature).
Added
Changed
An automated regression suite for this feature ships in the repository (tests/), covering per-instance trees, custom nodes inside groups, downstream rendering, and unrenderable node handling.
Thanks to the user who reported this with a precise diagnosis (@trickerse)
v0.4.2 — portability hardening and maintainer documentation.
Fixed
Added
No behavioural or UI changes. Also includes the v0.4.1 review fixes: preferences accessed via package, and the "Render" tag removed.
Thanks for reviewing! Node Peek draws a rendered thumbnail above each node in the Shader Editor. Everything is open source: https://github.com/mlstr0m/node-peek
To keep the UI responsive, previews are not rendered in the main Blender process. Instead the add-on launches one long-lived helper process and feeds it jobs.
subprocess.Popen([bpy.app.binary_path, "--background", "--factory-startup", "--python", <bundled worker.py>, "--", ...]).
See _ensure_worker() in __init__.py. It never runs any other executable,
never a shell (shell=False), and never a path taken from user/file content.worker.py. No code is downloaded, generated,
or eval'd. There is no network access at all (we declare no network
permission).response.json in a temp directory.unregister().files permission)tempfile.gettempdir() /
tempfile.mkdtemp): a small material.blend handed to the worker, and a PNG
thumbnail cache. Old temp files are pruned on startup..blend is never written or marked dirty. To render a material
we serialise just that datablock with bpy.data.libraries.write(...).bpy / gpu / stdlib. Single package, two files (__init__.py,
worker.py).N-panel → Node Peek has Refresh / Clear and a resolution slider.blender --background while a
Shader Editor with a material is open; it idles at ~0 CPU (blocked on stdin)
and is cleaned up when the add-on is disabled.