Commit Graph

64 Commits

Author SHA1 Message Date
Mohamed 92c5484ffe Update Linux build workflow for PEP 517 and cx_Freeze
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.
2026-01-25 14:33:15 +02:00
Mohamed 1e5157bbad Sync with the beta branch 2026-01-17 22:06:10 +02:00
oop7 b3144798f4 Add Flatpak-specific desktop file and env var to build
Introduces creation of a Flatpak-specific desktop file with correct Exec and Icon fields. Adds DENO_APP_BIN_PATH environment variable to Flatpak manifest and updates install commands to use the new desktop file.
2026-01-07 18:13:43 +02:00
oop7 c9691c6a56 Update Flatpak runtime to version 6.10 in CI
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.
2026-01-06 16:50:46 +02:00
oop7 0b5b5b3189 Add Flatpak build support and env override for yt-dlp path
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.
2026-01-06 16:13:21 +02:00
oop7 16e61c5d6f Refactor release workflows and add release-all trigger
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.
2026-01-06 15:52:58 +02:00
oop7 d8c754382f Set macOS build to run only on macos-latest
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.
2025-12-11 13:24:37 +02:00
oop7 ba8011ce44 Update macOS build matrix to use macos-14-large
Replaces macos-15-large with macos-14-large in the GitHub Actions build matrix for improved compatibility or resource availability.
2025-12-11 12:18:20 +02:00
oop7 35c58bfcfa Update macOS build matrix to use macos-15-large
Replaces 'macos-15' with 'macos-15-large' in the GitHub Actions build matrix to utilize the larger runner for macOS 15 builds.
2025-12-11 12:15:30 +02:00
oop7 ce3fd4217d Update macOS build matrix in CI workflow
Replaces specific macOS versions with 'macos-latest' and 'macos-15' in the build matrix to ensure compatibility with newer macOS runners.
2025-12-11 11:28:39 +02:00
oop7 e3097f4501 Remove Qt6 plugins path handling from build script
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.
2025-12-09 19:02:20 +02:00
oop7 e034e9bbcf Fix RPM build paths in Linux workflow
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.
2025-12-09 18:36:30 +02:00
oop7 9350982f8c Fix RPM build paths in Linux workflow
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.
2025-12-09 18:28:15 +02:00
oop7 1d958175f2 Improve RPM build process and Qt6 plugin handling
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.
2025-12-09 18:19:59 +02:00
oop7 b8804210dc Remove ffplay.exe from Windows build workflow
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.
2025-11-29 13:41:06 +02:00
oop7 0a66202f1d Update cx_Freeze base to 'gui' in Windows build
Changed the cx_Freeze Executable base from 'Win32GUI' to 'gui' in the Windows build workflow to align with updated cx_Freeze conventions.
2025-11-27 18:40:06 +02:00
oop7 91a0f3e4d7 Update CI workflows: actions versions and dependencies
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.
2025-11-27 17:41:39 +02:00
oop7 9f9bcf2d1e Update FFmpeg download URL in Windows build workflow
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.
2025-11-12 16:08:01 +02:00
Your Name 6ada5d6c92 Update asset paths in build workflows
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.
2025-10-06 16:28:59 +03:00
Your Name 44eb36b2e0 Include languages directory in build artifacts
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.
2025-10-06 16:23:46 +03:00
Your Name e28cf90a5f Update Python version to 3.13 in CI workflows
Changed the PYTHON_VERSION from 3.13.6 to 3.13 in the Linux, macOS, and Windows GitHub Actions workflows to use the latest 3.13.x release.
2025-10-06 16:20:55 +03:00
Your Name 47b2ad5cf8 Update GitHub Actions to latest action versions
Bump actions/checkout to v5, actions/setup-python to v6, and actions/cache to v4 in build workflows for Linux, macOS, and Windows. This ensures the workflows use the latest features and security updates from GitHub Actions.
2025-10-06 16:17:08 +03:00
Viren Hirpara e9de913b47 v4.9.0 - Refactor (#41)
* fix imports
remove unused imports
use full import path
sort import (1. Standard Library, 2. Third-Party, 3. Local) in alphabetic.

* - remove: Method 3 from src.core.ytsage_downlader:cleanup_subtitle_file
  - it could delete the subtitle file of other movies if it present in same directory as it scane recursively.

- refactor: migrate from os.path to pathlib.Path for path handling
  - Replaced os.path methods with pathlib.Path to improve readability,
  - avoid repeatation.
  - cross-platform compatibility, and maintain cleaner code.

- improve: enhance code readability
  - Standardized string literals to use double quotes for consistency
  - Removed unnecessary spaces to maintain cleaner formatting
  - Applied code formatting for better readability and maintainability

* - add: ytsage_constants.py file for one place to store all constants.

- imporve: return type hint for function.

- remove: src/gui/ytsage_gui_dialogs.py file to avoid repetation
  - src/gui/dialogs is renamed to src/gui/ytsage_gui_dialogs for same naming convection. (future import will remains same)
  - use of src/gui/ytsage_gui_dialogs/__init__.py to import the dilogs modules.

- change: variable self.parent to self._parent so it does not overwrite the parent()
  - add type hint checking.

* - refactor: QMetaObject.invokeMethod to Signal
  - I encounter error with incokeMethod. Could not solve it.
  - So, Changed it to Signal to match app code language.

- implement: the ytsage_constants.py to code
  - remove: unnecessary logic
  - remove: repetitive code logic.

- update: yt-dlp logic for src\gui\ytsage_gui_dialogs\ytsage_dialogs_update:_update_binary
  - yt-dlp update logic will use `yt-dlp -U`

* refactor: remove unused imports and streamline code formatting across multiple files

* - **refactor: drop `pygame` in favor of built-in `PySide6` sound**

- Removed `pygame` dependency (too heavy just for notifications).
- Replaced with `QSoundEffect`, which is lightweight and built into `PySide6`.
- Dropped `pygame.mixer` + threading → Qt handles async playback.
- Implemented sound playback with `QUrl.fromLocalFile()` and `.play()`.
- Added `setVolume(0.9)` as a configurable example.
- Converted notification sound from `.mp3` to `.wav` (only format supported).

* **refactor(utils): simplify logger module**
  - Moved `logger` to `src.utils`
  - Removed unnecessary import checks (logger is always available)
  - Replaced `raise` statements with error logging to prevent crashes
  - Use `logger.exception()` in `except` blocks to capture traceback (logged as error)

**style: remove redundant str() in f-strings**
  - Dropped explicit `str()` calls inside f-strings
  - f-strings already call `str()` under the hood

**chore: add type hints for GUI mixins**
  - Added type hints for `FormatTableMixin` (`src.gui.ytsage_gui_format_table`)
  - Added type hints for `VideoInfoMixin` (`src.gui.ytsage_gui_video_info`)
  - Improves autocomplete and type safety in IDEs

* - **introduce the `ytsage_config_manager.py` module to manage app setting.**
  - Loads settings from a JSON config file (`APP_CONFIG_FILE`).
  - Creates the config file with default values if missing or corrupt.
  - Retrieves, sets, and deletes settings using simple dot-separated keys.
  - Provides safe error handling with logging instead of raising exceptions.
  - Persists updates back to disk automatically.

- **Usage**
```python
from src.utils.ytsage_config_manager import ConfigManager

download_path = ConfigManager.get("download_path")

ConfigManager.set("download_path", "D:/Downloads")

last_check = ConfigManager.get("cached_versions.ytdlp.last_check")

ConfigManager.delete("cached_versions.ffmpeg.path")
```

* **Refactore: pkg_resources with importlib.metadata.version**
  - UserWarning: pkg_resources is deprecated as an API.
  - See https://setuptools.pypa.io/en/latest/pkg_resources.html.
  - The pkg_resources package is slated for removal as early as 2025-11-30.

* **refactore: notification sound**
  - `QSoundEffect` is chnaged back to `pyglet` as per mainter `@oop7` choise.
  - simplify the logic.

* remove: import check, it should always work.

* **fix: runtime error**
  - yt_dlp moved from `--excludes` to `--packages` in `build-windows.yml`
  - In frozen build, logger will not log to consol. insted will log to file.
  - In frozen build, `app_dir` is next to `.exe` file.

* chang back to checking import for ytdlp

* Bump version to 4.8.1

Update version references from 4.8.0b to 4.8.1 in __init__.py, main app, and About dialog to reflect the new release.

* Update asset paths in build workflows

Changed asset inclusion and screenshot removal paths from 'assets' to 'lib/assets' in Linux, macOS, and Windows build workflows to reflect new directory structure and ensure screenshots are excluded from packaged builds.

* Bump version to 4.8.2

Update version references from 4.8.1 to 4.8.2 in source files and documentation to prepare for a new patch release.

* Fix asset include path in Windows build workflow

Corrects the syntax for including asset files in the build-windows.yml workflow by changing 'assets,lib/assets' to 'assets=lib/assets'. This ensures assets are properly mapped during the build process.

* Update release tag examples in CI/CD README

Changed the example git tag commands from v4.8.0 and v4.8.2 to v4.8.1 for consistency in the CI/CD documentation.

* Fix include-files mapping in Windows build workflow

Changed the cx_Freeze --include-files argument from '=' to ':' for source:destination mapping in build-windows.yml. This resolves an issue where '=' was treated as a literal path, ensuring assets are correctly copied to the destination directory.

* Remove redundant comments in build-windows workflow

Deleted comments explaining the colon usage for source:destination mapping in the cx_Freeze CLI, as the mapping is already clear from the context.

* Refactor Windows build to use cx_Freeze setup script

Replaces direct cx_Freeze CLI calls with dynamically generated setup scripts for both standard and FFmpeg builds. This improves maintainability and flexibility of build configuration in the GitHub Actions workflow.

* Bump version to 4.8.3

Updated version references from 4.8.2 to 4.8.3 in __init__.py, main app, and About dialog to reflect the new release.

* revert(build): move yt_dlp from --packages to --excludes in build-windows.yml

---------

Co-authored-by: Your Name <mohamed.mohamed112@ai.mnu.edu.eg>
2025-09-09 23:01:19 +03:00
Your Name c57faca4b5 Fix indentation for release artifact packaging step
Corrects indentation of the 'Package and prepare release artifacts' step in the build-linux workflow to ensure proper execution of artifact packaging commands.
2025-09-03 22:28:55 +03:00
Your Name f2d3a0b0ed Refactor Linux build workflow for native DEB packaging
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.
2025-09-03 22:07:58 +03:00
Your Name 83e23f2259 Remove postinst script for desktop icon in Linux build
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.
2025-09-03 21:54:38 +03:00
Your Name 120afef8f7 Add postinst script to place desktop icon on install
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.
2025-09-03 21:20:44 +03:00
Your Name 09d117cb53 Remove DEB desktop integration fix from build workflow
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.
2025-09-02 20:09:14 +03:00
Your Name 1b552c4ae8 Improve DEB package 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.
2025-09-02 19:47:28 +03:00
Your Name aebe5f1aa6 Fix DEB desktop integration in build workflow
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.
2025-09-02 19:27:05 +03:00
Your Name 81480cbebe Normalize package naming to lowercase ytsage
Updated workflow to use lowercase 'ytsage' for package names and file patterns, ensuring consistency across AppImage, RPM, and DEB artifacts.
2025-09-02 18:58:17 +03:00
Your Name 5d48e29d68 Update Linux build workflow for desktop integration
Adds ytsage.desktop and icon to packaging, removes RPM install script, and updates workflow steps to improve desktop integration for Linux builds.
2025-09-02 18:47:43 +03:00
Your Name 9ddac31b4b Remove AppImage desktop metadata from build config
Deleted unnecessary desktop metadata fields (app_name and categories) from the AppImage build configuration in the GitHub Actions workflow.
2025-09-02 18:37:18 +03:00
Your Name cb48b21cdc Improve Linux packaging and 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.
2025-09-02 18:25:19 +03:00
Your Name 51d9c1d119 Update executable naming in build workflow
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.
2025-09-02 15:56:00 +03:00
Your Name fe7c9c3797 Add Linux build workflow for release packaging
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.
2025-09-02 15:31:40 +03:00
Your Name 87d21c9a9d Add macOS version matrix and arch-specific artifacts
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.
2025-09-01 18:45:57 +03:00
Your Name 45d96a1f83 Improve macOS build artifact detection and packaging
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.
2025-09-01 18:22:18 +03:00
Your Name 3fbc587e02 Add macOS build and release workflow
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.
2025-09-01 17:54:38 +03:00
Your Name 5256ab3652 Replace playsound3 with pyglet in Windows build
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.
2025-08-28 17:56:43 +03:00
Your Name 7be376c2fd Update Python version in Windows build workflow
Bumps the PYTHON_VERSION from 3.13.5 to 3.13.6 in the GitHub Actions workflow for building on Windows.
2025-08-27 23:16:07 +03:00
Your Name 4779ab269f Update Python version and remove unused constant
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.
2025-08-27 21:42:31 +03:00
Your Name a344d084a6 Revamp Windows build workflow and update Python version
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.
2025-08-27 21:06:46 +03:00
Your Name b45434bf6e Refactor Windows build workflow for YTSage
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.
2025-08-27 21:01:55 +03:00
Your Name d02117f7c3 Exclude screenshots from Windows build outputs
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.
2025-08-27 20:39:50 +03:00
Your Name f7a40b7c45 Update Python version and improve FFmpeg handling
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.
2025-08-27 20:21:25 +03:00
Your Name d435cac3d5 Simplify include-files in Windows build workflow
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.
2025-08-27 20:12:05 +03:00
Your Name 44b69d99e9 Switch Windows build to ZIP only, remove MSI setup scripts
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.
2025-08-27 20:02:22 +03:00
Your Name 4a425661f7 Remove MSI cleanup step from Windows build workflow
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.
2025-08-27 15:59:07 +03:00
Your Name 29e995eee0 Simplify MSI build options and update version to 4.7.4
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.
2025-08-27 15:39:00 +03:00