Fixed
- Runtime Log Highlighting Dependencies: Moved
shikifromdevDependenciestodependenciesand added direct runtime dependency on@shikijs/themes, so packaged builds include required log-highlighting modules. - Output Name Path Safety: Hardened output name handling on both frontend and backend so custom names cannot escape the source directory via absolute paths or traversal segments.
- Error Event Duplication: Removed duplicate
conversion-erroremission from the worker path so failures are reported once through manager flow. - Settings Persistence Race: Prevented settings write-back before initial hydration completes, fixing startup-time overwrites of saved preferences.
- Subtitle Burn Path Escaping: Expanded FFmpeg subtitle filter escaping for special characters (including quotes and bracket/comma tokens) to avoid burn-in command breakage on valid file paths.
- Localization Consistency: Replaced remaining hardcoded UI strings in logs/source panels with i18n keys and synced locale dictionaries.
- Concurrency Limit Reactivity: Applying a new max concurrency value now immediately re-processes the queue so pending tasks can start without waiting for another queue event.
- Trim Range Validation: Task validation now rejects non-increasing trim ranges (
end_time <= start_time) and malformed trim timestamps before enqueue. - Output Extension Consistency: Custom output names now always end with the selected container extension, preventing mismatches between UI container choice and written file suffix.
- Dialog Directory Scope: Folder picker permission scopes now respect the
recursiveflag when granting Tauri directory access, avoiding unintentionally broad directory grants. - Native Dialog Kind Contract: Backend dialog kind parsing now explicitly accepts
question, matching the frontendaskNativeDialogtype contract. - ML Upscale FPS Timeline: Upscale re-encode now always reads extracted PNG frames at source FPS, while optional target FPS conversion is applied only on output (
-r), preventing unintended playback speed changes. - ML Upscale Metadata Preserve: In upscale mode,
metadata.mode = preservenow maps metadata from the original source input (-map_metadata 1) so source tags are retained as expected. - ML Upscale Argument Regression Tests: Added focused unit tests for upscale encode argument building (source FPS input timing and metadata mode behavior) to catch future pipeline regressions.