Skip to content

[QA only, do not merge] Combine video edit/crop PRs #15090, #15147, #15180 - #15409

Draft
claude[bot] wants to merge 8 commits into
masterfrom
qa/video-edit-combined
Draft

[QA only, do not merge] Combine video edit/crop PRs #15090, #15147, #15180#15409
claude[bot] wants to merge 8 commits into
masterfrom
qa/video-edit-combined

Conversation

@claude

@claude claude Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Requested by Christian Byrne · Slack thread

What this is

A QA/testing-only combination branch. It merges three open video-editing PRs together so their functionality can be tested as a whole in one place (and so CI / a preview environment can run against the combined result). This branch is not intended to be merged into master. Please close/leave this PR unmerged once QA is done; it should be treated as disposable.

Source PRs combined

How the #15090 vs #15147 overlap was resolved

Merging #15090 on top of #15147+#15180 produced only one real conflict, plus one competing implementation to reconcile:

Kept:

Dropped:

No other unique, non-conflicting content from #15090 was found to drop — the diff surface between #15090 and #15147 was limited to the metadata-sourcing mechanism described above plus unrelated drift from the two branches being based on different points in master's history.

Sanity checks performed (no full CI available locally)

  • python -m py_compile on every file touched by the merge (app/assets/scanner.py, app/assets/services/{ingest,media_metadata,video_metadata}.py, comfy_api/latest/_input/video_types.py, comfy_api/latest/_input_impl/video_types.py, comfy_api/latest/_io.py, comfy_api/latest/_util/__init__.py, comfy_api/latest/_util/video_types.py, comfy_extras/nodes_video.py, server.py, and the new/changed test files) — all clean.
  • Checked for duplicate route registrations across server.py and app/assets/api/routes.py — none (the competing /video_metadata route was removed).
  • Checked for duplicate node class / node_id definitions in comfy_extras/nodes_video.py — none (SaveWEBM, SaveVideo, CreateVideo, GetVideoComponents, LoadVideo, VideoSlice, VideoTrim, VideoCrop each appear once).
  • Ran tests-unit/assets_test/services/test_video_metadata.py (the unit tests added by feat(assets): extract video metadata into system_metadata on ingest and scan #15180/feat: VIDEO_EDIT input type with asset-backed video metadata #15147 for the merged metadata-extraction code): 13 passed.
  • Ran the broader tests-unit/assets_test/ suite: the metadata/scanning/ingest tests pass; the remaining failures/errors in that directory are pre-existing integration tests that boot a full ComfyUI subprocess and need the full dependency stack (torch, etc.) not installed in this sandbox — unrelated to this merge.
  • comfy_api_test/video_types_test.py / video_bit_depth_test.py couldn't be executed here (missing torch in this minimal environment) but pass py_compile.

jtydhr88 and others added 8 commits July 29, 2026 21:54
Combines the VIDEO_EDIT trim/crop feature with the asset-based video
metadata approach from #15147/#15180. #15090 implemented the same
VIDEO_EDIT node feature (VideoTrim/VideoCrop/LoadVideo edit widget,
DynamicCombo codec, io.VideoEdit type) essentially identically to
#15147, so those files merged cleanly with no functional duplication.

Conflict resolution:
- comfy_api/latest/_input/video_types.py: trivial docstring-only
  conflict on VideoInput.as_cropped(); kept the more descriptive
  docstring from #15090, function body identical on both sides.
- server.py: reverted to master's version, dropping #15090's
  competing `GET /video_metadata` endpoint (and the
  resolve_view_media_path refactor that existed solely to support it).
  That endpoint was #15090's alternative way of sourcing video
  metadata for the frontend widget (live ffprobe via HTTP), which is
  superseded here by #15147/#15180's asset system_metadata extraction
  on ingest/scan. Nothing else in the tree referenced this route, so
  dropping it is safe. No other unique, non-conflicting content from
  #15090 was discarded.
Re-applies the /video_metadata route from PR #15090 (078f0f5), dropped
during the merge in favor of the assets-based metadata approach. It
does not conflict with that work at the route level and closes a
cosmetic gap (fps/file-size estimation) for the VIDEO_EDIT trim/crop
widget during QA.

Implemented as a self-contained handler (duplicating /view's minimal
filename-resolution logic for blake3 asset hashes vs. on-disk paths)
rather than refactoring /view's already-reviewed inline logic into a
shared helper, to keep this QA-only change isolated and low-risk.
# Conflicts:
#	comfy_api/latest/_input_impl/video_types.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants