The select column width in the format table was increased from 50 to 80 pixels to better accommodate longer translations. This change ensures consistent column sizing across different table setups.
Added a new Japanese translation file (ja.json) and updated all language files to include Japanese in the language selection. Updated quality label color detection in ytsage_gui_format_table.py to support Japanese terms, and registered Japanese in the default language list in ytsage_localization.py.
Added a new Arabic translation file (ar.json) and updated all other language files to include 'arabic' in the language selection list. Also updated quality label color detection in the format table to support Arabic terms, ensuring proper highlighting for quality levels in Arabic.
Introduces Italian translations by adding languages/it.json and updating all language files to include 'italian' in the language selection. Updates quality label color logic in ytsage_gui_format_table.py to recognize Italian terms for best, high, medium, and low quality. Also updates the default language list in ytsage_localization.py to include Italian.
Added Polish translations in a new pl.json file and updated all language files to include 'polish' in the language selection. Extended the quality color mapping in ytsage_gui_format_table.py to recognize Polish terms for best, high, medium, and low quality. Updated the default language list in ytsage_localization.py to include Polish.
Added Turkish translations in languages/tr.json and updated all other language files to include Turkish in the language selection. Updated format table color logic in ytsage_gui_format_table.py to recognize Turkish quality terms. Also updated ytsage_localization.py to include Turkish in the default language list.
Introduces Indonesian translations by adding languages/id.json and updating all language files to include 'indonesian' in the language selection. Updates format table color logic in ytsage_gui_format_table.py to recognize Indonesian quality terms. Also updates ytsage_localization.py to include Indonesian in the default language list.
Introduces a new Hindi translation file (hi.json) and adds Hindi as a selectable language in all existing language files. Updates the format table to recognize Hindi quality terms for color coding, and includes Hindi in the default language list in the localization manager.
Added a complete French translation file (fr.json) and updated all other language files to include 'French' as a selectable language. Updated format table color logic to recognize French and German quality terms for better internationalization. Also updated the default English language map to include French.
Added a new German (de) translation file and updated all language JSON files to include German in the language selection. Updated format quality color mapping in the GUI to recognize German quality terms. Ensured localization manager and UI support the new language.
Added a new Simplified Chinese translation file (zh.json) and updated all language files to include Chinese as a selectable language. Updated format quality color logic in the format table to recognize Chinese quality terms, ensuring proper color coding for quality labels in the UI. Also updated the localization manager to include Chinese in the language selection.
Expanded and reorganized language keys in en.json, including improved labels for language selection, about dialog, and time range features. Added missing Portuguese language entry to es.json for consistency. Updated descriptions and placeholders for better clarity and user experience.
Introduces English and Spanish translation files, integrates localization throughout dialogs, and adds a language selection tab to the custom options dialog. UI strings are now loaded via the localization manager, enabling dynamic language switching and improved internationalization.
Added a _safe_delete_with_retry method to handle Windows file locking issues when deleting partial files. Introduced delays before cleanup after process termination to ensure file handles are released, reducing errors during file deletion. Error signal emission for cleanup failures is suppressed to avoid thread crashes.
Proxy settings (main and geo-verification) are now loaded from and saved to the ConfigManager. The dialogs and main app have been updated to initialize and persist proxy values, and user feedback is improved for proxy changes and clearing.
Introduces proxy and geo-verification proxy options to the downloader and GUI dialogs, allowing users to specify network proxies for downloads and geo-restricted content. Updates the DownloadThread and main app logic to pass and apply these proxy settings, and adds validation and status indicators in the custom options dialog.
Replaces Path.joinpath with string concatenation using as_posix() for output templates to avoid issues with Path objects. Ensures correct file paths for both single downloads and playlists.
Introduced get_asset_path to resolve asset paths for both development and installed package environments. Updated ICON_PATH and SOUND_PATH to use this function, improving portability and reliability of asset loading.
Replaced the YTSage title in README with an SVG wordmark and updated release format tables to use shield badges for Windows, Linux, and macOS. Added the ytsage-wordmark.svg asset and documented its location in the project structure.
Corrects usage of Path.joinpath to use instance method, improving output template path construction. Enhances subtitle file detection and cleanup logic to handle malformed Windows paths and ensures subtitle file paths are properly resolved and tracked for later deletion.
Refactored version detection to use importlib.metadata when available, with fallback to pkg_resources for older Python versions. Enhanced app-managed binary detection by safely comparing paths and handling missing files, improving robustness in update logic for both core and GUI update threads.
Updated the README to use tables for executable formats, added new formats for Linux and macOS, expanded troubleshooting section, and revised the project folder structure for clarity. Also replaced the star history chart with a new source and improved its presentation.
Expanded documentation to cover Windows, Linux, and macOS build and release processes. Updated artifact descriptions, workflow configuration, and instructions for adding new platforms. Clarified use of cx_Freeze, platform-specific packaging, and multi-architecture support.
Corrects indentation of the 'Package and prepare release artifacts' step in the build-linux workflow to ensure proper execution of artifact packaging commands.
Replaces DEB creation via alien with a native packaging step using dpkg-deb. Updates desktop file Exec path, improves artifact staging, and adds post-install scripts for desktop integration. This streamlines DEB builds and improves compatibility with Debian-based systems.
The postinst script responsible for placing the desktop icon during DEB package installation has been removed from the build workflow. This simplifies the packaging process and eliminates custom post-installation steps.
Introduces a debian/postinst script in the build workflow to copy the ytsage.desktop file to the user's desktop during DEB package installation, ensuring the desktop icon is available. Also updates the icon cache and handles cases where the desktop directory or SUDO_USER is not set.
Deleted post-processing steps that manually fixed desktop entry and icon placement in DEB packages after conversion from RPM. This streamlines the build process and removes custom extraction and repackaging logic.
Enhanced the workflow to handle multiple data archive compression formats (xz, gz, zst) when extracting and repackaging DEB files. Added checks for the presence of the data archive and updated extraction and repackaging commands to match the detected format, improving robustness and compatibility.
Adds a post-processing step to ensure desktop entry and icon files are correctly placed in DEB packages built via alien, addressing issues where alien may miss proper desktop integration.
Standardizes executable and artifact naming to 'ytsage' and includes architecture in output filenames. Adds desktop entry and RPM install script for better desktop integration. Updates AppImage and RPM metadata, and ensures proper icon and category handling for Linux builds.
Changed the internal executable target name to 'YTSage' instead of including the version. The AppImage filename still includes the version, but the base executable name is now consistent and versionless.
Introduces a GitHub Actions workflow to automate building and packaging Linux releases on tag push. The workflow sets up Python, installs dependencies, builds AppImage, RPM, and DEB packages using cx_Freeze, and uploads artifacts to a draft GitHub release.
The build workflow now runs on both macos-14 and macos-13 using a matrix strategy. Artifact names for .app and .dmg files now include architecture suffixes (arm64/x64), and additional environment variables are set for architecture detection. The release step is updated to append to the draft release and handle unmatched files gracefully.
Enhanced the workflow to robustly locate .app and .dmg files in both dist/ and build/ directories, ensuring screenshots are removed from the .app bundle before packaging. Added directory listings for debugging and improved artifact naming and copying logic for more reliable release preparation.
Introduces a GitHub Actions workflow for building and packaging macOS releases. Automates version extraction, Python environment setup, dependency installation, app and DMG creation, artifact packaging, and draft release publishing for tagged commits.
Expanded the pre-built executables section to list all available Windows, Linux, and macOS package formats with descriptions. Improved instructions for logging in with cookies, highlighting the built-in extraction feature and clarifying manual steps. Removed outdated antivirus issue note for clarity.
Updated the build-windows.yml workflow to use pyglet instead of playsound3 in the list of packaged Python dependencies. This change ensures the correct audio library is included during Windows builds.
Switched sound notification library from playsound3 to pyglet in requirements and main GUI code. Updated all related logic and logging to use pyglet for audio playback, improving compatibility and maintainability.
Refactored console window suppression logic to better handle PyInstaller windowed applications and prevent console flicker. Added creation flags and redirected subprocess streams in multiple modules to ensure hidden console windows when running subprocesses. Introduced a utility function for running subprocesses with hidden console and updated all relevant subprocess calls to use it.
Suppresses console window flicker for PyInstaller windowed applications by redirecting stdout and stderr in main.py. Updates logging setup to avoid console output in windowed mode and adds fallback error logging. Suppresses pkg_resources deprecation warnings to further reduce unwanted console output.
Downgraded PYTHON_VERSION in build-windows.yml from 3.13.6 to 3.13.5. Removed SUBPROCESS_CREATIONFLAGS import and usage from ytsage_dialogs_custom.py as it was no longer needed.
Passes SUBPROCESS_CREATIONFLAGS to subprocess.Popen in CommandWorker for improved process control. Imports SUBPROCESS_CREATIONFLAGS from ytsage_constants.
Updated the build-windows.yml workflow to use Python 3.13.6, improved build steps for both standard and FFmpeg bundle versions, added dependency caching, enhanced artifact packaging, and modernized the release draft with clearer instructions and changelog links.
Simplifies and modernizes the GitHub Actions workflow for building Windows releases. Updates Python version, streamlines steps for dependency installation, build, FFmpeg bundling, artifact packaging, and release creation. Uses more concise PowerShell scripts and updates action versions for improved maintainability.
Removes the screenshots folder from both Standard and FFmpeg build outputs in the Windows workflow. Also updates artifact ZIP naming to include '-portable' for clarity in release notes and file names.
Bumps PYTHON_VERSION to 3.13.6 in the Windows build workflow. Replaces cx_Freeze CLI FFmpeg include logic with a post-build step that copies FFmpeg binaries directly into the dist folder for improved reliability.
Replaces individual asset and source file mappings with broader 'src' and 'assets' directory includes in the cx_Freeze build steps. Also updates FFmpeg file inclusion to use only the source path, removing explicit destination mapping.
Updated CI/CD documentation and workflow to generate only ZIP portable versions for Windows, removing MSI installer support. Deleted setup.py and setup-ffmpeg.py scripts for MSI builds, and refactored workflow to use cx_Freeze CLI for ZIP packaging. Documentation and artifact instructions now reflect ZIP-only distribution.
Deleted the step that removes MSI files from the dist directory in the Windows build workflow. This may be to preserve MSI artifacts for later use or debugging.
Removed problematic summary_data and install_icon from MSI build options in setup.py and setup-ffmpeg.py to address cx_Freeze build issues. Updated target_name and version fields to 4.7.4. Enhanced build-windows.yml with improved artifact cleanup and error handling for MSI creation.
The workflow no longer creates or releases ZIP distributions for both standard and FFmpeg bundle versions. Only MSI installers are built and published, simplifying the release process and documentation.
Adds logging to list MSI files after build steps for better visibility. Updates artifact selection logic to handle both 'ffmpeg' and 'FFmpeg' naming variations, and adds debugging output when standard MSI is not found.
Replaces PowerShell try/catch with exit code checks for MSI build steps in Windows workflow for clearer error reporting. Removes the install_icon option from FFmpeg MSI setup to address potential build failures.
Adds error handling to MSI installer creation steps in the Windows build workflow to prevent failures from stopping subsequent ZIP creation. Updates ZIP creation logic to use the dist output directory. Removes the install_icon option from setup.py to address potential MSI build issues.
Updated FFmpeg download source to GyanD/codexffmpeg and improved artifact preparation with additional logging and error handling. The release step now uploads all files in the artifacts directory instead of specifying each file individually.
Changed status messages for FFmpeg, ffprobe, and ffplay binary checks to use '[OK]' and '[ERROR]' prefixes for clearer log output in the Windows build workflow.
Refactored setup-ffmpeg.py to dynamically check for the existence of FFmpeg binaries before including them in the build. This improves robustness by warning if any binaries are missing and avoids hardcoding file paths in the include_files list.
Removed explicit package listing in build_exe_options for cx_Freeze setup scripts, allowing auto-discovery from main.py. Added the entire src directory to include_files to ensure all source code is bundled with the build.
Replaces universal build script calls with explicit build, MSI, and ZIP steps for both standard and FFmpeg versions. Cleans previous build artifacts before building, and updates artifact preparation to source files from the 'dist' directory instead of 'releases'. Improves reliability and transparency of build and release artifact management.
Deleted build/windows/windows_build_universal.py as part of cleanup or migration. This script previously handled MSI and ZIP packaging for YTSage using cx_Freeze.
Refactored build script to use absolute paths for setup files and build artifacts, improving reliability and path resolution. Enhanced cleaning logic to preserve build/windows scripts, added verbose debug output, and added checks for setup file existence before build steps.
Replaces PowerShell build script with Python in CI workflow and deletes the old build/README.md and windows-build-universal.ps1. This streamlines the build process and consolidates build logic into Python for better maintainability.
Replaces manual build script version update with a message indicating the build script now auto-detects the version. Simplifies the workflow and reduces maintenance.
Changed the version extraction regex in Get-VersionFromSetup for improved accuracy. Refactored New-ReleaseNotes to build the release notes string incrementally instead of using a here-string, simplifying formatting and maintenance.
Refines the PowerShell regex patterns for updating version strings in setup.py, setup-ffmpeg.py, and windows-build-universal.ps1 to ensure consistent use of double quotes around version values.
Updated README.md to reference local screenshot files instead of external URLs. Renamed 'audio-only.png' to 'audio_format.png' and 'subtitles.png' to 'subtitle_options.png' for consistency with README references.
Simplifies and improves the Windows release workflow by cleaning up version extraction, artifact handling, and release note generation. Artifact naming is now version-specific, redundant steps are removed, and the release draft creation is streamlined with direct body content. Also updates dependency caching and installation commands for better reliability.
Introduces a setup.py script for building YTSage on Windows using cx_Freeze. Supports building executables, MSI installers, and ZIP distributions, with detailed configuration for included/excluded packages, assets, and installer options.
Expanded build/README.md with detailed instructions for CI/CD and local builds, directory structure, build script options, output artifacts, requirements, troubleshooting, version management, and future enhancements for the YTSage build system.
Added new screenshots for audio-only, main interface, playlist, and subtitles to the branding assets. These images can be used for documentation or promotional purposes.
Introduces a GitHub Actions workflow for building and releasing YTSage Windows installers and portable ZIPs on version tag pushes. Includes a detailed CI/CD README explaining triggers, build steps, artifact handling, release notes, and troubleshooting.