Commit Graph
94 Commits
Author SHA1 Message Date
Ewald 23dcd1c2d9 Add lens/compositing effect nodes and depth-based Defocus, A/B compare on Preview
- Add ImageOpsVignette, ImageOpsChromaticAberration, ImageOpsBloom, and
  ImageOpsLensArtifacts for common lens/compositing effects.
- Add ImageOpsDefocus: depth-driven defocus/bokeh with shaped aperture
  kernels (circle/hexagon/octagon/custom) and highlight bloom.
- Add input_space (srgb/linear) to ImageOpsColorAjust so scene-linear/HDR
  sources aren't gamma-encoded twice.
- Add image_b + compare_mode/wipe_position to ImageOpsPreview for a real
  A/B comparison, plus a separate live on-demand A/B toggle while editing.
- Redesign the live-preview HUD: unified pill-style badges, frame counter
  now shows the real total and hides for single-frame sources, and the
  Output overlay only appears for Pad Out with the real pixel size.
- Align README with the current node set and fix stale blend-mode docs.
2026-09-28 00:19:49 +02:00
Ewald ALOEBOETOE f140064444 docs: specify ImageOps live compositing correction patches 2026-09-27 20:27:09 +02:00
Ewald 7a1ecafc3b Fix preview/backend WYSIWYG bugs and clean up dead code across the pack
- FrameRange: reattach interactive controls on onConfigure instead of
  leaving them permanently dead after a workflow load/undo/paste
- FrameRange: stop silently swapping an inverted trim range in the
  preview - match _timeline_indices' documented zero-frame contract
- Append: bypass no longer concatenates audio/fps from clips that
  aren't part of the bypassed output
- Append: preview loop point now accounts for bypass
- Crop: bypass now returns a full-frame bbox instead of a 2-tuple that
  broke the node's declared 3-output contract
- Channel: shuffle preview now errors like the backend when "Mask" is
  selected without a connected mask, instead of faking success
- host.ts: RAF loop keeps polling instead of stopping for good when
  the canvas is briefly detached from the DOM
- Text: fix drag miscalibration when the preview is zoomed
- Eyedropper: restore picking from any canvas (VHS/WAS previews
  included), only excluding the LiteGraph graph canvas
- video_io.py: stop swallowing comfy_api import failures
- Remove dead code: compat/comfy_v3.py (V3NodeBase), core/parameters.py,
  core/validation.py, dbl-click-reset.ts, unused MEDIA_INPUT_TYPE
  imports, an unreachable fragment in _ensure_rgba
- memory.py: narrow an overly broad except clause
- distort.py: finish the first progress bar before starting the second
- keyer.py: fix inconsistent indentation
2026-09-27 19:50:21 +02:00
Ewald 9b62b3cd6f Track frontend test infra and gitignore local agent config
tests/package.json, tests/scripts/app.js, tests/frontend/node-modules.test.ts,
and tests/__init__.py were untracked but already required by
`npm run test:ts` (tsconfig.frontend-tests.json includes tests/frontend/**/*.ts);
leaving them untracked breaks that script for anyone else cloning the repo.

test_comp_backend.py and test_nodes.py are real test suites sitting directly
under tests/ rather than tests/unit or tests/integration, so CI doesn't
collect them yet; tracked as-is pending that cleanup.

.cursorrules and comfyui_agent.md are personal AI-agent config, not part of
the project; gitignored alongside the existing AGENTS.md/CODEX_TODO.md entries.
2026-09-27 11:59:59 +02:00
Ewald 831b072943 Add professional compositing engines, HDR fixes, and native VIDEO support
Core (nodes/core/): alpha, masks, batch consolidation, blend, transform
matrix, bbox, parameters, validation engines shared across nodes, each with
unit tests.

Fix an unconditional RGB clamp to [0,1] that silently destroyed HDR/negative
values in Merge, Transform, Color Correct, Comp, CornerPin, Distort,
Spherize, Crop Stitch, and the shared masked-compositing helpers. Alpha
stays clamped everywhere; RGB no longer does.

Fix Grain applying `amount` twice in overlay/soft_light modes (quadratic
instead of linear falloff).

Add STMap mode to Distort (absolute UV remap vs relative displacement).
Add bbox output/input wiring between Crop and Crop Stitch. Add edge_grow
and edge_color_match to Crop Stitch. Add despill to Keyer. Add shuffle mode
to Channel (R/G/B/A routed from any source). Add size/luma_response to
Grain. Add grid mode to Constant. Add frame/layer accumulation limits to
Preview and Draw, plus a font-path containment fix and supersampling in
Text.

Make Frame Range and Append recognize a real ComfyUI VIDEO input (not only
this pack's internal media wrapper), preserving true fps/audio instead of
silently dropping them, and add a native VIDEO output alongside the
existing IMAGE output on both.

Add node_replacements.py (empty registry, wired into the extension
lifecycle) for future schema migrations.

Add a CI matrix pinning the verified requires-comfyui floor, and
.comfyignore for Registry packaging.
2026-09-27 11:55:49 +02:00
Ewald ALOEBOETOE bf499d4624 Update pyproject.toml 2026-08-23 23:05:18 +02:00
Ewald ALOEBOETOE 9eae4b71d5 Merge pull request #8 from MajoorWaldi/fix/restore-previews-v3-registry
test: decouple unit tests from ComfyUI and mock integration tests
v0.1.7
2026-08-23 22:54:35 +02:00
MajoorWaldi 711887f7c8 test: isolate pytest rootdir to prevent ComfyUI root initialization 2026-08-23 22:52:56 +02:00
MajoorWaldi 042fbedc91 test: enforce importlib mode and verify unit suite isolation from ComfyUI 2026-08-23 22:41:40 +02:00
MajoorWaldi beac378015 test: reorganize tests to strictly isolate pure unit tests from ComfyUI integration tests 2026-08-23 22:37:31 +02:00
MajoorWaldi 3e90388cf2 test: decouple unit tests from ComfyUI and mock integration tests 2026-08-23 22:31:01 +02:00
Ewald ALOEBOETOE adbcd86549 Merge pull request #7 from MajoorWaldi/fix/restore-previews-v3-registry
test: restructure tests, add integration test suite and update CI
2026-08-23 22:21:27 +02:00
MajoorWaldi 80d56cb114 test: add remaining unit and integration test files 2026-08-23 22:18:44 +02:00
MajoorWaldi 96ae739dca test: add unit and ComfyUI integration tests 2026-08-23 22:15:19 +02:00
MajoorWaldi 3a1279b14f ci: modernize GitHub Actions to v7, enforce strict test guards and expand test suites 2026-08-23 22:08:40 +02:00
MajoorWaldi d2d8a28e56 ci: improve integration environment verification 2026-08-23 21:59:44 +02:00
MajoorWaldi 6e744aada7 test: restructure tests, add integration test suite and update CI 2026-08-23 21:51:51 +02:00
Ewald ALOEBOETOE 3ac78e02ab Update pyproject.toml
Bump version to v0.1.6
2026-08-23 21:44:13 +02:00
Ewald ALOEBOETOE b6ec57a4fe Merge pull request #6 from MajoorWaldi/fix/restore-previews-v3-registry
chore(release): implement hardening (PR 12)
v0.1.6
2026-08-23 21:36:31 +02:00
MajoorWaldi cc11328d5f chore(release): implement Codex 5.6 Sol hardening (PR 12) 2026-08-23 21:24:37 +02:00
Ewald ALOEBOETOE d413ec5bab Merge pull request #5 from MajoorWaldi/fix/restore-previews-v3-registry
Fix/restore previews v3 registry
2026-08-22 16:35:05 +02:00
MajoorWaldi 5b5cb6cb72 fix(nodes): use io.MultiType.Input for image/video inputs and update gitignore 2026-08-22 16:29:40 +02:00
MajoorWaldi 0e23ed7fc7 fix(v3): convert image inputs to io.MultiType.Input[Image, Video]
In the V3 migration, IMAGE/VIDEO inputs were mistakenly converted to io.String.Input with force_input=True. This breaks ComfyUI UI links as they now resolve to STRING inputs.\nReplaced all such instances with native io.MultiType.Input('image', types=[io.Image, io.Video]).
2026-08-22 13:48:34 +02:00
MajoorWaldi ac06dabd89 feat(v3): migrate nodes to native Node 2.0 API and fix ComfyExtension entrypoint
- Refactor 26 nodes to io.ComfyNode with define_schema and execute\n- Implement ComfyExtension subclass with async comfy_entrypoint\n- Preserve majoor_imageops synthetic namespace loader to avoid nodes module collision\n- Update and validate unit, registry and frontend test suites\n- Rebuild frontend dist files
2026-08-22 13:40:04 +02:00
MajoorWaldi 287b98b5dd feat(scripts): extend refactor_frontend.mjs for all modules 2026-08-22 12:26:43 +02:00
MajoorWaldi 3728ceddee fix: clean up duplicate extractions in preview ops 2026-08-22 12:25:14 +02:00
MajoorWaldi 9f3edbe033 feat: complete P3 roadmap tasks (V3 nodes, ImageOpsMedia, HDR support) 2026-08-22 12:21:32 +02:00
MajoorWaldi c10d02aebd chore: P0-P2 implementations (CI gate, Memory budget, MultiType, Golden Parity test) 2026-08-22 11:46:44 +02:00
Ewald ALOEBOETOE b59f70a46e Merge pull request #4 from MajoorWaldi/fix/restore-previews-v3-registry
fix: restore previews and V3 node registration
2026-08-21 22:57:48 +02:00
MajoorWaldi 882c909e6b fix: restore previews and V3 node registration 2026-08-21 22:56:44 +02:00
MajoorWaldi bf76568279 fix(compat): resolve AttributeError for V3 nodes by fetching root_init from sys.modules 2026-08-21 22:25:34 +02:00
MajoorWaldi a93034967e fix(nodes): register all 26 ImageOps nodes in __init__.py and nodes/__init__.py 2026-08-21 22:21:48 +02:00
MajoorWaldi 43a8180131 feat(vnext): complete Immediate First Sprint vNext migration and frontend parity tests 2026-08-21 22:13:27 +02:00
Ewald 40a8002a86 Fix ImageOps preview state and crop stitch 2026-06-12 00:42:31 +02:00
Ewald 9eef24e275 feat(imageops): add Crop Stitch node and improve crop functionality
- Add ImageOpsCropStitch node for cropping and stitching images
- Update ImageOpsCrop node to include a crop mask output
- Implement crop region mask generation for improved cropping functionality
- Update related metadata and widget configuration for new and updated nodes
2026-06-10 12:01:27 +02:00
Ewald ce750057fd fix(preview): improve pointer event handling and preview widget stability
- Add 'lostpointercapture' event listeners to handle pointer capture loss
- Implement reset button for image operations live preview
- Optimize preview widget height calculation to prevent layout jumps
2026-06-09 14:54:08 +02:00
Ewald ee2b519a87 chore: update imageops files and add example All Nodes MIO 2026-06-08 11:57:42 +02:00
Ewald e9183f86a2 fix(preview): improve interaction handling and remove unused features
- Add { passive: false } to event listeners for better control
- Remove color swatches and related logic from constant node
- Reset view instead of fit all in pad-out node
- Refine pan and zoom interactions in preview navigation
- Stop unnecessary event propagation in some cases
2026-06-08 08:11:26 +02:00
Ewald f1e74cef92 feat: Nodes Ui Refacto 2026-05-26 07:52:30 +02:00
Ewald 917509078e feat: optimize canvas context retrieval with willReadFrequently option
- Updated multiple instances in keyer.ts, nodestream.ts, and ops.ts to use the `willReadFrequently: true` option when obtaining 2D rendering contexts from HTMLCanvasElement. This change aims to improve performance when reading pixel data frequently.
- Enhanced navigation.ts to support aborting wheel event listeners using an AbortController.
- Modified state.ts and types.ts to include an optional AbortController in the NodeState interface for better management of event listeners.
2026-05-23 11:14:15 +02:00
Ewald 52a25b40ed Fix append video preview sync and docs 2026-05-21 08:10:34 +02:00
Ewald 980e2933a8 Fix imageops previews and frame count batching 2026-05-20 22:01:50 +02:00
Ewald 2cddb1ba1f fix(preview): include all numeric widgets in compact panel
Remove NATIVE_NUMERIC_WIDGET_NAMES exclusion list (rotate_deg, scale, strength, width, height, rotate). Excluded widgets were left visible as native LiteGraph sliders at the bottom of nodes, creating vertical empty space and duplicate UI (notably CameraShake/Transform/Spherize). Also includes prior session work: P1-P4 UX improvements, video preview anti-blink/anti-stutter fixes in source.ts, README and REFACTO docs cleanup.
2026-05-20 01:12:28 +02:00
Ewald ALOEBOETOE 3801b8b373 Bump version from 0.1.4 to 0.1.5 v0.1.5 2026-05-01 20:15:23 +02:00
Ewald c2f25dcd41 Fix live preview media refresh 2026-05-01 20:03:25 +02:00
Ewald ad937b4873 Merge branch 'main' of https://github.com/MajoorWaldi/ComfyUI-Majoor-ImageOps 2026-04-25 11:22:53 +02:00
Ewald 5149713a62 Add new GIF assets for OpsPaint, OpsSpherize, and OpsTransform
- Added OpsPaint.gif (1539 KB) to the docs directory.
- Added OpsSpherize.gif (1129 KB) to the docs directory.
- Added OpsTransform.gif (1577 KB) to the docs directory.
2026-04-25 11:22:48 +02:00
Ewald ALOEBOETOE 19995be299 Bump version from 0.1.3 to 0.1.4 2026-04-25 02:17:25 +02:00
Ewald e21e526a3e fix: version to 0.1.3 in package.json and pyproject.toml 2026-04-25 01:39:14 +02:00
Ewald f3bb1aa09c chore: add .gitattributes to enforce LF line endings 2026-04-25 01:28:18 +02:00