github 66HEX/frame 0.21.0
v0.21.0

latest release: 0.21.1
16 hours ago

Fixed

  • Queue Cancellation Semantics: Canceling a queued conversion now prevents it from starting later in the background. Queue state now tracks canceled IDs, avoids duplicate task IDs, and removes canceled items before worker launch.
  • Process Signal Safety: Pause/resume/cancel controls now ignore invalid PID 0 placeholders, preventing unsafe Unix signal targeting. ML upscale startup no longer publishes a fake PID, and unexpected encoder shutdowns now return an explicit worker error instead of reporting silent success.
  • FFmpeg Stream Mapping: Standard conversions now always map streams deterministically (0:v:0, 0:a?, 0:s?) when track overrides are not selected, eliminating ambiguous defaults and missing-stream edge cases.
  • Audio Config Application: Audio codec and bitrate settings are now applied consistently even when no explicit source audio tracks are selected.
  • Cross-Tab Config Consistency: Configuration normalization now runs in the shared state layer (including preset application), so container/codec/preset/upscale compatibility is enforced even if the Video tab was never opened.
  • Compatibility Rule Unification: Video container/codec/preset compatibility now comes from a shared frontend module used by both UI selection logic and config normalization, preventing drift between tab behavior and saved state validation.
  • Input Validation Hardening: Backend validation now rejects incompatible codec/container combinations and blocks ML upscaling with audio-only outputs before task enqueue.
  • Subtitle Container Handling: Subtitle stream behavior is now container-aware (mov_text for MP4/MOV, webvtt for WebM, copy for MKV) and no longer auto-maps subtitle tracks when only burn-in subtitles are requested.
  • Queue Startup Recovery: Conversion queue startup now handles per-file enqueue failures gracefully, marking only failed items as errors while continuing with valid tasks and keeping processing state in sync.
  • Timecode Input UX: Trim timecode fields now support pasting valid values (HH:MM:SS.mmm, MM:SS, or seconds), reducing manual editing friction.
  • Lint Stability: Added a scoped ESLint override for Shiki-rendered log HTML in LogsView, resolving the svelte/no-at-html-tags lint failure for trusted, syntax-highlighted output.
  • Queue Logic: Resolved an issue where completed files would be re-queued for conversion when restarting the batch. The queue now explicitly ignores files with a "Completed" status.
  • Titlebar UX: The "Start Conversion" button is now disabled when all selected files have already been successfully processed, providing better visual feedback and preventing accidental re-runs.

Added

  • Hardware Decoding Support: Integrated GPU-accelerated video decoding for input files using NVIDIA CUDA and Apple VideoToolbox. This reduces CPU load and improves conversion speed by offloading the decoding phase to the hardware.
  • Log Syntax Highlighting: Integrated Shiki highlighting engine into LogsView for improved readability of FFmpeg output.
  • Custom Log Language: Developed a comprehensive TextMate grammar for FFmpeg logs, featuring specialized highlighting for codecs, timestamps, file paths, CPU capabilities, and conversion phases (DECODE/ENCODE/UPSCALE).

Changed

  • Settings Accessibility: Users can now switch between all configuration tabs (Source, Output, Video, etc.) even after a file has been converted, while maintaining the locked state of individual settings.
  • Store Convention Consistency: updateStore now uses the same object-based $state pattern as other frontend stores, reducing architectural divergence in shared state management.

Don't miss a new frame release

NewReleases is sending notifications on new releases.