Help us keep the list up to date and submit new video software here.
Try StreamFab Downloader and download streaming video from Netflix, Amazon, Youtube! Download free trial.
Tool
Complete Version history / Release notes / Changelog / What's New for Gharmonize
Gharmonize v1.4.5
Gharmonize v1.4.5 focuses on Windows compatibility, yt-dlp download reliability, security improvements, updated dependencies, and overall application stability.
Windows & Download Fixes
yt-dlp Download Fix: Addressed Windows-specific issues affecting yt-dlp downloads and subprocess execution.
Process Management: Fixed Windows temporary-file lease handling and improved process reliability.
Path Compatibility: Improved cross-platform path validation and runtime handling.
Build Reliability: Fixed Windows subprocess startup during Electron dependency installation.
Security Improvements
Vulnerability Fixes: Resolved vulnerable minimatch dependency chains, including CVE-2026-118764.
Safer Cleanup: Introduced secure temporary-directory cleanup without unsafe glob expansion.
Dependency Security: Improved dependency resolution across npm versions.
Docker Compatibility: Improved reproducible dependency installation.
Dependencies & Stability
Electron: Updated to 45.1.0.
electron-builder: Updated to 26.18.1.
music-metadata: Updated to 12.3.2.
dotenv: Updated to 18.0.9.
Regression Tests: Expanded Windows compatibility, security, and temporary-file management tests.
Runtime Stability: Improved background cleanup and graceful process shutdown.
Gharmonize v1.4.4
What's New
Gharmonize v1.4.4 brings customizable desktop tray icons, detailed job performance tracking, smarter video processing, improved audio/video synchronization, and updated dependencies.
Desktop Tray Icons
Four icon modes: Original, Dark, Light, and Automatic (System Theme).
Automatic theme detection: Tray icons adapt to the system's light or dark appearance.
Windows integration: Follows the Windows taskbar/system theme independently of the application theme.
Persistent preferences: Selected icon modes are remembered across restarts.
High-DPI support: Sharper monochrome icons with efficient theme detection.
Job Stages & Performance Tracking
Stages and Timings: Detailed processing information for Classic and YTLive jobs.
Elapsed-time tracking: Live duration indicators on job cards.
Per-track insights: Track matching, downloads, metadata, artwork, conversion, lyrics, and retagging.
Detailed statuses: Improved visibility into cached matches, retries, failures, missing matches, and cancellations.
Persistent history: Completed timing measurements are preserved in job history.
UI refinements: Improved job cards and timing dialogs across different screen sizes and themes.
Video Conversion Improvements
Automatic black-border cropping: Optional detection and removal of black borders when using automatic output height.
Smart aspect ratio: Output scaling adapts to the detected video content.
Multi-sample detection: Analyzes multiple video samples to avoid incorrect cropping.
Preview compatibility: Respects preview clips and video orientation settings.
Improved A/V synchronization: Better handling of timestamp gaps and delayed streams during re-encoding.
Stream-copy preservation: Original stream timing behavior remains unchanged.
Dependencies & Stability
Electron: Updated to 44.9.3.
electron-builder: Updated to 26.18.0.
dotenv: Updated to 18.0.8.
music-metadata: Updated to 12.2.3.
Dependency improvements: Updated dependency resolutions addressing upload handling, HTTP parsing, URI processing, and build-tool vulnerabilities.
Gharmonize v1.4.3
Security fix
Creating conversion jobs from server-local files now requires an administrator session, just like browsing and probing those files. Previously, a user could submit a known relative filename directly to the job API without passing the local-file administrator check.
The check applies in both public-access mode and temporary-access mode. Approved temporary users can still upload their own files and use remote URLs, but cannot create jobs from the server's local media directory. Normal uploads and remote downloads are unchanged.
Thanks to @Artur12555 for catching the missing check and reporting it.
Disc Ripper progress connection
Open the protected progress stream only after confirming an administrator session with the server.
Close the connection on logout, including logout in another browser tab.
Recheck administrator access before reconnecting after a dropped connection, instead of repeatedly requesting a protected stream with an expired session.
Keep idle progress connections alive with regular heartbeats and release disconnected clients and timers.
Windows code signing status — please read
The Windows files in Gharmonize v1.4.3 do not carry a trusted Authenticode signature. The SignPath Foundation production code-signing certificate is still pending. Self-signed test certificates are not used for this public release.
This applies to the Setup installer, the standalone Portable EXE, and the application executable inside the Portable Folder ZIP. Windows may display an unknown-publisher or SmartScreen warning; managed Windows security policies may block execution.
Download only from this repository's official Releases page and verify the published checksums and GitHub artifact attestations. The GPG-signed checksum manifest verifies release integrity but is not a Windows Authenticode signature. Do not disable Windows security protections or install a test certificate to run this release.
Downloads
Windows Setup, Portable EXE, and Portable Folder packages are published alongside the Linux AppImage and its .zsync update metadata by the automated release workflow. Container images are published separately to ghcr.io/g-grbz/gharmonize:1.4.3 and ghcr.io/g-grbz/gharmonize:latest by the Docker workflow.
Gharmonize v1.4.2
This release focuses on desktop stability, FFmpeg compatibility, configuration handling, and improvements to music processing.
Improvements & Fixes
Desktop & Runtime
Fixed custom DATA_DIR configurations being ignored in packaged desktop builds, resolving #23
Unified desktop caches under DATA_DIR/Cache without deleting existing cache directories.
Removed forced GPU acceleration disabling in the Linux AppImage.
Improved FFmpeg and FFprobe management, including software fallback when NVIDIA NVENC is unavailable.
Added compatibility-tested FFmpeg options for older NVIDIA drivers.
Fixed incorrect tool version labels and prevented unintended fallback to system binaries.
Improved yt-dlp process termination and temporary file cleanup.
Music & Metadata
Improved music matching for artist credits, accented titles, and duration differences.
Fixed redundant combining dots in newly created playlist folder names.
Preserved accurate MP3 duration metadata during conversion, retagging, and lyric embedding.
Dependency Updates
Electron 44.6.0
music-metadata 12.0.0
dotenv 18.0.6
express-rate-limit 8.7.1
proxy-addr 2.0.8
Gharmonize v1.4.1
Gharmonize v1.4.1 focuses on desktop stability, media-processing reliability, disc ripping, AppImage distribution, security hardening, and release infrastructure improvements.
Highlights
Improved Electron desktop stability, especially when Gharmonize is minimized, restored from the system tray, or left running in the background.
Improved Blu-ray disc scanning and ripping with safer handling of malformed or unusual playlists.
Reduced unnecessary Classic UI work and improved background job rendering efficiency.
Added bounded music metadata, cover-art, and lyrics requests so unavailable providers cannot indefinitely delay conversion.
Improved Apple Music, Deezer, and Spotify matching for accented titles and common video-title labels.
Added a more complete AppImage update infrastructure with embedded update information and .zsync metadata.
Added SignPath code-signing preparation, policy documentation, and CI testing infrastructure.
Updated and cleaned dependency chains to resolve audit findings and reduce vulnerable development dependencies.
Windows code signing status — please read
The Windows files in Gharmonize v1.4.1 do not carry a trusted Authenticode signature.
The SignPath Foundation production code-signing certificate is still pending. Self-signed test certificates are not used for this public release.
This applies to:
Windows Setup installer
Standalone Portable EXE
Application executable inside the Portable Folder ZIP
Windows may therefore display an Unknown Publisher or Microsoft SmartScreen warning, and managed Windows security policies may block execution.
Download Gharmonize only from this repository's official Releases page and verify the published checksums and GitHub artifact attestations.
The GPG-signed checksum manifest verifies release integrity, but it is not a Windows Authenticode signature.
Do not disable Windows security protections or install a test certificate to run this release.
Performance & Processing Improvements
Several internal processing paths have been optimized to reduce unnecessary work and improve reliability.
Reduced unnecessary Classic UI work by batching layout updates.
Duplicate job snapshots are now ignored where possible.
Hidden job-panel rendering is deferred until needed.
Optional music metadata, cover-art, and lyrics requests now use bounded waits so unavailable providers cannot indefinitely delay conversion.
Added per-track download and metadata timings to help identify slow processing stages.
Fixed successful embed-only lyrics being incorrectly reported as missing.
Corrected duplicate lyrics statistics.
Improved Apple Music, Deezer, and Spotify matching for accented titles.
Improved matching of video labels such as (Clip Officiel) without stripping meaningful musical versions such as Live and Remix.
Corrected fallback track numbering when only part of an Automix playlist is selected.
Disc Ripper
Disc handling has received several reliability improvements.
Improved Blu-ray playlist detection and validation.
Added safer handling for malformed or incomplete Blu-ray playlist data.
Improved disc scanning behavior and error handling.
Improved ripping flow for problematic discs.
Added additional automated tests for disc scanning and ripping.
These changes make the disc ripper more tolerant of unusual Blu-ray structures instead of failing the complete scan because of an individual invalid playlist.
Desktop / Electron
Several issues affecting long-running desktop sessions have been addressed.
Fixed cases where the Electron renderer could become unresponsive while running in the background.
Fixed blank-window behavior after restoring Gharmonize.
Improved window restoration when using the system tray.
The main Electron window is now preserved more reliably across tray hide/show operations.
Removed temporary desktop health diagnostics used during troubleshooting.
Protected runtime binary readiness checks are now started after access has been granted.
Improved artifact download handling in the Electron application.
AppImage
The Linux AppImage release process has been significantly improved.
Added embedded AppImage update information.
Added .zsync metadata generation for supported AppImage update tools.
.zsync metadata is now distributed alongside the corresponding AppImage artifact.
Added a dedicated AppImage release packaging script.
Improved runtime portability through the required static runtime components.
This prepares Gharmonize AppImage builds for a cleaner incremental-update workflow.
Security & Code Signing
Release and security infrastructure has also been expanded.
Added CODE_SIGNING_POLICY.md.
Added SignPath signing workflow preparation.
Added a SignPath CI test workflow.
Added release-signing documentation and policy information.
Added PRIVACY.md.
Extended security-related automated tests.
Removed vulnerable development dependency chains.
Resolved additional dependency audit findings.
Gharmonize v1.4.0
Gharmonize v1.4.0 expands the music pipeline with TIDAL and SoundCloud support, introduces a new bulk music text import workflow, improves YouTube matching reliability, and adds several queue, background processing, and UI improvements.
Highlights
TIDAL Support
Gharmonize can now process TIDAL music metadata and collections through the mapped-music pipeline.
TIDAL track metadata support
Collection processing
Source metadata normalization
Integration with the existing music matching and download workflow
SoundCloud Support
SoundCloud is now supported as an additional music source.
Supported content includes:
Individual tracks
Sets / playlists
Profile collections
Popular tracks
Normalized source metadata
Safer YouTube Matching
YouTube matching has been significantly improved across:
Spotify
Apple Music
Deezer
TIDAL
SoundCloud
Bulk text imports
Matching improvements include:
Duration validation
Better candidate ranking
Safer fallback queries
Retry handling
Cache revalidation
Protection against unrelated long-form matches
More tolerant title normalization and safe spelling variants
These changes reduce incorrect matches while still allowing useful fallback searches when an exact result is unavailable.
Bulk Music Text Import
A new bulk music import workflow is now available in both Classic UI and YTLive.
You can paste lists such as:
Enigma – Return to Innocence
Vangelis – Conquest of Paradise
Bar Manço – Gülpembe
Cem Karaca – Tamirci Çra
Gharmonize will automatically:
Parse the artist and track names
Find safe YouTube / YouTube Music matches
Display matching progress per track
Add matched tracks to the download pipeline
Download them using the selected output format
Large lists can be pasted directly, making it easy to import recommendations generated by ChatGPT or other sources.
Smarter List Parsing
The importer supports:
Numbered lists
Markdown-formatted lists
Artist – Track
Artist — Track
Artist - Track
Optional descriptions after the track name
Turkish and international characters
Long artist and track names
Shared Music Queue
Classic UI and YTLive now share the same music import queue and state.
This means you can:
Add a list in Classic UI
Switch to YTLive
Continue viewing the same list
Keep existing matches
Resume canceled jobs without repeating the entire matching process
Existing queue state is migrated automatically.
Background Matching
Bulk music matching now runs independently from the import modal.
Closing the modal no longer stops the operation.
You can close and reopen the interface while matching continues in the background, and Gharmonize will restore:
Matching progress
Matched tracks
Unmatched tracks
Job state
Queue & Auto-Remove Improvements
Queue cleanup behavior has been improved.
The URL queue and bulk text import queue now operate independently.
When working in the URL tab, only URL jobs are processed.
When working in the Music List tab, only bulk music entries are processed.
Automatic cleanup can remove completed and unmatched items while preserving failed or canceled entries that may need to be retried.
UI Improvements
The bulk import interface now includes:
Larger scrollable track lists
Per-track status indicators
Matching
Matched
Completed
Not Found
Disabled action controls while an operation is active
Background progress restoration
Auto-hiding completion messages
Improved modal sizing
Shared state between Classic UI and YTLive
Download Pipeline Reliability
Additional safeguards were added around yt-dlp and FFmpeg processing.
Improvements include:
yt-dlp watchdog handling
FFmpeg watchdog handling
Protection against stalled workers
Safer retries
Improved failure recovery
These changes help prevent individual downloads from blocking an entire job.
Dependency Updates
Electron updated from 44.1.1 44.3.0
Includes automated Dependabot maintenance
Changes Included
[feat: add bulk music text import, shared queue state, background matching, and UI fixes](https://github.com/G-grbz/Gharmonize/commit/6e03f24f5e2140052de0d8aae2c4c1c1d1ccf8d1)
[feat(music): add TIDAL and SoundCloud support with safer YouTube matching](https://github.com/G-grbz/Gharmonize/commit/53a53060e20f789c2c5fcebd1a66ea994428a573)
[chore(deps-dev): bump Electron from 44.1.1 to 44.3.0](https://github.com/G-grbz/Gharmonize/commit/e7861402526d50c8f579fcae151497c35ee397d1)
Gharmonize v1.3.9
This release moves the official Gharmonize container distribution to GitHub Container Registry and introduces configurable application access and authentication modes.
GitHub Container Registry
The official Gharmonize container image has moved from Docker Hub to GitHub Container Registry (GHCR).
The official image is now available at:
docker pull ghcr.io/g-grbz/gharmonize:latest
Version-specific images are also published:
docker pull ghcr.io/g-grbz/gharmonize:1.3.9
The GHCR package is directly associated with the official G-grbz/Gharmonize source repository, keeping the source code, releases, and container images under the same official GitHub distribution channel.
Docker Hub is no longer an official Gharmonize distribution channel.
Application Access & Authentication
Gharmonize now includes configurable application access modes:
No Login — preserves the existing behavior and requests administrator authentication only for protected actions.
Admin Login — requires administrator authentication before the application can be accessed.
Temporary Access — allows clients to request time-limited access that an administrator can approve or reject.
Temporary access management also includes:
Access request management in both Classic and YTLive interfaces.
IP-based duplicate request protection.
Rejection cooldowns to prevent repeated access-request spam.
Active temporary access sessions visible to administrators.
Server-side access revocation at any time.
Temporary access remains separate from administrator privileges.
Dependency Update
Updated Electron from 42.10.1 to 44.1.1.
What's Changed
Migrated the official Gharmonize container image from Docker Hub to GitHub Container Registry.
Added configurable application access and authentication modes.
Added temporary access requests, approvals, rejection handling, and revocation.
Added access management to Classic and YTLive.
Added IP-based duplicate request protection.
chore(deps-dev): bump electron from 42.10.1 to 44.1.1 by @dependabot[bot] in #10
Gharmonize v1.3.8
Gharmonize v1.3.8 focuses on improving music download workflows, expanding the classic UI queue system, refining personalized YouTube Music shelves, improving lyrics handling, and bringing more audio controls directly into YTLive.
Classic UI — Sequential Music URL Queue
The classic interface now includes a persistent queue system for supported music service URLs.
What's New
Added a dedicated queue modal for:
Apple Music
Spotify
Deezer
Process queued URLs sequentially without affecting normal single-URL downloads
Added URL validation before items enter the queue
Display resolved metadata titles for queued items
Added per-item status indicators
Persist queue state across page reloads
Keep failed items in the queue for easier retrying
Optionally remove completed items while preserving failed entries
Added a dedicated queue download action
Improved queue layout, controls, and overall visual consistency
The existing single-URL download workflow remains unchanged.
YTLive — Improved Personalized Music Shelves
Personalized YouTube Music content is now loaded more progressively and reliably.
Improvements
Load personalized YouTube Music shelves progressively
Improved browser-session authentication handling
Improved YouTube Music account detection
Increased the personal shelf limit from 12 to 50
Improved fallback behavior when personalization is unavailable
Keep shelf navigation arrows visible with native edge feedback
Make overflowing download lists expandable
Keep the Create List action accessible inside long list menus
These changes make large personalized libraries easier to browse while reducing unnecessary loading delays.
YTLive — Download List Navigation
Download list navigation has been refined for larger collections.
Changes
Added navigation arrows to download list rails
Keep download list menus inside the visible viewport
Improved navigation behavior for long and overflowing lists
YTLive — Volume & Loudness Controls
YTLive now exposes additional audio-processing controls directly from the Now Playing panel.
New Controls
Added adjustable volume amplification
Added loudness normalization (loudnorm)
Added selectable loudnorm processing modes
Persist audio-processing preferences between sessions
These options are applied directly to YTLive download jobs, including supported music-service matching workflows.
Compact YTLive Playback Actions
The YTLive Now Playing panel has been streamlined without expanding its existing layout.
UI Changes
Replaced text-heavy playback actions with compact SVG controls
Added compact YouTube action
Added lyrics download action
Added embedded lyrics action
Added ZIP output action
Kept primary download controls easily accessible
Preserved the existing .now-panel footprint and visual structure
The result is a cleaner control surface with more functionality in the same amount of space.
Lyrics Embedding Improvements
Lyrics handling has been improved across both the Classic UI and YTLive download workflows.
Improvements
Restored reliable lyrics embedding directly into audio files
Allow lyrics to be embedded even when separate lyrics-file downloading is disabled
Continue using cached lyrics when available
Preserve automatic artist and track matching for lyrics lookup
Support multiline lyrics metadata when writing tags with FFmpeg
Improved FFmpeg metadata validation while preserving process-argument security
Reworked metadata validation to avoid inefficient regular-expression processing
Lyrics can now be stored directly inside supported audio files instead of requiring a separate lyrics file.
Summary
Gharmonize v1.3.8 brings:
Persistent sequential music URL queues
Reliable multi-link music processing
Expanded personalized YouTube Music shelves
Progressive YTLive shelf loading
Improved download-list navigation
Volume amplification controls
Loudness normalization modes
Reliable embedded lyrics support
Improved multiline lyrics metadata handling
Cleaner and more compact YTLive actions
Better persistence across UI workflows
Improved metadata-processing security
This release primarily improves high-volume music workflows, lyrics handling, and YTLive functionality while keeping the interface compact and responsive.
Gharmonize v1.3.7
This release improves Deezer integration, startup reliability, binary management, process security, and yt-dlp compatibility.
Deezer
Added support for Deezer /search/<artist>/track URLs
Fetch up to 1000 artist tracks
Start matching, downloading, and conversion while results are still loading
Fixed incorrect matched-track counts and progress race conditions
Added personalized inspired-by smart tracklist support
Preserved existing DEEZER_ARL integration
Startup & Binary Tools
Added a startup readiness screen while required tools are being prepared
Added the same startup gate to Classic and YTLive interfaces
Fixed mkvmerge and yt-dlp version detection
Improved managed FFmpeg, FFprobe, MKVToolNix, yt-dlp, and Deno handling
Security
Hardened child-process execution with fixed allowlisted executable dispatch
Prevented remote release metadata from controlling executable paths
Hardened managed MKVToolNix and mkvpropedit execution
Added additional security regression tests
yt-dlp
Restored safe --cookies-from-browser support
Restored safe managed --ffmpeg-location support
Unsafe yt-dlp arguments remain blocked
YTLive
Improved startup initialization
Improved YouTube iframe and origin handling
Fixed Google Fonts CSP loading
Improved player initialization behavior
Validation
63/63 tests passing
Syntax checks passing
CodeQL security findings addressed
Linux AppImage workflow verified
Tested with Electron 42.x
Gharmonize v1.3.6
What's Changed
Security and Configuration
Implemented decryption for sensitive environment keys after configuration reload.
Added decryption support for SPOTIFY_CLIENT_SECRET and HOMEPAGE_WIDGET_KEY.
Prevented browsers and password managers from autofilling ENV settings.
Added validation and automatic cleanup for invalid YTDLP_EXTRA values.
Spotify Processing
Fixed Spotify matching failures caused by autofilled positional yt-dlp arguments.
Previously unmatched cached tracks are now automatically retried.
Fixed a race condition where temporary cover images were deleted before FFmpeg retagging completed.
Spotify metadata and cover retagging now complete before job cleanup.
Validation
Added regression coverage for ENV autofill protection.
Added regression coverage for yt-dlp argument validation.
Added regression coverage for the Spotify retag lifecycle.
Gharmonize v1.3.5
Gharmonize v1.3.5 is a major security and release-engineering update focused on hardening the desktop and web runtime, protecting sensitive configuration, improving Electron isolation, and introducing a verifiable multi-platform release pipeline.
This release also restores YTLive playback under the hardened security policy and improves Linux desktop integration.
Security Hardening
Gharmonize now includes several layers of protection across authentication, configuration storage, network access, file handling, and process execution.
Authentication & Secrets
Migrated administrator password storage to scrypt
Added automatic migration from legacy plaintext passwords
Added AES-256-GCM encryption at rest for sensitive configuration values
Added dedicated master-key support through:
GHARMONIZE_MASTER_KEY
GHARMONIZE_MASTER_KEY_FILE
Removed the known default administrator password
New installations generate a randomized initial administrator password
Administrator sessions are invalidated after password changes
Browser authentication now uses a protected HttpOnly + SameSite=Strict session cookie instead of exposing the bearer token through localStorage
Added authentication rate limiting
Network & API Security
Added protection against SSRF and access to unsafe/private network targets
Added trusted proxy IP/CIDR validation
Forwarded headers are accepted only from explicitly trusted proxy peers
Added cross-site unsafe request protection
Default non-container server binding is now:
127.0.0.1
Docker deployments can explicitly bind to 0.0.0.0
Added stricter security headers and Content Security Policy rules
Filesystem & Upload Protection
Added protection against path traversal in upload and local-file workflows
Restricted chunk upload IDs, filenames, destination paths, and completed upload paths to approved directories
Added upload size and range validation
Disc and filesystem operations now require administrator authentication
Hardened runtime/cache/key file permissions
Improved Docker runtime isolation and writable-volume handling
Safer Process Execution
Media processing paths received additional hardening around external tools.
Replaced shell-based disc processing commands with argument-safe execFile() execution
Removed unnecessary shell execution from installation helpers
Restricted dangerous yt-dlp options by default, including options capable of:
executing arbitrary commands
replacing external downloaders
changing arbitrary output paths
loading arbitrary configuration or plugins
Advanced users can still explicitly opt into unrestricted behavior when required
Runtime Binary Security
Automatic runtime binary management is now safer.
Restricts binary downloads to trusted HTTPS origins
Adds download size validation
Verifies available SHA-256 release digests before activating downloaded binaries
Prevents unverified binaries from being silently trusted
Existing FFmpeg last-known-good and compatibility protections remain available
Electron Security
The desktop runtime received significant isolation improvements.
contextIsolation: true
nodeIntegration: false
sandbox: true
Added IPC sender validation
Added external URL scheme validation
Restricted renderer navigation and new-window creation
Denies unapproved Electron permission requests
Removed executeJavaScript()-based renderer synchronization
Reworked the preload bridge to use a sandbox-compatible CommonJS preload
Electron remains on the stable 42.x release line because Electron 43 introduced a Linux StatusNotifierItem / tray regression affecting Gharmonize.
Linux Desktop Improvements
Restored Linux system tray support
Added tray initialization diagnostics
Added safe shutdown behavior when a system tray is unavailable
Prevents Gharmonize from becoming an invisible background process when tray initialization fails
Restored native filesystem selection inside AppImage builds
Native desktop builds once again use the system file picker instead of the web/Docker local-inputs dialog
YTLive Playback
Restored YouTube playback after CSP hardening
Added narrowly scoped access for the official YouTube IFrame API
Preserved the restrictive CSP without re-enabling unsafe inline JavaScript
Removed unnecessary remote executable dependencies
Improved compatibility between the hardened Electron renderer and YTLive
Password Policy
Administrator passwords now require:
At least 8 characters
At least one letter
At least one uppercase letter
At least one number
Localized validation messages were updated to match the actual security policy.
Repository Security
The repository now includes:
GitHub Actions CI
Node.js 22 / 24 / 26 validation
Security regression tests
CodeQL with security-extended
Dependabot
SECURITY.md
Dependency auditing
Release version consistency checks
The security regression suite currently contains:
22 tests
22 passed
0 failed
Verified Release Pipeline
Gharmonize now uses a centralized GitHub Actions release workflow.
A version tag such as:
v1.3.5
automatically builds and validates:
Windows NSIS installer
Windows portable executable
Windows portable folder archive
Linux AppImage
Source archive
CycloneDX SBOM
SHA-256 checksums
GitHub artifact provenance attestations
electron-builder is explicitly configured with:
--publish never
so it only builds application artifacts. GitHub Actions remains responsible for publishing the final release.
Contributions
This release also includes the community contribution:
Added rate limiting middleware improvements by @anupamme in #5
Dependency automation updates:
Bumped actions/github-script from v8 to v9 by @dependabot[bot] in #6
Electron 43 was evaluated through @dependabot[bot] in #7, but Gharmonize remains on Electron 42.x due to the Linux tray regression
New Contributors
Gharmonize v1.3.4
This release improves FFmpeg runtime reliability and hardware encoding compatibility, introducing safer FFmpeg updates with automatic validation and rollback protection.
Safer FFmpeg Updates
Switched the default FFmpeg update channel from development builds to the stable release branch
Added runtime validation before activating newly downloaded FFmpeg builds
Added protection against updates that break previously working hardware encoding
Keeps the previous working FFmpeg build as a last-known-good fallback
Automatically rejects incompatible FFmpeg updates and continues using the working version
Prevents repeatedly downloading a recently rejected incompatible build
Improved NVENC Compatibility
Added runtime validation for NVIDIA NVENC instead of relying only on encoder availability reported by FFmpeg
Detects NVIDIA driver and NVENC API incompatibilities before using a newly downloaded FFmpeg build
Prevents automatic FFmpeg updates from unexpectedly breaking working NVENC configurations
Improved NVENC error reporting to expose the actual driver or API compatibility issue instead of generic encoder errors
Preserves software and other hardware acceleration methods when NVENC is unavailable
FFmpeg Update Channel
Added the new GHARMONIZE_FFMPEG_CHANNEL setting
Added Stable and Master FFmpeg channel selection to System Variables
Stable is now the default and recommended option
Master remains available for users who want the latest development builds
Added localized setting labels and descriptions
Automatic Rollback Protection
Gharmonize now tests a new FFmpeg build before making it active.
If the currently installed FFmpeg supports NVENC but a newly downloaded build no longer works with the system's NVIDIA driver, Gharmonize rejects the new build and keeps the previous working version.
This allows FFmpeg to continue updating automatically while reducing the risk of hardware acceleration suddenly becoming unavailable after an upstream FFmpeg or NVENC API change.
Gharmonize v1.3.3
This release introduces safe retagging for existing music files to the classic UI, allowing MP3, FLAC, and M4A files from outside Gharmonize to be matched again and completed with missing metadata and cover art.
Safe Retagging
Added a new Retag output mode to the classic UI
Added directory selection for existing music libraries
Matches existing MP3, FLAC, and M4A files against available metadata sources
Writes missing or updated metadata and cover art without re-encoding audio
Safely renames matched files using the Artist - Track Title format
Preserves existing files when filename collisions occur
Improved Metadata Matching
Improved matching for joined, spaced, and collaborating artist names
Excluded parenthesized text from metadata searches
Ignores content after the second separator for cleaner search queries
Improved matching reliability for difficult track and artist names
Safer Processing
Added a confirmation modal before starting retag operations
Added a clear recommendation to back up files before processing
Added metadata, cover art, and rename statistics to job cards
Improved protection against accidental file overwrites
Docker & Desktop Improvements
Added Docker-compatible directory access for retagging
Added native directory selection when running under Electron
Fixed the AppImage dock icon
Fixed Linux application window association
Gharmonize v1.3.2
This release enhances the YTLive interface, expands playback navigation controls, and introduces new configuration options for application timeouts, playlist processing, and file uploads.
It also improves automatic track navigation, adds previous and next controls for playlist playback, introduces an auto-play mode for individual tracks, and updates application and build dependencies.
YTLive Interface & Styling
Enhanced the overall YTLive interface
Improved visual consistency across YTLive components
Refined interface spacing, layout, and responsive behavior
Improved styling for playback and navigation controls
Improved the usability of playlist and track actions
Playback Navigation Controls
Added Previous and Next buttons for playlist playback
Improved navigation between tracks in active playlists
Updated player controls dynamically during automatic playback
Improved previous and next track selection while auto-play is active
Preserved playlist navigation state during continuous playback
Auto-Play Improvements
Added an auto-play mode for individually selected tracks
Automatically continues playback with related or available tracks
Improved track transitions during automatic playback
Improved player navigation controls while operating in auto mode
Refined track selection behavior when the playback queue changes
New Configuration Options
Updated .env.example with newly supported configuration parameters
Added configurable timeout values for application operations
Added playlist processing and item-count limits
Added upload size and processing limits
Improved configuration flexibility for different deployment environments
Documented the new environment options in the example configuration
Dependency Updates
Updated application dependencies
Updated Electron and build-related dependencies
Improved compatibility with newer runtime components
Refreshed development and packaging dependencies
Improved overall build and runtime reliability
Gharmonize v1.3.1
This release introduces YTLive Download Lists, allowing tracks, albums, and playlists from multiple music services to be collected into custom lists and downloaded or converted in batches with a single action.
It also adds cached Spotify, Apple Music, and Deezer mapping workflows, download-list synchronization, locale-aware mood discovery, improved album metadata matching, and several runtime reliability improvements.
YTLive Download Lists
Added a new My Download Lists section to YTLive
Create custom download lists directly from the YTLive interface
Add tracks, albums, and playlists to the same list
Combine music content from YouTube, Spotify, Apple Music, and Deezer
Remove individual items or delete complete lists
Store download lists persistently in the application cache
Display item counts, list status, and list cards in the YTLive interface
Queue an entire list for batch downloading and conversion with a single action
Cached Music Mapping
Added persistent mapping manifests for Spotify, Apple Music, and Deezer sources
Resolve external music sources to matching YouTube Music results
Cache matched YouTube Music IDs as JSON manifests and URL lists
Reuse previously matched tracks through cache hits instead of searching again
Integrated mapping operations with YTLive streaming and progress updates
Added shared concurrency handling across Spotify, Apple Music, and Deezer mapping pipelines
Batch Downloading
Added per-track job creation for items stored in download lists
Added one-click batch download and conversion actions
Added clientBatch and batchTotal metadata for tracking grouped jobs
Preserved the existing job pipeline while providing more controlled list-based queueing
Maintained stable item ordering during mapped music downloads and conversions
Expanded Quick URL Support
Extended the YTLive quick URL field beyond YouTube and YouTube Music
Added support for Spotify URLs
Added support for Apple Music URLs
Added support for Deezer URLs
External music URLs are now resolved and mapped to YouTube Music before processing
Download List Synchronization
Added synchronization support for saved mapped music lists
Re-resolve saved Spotify, Apple Music, and Deezer playlists or albums
Detect and add newly available tracks
Refresh cached mappings during synchronization
Rebuild outdated list resolutions without recreating the complete list
Discovery Improvements
Reworked YTLive discovery presets to better match the user's language and region
Replaced generic popular and new-release searches with mood-focused discovery presets
Added the following discovery moods:
Energetic
Workout
Feel Good
Relax
Sad
Romantic
Commute
Party
Focus
Sleep
Prioritized music-focused content in mood discovery results
Filtered Shorts, podcasts, and episodes from mood shelves
Improved regional and localized discovery behavior
Playback & YTLive Improvements
Preserved the active player while searching, navigating, and refreshing shelves
Prevented page interactions from unnecessarily interrupting active playback
Improved YTLive playback stability
Improved embedded player fallback behavior
Clarified currently playing track indicators in playlist and album views
Improved download actions in playlist and album track panels
Metadata & File Naming
Improved YouTube Music album-name detection
Improved album artist detection and normalization
Improved ID3 metadata matching for YouTube Music album tracks
Reduced metadata mismatches caused by inconsistent album and track names
Preserved cleaner track metadata during lyrics matching
Reduced incorrect lyrics matches
Improved output directory naming for album downloads
Preserved original filenames for uploaded files and local media jobs
Runtime & Reliability Improvements
Improved runtime binary validation and download workflows
Improved yt-dlp process cleanup
Improved temporary runtime binary handling
Strengthened completed-job state persistence
Added improved cache-directory writability checks
Added fallback handling when the primary job-state cache directory is unavailable
Documentation & Licensing
Simplified the main README
Moved detailed usage documentation under the docs/ directory
Reorganized the project license files
Reorganized third-party license documentation
Note
YTLive Download Lists expand Gharmonize from a music discovery and playback interface into a persistent multi-source download workflow.
Tracks, albums, and playlists from YouTube, Spotify, Apple Music, and Deezer can now be collected into reusable lists, synchronized with their original sources, resolved through cached YouTube Music mappings, and queued for batch downloading or conversion.
Gharmonize v1.3.0
This release introduces YTLive, a brand-new YouTube and YouTube Music experience for discovery, playback, playlist browsing, and queue management.
It also adds configurable frontend selection, new YouTube Music APIs, queue monitoring, and expanded localization support.
What Does It Add?
Nothing important.
I merely replaced "one page" with "another page".
New YTLive Interface
Added the new YTLive interface for YouTube and YouTube Music
Search YouTube videos, tracks, albums, playlists, and artists from a dedicated music-focused UI
Browse YouTube Music home recommendations and discovery shelves
Preview playlists and queue tracks directly from the interface
Integrated playback, queue management, and workflow controls
Added a dedicated standalone YTLive page
YouTube Music Discovery
Added YouTube discovery endpoints under /api/youtube
Added YouTube search endpoints for YTLive
Added YouTube Music Home shelf support
Improved playlist expansion and metadata normalization
Added cookie-aware YouTube Music browsing support
Enhanced regional market handling for music discovery
Configurable Frontend Selection
Added a new FRONTEND_UI setting
Allows selecting either the classic Gharmonize interface or YTLive as the default application frontend
Added /api/ui-config endpoint for frontend configuration
Added YTLive launch shortcuts from the classic interface
YTLive Settings & Queue Management
Added YOUTUBE_QUICK_ADD_LIMIT configuration
Added YTLive-specific settings controls
Added /api/queue/status endpoint for queue monitoring
Improved active job tracking and workflow visibility
Added cross-tab and session synchronization for job state updates
User Interface Improvements
Added dedicated YTLive styling and responsive layouts
Added music-focused playback controls
Added queue and playlist browsing panels
Added recommendation shelf presentation
Improved navigation between classic UI and YTLive
Documentation & Configuration
Updated README with YTLive documentation
Documented frontend selection options
Documented YTLive routing and usage
Added new environment configuration examples
Added YOUTUBE_QUICK_ADD_LIMIT and related defaults
Gharmonize v1.2.8
This release focuses on major Spotify playlist matching improvements, smarter playlist resolution, and configurable desktop shell integration for the Track Extractor.
Spotify Playlist Matching Improvements
Improved Spotify playlist matching reliability by prioritizing the paged Spotify Web API and Pathfinder playlist resolution over public embed data
Fixed cases where playlist processing could stop around 99 tracks when relying on Spotify embed metadata
Added a Pathfinder fallback for playlists that are visible on Spotify Web but return 403 Forbidden responses from the official Spotify Web API
Prevented matching jobs from becoming stuck when Spotify returns empty item lists
Reduced duplicate integrated matching log messages during Server-Sent Events (SSE) updates
Pathfinder Improvements
Pathfinder playlist resolution now works without requiring:
SPOTIFY_CLIENT_ID
SPOTIFY_CLIENT_SECRET
This allows Gharmonize to resolve and download Spotify-managed playlists that are often inaccessible through the standard Spotify Web API, including:
Discover Weekly
Release Radar
Other Spotify-curated and personalized playlists
Configurable Track Extractor Shell Integration
Added a new TRACK_EXTRACTOR_SHELL_INTEGRATION setting
Allows users to enable or disable the Gharmonize Track Extractor context menu integration
Setting is persisted through the settings API and enabled by default
Shell integration is automatically re-applied whenever settings are saved
Windows registry entries are added or removed automatically based on the configured state
Linux desktop integration is also managed automatically
Shell integration initialization now occurs after packaged application environment setup
Added localized descriptions for shell integration settings
Desktop Integration Improvements
Improved management of Track Extractor desktop shortcuts and context menu registration
More predictable behavior when enabling or disabling shell integration across supported platforms
Cleaner initialization flow for packaged desktop environments
Note
Spotify playlist matching is now significantly more reliable for large playlists and Spotify-managed playlists that may not be fully accessible through the official Spotify API.
Users who previously needed Spotify API credentials for certain playlist types may no longer require them when Pathfinder resolution is available.
Gharmonize v1.2.7
This release introduces a new desktop Track Extractor workflow, expanded media extraction capabilities, and deeper desktop integration for advanced MKV and media processing tasks.
Track Extractor
Added a dedicated desktop Track Extractor workflow for video files
Added Electron shell integration for opening supported video files directly in the Track Extractor
Added track probing and extraction APIs with desktop bridge token protection
Added extraction support for:
Video tracks
Audio tracks
Subtitle tracks
Image attachments
Chapters
Runtime & Binary Management Improvements
Runtime binary initialization is now awaited before most API requests
Managed cached binaries can now be resolved before falling back to system PATH
Docker binary cache location updated to:
/opt/gharmonize/cache/binaries
yt-dlp Improvements
Cookie files are now copied to temporary snapshots before yt-dlp execution
Prevents accidental modification of original cookie files during downloads
Gharmonize v1.2.6
This release introduces advanced audio normalization capabilities during transcoding, providing better loudness consistency and dynamic range control.
Audio Transcoding Enhancements
Added loudnorm modes for EBU R128 loudness normalization
Introduced Dynamic Range Control (DRC) for improved audio balance
Implemented two-pass processing for more accurate and consistent normalization results
Gharmonize v1.2.5
This release introduces ringtone support for both iOS and Android, improves third-party app management, and enhances download result handling.
Ringtone Mode
Added iOS and Android-compatible ringtone download mode
Optimized output formats for seamless use across mobile devices
Third-Party App Management
Added automatic download and update support for third-party applications
Removed third-party apps from the main app root and Docker container
Updated related modules to align with the new workflow
Download & Error Handling Improvements
Enhanced error handling for download results
Added logic to track matched logical indices and process download results more accurately
Gharmonize v1.2.4
This release focuses on improving tagging accuracy, expanding platform support, and enhancing overall UX.
Tagging Improvements
Fixed album order issues in metadata
Resolved incorrect total track count in tagging
Improved overall tagging consistency and reliability
Matching Enhancements
Improved matching accuracy between YouTube and Apple Music
Reduced rare mismatches during metadata resolution
Deezer Support Added
You can now use Deezer as a source, including:
Track
Album
Playlist
Artist top tracks
Video & Metadata Fixes
Fixed video job metadata handling
MKV files are now treated like other video outputs in UI and logs
Switched to server-side completedAt instead of browser fallback
Preserved empty audio selection for silent video exports
UI / UX Improvements
Improved usability of preview start/end input fields across desktop and mobile
Localization
Added Spanish language support
Gharmonize v1.2.3
New Features
Apple Music Support
Added Apple Music support via yt-dlp matching
Apple Music playlists, albums, and single tracks can now be matched and converted
Improved media metadata matching for Apple Music sources
Improvements
Progress Flow Enhancements
Improved Spotify progress flow
More accurate real-time progress updates
Job Cancellation Fixes
Fixed issues in the job cancellation workflow
Embedding Completion Counter
Embedding completion counter now persists until conversions are removed from the directory
Better Cover Art Handling
Apple Music cover art is now preferred when available for YouTube MP3 conversions
Metadata Improvements
ID3 tags enriched with better metadata handling
General Improvements
Various minor improvements and optimizations across the application
Gharmonize v1.2.2
Improvements
Spotify Web API Compatibility Update
This release updates Gharmonize to support recent changes in the Spotify Web API.
Several internal transformations and tagging mechanisms used throughout the application have been revised to ensure continued compatibility and stable integration.
Changes
Updated Spotify transformation logic used across the application.
Adjusted tagging and metadata mapping to align with the latest Spotify Web API behavior.
Improved overall Spotify integration stability.
Gharmonize v1.2.1
This release focuses on improving longterm maintainability by introducing an easier way to keep required binaries up to date.
Features
Automatic & Manual Binary Updates
Added support for updating yt-dlp and Deno automatically at system startup.
Added an option to manually update binaries from the Settings panel.
These improvements help ensure the application always runs with the latest compatible versions and remains easier to maintain over time.
Gharmonize v1.2.0
New Features
Added support for:
X (Twitter)
Facebook
Instagram
Vimeo
Dailymotion
TikTok
Added ability to embed lyrics directly into tracks
Added automatic subfolder export for:
YouTube playlists
Spotify playlists
Spotify albums
Improvements
Improved Spotify matching logic for YouTube conversions
Improved playlist output naming
Enhanced YouTube output naming system
MP4 is now the default codec for:
X
Facebook
Instagram
TikTok
Usability
Added Show & Open Download Directory feature
Works only on the server machine where Gharmonize is installed.
Not supported in:
Docker environments
Web client access from other devices
Conversion Insights
Added processing time metrics:
Start time
End time
Total duration
Added MP4 conversion stats:
Converted media duration
FPS information
Gharmonize v1.1.1
Release Highlights
This release focuses on improving dashboard integration, refining cover art handling with optional Spotify support, and strengthening server initialization and error handling.
Added
Homepage Widget Integration
Added a Gharmonize homepage widget for seamless dashboard integration.
Introduced a custom homepage dashboard configuration.
Embedded Gharmonize as a reusable widget component, making it easier to integrate into existing layouts.
Enhanced
Cover Handling with Optional Spotify Support
Improved cover selection logic with clearer preference handling.
Added support for Spotify cover URLs.
Introduced conditional Spotify matching for YouTube downloads:
When PREFER_SPOTIFY_TAGS=1 is set, album covers are optionally fetched from Spotify if a matching track is found.
When disabled, Gharmonize continues using downloaded or embedded covers as usual.
Added environment variable checks to ensure predictable and configurable behavior.
Refactored
Server Initialization & Error Handling
Improved server startup flow for better stability.
Converted PORT handling to a strict numeric value.
Updated and clarified server error messages for easier debugging and maintenance.
Gharmonize v1.1.0
What’s New
Prefer Spotify Album Art
Gharmonize now always fetches and embeds album artwork directly from Spotify during Spotify conversions.
Ensures consistent, official cover art across the pipeline.
Prevents fallback to YouTube/yt-dlp thumbnails.
Produces cleaner, more reliable metadata for downloads and library tools.
DTS Audio Support (Core) for Transcoding + Downloads
Added DTS (Core) as an audio codec option for internal transcoding and download workflows.
Selectable via audio codec options (DTS / dca).
Includes DTS-friendly bitrate presets where applicable (e.g., 768k / 1024k / 1509k / 1536k).
Integrates cleanly with existing settings without changing defaults unless chosen.
MP4 Audio FPS Sync (Tempo Adjust)
Added an audio tempo correction setting to ensure audio stays perfectly aligned during MP4 encoding.
Includes common presets like 23.976 24, 23.976 25, 25 24, and more.
Helps prevent audio drift when converting between TV/stream and cinema frame rates.
Quick to apply via a dedicated UI control.
Gharmonize v1.0.9
What’s New
Preview Encoding (Test Encode)
Before committing to a full conversion, you can now generate a short preview encode.
Why this matters:
Verify output quality before long encodes
Test codec, bitrate, and resolution settings
Confirm audio/subtitle stream selections
Save time by avoiding incorrect full encodes
This makes your encoding workflow safer, faster, and more predictable.
HDR SDR Conversion
You can now properly convert HDR videos into SDR for maximum compatibility.
Includes:
Accurate tone mapping
Controlled peak brightness handling
Correct color space, transfer and range mapping
Clean SDR output for nonHDR displays
Perfect for sharing HDR content on standard screens, mobile devices, and SDR platforms.
SDR HDR Conversion
Need to upgrade your SDR content into HDR? Gharmonize now supports SDR to HDR upscaling.
Features:
Converts SDR to HDR (PQ / BT.2020)
Applies brightness expansion and tone shaping
Produces HDRcompatible video streams
Great for HDR TVs, projectors, and premium displays
Gharmonize v1.0.8
Gharmonize v1.0.8 – Release: Video Processing Improvements
Advanced Video Processing & Transcoding Controls
Modal-based conversion panel
Keeps the interface clean while grouping all conversion tools in one place
Expanded codec & quality options
Gives you finer control over output quality and file size
Future-ready transcoding flow
New architecture prepared for upcoming advanced features
Orientation controls
Automatically or manually rotate videos to the correct direction
Resize modes
Choose how your video should scale (fit, fill, original, etc.)
Advanced cropping tools
Precisely trim edges using left/right/top/bottom controls
Custom borders
Add borders with adjustable size and color for a polished look
Gharmonize v1.0.7
Gharmonize v1.0.7 – Release Highlights
Compression & Encoding
Allow enabling or disabling post-job compression via the UI
Make HEVC encoding selectable
Performance & Platform Optimizations
Optimize the application for Windows
Enable faster downloads by moving metadata fetching to the background
AppImage & EXE Enhancements
Add auto-start on system login (AppImage & EXE)
Support starting the app in the background
Allow the app to keep running in the background
YouTube Improvements
Improve YouTube matching logic
Add configurable concurrency for YouTube downloads and conversions
Enable cookie usage for age-restricted or special content (requires Deno)
Add normalization functions for artist and title matching
Spotify Improvements
Refactor Spotify download and processing logic
Improve Spotify matching, downloads, and conversion
Add a concurrency input field for Spotify downloads/conversions
Add protection settings against rate limits and platform restrictions
UI & UX Improvements
Improve the Jobs panel
Add descriptions for environment variables in the settings panel
Cookie Usage Notes
Cookie support improves YouTube–Gharmonize matching accuracy and allows downloading age-restricted or similar content.
Docker users: Only cookies.txt is supported.
Windows users:
Chrome cannot provide cookies while the browser is running due to platform limitations.
Sign in to YouTube using Firefox or another supported browser, then configure cookie access accordingly.
Set the YTDLP_COOKIES_FROM_BROWSER environment variable via the environment configuration or the settings panel.
Outside of Docker (and when correctly configured on Windows as described above), a cookies.txt file is not required.
Gharmonize v1.0.6
New in This Version
A polished and featurepacked update focused on workflow reliability, audio quality, job persistence, and UI clarity.
Improved Media Handling & Conversion
Refined file upload flow for smoother user experience.
Enhanced media selection logic for both uploaded and locally chosen files.
Added selective audiotrack conversion when media contains multiple audio streams.
More robust handling of inconsistent file metadata.
Job System Enhancements
Persistent Job Tracking
Active jobs now reappear correctly even after a full page refresh.
Completed jobs remain visible in both the Active Jobs list and Jobs Panel until the corresponding output files are deleted.
Improved sync between backend job state and UI display.
Updated Completed & Ongoing Jobs Logic
More accurate joblifecycle reporting.
Reduced flickering or disappearing entries during rapid state changes.
Audio Output Improvements
Added VolumeGain processing, allowing output audio tracks to be normalized or amplified.
Clearer loudness results across MP3, AAC, M4A, and other supported formats.
UI & Usability Upgrades
Jobs Panel Overhaul
Cleaned and reorganized layout.
Improved readability for multitrack conversions.
More consistent progress bars, ETA, and state indicators.
Active Jobs View
Improved spacing and hierarchy.
More consistent interaction between panel view and main page view.
Update Tracking Module
Added builtin version checker.
Displays latest release version and release link.
Integrates with the Jobs Panel for update awareness.
Console Improvements
Console messages rewritten for clearer, more consistent, and more developerfriendly output.
Better grouping and color usage for errors, warnings, and process logs.
Additional Internal Improvements
Small refactors across the UI logic for stability.
Smoother staterestoration on reload.
Better handling of SSE & backend communication.
Gharmonize v1.0.5
Improved MP4 Conversion & Added MKV Support
MP4 conversion has been enhanced for both server-side processing and local media file selections.
MKV is now available as an optional output format, selectable directly from the UI.
Users can now choose audio and subtitle tracks before starting the conversion process.
Integrated ThirdParty Binaries
Gharmonize now bundles its essential thirdparty tools internally:
ffmpeg, ffprobe, mkvmerge, and yt-dlp are now shipped inside the application.
No need to install them system-wide or provide manual directory paths.
Windows users no longer need to set environment variables for ffmpeg or yt-dlp — the built-in versions are used automatically.
New Rip Module (Experimental)
An experimental rip module has been added.
Allows exporting nonDRM discs to MKV format.
Default output directory: local-inputs
Designed as a lightweight and easy ripping solution.
Gharmonize v1.0.4
New Features
Sequential Task Processing System
All added jobs are now executed in order, ensuring predictable processing even when you queue tasks with different configurations.
Environment Selection from local-inputs (Admin Only)
A new option lets you select media directly from the local-inputs folder, allowing conversion without uploading large files through the UI.
MultiFile Selection Support
The upload system now supports multifile selection, making bulk operations smoother and faster.
General Improvements
UI & Usability Improvements
General interface polish and userexperience enhancements across the platform.
Gharmonize v1.0.3
Audio Codec Improvements
AAC codec support added for improved compatibility across devices.
Enhanced FLAC and WAV pipelines for better stability and audio precision.
FPS adaptation now includes AAC for more reliable A/V sync.
FLAC & WAV Enhancements
More accurate control over:
Compression level
Bit depth
Output quality
MP4 Handling Changes
Some MP4related environment variables were removed.
This may affect downloads of agerestricted or regionlocked videos.
If required, you may need to provide cookies (browser extension recommended).
MP4 codec upgrades:
Supports resolutions up to 2160p.
Two modes available:
Transcode using your selected encoder
Download asis (no reencoding)
If the requested quality is unavailable, the closest match is automatically selected.
GPU Acceleration
Added hardwareaccelerated transcoding for:
NVIDIA NVENC
Intel QuickSync
VAAPI
Note: In Docker, VAAPI and Intel QuickSync are disabled by default.
When NVENC is enabled, all hardwareacceleration requests are routed to NVENC.
See the README section on enabling NVENC in Docker for full configuration instructions.
Upload System Update
Maximum upload size is now controlled via an environment variable.
The value can be changed directly from the Settings Panel.
Docker – NVENC Setup (Quick Note)
Before enabling NVENC in Docker:
Make sure your host has NVIDIA GPU drivers + the NVIDIA Container Toolkit.
Enable NVENC following the instructions in the README.
Once active, the system automatically prefers NVENC.
Gharmonize v1.0.2
New
Added FPS adaptation support for AC3 and EAC3 codecs.
Now, audio encoded with AC3/EAC3 can seamlessly adjust playback speed to match different frame rates (e.g., PAL NTSC), ensuring perfect audio-video sync and smooth playback across regions.
Improvements
Enhanced UI fallback behavior for smoother user experience and better resilience in edge cases.
Counters now display more accurate results and update dynamically for both downloaded and converted media.
Gharmonize v1.0.1
New Features
Windows support added!
You can download it directly below.
Or, follow the instructions in the README section to build it yourself.
General Improvements
Overall performance and stability enhancements.
Minor UI adjustments and bug fixes.
Gharmonize v1.0.0
Gharmonize is now officially released as a stable version.
This build includes all core features described in the [README], focused on reliability, clarity, and performance.
Highlights
Full support for YouTube / YouTube Music (single, playlist, automix)
Spotify integration for tracks, playlists, and albums
Conversion to mp3 / flac / wav / ogg / mp4
Embedded metadata & album art support
Simple web UI and JSON API
Ready-to-use Docker Compose setup
Tech Stack
Node.js + ffmpeg + yt-dlp + Express + Docker
Stability Notes
This is a stable and feature-complete build intended for general use.
Further releases will focus on UI refinement, parallel task improvements, and optional advanced settings.
Gharmonize v1.4.5 focuses on Windows compatibility, yt-dlp download reliability, security improvements, updated dependencies, and overall application stability.
Windows & Download Fixes
yt-dlp Download Fix: Addressed Windows-specific issues affecting yt-dlp downloads and subprocess execution.
Process Management: Fixed Windows temporary-file lease handling and improved process reliability.
Path Compatibility: Improved cross-platform path validation and runtime handling.
Build Reliability: Fixed Windows subprocess startup during Electron dependency installation.
Security Improvements
Vulnerability Fixes: Resolved vulnerable minimatch dependency chains, including CVE-2026-118764.
Safer Cleanup: Introduced secure temporary-directory cleanup without unsafe glob expansion.
Dependency Security: Improved dependency resolution across npm versions.
Docker Compatibility: Improved reproducible dependency installation.
Dependencies & Stability
Electron: Updated to 45.1.0.
electron-builder: Updated to 26.18.1.
music-metadata: Updated to 12.3.2.
dotenv: Updated to 18.0.9.
Regression Tests: Expanded Windows compatibility, security, and temporary-file management tests.
Runtime Stability: Improved background cleanup and graceful process shutdown.
Gharmonize v1.4.4
What's New
Gharmonize v1.4.4 brings customizable desktop tray icons, detailed job performance tracking, smarter video processing, improved audio/video synchronization, and updated dependencies.
Desktop Tray Icons
Four icon modes: Original, Dark, Light, and Automatic (System Theme).
Automatic theme detection: Tray icons adapt to the system's light or dark appearance.
Windows integration: Follows the Windows taskbar/system theme independently of the application theme.
Persistent preferences: Selected icon modes are remembered across restarts.
High-DPI support: Sharper monochrome icons with efficient theme detection.
Job Stages & Performance Tracking
Stages and Timings: Detailed processing information for Classic and YTLive jobs.
Elapsed-time tracking: Live duration indicators on job cards.
Per-track insights: Track matching, downloads, metadata, artwork, conversion, lyrics, and retagging.
Detailed statuses: Improved visibility into cached matches, retries, failures, missing matches, and cancellations.
Persistent history: Completed timing measurements are preserved in job history.
UI refinements: Improved job cards and timing dialogs across different screen sizes and themes.
Video Conversion Improvements
Automatic black-border cropping: Optional detection and removal of black borders when using automatic output height.
Smart aspect ratio: Output scaling adapts to the detected video content.
Multi-sample detection: Analyzes multiple video samples to avoid incorrect cropping.
Preview compatibility: Respects preview clips and video orientation settings.
Improved A/V synchronization: Better handling of timestamp gaps and delayed streams during re-encoding.
Stream-copy preservation: Original stream timing behavior remains unchanged.
Dependencies & Stability
Electron: Updated to 44.9.3.
electron-builder: Updated to 26.18.0.
dotenv: Updated to 18.0.8.
music-metadata: Updated to 12.2.3.
Dependency improvements: Updated dependency resolutions addressing upload handling, HTTP parsing, URI processing, and build-tool vulnerabilities.
Gharmonize v1.4.3
Security fix
Creating conversion jobs from server-local files now requires an administrator session, just like browsing and probing those files. Previously, a user could submit a known relative filename directly to the job API without passing the local-file administrator check.
The check applies in both public-access mode and temporary-access mode. Approved temporary users can still upload their own files and use remote URLs, but cannot create jobs from the server's local media directory. Normal uploads and remote downloads are unchanged.
Thanks to @Artur12555 for catching the missing check and reporting it.
Disc Ripper progress connection
Open the protected progress stream only after confirming an administrator session with the server.
Close the connection on logout, including logout in another browser tab.
Recheck administrator access before reconnecting after a dropped connection, instead of repeatedly requesting a protected stream with an expired session.
Keep idle progress connections alive with regular heartbeats and release disconnected clients and timers.
Windows code signing status — please read
The Windows files in Gharmonize v1.4.3 do not carry a trusted Authenticode signature. The SignPath Foundation production code-signing certificate is still pending. Self-signed test certificates are not used for this public release.
This applies to the Setup installer, the standalone Portable EXE, and the application executable inside the Portable Folder ZIP. Windows may display an unknown-publisher or SmartScreen warning; managed Windows security policies may block execution.
Download only from this repository's official Releases page and verify the published checksums and GitHub artifact attestations. The GPG-signed checksum manifest verifies release integrity but is not a Windows Authenticode signature. Do not disable Windows security protections or install a test certificate to run this release.
Downloads
Windows Setup, Portable EXE, and Portable Folder packages are published alongside the Linux AppImage and its .zsync update metadata by the automated release workflow. Container images are published separately to ghcr.io/g-grbz/gharmonize:1.4.3 and ghcr.io/g-grbz/gharmonize:latest by the Docker workflow.
Gharmonize v1.4.2
This release focuses on desktop stability, FFmpeg compatibility, configuration handling, and improvements to music processing.
Improvements & Fixes
Desktop & Runtime
Fixed custom DATA_DIR configurations being ignored in packaged desktop builds, resolving #23
Unified desktop caches under DATA_DIR/Cache without deleting existing cache directories.
Removed forced GPU acceleration disabling in the Linux AppImage.
Improved FFmpeg and FFprobe management, including software fallback when NVIDIA NVENC is unavailable.
Added compatibility-tested FFmpeg options for older NVIDIA drivers.
Fixed incorrect tool version labels and prevented unintended fallback to system binaries.
Improved yt-dlp process termination and temporary file cleanup.
Music & Metadata
Improved music matching for artist credits, accented titles, and duration differences.
Fixed redundant combining dots in newly created playlist folder names.
Preserved accurate MP3 duration metadata during conversion, retagging, and lyric embedding.
Dependency Updates
Electron 44.6.0
music-metadata 12.0.0
dotenv 18.0.6
express-rate-limit 8.7.1
proxy-addr 2.0.8
Gharmonize v1.4.1
Gharmonize v1.4.1 focuses on desktop stability, media-processing reliability, disc ripping, AppImage distribution, security hardening, and release infrastructure improvements.
Highlights
Improved Electron desktop stability, especially when Gharmonize is minimized, restored from the system tray, or left running in the background.
Improved Blu-ray disc scanning and ripping with safer handling of malformed or unusual playlists.
Reduced unnecessary Classic UI work and improved background job rendering efficiency.
Added bounded music metadata, cover-art, and lyrics requests so unavailable providers cannot indefinitely delay conversion.
Improved Apple Music, Deezer, and Spotify matching for accented titles and common video-title labels.
Added a more complete AppImage update infrastructure with embedded update information and .zsync metadata.
Added SignPath code-signing preparation, policy documentation, and CI testing infrastructure.
Updated and cleaned dependency chains to resolve audit findings and reduce vulnerable development dependencies.
Windows code signing status — please read
The Windows files in Gharmonize v1.4.1 do not carry a trusted Authenticode signature.
The SignPath Foundation production code-signing certificate is still pending. Self-signed test certificates are not used for this public release.
This applies to:
Windows Setup installer
Standalone Portable EXE
Application executable inside the Portable Folder ZIP
Windows may therefore display an Unknown Publisher or Microsoft SmartScreen warning, and managed Windows security policies may block execution.
Download Gharmonize only from this repository's official Releases page and verify the published checksums and GitHub artifact attestations.
The GPG-signed checksum manifest verifies release integrity, but it is not a Windows Authenticode signature.
Do not disable Windows security protections or install a test certificate to run this release.
Performance & Processing Improvements
Several internal processing paths have been optimized to reduce unnecessary work and improve reliability.
Reduced unnecessary Classic UI work by batching layout updates.
Duplicate job snapshots are now ignored where possible.
Hidden job-panel rendering is deferred until needed.
Optional music metadata, cover-art, and lyrics requests now use bounded waits so unavailable providers cannot indefinitely delay conversion.
Added per-track download and metadata timings to help identify slow processing stages.
Fixed successful embed-only lyrics being incorrectly reported as missing.
Corrected duplicate lyrics statistics.
Improved Apple Music, Deezer, and Spotify matching for accented titles.
Improved matching of video labels such as (Clip Officiel) without stripping meaningful musical versions such as Live and Remix.
Corrected fallback track numbering when only part of an Automix playlist is selected.
Disc Ripper
Disc handling has received several reliability improvements.
Improved Blu-ray playlist detection and validation.
Added safer handling for malformed or incomplete Blu-ray playlist data.
Improved disc scanning behavior and error handling.
Improved ripping flow for problematic discs.
Added additional automated tests for disc scanning and ripping.
These changes make the disc ripper more tolerant of unusual Blu-ray structures instead of failing the complete scan because of an individual invalid playlist.
Desktop / Electron
Several issues affecting long-running desktop sessions have been addressed.
Fixed cases where the Electron renderer could become unresponsive while running in the background.
Fixed blank-window behavior after restoring Gharmonize.
Improved window restoration when using the system tray.
The main Electron window is now preserved more reliably across tray hide/show operations.
Removed temporary desktop health diagnostics used during troubleshooting.
Protected runtime binary readiness checks are now started after access has been granted.
Improved artifact download handling in the Electron application.
AppImage
The Linux AppImage release process has been significantly improved.
Added embedded AppImage update information.
Added .zsync metadata generation for supported AppImage update tools.
.zsync metadata is now distributed alongside the corresponding AppImage artifact.
Added a dedicated AppImage release packaging script.
Improved runtime portability through the required static runtime components.
This prepares Gharmonize AppImage builds for a cleaner incremental-update workflow.
Security & Code Signing
Release and security infrastructure has also been expanded.
Added CODE_SIGNING_POLICY.md.
Added SignPath signing workflow preparation.
Added a SignPath CI test workflow.
Added release-signing documentation and policy information.
Added PRIVACY.md.
Extended security-related automated tests.
Removed vulnerable development dependency chains.
Resolved additional dependency audit findings.
Gharmonize v1.4.0
Gharmonize v1.4.0 expands the music pipeline with TIDAL and SoundCloud support, introduces a new bulk music text import workflow, improves YouTube matching reliability, and adds several queue, background processing, and UI improvements.
Highlights
TIDAL Support
Gharmonize can now process TIDAL music metadata and collections through the mapped-music pipeline.
TIDAL track metadata support
Collection processing
Source metadata normalization
Integration with the existing music matching and download workflow
SoundCloud Support
SoundCloud is now supported as an additional music source.
Supported content includes:
Individual tracks
Sets / playlists
Profile collections
Popular tracks
Normalized source metadata
Safer YouTube Matching
YouTube matching has been significantly improved across:
Spotify
Apple Music
Deezer
TIDAL
SoundCloud
Bulk text imports
Matching improvements include:
Duration validation
Better candidate ranking
Safer fallback queries
Retry handling
Cache revalidation
Protection against unrelated long-form matches
More tolerant title normalization and safe spelling variants
These changes reduce incorrect matches while still allowing useful fallback searches when an exact result is unavailable.
Bulk Music Text Import
A new bulk music import workflow is now available in both Classic UI and YTLive.
You can paste lists such as:
Enigma – Return to Innocence
Vangelis – Conquest of Paradise
Bar Manço – Gülpembe
Cem Karaca – Tamirci Çra
Gharmonize will automatically:
Parse the artist and track names
Find safe YouTube / YouTube Music matches
Display matching progress per track
Add matched tracks to the download pipeline
Download them using the selected output format
Large lists can be pasted directly, making it easy to import recommendations generated by ChatGPT or other sources.
Smarter List Parsing
The importer supports:
Numbered lists
Markdown-formatted lists
Artist – Track
Artist — Track
Artist - Track
Optional descriptions after the track name
Turkish and international characters
Long artist and track names
Shared Music Queue
Classic UI and YTLive now share the same music import queue and state.
This means you can:
Add a list in Classic UI
Switch to YTLive
Continue viewing the same list
Keep existing matches
Resume canceled jobs without repeating the entire matching process
Existing queue state is migrated automatically.
Background Matching
Bulk music matching now runs independently from the import modal.
Closing the modal no longer stops the operation.
You can close and reopen the interface while matching continues in the background, and Gharmonize will restore:
Matching progress
Matched tracks
Unmatched tracks
Job state
Queue & Auto-Remove Improvements
Queue cleanup behavior has been improved.
The URL queue and bulk text import queue now operate independently.
When working in the URL tab, only URL jobs are processed.
When working in the Music List tab, only bulk music entries are processed.
Automatic cleanup can remove completed and unmatched items while preserving failed or canceled entries that may need to be retried.
UI Improvements
The bulk import interface now includes:
Larger scrollable track lists
Per-track status indicators
Matching
Matched
Completed
Not Found
Disabled action controls while an operation is active
Background progress restoration
Auto-hiding completion messages
Improved modal sizing
Shared state between Classic UI and YTLive
Download Pipeline Reliability
Additional safeguards were added around yt-dlp and FFmpeg processing.
Improvements include:
yt-dlp watchdog handling
FFmpeg watchdog handling
Protection against stalled workers
Safer retries
Improved failure recovery
These changes help prevent individual downloads from blocking an entire job.
Dependency Updates
Electron updated from 44.1.1 44.3.0
Includes automated Dependabot maintenance
Changes Included
[feat: add bulk music text import, shared queue state, background matching, and UI fixes](https://github.com/G-grbz/Gharmonize/commit/6e03f24f5e2140052de0d8aae2c4c1c1d1ccf8d1)
[feat(music): add TIDAL and SoundCloud support with safer YouTube matching](https://github.com/G-grbz/Gharmonize/commit/53a53060e20f789c2c5fcebd1a66ea994428a573)
[chore(deps-dev): bump Electron from 44.1.1 to 44.3.0](https://github.com/G-grbz/Gharmonize/commit/e7861402526d50c8f579fcae151497c35ee397d1)
Gharmonize v1.3.9
This release moves the official Gharmonize container distribution to GitHub Container Registry and introduces configurable application access and authentication modes.
GitHub Container Registry
The official Gharmonize container image has moved from Docker Hub to GitHub Container Registry (GHCR).
The official image is now available at:
docker pull ghcr.io/g-grbz/gharmonize:latest
Version-specific images are also published:
docker pull ghcr.io/g-grbz/gharmonize:1.3.9
The GHCR package is directly associated with the official G-grbz/Gharmonize source repository, keeping the source code, releases, and container images under the same official GitHub distribution channel.
Docker Hub is no longer an official Gharmonize distribution channel.
Application Access & Authentication
Gharmonize now includes configurable application access modes:
No Login — preserves the existing behavior and requests administrator authentication only for protected actions.
Admin Login — requires administrator authentication before the application can be accessed.
Temporary Access — allows clients to request time-limited access that an administrator can approve or reject.
Temporary access management also includes:
Access request management in both Classic and YTLive interfaces.
IP-based duplicate request protection.
Rejection cooldowns to prevent repeated access-request spam.
Active temporary access sessions visible to administrators.
Server-side access revocation at any time.
Temporary access remains separate from administrator privileges.
Dependency Update
Updated Electron from 42.10.1 to 44.1.1.
What's Changed
Migrated the official Gharmonize container image from Docker Hub to GitHub Container Registry.
Added configurable application access and authentication modes.
Added temporary access requests, approvals, rejection handling, and revocation.
Added access management to Classic and YTLive.
Added IP-based duplicate request protection.
chore(deps-dev): bump electron from 42.10.1 to 44.1.1 by @dependabot[bot] in #10
Gharmonize v1.3.8
Gharmonize v1.3.8 focuses on improving music download workflows, expanding the classic UI queue system, refining personalized YouTube Music shelves, improving lyrics handling, and bringing more audio controls directly into YTLive.
Classic UI — Sequential Music URL Queue
The classic interface now includes a persistent queue system for supported music service URLs.
What's New
Added a dedicated queue modal for:
Apple Music
Spotify
Deezer
Process queued URLs sequentially without affecting normal single-URL downloads
Added URL validation before items enter the queue
Display resolved metadata titles for queued items
Added per-item status indicators
Persist queue state across page reloads
Keep failed items in the queue for easier retrying
Optionally remove completed items while preserving failed entries
Added a dedicated queue download action
Improved queue layout, controls, and overall visual consistency
The existing single-URL download workflow remains unchanged.
YTLive — Improved Personalized Music Shelves
Personalized YouTube Music content is now loaded more progressively and reliably.
Improvements
Load personalized YouTube Music shelves progressively
Improved browser-session authentication handling
Improved YouTube Music account detection
Increased the personal shelf limit from 12 to 50
Improved fallback behavior when personalization is unavailable
Keep shelf navigation arrows visible with native edge feedback
Make overflowing download lists expandable
Keep the Create List action accessible inside long list menus
These changes make large personalized libraries easier to browse while reducing unnecessary loading delays.
YTLive — Download List Navigation
Download list navigation has been refined for larger collections.
Changes
Added navigation arrows to download list rails
Keep download list menus inside the visible viewport
Improved navigation behavior for long and overflowing lists
YTLive — Volume & Loudness Controls
YTLive now exposes additional audio-processing controls directly from the Now Playing panel.
New Controls
Added adjustable volume amplification
Added loudness normalization (loudnorm)
Added selectable loudnorm processing modes
Persist audio-processing preferences between sessions
These options are applied directly to YTLive download jobs, including supported music-service matching workflows.
Compact YTLive Playback Actions
The YTLive Now Playing panel has been streamlined without expanding its existing layout.
UI Changes
Replaced text-heavy playback actions with compact SVG controls
Added compact YouTube action
Added lyrics download action
Added embedded lyrics action
Added ZIP output action
Kept primary download controls easily accessible
Preserved the existing .now-panel footprint and visual structure
The result is a cleaner control surface with more functionality in the same amount of space.
Lyrics Embedding Improvements
Lyrics handling has been improved across both the Classic UI and YTLive download workflows.
Improvements
Restored reliable lyrics embedding directly into audio files
Allow lyrics to be embedded even when separate lyrics-file downloading is disabled
Continue using cached lyrics when available
Preserve automatic artist and track matching for lyrics lookup
Support multiline lyrics metadata when writing tags with FFmpeg
Improved FFmpeg metadata validation while preserving process-argument security
Reworked metadata validation to avoid inefficient regular-expression processing
Lyrics can now be stored directly inside supported audio files instead of requiring a separate lyrics file.
Summary
Gharmonize v1.3.8 brings:
Persistent sequential music URL queues
Reliable multi-link music processing
Expanded personalized YouTube Music shelves
Progressive YTLive shelf loading
Improved download-list navigation
Volume amplification controls
Loudness normalization modes
Reliable embedded lyrics support
Improved multiline lyrics metadata handling
Cleaner and more compact YTLive actions
Better persistence across UI workflows
Improved metadata-processing security
This release primarily improves high-volume music workflows, lyrics handling, and YTLive functionality while keeping the interface compact and responsive.
Gharmonize v1.3.7
This release improves Deezer integration, startup reliability, binary management, process security, and yt-dlp compatibility.
Deezer
Added support for Deezer /search/<artist>/track URLs
Fetch up to 1000 artist tracks
Start matching, downloading, and conversion while results are still loading
Fixed incorrect matched-track counts and progress race conditions
Added personalized inspired-by smart tracklist support
Preserved existing DEEZER_ARL integration
Startup & Binary Tools
Added a startup readiness screen while required tools are being prepared
Added the same startup gate to Classic and YTLive interfaces
Fixed mkvmerge and yt-dlp version detection
Improved managed FFmpeg, FFprobe, MKVToolNix, yt-dlp, and Deno handling
Security
Hardened child-process execution with fixed allowlisted executable dispatch
Prevented remote release metadata from controlling executable paths
Hardened managed MKVToolNix and mkvpropedit execution
Added additional security regression tests
yt-dlp
Restored safe --cookies-from-browser support
Restored safe managed --ffmpeg-location support
Unsafe yt-dlp arguments remain blocked
YTLive
Improved startup initialization
Improved YouTube iframe and origin handling
Fixed Google Fonts CSP loading
Improved player initialization behavior
Validation
63/63 tests passing
Syntax checks passing
CodeQL security findings addressed
Linux AppImage workflow verified
Tested with Electron 42.x
Gharmonize v1.3.6
What's Changed
Security and Configuration
Implemented decryption for sensitive environment keys after configuration reload.
Added decryption support for SPOTIFY_CLIENT_SECRET and HOMEPAGE_WIDGET_KEY.
Prevented browsers and password managers from autofilling ENV settings.
Added validation and automatic cleanup for invalid YTDLP_EXTRA values.
Spotify Processing
Fixed Spotify matching failures caused by autofilled positional yt-dlp arguments.
Previously unmatched cached tracks are now automatically retried.
Fixed a race condition where temporary cover images were deleted before FFmpeg retagging completed.
Spotify metadata and cover retagging now complete before job cleanup.
Validation
Added regression coverage for ENV autofill protection.
Added regression coverage for yt-dlp argument validation.
Added regression coverage for the Spotify retag lifecycle.
Gharmonize v1.3.5
Gharmonize v1.3.5 is a major security and release-engineering update focused on hardening the desktop and web runtime, protecting sensitive configuration, improving Electron isolation, and introducing a verifiable multi-platform release pipeline.
This release also restores YTLive playback under the hardened security policy and improves Linux desktop integration.
Security Hardening
Gharmonize now includes several layers of protection across authentication, configuration storage, network access, file handling, and process execution.
Authentication & Secrets
Migrated administrator password storage to scrypt
Added automatic migration from legacy plaintext passwords
Added AES-256-GCM encryption at rest for sensitive configuration values
Added dedicated master-key support through:
GHARMONIZE_MASTER_KEY
GHARMONIZE_MASTER_KEY_FILE
Removed the known default administrator password
New installations generate a randomized initial administrator password
Administrator sessions are invalidated after password changes
Browser authentication now uses a protected HttpOnly + SameSite=Strict session cookie instead of exposing the bearer token through localStorage
Added authentication rate limiting
Network & API Security
Added protection against SSRF and access to unsafe/private network targets
Added trusted proxy IP/CIDR validation
Forwarded headers are accepted only from explicitly trusted proxy peers
Added cross-site unsafe request protection
Default non-container server binding is now:
127.0.0.1
Docker deployments can explicitly bind to 0.0.0.0
Added stricter security headers and Content Security Policy rules
Filesystem & Upload Protection
Added protection against path traversal in upload and local-file workflows
Restricted chunk upload IDs, filenames, destination paths, and completed upload paths to approved directories
Added upload size and range validation
Disc and filesystem operations now require administrator authentication
Hardened runtime/cache/key file permissions
Improved Docker runtime isolation and writable-volume handling
Safer Process Execution
Media processing paths received additional hardening around external tools.
Replaced shell-based disc processing commands with argument-safe execFile() execution
Removed unnecessary shell execution from installation helpers
Restricted dangerous yt-dlp options by default, including options capable of:
executing arbitrary commands
replacing external downloaders
changing arbitrary output paths
loading arbitrary configuration or plugins
Advanced users can still explicitly opt into unrestricted behavior when required
Runtime Binary Security
Automatic runtime binary management is now safer.
Restricts binary downloads to trusted HTTPS origins
Adds download size validation
Verifies available SHA-256 release digests before activating downloaded binaries
Prevents unverified binaries from being silently trusted
Existing FFmpeg last-known-good and compatibility protections remain available
Electron Security
The desktop runtime received significant isolation improvements.
contextIsolation: true
nodeIntegration: false
sandbox: true
Added IPC sender validation
Added external URL scheme validation
Restricted renderer navigation and new-window creation
Denies unapproved Electron permission requests
Removed executeJavaScript()-based renderer synchronization
Reworked the preload bridge to use a sandbox-compatible CommonJS preload
Electron remains on the stable 42.x release line because Electron 43 introduced a Linux StatusNotifierItem / tray regression affecting Gharmonize.
Linux Desktop Improvements
Restored Linux system tray support
Added tray initialization diagnostics
Added safe shutdown behavior when a system tray is unavailable
Prevents Gharmonize from becoming an invisible background process when tray initialization fails
Restored native filesystem selection inside AppImage builds
Native desktop builds once again use the system file picker instead of the web/Docker local-inputs dialog
YTLive Playback
Restored YouTube playback after CSP hardening
Added narrowly scoped access for the official YouTube IFrame API
Preserved the restrictive CSP without re-enabling unsafe inline JavaScript
Removed unnecessary remote executable dependencies
Improved compatibility between the hardened Electron renderer and YTLive
Password Policy
Administrator passwords now require:
At least 8 characters
At least one letter
At least one uppercase letter
At least one number
Localized validation messages were updated to match the actual security policy.
Repository Security
The repository now includes:
GitHub Actions CI
Node.js 22 / 24 / 26 validation
Security regression tests
CodeQL with security-extended
Dependabot
SECURITY.md
Dependency auditing
Release version consistency checks
The security regression suite currently contains:
22 tests
22 passed
0 failed
Verified Release Pipeline
Gharmonize now uses a centralized GitHub Actions release workflow.
A version tag such as:
v1.3.5
automatically builds and validates:
Windows NSIS installer
Windows portable executable
Windows portable folder archive
Linux AppImage
Source archive
CycloneDX SBOM
SHA-256 checksums
GitHub artifact provenance attestations
electron-builder is explicitly configured with:
--publish never
so it only builds application artifacts. GitHub Actions remains responsible for publishing the final release.
Contributions
This release also includes the community contribution:
Added rate limiting middleware improvements by @anupamme in #5
Dependency automation updates:
Bumped actions/github-script from v8 to v9 by @dependabot[bot] in #6
Electron 43 was evaluated through @dependabot[bot] in #7, but Gharmonize remains on Electron 42.x due to the Linux tray regression
New Contributors
Gharmonize v1.3.4
This release improves FFmpeg runtime reliability and hardware encoding compatibility, introducing safer FFmpeg updates with automatic validation and rollback protection.
Safer FFmpeg Updates
Switched the default FFmpeg update channel from development builds to the stable release branch
Added runtime validation before activating newly downloaded FFmpeg builds
Added protection against updates that break previously working hardware encoding
Keeps the previous working FFmpeg build as a last-known-good fallback
Automatically rejects incompatible FFmpeg updates and continues using the working version
Prevents repeatedly downloading a recently rejected incompatible build
Improved NVENC Compatibility
Added runtime validation for NVIDIA NVENC instead of relying only on encoder availability reported by FFmpeg
Detects NVIDIA driver and NVENC API incompatibilities before using a newly downloaded FFmpeg build
Prevents automatic FFmpeg updates from unexpectedly breaking working NVENC configurations
Improved NVENC error reporting to expose the actual driver or API compatibility issue instead of generic encoder errors
Preserves software and other hardware acceleration methods when NVENC is unavailable
FFmpeg Update Channel
Added the new GHARMONIZE_FFMPEG_CHANNEL setting
Added Stable and Master FFmpeg channel selection to System Variables
Stable is now the default and recommended option
Master remains available for users who want the latest development builds
Added localized setting labels and descriptions
Automatic Rollback Protection
Gharmonize now tests a new FFmpeg build before making it active.
If the currently installed FFmpeg supports NVENC but a newly downloaded build no longer works with the system's NVIDIA driver, Gharmonize rejects the new build and keeps the previous working version.
This allows FFmpeg to continue updating automatically while reducing the risk of hardware acceleration suddenly becoming unavailable after an upstream FFmpeg or NVENC API change.
Gharmonize v1.3.3
This release introduces safe retagging for existing music files to the classic UI, allowing MP3, FLAC, and M4A files from outside Gharmonize to be matched again and completed with missing metadata and cover art.
Safe Retagging
Added a new Retag output mode to the classic UI
Added directory selection for existing music libraries
Matches existing MP3, FLAC, and M4A files against available metadata sources
Writes missing or updated metadata and cover art without re-encoding audio
Safely renames matched files using the Artist - Track Title format
Preserves existing files when filename collisions occur
Improved Metadata Matching
Improved matching for joined, spaced, and collaborating artist names
Excluded parenthesized text from metadata searches
Ignores content after the second separator for cleaner search queries
Improved matching reliability for difficult track and artist names
Safer Processing
Added a confirmation modal before starting retag operations
Added a clear recommendation to back up files before processing
Added metadata, cover art, and rename statistics to job cards
Improved protection against accidental file overwrites
Docker & Desktop Improvements
Added Docker-compatible directory access for retagging
Added native directory selection when running under Electron
Fixed the AppImage dock icon
Fixed Linux application window association
Gharmonize v1.3.2
This release enhances the YTLive interface, expands playback navigation controls, and introduces new configuration options for application timeouts, playlist processing, and file uploads.
It also improves automatic track navigation, adds previous and next controls for playlist playback, introduces an auto-play mode for individual tracks, and updates application and build dependencies.
YTLive Interface & Styling
Enhanced the overall YTLive interface
Improved visual consistency across YTLive components
Refined interface spacing, layout, and responsive behavior
Improved styling for playback and navigation controls
Improved the usability of playlist and track actions
Playback Navigation Controls
Added Previous and Next buttons for playlist playback
Improved navigation between tracks in active playlists
Updated player controls dynamically during automatic playback
Improved previous and next track selection while auto-play is active
Preserved playlist navigation state during continuous playback
Auto-Play Improvements
Added an auto-play mode for individually selected tracks
Automatically continues playback with related or available tracks
Improved track transitions during automatic playback
Improved player navigation controls while operating in auto mode
Refined track selection behavior when the playback queue changes
New Configuration Options
Updated .env.example with newly supported configuration parameters
Added configurable timeout values for application operations
Added playlist processing and item-count limits
Added upload size and processing limits
Improved configuration flexibility for different deployment environments
Documented the new environment options in the example configuration
Dependency Updates
Updated application dependencies
Updated Electron and build-related dependencies
Improved compatibility with newer runtime components
Refreshed development and packaging dependencies
Improved overall build and runtime reliability
Gharmonize v1.3.1
This release introduces YTLive Download Lists, allowing tracks, albums, and playlists from multiple music services to be collected into custom lists and downloaded or converted in batches with a single action.
It also adds cached Spotify, Apple Music, and Deezer mapping workflows, download-list synchronization, locale-aware mood discovery, improved album metadata matching, and several runtime reliability improvements.
YTLive Download Lists
Added a new My Download Lists section to YTLive
Create custom download lists directly from the YTLive interface
Add tracks, albums, and playlists to the same list
Combine music content from YouTube, Spotify, Apple Music, and Deezer
Remove individual items or delete complete lists
Store download lists persistently in the application cache
Display item counts, list status, and list cards in the YTLive interface
Queue an entire list for batch downloading and conversion with a single action
Cached Music Mapping
Added persistent mapping manifests for Spotify, Apple Music, and Deezer sources
Resolve external music sources to matching YouTube Music results
Cache matched YouTube Music IDs as JSON manifests and URL lists
Reuse previously matched tracks through cache hits instead of searching again
Integrated mapping operations with YTLive streaming and progress updates
Added shared concurrency handling across Spotify, Apple Music, and Deezer mapping pipelines
Batch Downloading
Added per-track job creation for items stored in download lists
Added one-click batch download and conversion actions
Added clientBatch and batchTotal metadata for tracking grouped jobs
Preserved the existing job pipeline while providing more controlled list-based queueing
Maintained stable item ordering during mapped music downloads and conversions
Expanded Quick URL Support
Extended the YTLive quick URL field beyond YouTube and YouTube Music
Added support for Spotify URLs
Added support for Apple Music URLs
Added support for Deezer URLs
External music URLs are now resolved and mapped to YouTube Music before processing
Download List Synchronization
Added synchronization support for saved mapped music lists
Re-resolve saved Spotify, Apple Music, and Deezer playlists or albums
Detect and add newly available tracks
Refresh cached mappings during synchronization
Rebuild outdated list resolutions without recreating the complete list
Discovery Improvements
Reworked YTLive discovery presets to better match the user's language and region
Replaced generic popular and new-release searches with mood-focused discovery presets
Added the following discovery moods:
Energetic
Workout
Feel Good
Relax
Sad
Romantic
Commute
Party
Focus
Sleep
Prioritized music-focused content in mood discovery results
Filtered Shorts, podcasts, and episodes from mood shelves
Improved regional and localized discovery behavior
Playback & YTLive Improvements
Preserved the active player while searching, navigating, and refreshing shelves
Prevented page interactions from unnecessarily interrupting active playback
Improved YTLive playback stability
Improved embedded player fallback behavior
Clarified currently playing track indicators in playlist and album views
Improved download actions in playlist and album track panels
Metadata & File Naming
Improved YouTube Music album-name detection
Improved album artist detection and normalization
Improved ID3 metadata matching for YouTube Music album tracks
Reduced metadata mismatches caused by inconsistent album and track names
Preserved cleaner track metadata during lyrics matching
Reduced incorrect lyrics matches
Improved output directory naming for album downloads
Preserved original filenames for uploaded files and local media jobs
Runtime & Reliability Improvements
Improved runtime binary validation and download workflows
Improved yt-dlp process cleanup
Improved temporary runtime binary handling
Strengthened completed-job state persistence
Added improved cache-directory writability checks
Added fallback handling when the primary job-state cache directory is unavailable
Documentation & Licensing
Simplified the main README
Moved detailed usage documentation under the docs/ directory
Reorganized the project license files
Reorganized third-party license documentation
Note
YTLive Download Lists expand Gharmonize from a music discovery and playback interface into a persistent multi-source download workflow.
Tracks, albums, and playlists from YouTube, Spotify, Apple Music, and Deezer can now be collected into reusable lists, synchronized with their original sources, resolved through cached YouTube Music mappings, and queued for batch downloading or conversion.
Gharmonize v1.3.0
This release introduces YTLive, a brand-new YouTube and YouTube Music experience for discovery, playback, playlist browsing, and queue management.
It also adds configurable frontend selection, new YouTube Music APIs, queue monitoring, and expanded localization support.
What Does It Add?
Nothing important.
I merely replaced "one page" with "another page".
New YTLive Interface
Added the new YTLive interface for YouTube and YouTube Music
Search YouTube videos, tracks, albums, playlists, and artists from a dedicated music-focused UI
Browse YouTube Music home recommendations and discovery shelves
Preview playlists and queue tracks directly from the interface
Integrated playback, queue management, and workflow controls
Added a dedicated standalone YTLive page
YouTube Music Discovery
Added YouTube discovery endpoints under /api/youtube
Added YouTube search endpoints for YTLive
Added YouTube Music Home shelf support
Improved playlist expansion and metadata normalization
Added cookie-aware YouTube Music browsing support
Enhanced regional market handling for music discovery
Configurable Frontend Selection
Added a new FRONTEND_UI setting
Allows selecting either the classic Gharmonize interface or YTLive as the default application frontend
Added /api/ui-config endpoint for frontend configuration
Added YTLive launch shortcuts from the classic interface
YTLive Settings & Queue Management
Added YOUTUBE_QUICK_ADD_LIMIT configuration
Added YTLive-specific settings controls
Added /api/queue/status endpoint for queue monitoring
Improved active job tracking and workflow visibility
Added cross-tab and session synchronization for job state updates
User Interface Improvements
Added dedicated YTLive styling and responsive layouts
Added music-focused playback controls
Added queue and playlist browsing panels
Added recommendation shelf presentation
Improved navigation between classic UI and YTLive
Documentation & Configuration
Updated README with YTLive documentation
Documented frontend selection options
Documented YTLive routing and usage
Added new environment configuration examples
Added YOUTUBE_QUICK_ADD_LIMIT and related defaults
Gharmonize v1.2.8
This release focuses on major Spotify playlist matching improvements, smarter playlist resolution, and configurable desktop shell integration for the Track Extractor.
Spotify Playlist Matching Improvements
Improved Spotify playlist matching reliability by prioritizing the paged Spotify Web API and Pathfinder playlist resolution over public embed data
Fixed cases where playlist processing could stop around 99 tracks when relying on Spotify embed metadata
Added a Pathfinder fallback for playlists that are visible on Spotify Web but return 403 Forbidden responses from the official Spotify Web API
Prevented matching jobs from becoming stuck when Spotify returns empty item lists
Reduced duplicate integrated matching log messages during Server-Sent Events (SSE) updates
Pathfinder Improvements
Pathfinder playlist resolution now works without requiring:
SPOTIFY_CLIENT_ID
SPOTIFY_CLIENT_SECRET
This allows Gharmonize to resolve and download Spotify-managed playlists that are often inaccessible through the standard Spotify Web API, including:
Discover Weekly
Release Radar
Other Spotify-curated and personalized playlists
Configurable Track Extractor Shell Integration
Added a new TRACK_EXTRACTOR_SHELL_INTEGRATION setting
Allows users to enable or disable the Gharmonize Track Extractor context menu integration
Setting is persisted through the settings API and enabled by default
Shell integration is automatically re-applied whenever settings are saved
Windows registry entries are added or removed automatically based on the configured state
Linux desktop integration is also managed automatically
Shell integration initialization now occurs after packaged application environment setup
Added localized descriptions for shell integration settings
Desktop Integration Improvements
Improved management of Track Extractor desktop shortcuts and context menu registration
More predictable behavior when enabling or disabling shell integration across supported platforms
Cleaner initialization flow for packaged desktop environments
Note
Spotify playlist matching is now significantly more reliable for large playlists and Spotify-managed playlists that may not be fully accessible through the official Spotify API.
Users who previously needed Spotify API credentials for certain playlist types may no longer require them when Pathfinder resolution is available.
Gharmonize v1.2.7
This release introduces a new desktop Track Extractor workflow, expanded media extraction capabilities, and deeper desktop integration for advanced MKV and media processing tasks.
Track Extractor
Added a dedicated desktop Track Extractor workflow for video files
Added Electron shell integration for opening supported video files directly in the Track Extractor
Added track probing and extraction APIs with desktop bridge token protection
Added extraction support for:
Video tracks
Audio tracks
Subtitle tracks
Image attachments
Chapters
Runtime & Binary Management Improvements
Runtime binary initialization is now awaited before most API requests
Managed cached binaries can now be resolved before falling back to system PATH
Docker binary cache location updated to:
/opt/gharmonize/cache/binaries
yt-dlp Improvements
Cookie files are now copied to temporary snapshots before yt-dlp execution
Prevents accidental modification of original cookie files during downloads
Gharmonize v1.2.6
This release introduces advanced audio normalization capabilities during transcoding, providing better loudness consistency and dynamic range control.
Audio Transcoding Enhancements
Added loudnorm modes for EBU R128 loudness normalization
Introduced Dynamic Range Control (DRC) for improved audio balance
Implemented two-pass processing for more accurate and consistent normalization results
Gharmonize v1.2.5
This release introduces ringtone support for both iOS and Android, improves third-party app management, and enhances download result handling.
Ringtone Mode
Added iOS and Android-compatible ringtone download mode
Optimized output formats for seamless use across mobile devices
Third-Party App Management
Added automatic download and update support for third-party applications
Removed third-party apps from the main app root and Docker container
Updated related modules to align with the new workflow
Download & Error Handling Improvements
Enhanced error handling for download results
Added logic to track matched logical indices and process download results more accurately
Gharmonize v1.2.4
This release focuses on improving tagging accuracy, expanding platform support, and enhancing overall UX.
Tagging Improvements
Fixed album order issues in metadata
Resolved incorrect total track count in tagging
Improved overall tagging consistency and reliability
Matching Enhancements
Improved matching accuracy between YouTube and Apple Music
Reduced rare mismatches during metadata resolution
Deezer Support Added
You can now use Deezer as a source, including:
Track
Album
Playlist
Artist top tracks
Video & Metadata Fixes
Fixed video job metadata handling
MKV files are now treated like other video outputs in UI and logs
Switched to server-side completedAt instead of browser fallback
Preserved empty audio selection for silent video exports
UI / UX Improvements
Improved usability of preview start/end input fields across desktop and mobile
Localization
Added Spanish language support
Gharmonize v1.2.3
New Features
Apple Music Support
Added Apple Music support via yt-dlp matching
Apple Music playlists, albums, and single tracks can now be matched and converted
Improved media metadata matching for Apple Music sources
Improvements
Progress Flow Enhancements
Improved Spotify progress flow
More accurate real-time progress updates
Job Cancellation Fixes
Fixed issues in the job cancellation workflow
Embedding Completion Counter
Embedding completion counter now persists until conversions are removed from the directory
Better Cover Art Handling
Apple Music cover art is now preferred when available for YouTube MP3 conversions
Metadata Improvements
ID3 tags enriched with better metadata handling
General Improvements
Various minor improvements and optimizations across the application
Gharmonize v1.2.2
Improvements
Spotify Web API Compatibility Update
This release updates Gharmonize to support recent changes in the Spotify Web API.
Several internal transformations and tagging mechanisms used throughout the application have been revised to ensure continued compatibility and stable integration.
Changes
Updated Spotify transformation logic used across the application.
Adjusted tagging and metadata mapping to align with the latest Spotify Web API behavior.
Improved overall Spotify integration stability.
Gharmonize v1.2.1
This release focuses on improving longterm maintainability by introducing an easier way to keep required binaries up to date.
Features
Automatic & Manual Binary Updates
Added support for updating yt-dlp and Deno automatically at system startup.
Added an option to manually update binaries from the Settings panel.
These improvements help ensure the application always runs with the latest compatible versions and remains easier to maintain over time.
Gharmonize v1.2.0
New Features
Added support for:
X (Twitter)
Vimeo
Dailymotion
TikTok
Added ability to embed lyrics directly into tracks
Added automatic subfolder export for:
YouTube playlists
Spotify playlists
Spotify albums
Improvements
Improved Spotify matching logic for YouTube conversions
Improved playlist output naming
Enhanced YouTube output naming system
MP4 is now the default codec for:
X
TikTok
Usability
Added Show & Open Download Directory feature
Works only on the server machine where Gharmonize is installed.
Not supported in:
Docker environments
Web client access from other devices
Conversion Insights
Added processing time metrics:
Start time
End time
Total duration
Added MP4 conversion stats:
Converted media duration
FPS information
Gharmonize v1.1.1
Release Highlights
This release focuses on improving dashboard integration, refining cover art handling with optional Spotify support, and strengthening server initialization and error handling.
Added
Homepage Widget Integration
Added a Gharmonize homepage widget for seamless dashboard integration.
Introduced a custom homepage dashboard configuration.
Embedded Gharmonize as a reusable widget component, making it easier to integrate into existing layouts.
Enhanced
Cover Handling with Optional Spotify Support
Improved cover selection logic with clearer preference handling.
Added support for Spotify cover URLs.
Introduced conditional Spotify matching for YouTube downloads:
When PREFER_SPOTIFY_TAGS=1 is set, album covers are optionally fetched from Spotify if a matching track is found.
When disabled, Gharmonize continues using downloaded or embedded covers as usual.
Added environment variable checks to ensure predictable and configurable behavior.
Refactored
Server Initialization & Error Handling
Improved server startup flow for better stability.
Converted PORT handling to a strict numeric value.
Updated and clarified server error messages for easier debugging and maintenance.
Gharmonize v1.1.0
What’s New
Prefer Spotify Album Art
Gharmonize now always fetches and embeds album artwork directly from Spotify during Spotify conversions.
Ensures consistent, official cover art across the pipeline.
Prevents fallback to YouTube/yt-dlp thumbnails.
Produces cleaner, more reliable metadata for downloads and library tools.
DTS Audio Support (Core) for Transcoding + Downloads
Added DTS (Core) as an audio codec option for internal transcoding and download workflows.
Selectable via audio codec options (DTS / dca).
Includes DTS-friendly bitrate presets where applicable (e.g., 768k / 1024k / 1509k / 1536k).
Integrates cleanly with existing settings without changing defaults unless chosen.
MP4 Audio FPS Sync (Tempo Adjust)
Added an audio tempo correction setting to ensure audio stays perfectly aligned during MP4 encoding.
Includes common presets like 23.976 24, 23.976 25, 25 24, and more.
Helps prevent audio drift when converting between TV/stream and cinema frame rates.
Quick to apply via a dedicated UI control.
Gharmonize v1.0.9
What’s New
Preview Encoding (Test Encode)
Before committing to a full conversion, you can now generate a short preview encode.
Why this matters:
Verify output quality before long encodes
Test codec, bitrate, and resolution settings
Confirm audio/subtitle stream selections
Save time by avoiding incorrect full encodes
This makes your encoding workflow safer, faster, and more predictable.
HDR SDR Conversion
You can now properly convert HDR videos into SDR for maximum compatibility.
Includes:
Accurate tone mapping
Controlled peak brightness handling
Correct color space, transfer and range mapping
Clean SDR output for nonHDR displays
Perfect for sharing HDR content on standard screens, mobile devices, and SDR platforms.
SDR HDR Conversion
Need to upgrade your SDR content into HDR? Gharmonize now supports SDR to HDR upscaling.
Features:
Converts SDR to HDR (PQ / BT.2020)
Applies brightness expansion and tone shaping
Produces HDRcompatible video streams
Great for HDR TVs, projectors, and premium displays
Gharmonize v1.0.8
Gharmonize v1.0.8 – Release: Video Processing Improvements
Advanced Video Processing & Transcoding Controls
Modal-based conversion panel
Keeps the interface clean while grouping all conversion tools in one place
Expanded codec & quality options
Gives you finer control over output quality and file size
Future-ready transcoding flow
New architecture prepared for upcoming advanced features
Orientation controls
Automatically or manually rotate videos to the correct direction
Resize modes
Choose how your video should scale (fit, fill, original, etc.)
Advanced cropping tools
Precisely trim edges using left/right/top/bottom controls
Custom borders
Add borders with adjustable size and color for a polished look
Gharmonize v1.0.7
Gharmonize v1.0.7 – Release Highlights
Compression & Encoding
Allow enabling or disabling post-job compression via the UI
Make HEVC encoding selectable
Performance & Platform Optimizations
Optimize the application for Windows
Enable faster downloads by moving metadata fetching to the background
AppImage & EXE Enhancements
Add auto-start on system login (AppImage & EXE)
Support starting the app in the background
Allow the app to keep running in the background
YouTube Improvements
Improve YouTube matching logic
Add configurable concurrency for YouTube downloads and conversions
Enable cookie usage for age-restricted or special content (requires Deno)
Add normalization functions for artist and title matching
Spotify Improvements
Refactor Spotify download and processing logic
Improve Spotify matching, downloads, and conversion
Add a concurrency input field for Spotify downloads/conversions
Add protection settings against rate limits and platform restrictions
UI & UX Improvements
Improve the Jobs panel
Add descriptions for environment variables in the settings panel
Cookie Usage Notes
Cookie support improves YouTube–Gharmonize matching accuracy and allows downloading age-restricted or similar content.
Docker users: Only cookies.txt is supported.
Windows users:
Chrome cannot provide cookies while the browser is running due to platform limitations.
Sign in to YouTube using Firefox or another supported browser, then configure cookie access accordingly.
Set the YTDLP_COOKIES_FROM_BROWSER environment variable via the environment configuration or the settings panel.
Outside of Docker (and when correctly configured on Windows as described above), a cookies.txt file is not required.
Gharmonize v1.0.6
New in This Version
A polished and featurepacked update focused on workflow reliability, audio quality, job persistence, and UI clarity.
Improved Media Handling & Conversion
Refined file upload flow for smoother user experience.
Enhanced media selection logic for both uploaded and locally chosen files.
Added selective audiotrack conversion when media contains multiple audio streams.
More robust handling of inconsistent file metadata.
Job System Enhancements
Persistent Job Tracking
Active jobs now reappear correctly even after a full page refresh.
Completed jobs remain visible in both the Active Jobs list and Jobs Panel until the corresponding output files are deleted.
Improved sync between backend job state and UI display.
Updated Completed & Ongoing Jobs Logic
More accurate joblifecycle reporting.
Reduced flickering or disappearing entries during rapid state changes.
Audio Output Improvements
Added VolumeGain processing, allowing output audio tracks to be normalized or amplified.
Clearer loudness results across MP3, AAC, M4A, and other supported formats.
UI & Usability Upgrades
Jobs Panel Overhaul
Cleaned and reorganized layout.
Improved readability for multitrack conversions.
More consistent progress bars, ETA, and state indicators.
Active Jobs View
Improved spacing and hierarchy.
More consistent interaction between panel view and main page view.
Update Tracking Module
Added builtin version checker.
Displays latest release version and release link.
Integrates with the Jobs Panel for update awareness.
Console Improvements
Console messages rewritten for clearer, more consistent, and more developerfriendly output.
Better grouping and color usage for errors, warnings, and process logs.
Additional Internal Improvements
Small refactors across the UI logic for stability.
Smoother staterestoration on reload.
Better handling of SSE & backend communication.
Gharmonize v1.0.5
Improved MP4 Conversion & Added MKV Support
MP4 conversion has been enhanced for both server-side processing and local media file selections.
MKV is now available as an optional output format, selectable directly from the UI.
Users can now choose audio and subtitle tracks before starting the conversion process.
Integrated ThirdParty Binaries
Gharmonize now bundles its essential thirdparty tools internally:
ffmpeg, ffprobe, mkvmerge, and yt-dlp are now shipped inside the application.
No need to install them system-wide or provide manual directory paths.
Windows users no longer need to set environment variables for ffmpeg or yt-dlp — the built-in versions are used automatically.
New Rip Module (Experimental)
An experimental rip module has been added.
Allows exporting nonDRM discs to MKV format.
Default output directory: local-inputs
Designed as a lightweight and easy ripping solution.
Gharmonize v1.0.4
New Features
Sequential Task Processing System
All added jobs are now executed in order, ensuring predictable processing even when you queue tasks with different configurations.
Environment Selection from local-inputs (Admin Only)
A new option lets you select media directly from the local-inputs folder, allowing conversion without uploading large files through the UI.
MultiFile Selection Support
The upload system now supports multifile selection, making bulk operations smoother and faster.
General Improvements
UI & Usability Improvements
General interface polish and userexperience enhancements across the platform.
Gharmonize v1.0.3
Audio Codec Improvements
AAC codec support added for improved compatibility across devices.
Enhanced FLAC and WAV pipelines for better stability and audio precision.
FPS adaptation now includes AAC for more reliable A/V sync.
FLAC & WAV Enhancements
More accurate control over:
Compression level
Bit depth
Output quality
MP4 Handling Changes
Some MP4related environment variables were removed.
This may affect downloads of agerestricted or regionlocked videos.
If required, you may need to provide cookies (browser extension recommended).
MP4 codec upgrades:
Supports resolutions up to 2160p.
Two modes available:
Transcode using your selected encoder
Download asis (no reencoding)
If the requested quality is unavailable, the closest match is automatically selected.
GPU Acceleration
Added hardwareaccelerated transcoding for:
NVIDIA NVENC
Intel QuickSync
VAAPI
Note: In Docker, VAAPI and Intel QuickSync are disabled by default.
When NVENC is enabled, all hardwareacceleration requests are routed to NVENC.
See the README section on enabling NVENC in Docker for full configuration instructions.
Upload System Update
Maximum upload size is now controlled via an environment variable.
The value can be changed directly from the Settings Panel.
Docker – NVENC Setup (Quick Note)
Before enabling NVENC in Docker:
Make sure your host has NVIDIA GPU drivers + the NVIDIA Container Toolkit.
Enable NVENC following the instructions in the README.
Once active, the system automatically prefers NVENC.
Gharmonize v1.0.2
New
Added FPS adaptation support for AC3 and EAC3 codecs.
Now, audio encoded with AC3/EAC3 can seamlessly adjust playback speed to match different frame rates (e.g., PAL NTSC), ensuring perfect audio-video sync and smooth playback across regions.
Improvements
Enhanced UI fallback behavior for smoother user experience and better resilience in edge cases.
Counters now display more accurate results and update dynamically for both downloaded and converted media.
Gharmonize v1.0.1
New Features
Windows support added!
You can download it directly below.
Or, follow the instructions in the README section to build it yourself.
General Improvements
Overall performance and stability enhancements.
Minor UI adjustments and bug fixes.
Gharmonize v1.0.0
Gharmonize is now officially released as a stable version.
This build includes all core features described in the [README], focused on reliability, clarity, and performance.
Highlights
Full support for YouTube / YouTube Music (single, playlist, automix)
Spotify integration for tracks, playlists, and albums
Conversion to mp3 / flac / wav / ogg / mp4
Embedded metadata & album art support
Simple web UI and JSON API
Ready-to-use Docker Compose setup
Tech Stack
Node.js + ffmpeg + yt-dlp + Express + Docker
Stability Notes
This is a stable and feature-complete build intended for general use.
Further releases will focus on UI refinement, parallel task improvements, and optional advanced settings.