New ColorMatchingNode (Color Matching Ops): image + reference inputs, one
output. Methods LAB/RGB/Histogram (LAB default) and a target selector
(All/Lightness/Color) that keeps only the matched Oklab lightness or color.
Statistics-only, so inputs may be any size. Live in-node preview.
Filter Ops: add Laplacian Sharpen (4-/8-neighbor kernel) and Unsharp Masking
(Gaussian amount/radius/threshold), with matching JS live previews, widget
visibility, and tooltips.
Layer Blending: rename to Layer Blending Ops, drop the unused preview_ref
output, and make the live preview match the backend exactly (resize fg to bg
size, default opacity 255, per-mode clamp parity) - fixes big mismatches e.g.
Linear Dodge (Add) at high opacity.
Rename Color Matching node display to Color Matching Ops. Raise color-match
preview resolution to 1024 to tighten preview-vs-output stats.
Previews: use widget.last_y to stop the preview box overlapping the last
widget (all nodes, incl. Channel Ops); hide the preview box until a preview
exists; auto-size the node to a sensible preview area on first preview; keep
fresh Filter Ops compact instead of huge with empty space.
README: add per-node preview GIFs (channel_ops/Layer_blend/filter_ops/
color_match) and document the new node/effects; drop the old preview.gif
reference.
New "Filter Ops (live-preview)" node — image_effects.py + image_effects_preview.js.
Adaptive widget UI: only the controls for the current effect are shown.
Effect set:
- Blur (Gaussian / Average / Edge Average) with R/G/B/H/S/V/RGB/HSV/Oklab
source channel selection, hue blurred on the unit circle.
- Halftone with 12 shapes, screen-function + Bayer dithering, angle wheel.
- Color Filter with HSV color wheel (hue + density), preserve-highlights.
- Sharpen (unsharp mask, negative amount = soften).
- Pixelate / Mosaic.
- Posterize with 5 dither modes (None / Bayer / Random / Floyd-Steinberg /
Atkinson), RGB or Luminance space.
- Vignette with draggable center widget.
- Levels with histogram + draggable B/gamma/W handles.
- Color Balance with 3 color wheels (shadows / midtones / highlights).
Custom canvas widgets (color wheels, histogram, vignette center) mirror
the underlying numeric values both ways. effect + blend_mode pinned at the
top with a separator; values for hidden widgets are preserved across
effect switches. Live preview uses requestIdleCallback so the slider stays
smooth on heavy effects.
MASK input added to both nodes — restricts the effect to the masked region
with auto-resize / batch broadcast.
Channel Ops:
- Added Red+Green / Red+Blue / Green+Blue to Source AND Destination.
- Updated channel_ops_preview.js to mirror.
Misc:
- Fixed inverted hue formula in the JS preview's rgb_to_hsv.
- Widget labels show with spaces instead of underscores.
- README rewritten — compact, single page.