- 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
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.