YTSage 5.0.0b2 - Beta Release
Please report any issues you encounter on the GitHub Issues page.
Downloads
| Platform | File | Notes |
|---|---|---|
| YTSage-v5.0.0b2-ffmpeg-Setup.exe | With FFmpeg bundled | |
| YTSage-v5.0.0b2-Setup.exe | Standard installer | |
| YTSage-v5.0.0b2-ffmpeg-portable.zip | Portable with FFmpeg, zipped | |
| YTSage-v5.0.0b2-portable.zip | Portable version, no installation required | |
| YTSage-v5.0.0b2-amd64.deb | Debian package | |
| YTSage-v5.0.0b2-x86_64.AppImage | AppImage, portable | |
| YTSage-v5.0.0b2-x86_64.flatpak | Flatpak Bundle | |
| YTSage-v5.0.0b2-x86_64.rpm | RPM package | |
| YTSage-v5.0.0b2-arm64.dmg | Disk image installer for Apple Silicon | |
| YTSage-v5.0.0b2-arm64.app.zip | Zipped application for Apple Silicon |
🚀 New Features
- Automated release script: Add
build_release.pyto automate production builds (cleanup, wheel build, README handling) and standardize the release flow. - Modern packaging: Migrate dependency and build configuration to
pyproject.toml, removerequirements.txt, and addMANIFEST.into ensure assets and language files are packaged. - Package layout consolidation: Rename the top-level package from
srctoytsageand movemain.pyintoytsage/, simplifying module imports and enablingpython -m ytsage.mainusage. - Background history & thumbnails: Introduce a virtualized history view with an SQLite backend, persistent DB connection, and asynchronous thumbnail downloads to keep the UI responsive on large histories.
🔧 Improvements
- Build workflows & CI: Update Windows, macOS and Linux CI workflows to install from
pyproject.toml(PEP 517), adjust cx_Freeze entry points and asset paths, and clarify artifact naming. - README & docs: Refresh documentation and CI/CD notes to show the new layout, packaging steps, and how to run via
python -m ytsage.main. - Assets & localization: Reorganize branding and asset folders (
branding/,ytsage/assets) and move language JSON files toytsage/languagesfor packaging and discoverability. - Localization coverage: Add and expand translation keys (multiple languages) and localize dialogs, log messages, and FFmpeg/yt-dlp setup strings.
- Update checks: Speed up update checks using parallel network requests and non-blocking background threads, plus improved fallbacks and timeouts.
- Format table & UI performance: Build the format table once and use visibility toggles for filtering; centralize file-extension constants to reduce duplication.
- Audio playback: Replace
pygletwithPySide6.QtMultimediafor notification playback and update build steps accordingly. - Progress feedback: Add smooth
QPropertyAnimationfor progress updates and increase progress precision to 0.01% (range 0–10000) for finer progress reporting.
🐛 Bug Fixes
- Build fixes: Fix Linux build configuration and correct icon paths used by build scripts; update Windows workflow paths and packaging excludes.
🔄 Refactoring
- Package & imports: Move
src/core,src/gui, andsrc/utilsintoytsage/and update imports to relative module paths across the codebase. - GUI organization: Extract analysis logic into
AnalysisMixin, centralize stylesheet handling inytsage_stylesheet.py, and reorganize GUI dialogs and modules for clarity. - Threading and stability: Replace manual threading with
QThread-based classes for analysis and updater checks, add cancellation and safer UI signaling. - History backend: Migrate history storage from JSON to SQLite with a persistent connection, add indexes for fast search, and implement a virtualized
QListViewfor large histories. - Config & constants: Introduce
ConfigManagerand centralize file-extension constants inytsage_constants.pyto reduce duplication and improve maintainability.
Known Issues
- GitHub workflows on main: CI/Actions in the
mainbranch are not reflecting the repository refactor (file paths and updated workflow files live on thebetabranch). GitHub only reads workflow files from the default branch, so builds/workflows will not work until the refactor/workflow updates are merged intomain.
Installation Notes
- Clean install recommended: Due to the package refactor (
src→ytsage) and updated packaging/workflows, a clean reinstall is recommended. A dirty update may work in many cases, but if you encounter import/module errors or missing assets, uninstall and perform a fresh install. Try a dirty update first, then perform a clean reinstall if problems occur