Further migrations to video parameters had broken display of output
videos when an old workflow is loaded. This is fixed.
When the refresh button was clicked in ui, the custom size options of
Load Video were overwritten and lost. When the refresh button is
clicked, the custom size options are now readded properly.
Fix params being uninitialized on migrated workflows
Fix null filename when performing a right click -> save on a video
Fix edge case in paths of a specific length causing console spam
The toggle for saving metadata has been changed back to a boolean
instead of a combo. While I wished to provide for future compatibility,
the change broke existing workflows and there was no accommodating
implementation to load metadata saved under a different tag.
The log level for ffmpeg preview processes has been raised to fatal.
There's a good chance this will make debugging harder for users when
errors arise, but aborted requests were too common for the error
messages produced by them to be acceptable.
Format widgets for ints are now properly rounded.
Load Images had a typo prevent it's extension filter (of nothing) from
applying
Audio inputs and outputs now consistently use lowercase audio as a
description and have a format name of VHS_AUDIO. While other extensions
could share the audio type name, they would not pass functions.
Previously when using ffmpeg to load a video, care was needed to ensure
that the first frame was index 0, but the frame at 1s was the first to
appear after 1s. This should now be fixed.
The js code for load video nodes now passes the extension as part of the
format so that gifs and webps can be properly distinguished between when
deciding if an advanced preview should be loaded.
Fixed a mistake in serialization of custom height on load video nodes
Add "-b:v" flag to webm format, resolves#78
Fixes Video Combine to provide an output usable outside the ui,
a list of files produced, resolves#57
Fix error in file path safety checks across drives on windows
Fixes for preview generation when backing file has audio
Don't scale video previews above their base resolution
Implement select_every_nth for advanced previews
Fix regression with improper callback checking on Load Audio
Reorder Load Audio in node mappings to not be grouped with image nodes
Video Combine now returns a list of output files:
Partial fix for #57
Move safety checks to single shared function, added opt out by
environment variable. Easier methods are being considered
Modifications to viewvideo endpoint to work with paths instead of
standard methodology
Return an empty list of options instead of an error status for path
suggestions in an attempt to further reduce console spam.
Substantial js refactoring to simplify preview logic and
compartmentalize code that is shared between upload and path nodes
Enable path suggestions for Load Images
Add masks equal to image size if any image has masks
This causes images with masks to function as expected and those
without to remain fully opaque.
Special thanks to @miaoerduo
Fix counter regex to work with audio outputs
Fix extension not being set for animated image outputs
Reductions to extraneous preview loads
Prevent new preview code from applying to webp files
save_metadata is now a format flag
- This allows saving to different tag and hides for image formats
Implement high bit depth support
- Disabled by default, but works for images and has shown in testing to
produce objectively higher quality output than base Save Image
Fix target_size from load video not applying when 2 dimensions are set
When an input video is scaled to a new aspect ratio, it is now cropped
Removed try wrapping of load video nodes. This creates more confusion
now a system of fallbacks isn't used
A fix for parsing format_widgets when applied outside a '_pass'
Fixed missing import of logger in utils
Animated images are now included in the animated preview code
- This improves performance and allows for pausing
Cleaned up injection of code to load metadata
Switch to new path widget code on remaining nodes
Performance tuning on video preview code
Surround preview code in try block in case request is closed
- May warrant a future pass, but ffmpeg errors will still log to console
Swap lack of common path in get_path to status=403
- This was mostly made to ease future changes to common path behaviour
Simplify the value field of preview widget.
- Reduces complexity and lessens duplicate requests on first loa
Introduce ui setting for advanced previews
- Reliability is shakey, so it's better kept as opt-in for now
Previews are properly integrated and apply to Video Combine nodes
More advanced formatting code when a path is too long to display
Reduced console spam from path suggestions
A number of nodes take a path as input.
This commit gives a search box with a list of valid files and folders
It also provides support for quickly selecting from valid options by
clicking or pressing tab.
Completion options are currently only suggested for subfolders of
comfyui, but this is easily changeable.
While having the optional arguments passed is non-trivial, there's an
easy fix to get retrieve all params sent from the client.
Substantial changes to how formats are stored on the backend to ensure
that the extra data isn't displayed in the dropdown list or upon
clicking the "Refresh" button in the ui.
Update most existing existing formats to expose options as widgets
Combo widgets which use the first item instead of a default field are
now successfully reloaded if not defined.
Fixed a minor IOB from combo inputs having only a single element in
their definition
The old preview method stored the url instead of the params.
This makes it non trivial to parse whether it was to an image or video.
For safety, this information is instead discarded.
computeSize now calculates directly from the nodes width instead of
saving the width from the last draw operation. This fixes a race
condition when a video loads before the draw frame occurs.
the paused and hidden state of a preview widget are now serialized as
part of the vlaue. This means they survive reload or restoring a
workflow. Addionally, videos are paused before being hidden to improve
performance on some browsers.
A frustrating amount of digging with an awfully simple solution.
The current selected widget for mouse events is held in
app.canvas.node_widget.and clearing it prevents the continued
propagation of move events to parent widgets.
Also provides a minor fix for canceled file uploads
When a Load Video node is added, the default video selection is now
properly displayed with a preview.
Context menu options now consistently use preview instead of video as
the actions apply to animated images as well.
With the preview element no longer named as inputEl, the pertinent code
that would hide the element when off screen no longer applied.
This is fixed and has the added benefit of preventing dangling
video elements even when a multiline widget has not yet injected it's
own fix.
While the new KV state storage should prevent the need for this in the
future and there's a degree of error checking, it would be particularly
poor optics for the system to break all existing workflows on release.
This adds a couple of migratory functions that carefully check and
manage the transitions for the two nodes that break.
The onRemoved code for the preview widget wasn't actually firing, so the
callback has been moved to the node.onRemoved.
The file-input's created for nodes that support uploading were never
removed and have been corrected by the same method.
When a video is generated that can not be displayed in browser
(those using the h265 codec), the preview is now hidden
The 'video' field of Load Video (Upload) is now properly initialized
Context menu options for video previews have been moved to the top of
the list.
When a node fails to load the nicer comfy error dialog is used.
Errors on file upload still use alert, but this is equivalent to the
native comfy code.
Video previews are muted.
The image preview element is hidden by default.
Open and Save Video buttons have been added to the context menu.
This brings parity with the functionality of the Save Image node,
and restores functionality that was removed with passing through clicks
on the video preview element.
When a resize is done on a node, it is marked dirty.
This fixes a minor delay between preview content displaying
and the underlying node performing it's resize
The reimplementation for video previews is functional and adds base
support for previews in load video (upload)
State serialization for nodes (what's used when a workflow is loaded or
the webpage is refreshed) now uses a map with widget names as keys for
all VHS nodes.