Add PySide6.QtDBus to the list of included PySide6 modules and stop removing DBus-related artifacts during the macOS packaging step. The changes remove deletions of the platforminputcontexts plugin and libqpdf/libqsvg/libqsvgicon files, and remove QtDBus from the list of Qt modules treated as bloat. This preserves D-Bus support and related SVG/PDF rendering plugins required at runtime.
Add PySide6.QtDBus and PySide6.QtSvg to the list of required modules and remove PySide6.QtSvg from the secondary module list. Stop removing the svg plugin, platforminputcontexts and svg-related image/icon libraries during the cleanup pass (only libqpdf.so is still removed). These changes ensure QtSvg and D-Bus components are preserved in the Linux build and prevent stripping SVG-related functionality.
Update the Linux CI AppImage build to copy the cx_Freeze output directly into AppDir root (so 'lib' sits next to the 'ytsage' binary) to avoid ModuleNotFoundError: encodings. Fix the .desktop Exec path, add .DirIcon, and replace the previous symlink with an AppRun script that sets LD_LIBRARY_PATH and execs the bundled binary.
Replace the cx_Freeze bdist_appimage step with an explicit manual AppImage build to avoid cx_Freeze rebuilding and untrimming artifacts. The workflow now downloads appimagetool, prepares an AppDir (AppDir/usr/bin), copies the trimmed build contents (preserving cx_Freeze relative paths), installs desktop/icon metadata, creates an AppRun symlink, and runs appimagetool with ARCH=x86_64 and --appimage-extract-and-run to avoid FUSE issues in CI. The rest of the job (e.g. RPM build) remains unchanged.
Remove the separate bdist_dmg build step and instead package the generated .app in-place: create a .app.zip and build a UDZO .dmg using a temporary dmg_stage (copy .app, add Applications symlink, run hdiutil). Also remove the previous fallback that searched for prebuilt DMGs and change missing .app handling to error+exit. Artifacts are written to artifacts/YTSage-v${version}-${ARCH_SUFFIX}.{app.zip,dmg}.
Replace complex multi-dir detection with a single find+while loop to identify library dirs and verify Python lib layout (asyncio/PySide6/ytsage). Consolidate cleanup steps: recursively remove PySide6 translations, normalize plugin path detection and remove specific plugin folders/files via find, and simplify removal of unwanted Qt modules using broader find patterns. Remove some verbose checks and add a final sanity listing of remaining lib contents. These changes make the trimming more robust to different .app layouts and reduce duplicate logic.
Update the macOS build workflow to robustly locate and clean multiple library directories inside the .app bundle. Instead of a single lib path, the script now finds all 'lib' dirs containing PySide6 or ytsage and iterates over them. Cleanup expanded to handle alternate PySide6 paths (PySide6/Qt/translations, PySide6/Qt/plugins), more plugin/imageformat variants (.dylib/.so), additional Qt library name patterns (Qt6*, framework-style names) and Qt6DBus, and removal of common build tools/modules. Adds logging and a warning when no library dirs are found.
Consolidate and harden post-build cleanup by targeting the build's lib directory (lib_dir) instead of running broad finds across build_dir. Removes screenshots, PySide6 translations, specific Qt plugins and plugin files, and various Qt6 shared libraries (Web, Pdf, Qml, Quick, VirtualKeyboard, OpenGL) to reduce bundle size. Also removes common build tools/modules (setuptools, wheel, pkg_resources, _distutils_hack, curses, _pyrepl) and adds explicit logging and a warning if lib_dir is missing. Simplifies and centralizes cleanup logic for more predictable and efficient trimming of Linux artifacts.
Enhance the .github workflow that trims macOS .app bundles by robustly detecting the library directory (with fallbacks) and performing deeper cleanup. Removes screenshots, Qt translations, many Qt plugin folders, specific image/icon libs, bulk Qt6 libraries, and several Python build/tool modules; adapts for macOS dylib naming. Adds logging and a warning if the lib directory cannot be determined to avoid accidental deletes.
Add -ErrorAction SilentlyContinue to Get-ChildItem calls and add a check for a lib\PySide6 folder to remove matching Qt DLLs there as well. This prevents failures when no files match the patterns and ensures duplicate Qt DLLs packaged under PySide6 are cleaned up. Applied to both DLL-cleanup sections of the Windows build workflow.
Refactor Windows build cleanup to use a dedicated $libDir and more aggressively prune unused PySide6/Qt files. Replaces direct $distDir references with $libDir for lib content and removes screenshots, PDBs, translations, many plugin folders, specific image/icon plugins (qpdf/qsvg/qsvgicon), platform input contexts, and common bulky Qt DLL patterns. Also removes several build tools/unused Python modules (setuptools, wheel, pkg_resources, _distutils_hack, curses, _pyrepl). Applied the same changes to both YTSage and YTSage-FFmpeg packaging steps to reduce bundle size and noise, and improved log messages for removed items.
Adjust build-linux CI to produce smaller, self-contained AppImages: enable silent build output, add zip_include_packages so key libs (PySide6, shiboken6, requests, PIL, packaging) are packaged, and add extra excludes (pydoc, doctest, email). Use python -OO for optimized bytecode. Expand post-build trimming to remove screenshots, Qt translations, unused PySide6 plugins and other Qt artifacts (Qt6Web*, Qt6Pdf*) with informative logging. These changes reduce package size and avoid shipping unnecessary runtime components.
Improve macOS CI packaging by trimming unnecessary files from the built .app and adjusting build options. Changes include:
- Enable cx_Freeze silent build and run Python with -OO for bdist_mac.
- Add zip_include_packages to ensure key packages are bundled inside zip distributions.
- Exclude additional stdlib modules (pydoc, doctest, email) to reduce size.
- New workflow step to locate the generated .app and remove screenshots, Qt translations, unused PySide6 plugins and other Qt artifacts (Qt6Web*, Qt6Pdf*), with safer path detection and logging.
- Remove noisy post-build directory listings and simplify DMG handling/log messages; make .app and .dmg discovery more robust.
These changes aim to produce smaller, cleaner artifacts and more reliable CI packaging for macOS builds.
Add build/time optimizations and post-build trimming for Windows CI. Enables silent cxfreeze output and adds zip_include_packages (PySide6, shiboken6, requests, PIL, packaging) so selected packages are included in the zip; excludes additional stdlib modules (pydoc, doctest, email) to reduce bundle size. Switches build invocation to python -OO for extra optimization and adds dedicated PowerShell steps (for both standard and FFmpeg builds) that remove screenshots, PDB debug files, unused Qt translations/plugins and extra Qt DLLs (Qt6Web*/Qt6Pdf*) to shrink artifacts and remove unnecessary files before packaging.
Moved PySide6.QtNetwork from the excludes to the includes list in build workflows for Linux, macOS, and Windows. This ensures the QtNetwork module is bundled during packaging.
Changed the icon installation path from assets/branding/icons/icon.png to branding/icons/icon.png in Linux packaging steps to reflect updated directory structure.
Corrected script path to 'ytsage_entry.py', updated icon path, and fixed configuration for including system libraries and binary excludes in the build-linux.yml workflow.
Switch pip cache and install to use pyproject.toml instead of requirements.txt. Update cx_Freeze setup to use a new entry point, adjust included packages and asset paths to reflect new project structure, and update icon path.
Switches dependency installation from requirements.txt to pyproject.toml and updates pip cache key accordingly. Refactors cx_Freeze setup to use a new entry point, adjusts included files and paths to match the updated project structure, and updates icon file references.
Switch pip install to use PEP 517 (pyproject.toml) instead of requirements.txt and update cache key accordingly. Refactor cx_Freeze setup to use new asset paths, add entry point script, and adjust include_files for correct packaging structure.
Removed pyglet dependency and migrated notification sound playback to use PySide6.QtMultimedia's QMediaPlayer and QAudioOutput. Updated workflow and requirements files to remove pyglet and ensure PySide6.QtMultimedia is included in build steps.
Updated the release-all GitHub Actions workflow to include 'contents: write' permission, enabling the workflow to perform actions that require write access to repository contents.
Introduces support for overriding DENO_APP_BIN_PATH via environment variable, enabling compatibility with Flatpak packaging. Updates the build workflow to set the DENO_APP_BIN_PATH environment variable and ensures parent directories for custom binary paths are created if needed.
Introduces creation of a dedicated desktop file for Flatpak packaging in the build-linux workflow. Ensures the Exec and Icon fields conform to Flatpak requirements and updates the install step to use the new desktop file.
Changed the Flatpak runtime and SDK version from 6.6 to 6.10 in the build-linux GitHub Actions workflow to ensure compatibility with the latest KDE platform.
Introduces a Flatpak packaging step to the Linux CI workflow and updates ytsage_constants.py to support overriding the yt-dlp binary path via the YTDLP_APP_BIN_PATH environment variable, which is critical for Flatpak compatibility. Also ensures the custom yt-dlp directory is created if the environment variable is set.
Revamps the CI/CD documentation to reflect the new manual workflow dispatch system, replacing tag-based triggers. Adds detailed instructions for running full or platform-specific builds, clarifies artifact naming, and updates configuration and process notes to match the current GitHub Actions setup.
Refactored build workflows for Linux, macOS, and Windows to use workflow_dispatch and workflow_call with explicit version input, replacing tag-based triggers. Updated release steps to use the provided version input for tagging and naming. Added a new release-all workflow to trigger all platform builds with a single version input.
Removed the matrix strategy for multiple macOS runners and set the workflow to use only macos-latest. Simplifies the build process and reduces resource usage.
Eliminates logic for locating and including Qt6 plugins in the build-linux workflow. This simplifies the build process and removes conditional inclusion of Qt6 plugin files.
Updated the build-linux.yml workflow to use absolute paths for the desktop file and icon during RPM packaging, ensuring correct file installation regardless of the build directory structure.
Updates the build-linux.yml workflow to use absolute paths for build directory and asset installation during RPM packaging. This ensures files are correctly located and copied, improving reliability of the build process.
Refactors the cx_Freeze setup to dynamically include Qt6 plugins if available, ensuring proper QPA support. Replaces the previous RPM build step with a manual process using a custom spec file to bundle all dependencies and avoid auto-detected system requirements. Cleans up packaging metadata and improves file inclusion logic for more reliable Linux builds.
Updated the build-windows.yml workflow to exclude ffplay.exe from verification and distribution steps, as only ffmpeg.exe and ffprobe.exe are required by the application.
Bump actions/checkout to v6 and softprops/action-gh-release to v2 in all build workflows. Remove yt-dlp from pip install steps for Linux, macOS, and Windows workflows to streamline dependency installation.
Updated the bug report issue template to include step-by-step instructions for users to collect and attach log files from the appropriate directory on Windows, macOS, and Linux. This will help streamline the debugging process by ensuring relevant logs are provided.
Added fields for yt-dlp and Deno versions, updated example versions for YTSage and Python, and clarified instructions for finding environment details in the About dialog.
Changed the FFmpeg download link in the build-windows.yml workflow to use the official gyan.dev source instead of the GitHub release. This ensures the workflow uses the latest and most reliable FFmpeg builds.
Refined the asset inclusion in Linux, macOS, and Windows build workflows to specify subdirectories for branding icons, Icon, and sound assets. This change ensures only the necessary asset folders are packaged, improving build consistency across platforms.
Added the 'languages' directory to the list of files included in the build artifacts for Linux, macOS, and Windows workflows. This ensures language files are packaged with the application across all platforms.