Commit Graph
100 Commits
Author SHA1 Message Date
oop7 938cc9be46 Bump version to 5.1.0
Update package version from 5.0.10b to 5.1.0 in pyproject.toml and ytsage/__init__.py to prepare for the 5.1.0 release.
2026-05-14 15:54:07 +03:00
oop7 9bf22a6b22 Merge branch 'beta' 2026-05-14 15:52:50 +03:00
oop7 d581754062 Fix image paths in README
Update README.md image src attributes to use 'branding/...' instead of '../branding/...', correcting broken links to the wordmark and various screenshots (main, Download-Settings, playlist, audio_format, Custom-Option) so images render properly in the repository's README.
2026-05-14 15:50:37 +03:00
oop7 0216f7be71 Polish Russian README translation
Refine the Russian README translation: update UI labels, headings and anchor IDs, translate screenshot alt texts and table entries, normalize installation and troubleshooting instructions, and improve wording/consistency across sections (installation, usage, features, networking, tools, localization and contribution). Small formatting and phrasing tweaks to make the Russian text clearer and more consistent.
2026-05-14 15:47:20 +03:00
oop7 39320db3a0 Polish README text, paths, and formatting
Editorial and structural updates to README.md and readme-translations/README.tr.md: fix image paths (use ../branding/ and forward slashes), standardize wording/capitalization (Application, Download, Install, etc.), reformat feature tables and installation sections for consistency, clarify install/update/run commands, improve macOS/Windows troubleshooting and antivirus guidance, adjust screenshot alt texts, and apply numerous minor localization and copy corrections in the Turkish translation.
2026-05-14 15:39:06 +03:00
oop7 3ba021dfbb Update Polish README translation and formatting
Apply copy edits and formatting fixes to readme-translations/README.pl.md: adjust wording and capitalization, standardize section headings and anchors (e.g. instalacja, funkcje, użycie), harmonize terminology (Download Settings, Generic Mode), fix tables and list formatting, update platform/executable descriptions and installation steps, revise screenshots alt text, clarify usage and troubleshooting instructions, and refresh localization & contributing sections for consistency.
2026-05-14 15:38:35 +03:00
oop7 ca176d7844 Refine README.ja.md translations and formatting
Polish Japanese README translation and formatting: update wording and punctuation for clarity, translate and normalize section headings and links, refine tables and feature lists, adjust installation and platform-specific instructions, update screenshot alt text and usage examples, and improve troubleshooting and localization entries for consistency.
2026-05-14 14:56:52 +03:00
oop7 37777310c9 Update German and Italian README translations
Refine and standardize wording in readme-translations/README.de.md and README.it.md. Improvements include clearer UI labels (Analyze/Download), consistent terminology for installation and features, corrected language names, updated tables and formatting, improved screenshot alt texts, and various grammar/translation fixes to align both locales with the main README for clarity and consistency.
2026-05-14 14:52:50 +03:00
oop7 0c73bfcd98 Polish README translations (ES, HI, ID)
Copy edits and consistency fixes for translated README files in readme-translations (Spanish, Hindi and Indonesian). Changes include corrected wording and grammar, standardized headings and labels (installation, usage, settings), localized UI/alt text updates, clarified install/update instructions, unified terminology (e.g. Generic Mode, FFmpeg/yt-dlp detection), and various formatting improvements across language tables and troubleshooting notes. Pure documentation updates only.
2026-05-14 14:51:33 +03:00
oop7 ffa46d4a2a Improve Arabic README translation
Refine Arabic localization and formatting in readme-translations/README.ar.md. Updates include clearer word choices (e.g., تحميل vs تنزيل), consistent UI label translations (Analyze/Download), corrected language names and links, improved table layouts, localized installation and troubleshooting instructions, updated screenshot alt texts, and additional notes about playlist export and Generic Mode. These changes tidy wording and improve consistency for Arabic readers.
2026-05-14 14:45:43 +03:00
oop7 9fd09cd0d0 Handle playlist items as completed on partial errors
For playlist downloads, treat an item as completed if a file was created even when the downloader returned a non-zero code. Emit 100% progress for such cases and update the status to "download.completed (with some errors)" when return_code != 0, otherwise keep the normal completed status. This avoids reporting false failures for playlist items that produced output despite errors.
2026-05-14 13:47:05 +03:00
oop7 99ba5d6d8a Ignore playlist errors; normalize version cache
When downloading playlists, add --ignore-errors and --no-abort-on-error so a single failure won't stop the entire playlist download. Also normalize values stored in the version cache: coerce version_info to a string (or empty string) and path to a string or None to ensure consistent types when reading/writing cached tool metadata.
2026-05-14 12:37:56 +03:00
oop7 ba07a3300c Bump version to 5.0.10b
Update project version from 5.0.9b to 5.0.10b in pyproject.toml and ytsage/__init__.py to prepare a new beta release.
2026-05-01 22:51:06 +03:00
oop7 0d5cbb2df1 Write auto-subs only if selected; show count
Downloader: add detection for "Auto-generated" subtitle selection and only append --write-auto-subs when an auto-generated subtitle is explicitly chosen (prevents always enabling the flag when any subtitles are requested). GUI: update subtitle label to display the number of selected subtitles when >0, falling back to the zero-selected message otherwise. Small UX and behavior fixes in DownloadThread and AnalysisMixin.
2026-05-01 16:49:58 +03:00
oop7 abef0d8a6d Strip playlist_index placeholder for single files
When building the output template for single-file downloads, remove any playlist-specific preamble (e.g. '%(playlist_index)s - ') from filename_part. Adds a regex-based substitution to clean up leftover playlist_index placeholders so single downloads don't get playlist-style prefixes in their filenames.
2026-05-01 16:29:28 +03:00
oop7 abec69fb84 Include index and formatted durations in exports
Enhance playlist export output for Text and CSV formats. Text files now include a numeric index, a title fallback ("Video N"), and a human-readable duration ([H:MM:SS] or [MM:SS]) when available before the URL. CSV export adds a "Playlist Index" column and writes a formatted title with index and duration. Duration parsing is protected against non-integer values. M3U and JSON export behavior unchanged.
2026-05-01 14:23:29 +03:00
oop7 d2f96baf63 Bump version to 5.0.9b
Update package version from 5.0.7b to 5.0.9b in pyproject.toml and ytsage/__init__.py to reflect the new release.
2026-04-28 13:37:31 +03:00
oop7 e78b634bee Add remember_settings and private_video keys
Add two new localization keys across multiple language files: "remember_settings" (cookie dialog) and "private_video" (download/error message) to inform users about remembering cookie settings and private videos. Also fix minor formatting in en.json (split combined line for open_folder/save_playlist/reset). Updated locale files: ar, de, en, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh.
2026-04-28 13:31:07 +03:00
oop7 8dc0991619 Persist cookie settings across sessions
Restore cookie configuration on startup when previously active and the user opted to remember them. If config indicates a file source and the path exists, set cookie_file_path; if browser source, set browser_cookies_option. Treat missing "cookie_remember" as true by default. If the user did not opt to remember cookies, reset cookie_active to false. Added logging for restored settings and initialization state.
2026-04-28 13:30:13 +03:00
oop7 4ae78b830d Add 'Remember Cookie Settings' checkbox
Introduce a "Remember Cookie Settings" QCheckBox to the cookies UI (label uses gettext key "cookies.remember_settings"). The control defaults to True when no prior setting exists and applies custom styling for the indicator and text. Its toggled signal is wired to ConfigManager.set("cookie_remember", checked) so the preference is saved immediately (avoiding dependence on an Apply button), and the value is also saved when the dialog persists other cookie settings. Uses the "cookie_remember" config key for storage.
2026-04-28 13:29:43 +03:00
oop7 5bbecf1e1d Detect private/sign-in yt-dlp errors
Update AnalysisThread error handling to detect yt-dlp stderr containing "Private video" or "Sign in". For those cases, emit a localized errors.private_video message and log a specific private-video error; otherwise preserve the existing generic ytdlp_failed behavior. Playlist visibility signals and early return remain unchanged.
2026-04-28 13:29:26 +03:00
oop7 fe0f8241ff Improve playlist format selection and resolution
When downloading playlists, avoid reusing a specific format_id from the first item (which can fail for subsequent videos). For audio-only playlists, use yt-dlp's bestaudio fallback; for video playlists, respect a provided resolution by extracting the height and applying -S res:<height>, otherwise fall back to bestvideo+bestaudio/best. Invalid resolution strings are caught and logged, and revert to the dynamic best-quality fallback.
2026-04-28 12:55:46 +03:00
oop7 bb461898e4 Update translations across multiple locales
Update and improve translations for multiple language files (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh). Key changes include localized strings for playlist saving ("Save Playlist As" -> localized), save/result/error messages, concurrent connections and help text, default selection/settings (video quality and subtitle language), and various wording/typo fixes. Also add/translate FFmpeg installation and yt-dlp setup messages in Turkish and Chinese. No functional code changes.
2026-04-25 17:42:36 +03:00
oop7 a2e11eec06 Update French translations
Translate several UI strings in ytsage/languages/fr.json from English to French: update `save_playlist`, `filter_playlist_placeholder`, and a group of settings strings (`concurrent_fragments`, `concurrent_fragments_help`, `defaults_settings`, `default_video_quality`, `default_subtitle_language`, `defaults_help`) to provide correct French localization and improve consistency.
2026-04-25 17:40:49 +03:00
oop7 9856dbf301 Update Spanish and Hindi translations
Improve localization by updating translations in ytsage/languages/es.json and ytsage/languages/hi.json. Spanish fixes provide full translations for interface help text, restart notice, playlist/save labels, dialog placeholders, and playlist save messages. Hindi adds translated strings for concurrent connections, related help text, and default selection settings for video quality and subtitles.
2026-04-25 17:40:24 +03:00
oop7 3d06c4dba6 Update German and Hindi translations
Translate several UI strings in ytsage/languages for German (de.json) and Hindi (hi.json). Changes include localized labels for saving playlists and filtering videos, dialog placeholders, and various settings text (e.g. concurrent connections and default selection help in German). Hindi updates add translated playlist save dialog messages and related UI strings.
2026-04-25 17:39:52 +03:00
oop7 d8c3ce8fa1 Add new i18n keys to language files
Add new localization keys across multiple ytsage language JSONs. Common addition: "filter_playlist_placeholder" added to most languages. Spanish, Turkish and Chinese receive several new strings for custom commands, proxy settings, FFmpeg installation messages, history loading, time/placeholders and validation messages. Also ensure files end with newline. Files modified: ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh.
2026-04-25 10:58:43 +03:00
oop7 d19ac96ff7 Bump package version to 5.0.7b
Update project version in pyproject.toml and ytsage/__init__.py from 5.0.5b to 5.0.7b to mark the new release.
2026-04-25 10:54:08 +03:00
oop7 a512c603ce Document playlist export and new defaults
Update README to reflect new features and settings: add "Export Playlists" to the feature table; document the "Save Playlist As" export options (.txt, .csv, .m3u, .json). Add docs for Default Video Resolution and Default Subtitle Languages settings, and update the Output Filename Format variables to include %(playlist_index)s and %(resolution)s. These changes keep the README in sync with recent UI/settings additions.
2026-04-25 10:46:43 +03:00
oop7 c9217fccb7 Handle None file_size in history delegate
Replace entry.get('file_size', 0) with entry.get('file_size') or 0 in HistoryDelegate (ytsage_dialogs_history.py) to treat None as 0. This prevents TypeError when comparing None > 0 and ensures file size formatting/display only occurs for positive sizes.
2026-04-25 10:40:38 +03:00
oop7 57f5450725 Add save_playlist key to language files
Add a new "save_playlist" entry (placeholder "Save Playlist As") to multiple locale JSON files (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh) to provide a translation key for saving playlists. Also adds the required trailing commas when inserting the new entries.
2026-04-25 10:39:00 +03:00
oop7 405ae07cac Add i18n entries for defaults and playlist save
Add new localization keys across multiple languages to support default selection settings and playlist saving UI. New keys include defaults_settings, default_video_quality, default_subtitle_language, defaults_help, and playlist save messages (save_as, save_success_title, saved_successfully, save_error_title, no_videos_to_save, save_error_msg). Files updated: ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh.
2026-04-25 10:37:40 +03:00
oop7 3b6ac7ce81 Add playlist save and default selection strings
Update English locale with new UI strings for playlist saving and default selections. Adds 'save_playlist' and related save messages (save_as, save_success_title, saved_successfully, save_error_title, no_videos_to_save, save_error_msg), adds default selection settings keys (defaults_settings, default_video_quality, default_subtitle_language, defaults_help), and documents the %(playlist_index)s variable in filename_format_help. Also minor formatting cleanup in the file.
2026-04-25 10:33:10 +03:00
oop7 cf4c4e37c8 Add 'Save Playlist' button and save dialog
Introduce a Save Playlist UI flow: import QFileDialog, group playlist action buttons into a horizontal layout, add a new "Save Playlist As" button with styling and visibility control, and connect its click to a new save_playlist_to_file method. The new method prompts for a save location and supports saving playlist_entries in TXT, M3U, CSV, or JSON formats, shows success/error message boxes, and logs exceptions. Also wire the existing playlist visibility signal to control the save button and adjust layout placement for the playlist buttons.
2026-04-25 10:32:59 +03:00
oop7 fb209351f2 Auto-select default video quality in formats
After populating the format table, read default_video_quality from ConfigManager and attempt to auto-select a matching video format (by resolution/height). If a matching video format is found it is checked and handle_checkbox_click is invoked to trigger selection side-effects; if not, the first (highest-quality) format is selected as a fallback. Existing visibility filtering via filter_formats is still applied afterward.
2026-04-25 10:32:49 +03:00
oop7 6eb12043e3 Add default video quality & subtitles settings
Introduce a "Default Selection Settings" group in the Download Settings dialog to let users specify a default video resolution (height) and default subtitle language(s). Adds labeled QLineEdit inputs with placeholders and explanatory help text, uses localized strings for labels, and persists values to ConfigManager under keys "default_video_quality" and "default_subtitle_language" when saving.
2026-04-25 10:32:35 +03:00
oop7 717e9b40ae Preselect default subtitles from config
Load user's default_subtitle_language from ConfigManager and preselect matching manual or auto-generated subtitles on analysis load. Handles comma-separated strings, checks against available_subtitles and available_automatic_subtitles, and updates the selected subtitles list. Attempts to update the UI label and button state (with style refresh) inside a try/except to avoid errors during initialization.
2026-04-25 10:32:20 +03:00
oop7 ab7d77800a Include video id in default filename format
Add video id to the default output filename template across the downloader and settings UI. The template was changed from "%(title)s_%(resolution)s.%(ext)s" to "%(title)s_%(resolution)s_[%(id)s].%(ext)s" in ytsage_downloader.py and ytsage_dialogs_settings.py (including placeholder and reset behavior). This helps avoid filename collisions and makes downloaded files easier to identify.
2026-04-19 19:20:56 +02:00
oop7 a51d8092a8 Include video id in default filename format
Update default filename_format to append the video id as _[%(id)s] before the extension, improving uniqueness of generated filenames and preventing collisions when multiple videos share the same title and resolution.
2026-04-19 18:11:19 +02:00
oop7 00fc685e88 Bump version to 5.0.5b
Prepare a new beta release by updating the package version. Sync version from 5.0.4b to 5.0.5b in pyproject.toml and ytsage/__init__.py.
2026-04-10 17:19:44 +02:00
oop7 9b085aa547 Prefix playlist formats with '≤' and read table
Format table: when in playlist mode and the format has a video codec, prefix the quality and (when available) resolution with "≤ " to indicate an upper-bound. Resolution is only prefixed if it's not "N/A".

Main UI: replace the old checkbox-list lookup with scanning the format_table rows to find the checked checkbox widget, pick the correct resolution column depending on playlist mode, strip any leading "≤ " and use that as the selected resolution. This fixes resolution selection for playlist entries and ensures the displayed "≤" semantics are handled when extracting values.
2026-04-10 17:10:58 +02:00
oop7 71a68d3947 Use smaller dimension for resolution height
Previously the code assumed the height was always the second value in the "WxH" resolution string. This change splits the resolution into parts, verifies there are two components, and uses the smaller dimension (min) as the height to correctly classify vertical videos. Also avoids potential index errors when the resolution string is malformed.
2026-04-10 15:10:00 +02:00
oop7 ac5690b9b0 Add Concurrent Connections note to README
Document the new Concurrent Connections setting: explains that downloads can use multiple fragments concurrently to increase speed, where to find it (Download Settings → General → Concurrent Connections), the default value (1), and a recommended maximum (8–10) to avoid IP limiting.
2026-04-09 18:33:07 +02:00
oop7 93033d6661 Add concurrent connections note to translations
Add a new note about the "Concurrent Connections" download setting to multiple translated README files under readme-translations/. The entry documents that downloading files in multiple simultaneous fragments can drastically increase speed, and notes the default of 1 and a recommended maximum of 8–10 to avoid IP throttling. Files updated include translations for AR/DE/ES/FR/HI/ID/IT/JA/PL/PT/RU/TR/ZH.
2026-04-09 18:28:03 +02:00
oop7 e86536d585 Add concurrent connections i18n keys
Add new i18n keys "concurrent_fragments" and "concurrent_fragments_help" to multiple language JSON files (ar, de, en, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh). These expose a UI option for the number of concurrent connections per download with a help string (default: 1, warns about throttling/temporary blocks). Strings were added in English across locales and may need translation.
2026-04-09 18:27:50 +02:00
oop7 7acb3d0853 Add default concurrent_fragments setting
Introduce a new config key 'concurrent_fragments' with default value 1 in ConfigManager defaults. This exposes a setting to control the number of concurrent fragment downloads/processing, preserving single-fragment behavior unless overridden by user configuration.
2026-04-09 18:27:33 +02:00
oop7 47dafe565f Pass concurrent_fragments to DownloadThread
Read concurrent_fragments from ConfigManager (defaulting to 1) and forward it into the DownloadThread constructor so the download fragment concurrency setting is propagated to the downloader.
2026-04-09 18:27:23 +02:00
oop7 2495c77d3c Support concurrent fragments and emit finished
Add a concurrent_fragments parameter to DownloadThread (default 1) and store it as an instance attribute. When building the yt-dlp command, include a -N <concurrent_fragments> option and log the concurrent connections. Also emit finished_signal upon cancellation and on error paths to ensure the UI is notified of thread completion. Minor comment/logging clarifications added around command construction.
2026-04-09 18:27:14 +02:00
oop7 fda6a4059d Add concurrent connections setting to dialog
Add a "Concurrent Connections" section to DownloadSettingsDialog with a QComboBox (1–20) and help text; initialize from ConfigManager("concurrent_fragments"). Introduce get_concurrent_fragments() to return the chosen value (with a safe fallback to 1) and persist the setting on dialog accept. Uses localized labels and minor styling for the help label.
2026-04-09 18:26:57 +02:00
oop7 99f1adf8eb Bump package version to 5.0.4b
Update package version from 5.0.2b to 5.0.4b. Changed version in pyproject.toml and __version__ in ytsage/__init__.py to prepare for the new release.
2026-04-09 14:50:01 +02:00
oop7 7bf62c542c Bump version to 5.0.3
Update package version from 5.0.2b to 5.0.3 in pyproject.toml and ytsage/__init__.py to prepare the 5.0.3 release.
2026-04-09 14:18:42 +02:00
oop7 7a39c4a4ba Merge branch 'beta' 2026-04-09 14:15:52 +02:00
oop7 437344695d Add UI tab labels to translation files
Add "tab_general", "tab_format", and "tab_file" entries to multiple ytsage/languages/*.json files to provide localized labels for the UI tabs (General, Format, File). Also include a minor formatting/newline fix in en.json.
2026-03-21 16:26:41 +02:00
oop7 f66ea09ba6 Refactor settings dialog into tabs and restyle
Reorganize the Download Settings dialog into a SmoothTabWidget with three tabs (General, Format, File) and move existing group sections into corresponding tab layouts. Import QWidget and SmoothTabWidget, increase dialog minimum width from 450 to 550, and add stretches for better layout spacing. Overhaul the dialog stylesheet to restyle tabs, frames, group boxes, checkboxes, radio buttons, combo boxes and item views (borders, paddings, colors, radii, hover/selected states). Also style OK/Cancel buttons to match the Custom Options dialog. These changes improve the dialog's visual consistency and UX while preserving existing settings controls and behavior.
2026-03-21 16:21:07 +02:00
oop7 1b3d60a1bc Bump project version to 5.0.2b
Update pyproject.toml project version from 5.0.1b to 5.0.2b to prepare the next beta release. No other code or metadata changes included in this commit.
2026-03-21 15:40:49 +02:00
oop7 7d5aa5da7e Add audio normalization (EBU R128) to READMEs
Update translated README feature lists to include audio normalization (EBU R128). Applied the change across multiple language files in readme-translations (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh) to reflect the new audio normalization feature in the project documentation.
2026-03-21 15:31:27 +02:00
oop7 4f25b268f7 Fix table layout in translated READMEs
Merge two table cells into a single row in multiple translated README files to correct the features table layout (combine "Generic mode" and "Localization in 14 languages"). Affected files: readme-translations/README.{ar,de,es,fr,hi,id,it,ja,pl,pt,ru,tr,zh}. Improves consistency and readability across translations.
2026-03-21 15:27:30 +02:00
oop7 62b8ede273 Add audio normalization docs and translations
Document Audio Normalization (EBU R128) in README and translated READMEs, and add corresponding localization keys and help text in ytsage language files. Updates include README.md, readme-translations (ar,de,es,fr,hi,id,it,ja,pl,pt,ru,tr,zh) and ytsage/languages JSON files to explain the feature and note that normalization requires re-encoding and forcing a specific audio format (e.g. MP3 or M4A).
2026-03-21 15:21:40 +02:00
oop7 b048f8ce09 Add audio normalization option and support
Introduce an "audio_normalization" option across the app and implement normalization for audio-only downloads. Updates include: add config default (ConfigManager), new language strings, settings UI checkbox + help text and logic to auto-enable force-audio-format when normalization is enabled, and persist the setting. Pass the setting from main app to DownloadThread, and in the downloader force re-encoding to mp3 when necessary and append --postprocessor-args ExtractAudio:-af loudnorm=... to apply EBU R128 normalization. This ensures normalization works reliably (avoids ffmpeg stream-copy errors) and keeps the behavior scoped to ExtractAudio postprocessor.
2026-03-21 15:08:48 +02:00
oop7 fff674a0b8 Add check_app_updates key to locales
Add a new "check_app_updates" translation string to multiple language files so the UI can display the option to check for YTSage updates at startup. Updated languages: ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh.
2026-03-19 14:49:37 +02:00
oop7 4a16aad2ac Add check_app_updates setting and UI
Introduce a new "check_app_updates" configuration (default: true) to allow users to enable/disable automatic YTSage update checks. Adds a styled checkbox to the Updater tab with getter, loads the setting (defaults to enabled for older configs), and saves it from the custom options dialog. The main update check now respects this setting and will skip checking when disabled. Also include English localization entries for the new UI strings.
2026-03-19 14:45:56 +02:00
oop7 67dc1c83f2 Bump package version to 5.0.2b
Update ytsage.__version__ from 5.0.1b to 5.0.2b to mark the next beta release.
2026-03-19 14:34:37 +02:00
oop7 b43ed3212c Fix localized usage sections 2026-03-19 14:12:12 +02:00
oop7 9d1e83f7df Add README translations and language links
Add localized README files and update main README to expose them. Creates readme-translations/*.md (Arabic, German, Spanish, French, Hindi, Indonesian, Italian, Japanese, Polish, Portuguese, Russian, Turkish, Chinese) and adds a language list, README Translations table, and a "Contributing Translations" subsection to README.md so contributors can find and update localized docs.
2026-03-19 14:06:44 +02:00
oop7 fe828a5191 Reorganize README sections and update wording
Rename and restructure the options section: 'Advanced Options' becomes 'Media and Download Options', and new sections 'Output and File Settings', 'Access and Network', and 'Tools and Maintenance' are added. Clarify and reword items (subtitle embedding/merge, save thumbnail/description, trim video, speed limiter, proxy, cookie extraction), and consolidate updater/FFmpeg/yt-dlp/Deno detection and history/tooling notes. Documentation-only cleanup to improve clarity and discoverability of features.
2026-03-12 16:10:11 +02:00
oop7 c4c3e18b1b Document Generic Mode and add Sponsor section
Update README to document the new Optional Generic Mode: add a feature note, usage steps, troubleshooting notes (yt-dlp dependency, cookies/proxies), and a mention in Advanced Options and the features table. Also add a Sponsor anchor, nav link, and badge to the top navigation and About references. (Documentation-only changes)
2026-03-12 15:53:16 +02:00
oop7 64c9cf84da Bump version to 5.0.1b
Update project version from 5.0.0b5 to 5.0.1b in pyproject.toml and ytsage/__init__.py to reflect a new beta release.
2026-03-12 11:24:45 +02:00
oop7 9afca46c5d Add generic-mode URL validation and UI
Introduce a "generic_mode" option to allow validating/downloading from non-YouTube sites and wire it through the UI, config, and validation logic. Key changes:

- Add generic_mode default to ConfigManager and persist setting from DownloadSettingsDialog (checkbox + help text).
- Extend validate_video_url to accept a generic_mode flag and allow any http/https URL with a domain when enabled; pass this flag from Analysis and Download flows.
- Update YTSageApp to load/save generic_mode, update URL placeholder and settings tooltip behavior, and refresh tooltip when settings change.
- Improve robustness in FormatTableMixin: handle None/incorrect types for format_note, abr, resolution, ext, and codec values to avoid type errors and ensure consistent display.
- Add localization entries for generic mode, placeholder, and related help text across multiple language files and update the in-app default localization strings.

These changes enable broader site support via yt-dlp while hardening UI format handling and keeping user settings persistent.
2026-03-12 11:10:10 +02:00
oop7 518bd20e54 Bump version to 5.0.0
Promote package from beta to stable by updating version strings from 5.0.0b5 to 5.0.0 in pyproject.toml and ytsage/__init__.py. Prepares the project for the 5.0.0 release.
2026-03-07 20:58:31 +02:00
oop7 0078959be9 Merge branch 'beta' 2026-03-07 20:56:53 +02:00
oop7 a98dad0a33 Simplify link styling in About dialog
Update AboutDialog link markup to remove explicit font-size and font-weight styles and to unify link color. The author and repo links no longer set font-size, and the sponsor link color was changed from #ea4aaa to #c90000 (and its font-size/weight removed) for consistent appearance across links.
2026-03-03 18:00:03 +02:00
oop7 7bf4eec9fa Remove extra blank line in README badges
Delete an unintended blank line between badge entries in README.md to tighten badge layout and clean up formatting. No functional changes.
2026-03-03 17:53:14 +02:00
oop7 86e0121a58 Adjust README badges' colors and order
Reorder and restyle README badges for consistent visual grouping. Several badges (downloads, license, supported platforms) were changed to a dark-gray color (1f2937) and grouped together, while GitHub Stars, PyPI version, and Sponsors badges were highlighted in red (c90000). This is a cosmetic update to improve badge contrast and layout.
2026-03-03 17:52:02 +02:00
oop7 1cfb106ccc Reorder badges in README.md
Move the PyPI version and License (MIT) badges down in the README header to improve grouping and visual flow of project badges (now placed after the GitHub Stars badge).
2026-03-03 17:48:42 +02:00
oop7 4775f827a0 Add sponsor link to About dialog
Add a styled '❤️ Sponsor' GitHub Sponsors link to the About dialog (ytsage_dialogs_base.py). The change creates a QLabel with an external href to the sponsor page, enables openExternalLinks, and appends it to the info layout so the About dialog displays a sponsor call-to-action.
2026-03-03 17:45:21 +02:00
oop7 c34f33cc7a Add GitHub Sponsors badge to README
Adds a GitHub Sponsors badge (via shields.io) to the README, linking to https://github.com/sponsors/oop7 to promote project sponsorship. Minor documentation/branding enhancement.
2026-03-03 17:45:06 +02:00
oop7 3de27938d0 Add separator and update manual install heading
Insert a horizontal rule before the Manual Installation section and update the section summary emoji/text from '🛠️ Manual Installation from Source' to '💻 Manual Installation from Source' for improved readability and consistency in the README.
2026-03-03 16:18:28 +02:00
oop7 51d43e38bf Add download link and remove duplicate
Insert a 'Download Latest Release' callout under the Pre-built Executables section and remove a duplicate link later in the README so there's a single prominent release download link.
2026-03-03 16:16:25 +02:00
oop7 0d8bf820ec Add installation and update instructions to README
Add collapsible (details/summary) sections with step-by-step installation and upgrade instructions: pip upgrade for updating, Windows installer/portable/FFmpeg options, Linux packages (deb/rpm/AppImage/Flatpak) with example commands, and macOS DMG/zip steps plus a troubleshooting note. Improves clarity and discoverability of install/update procedures for users.
2026-03-03 16:14:37 +02:00
oop7 6b6394b3b6 Zero-pad PyPI version to match GitHub tags
Normalize PyPI's version string (e.g. "2026.2.21") to the zero-padded GitHub tag format (e.g. "2026.02.21") before building the update target. The code splits a three-part version and pads the month/day components with two digits so stable@<tag> matches yt-dlp GitHub tagging.
2026-02-26 13:02:54 +02:00
oop7 026bd45c32 Bump project version to 5.0.0b5
Update pyproject.toml to change the project version from 4.9.7 to 5.0.0b5, marking a beta/pre-release for the upcoming 5.0 release cycle.
2026-02-10 14:45:35 +02:00
oop7 7490f1939b Update build-pypi.yml to set draft and prerelease options for GitHub release 2026-02-10 14:43:38 +02:00
oop7 a3abd3309f Bump ytsage version to 5.0.0b5
Update __version__ in ytsage/__init__.py from 5.0.0b4 to 5.0.0b5 to mark the next beta release.
2026-02-10 14:34:44 +02:00
oop7 a2c16bf793 Add Windows installer artifacts to CI docs
Update CI_CD_README.md to list the Windows installer outputs produced by the workflow: `YTSage-v{version}-Setup.exe` (standard installer) and `YTSage-v{version}-ffmpeg-Setup.exe` (FFmpeg bundle installer). This documents that the pipeline generates both portable zips and installer executables for Windows.
2026-02-10 14:33:25 +02:00
oop7 201d2fc8b6 Add Chinese, Hindi, Indonesian language files
Add unofficial translation files for Chinese Simplified, Hindi and Indonesian under setup-scripts/Languages/Unofficial. Also update Setup-windows.iss and Setup-windows-ffmpeg.iss to incorporate related installer changes.
2026-02-10 14:11:33 +02:00
oop7 c4e09cf433 About dialog: adjust loading text and style
Strip the 🔄 emoji from the localized loading string to avoid rendering issues and use the cleaned text for the QLabel. Tweak the label styling by changing the color from #cccccc to #888888 and removing the italic font-style for a more consistent appearance.
2026-02-10 13:54:18 +02:00
oop7 79f2613cf7 Add open_logs strings to localizations
Add open_logs and logs_tooltip localization entries across multiple language JSON files (ar, de, en, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh) so the About/System Info UI can expose an action to open the application logs folder. Also add an "about" section to ytsage/utils/ytsage_localization.py with default entries (open_logs, logs_tooltip, refresh). This wires the logs-folder UI text into the localization system.
2026-02-10 13:50:22 +02:00
oop7 f33122fecd Add Open Logs button and simplify bug template
Add an 'Open Logs' button to the About dialog that opens the app log folder via QDesktopServices/QUrl, ensures the log directory exists, and logs warnings/errors. Include minimal styling and a handler (open_logs_folder) that uses APP_LOG_DIR and the logger. Also update settings dialog imports to include QUrl/QDesktopServices and APP_LOG_DIR. Simplify the bug report template to instruct users to open logs from the About dialog and attach ytsage.log / ytsage_error.log.
2026-02-10 13:50:03 +02:00
oop7 96cade3226 Add PyPI build workflow and docs
Introduce a new GitHub Actions workflow (build-pypi.yml) to build Python Wheel and Source Distribution and upload them as release assets. Integrate the PyPI job into the release-all workflow and update .github/CI_CD_README.md to document the PyPI artifacts and the new build-pypi.yml entry. The workflow uses Python 3.13, installs build tooling, runs build_release.py, and uploads dist/* via softprops/action-gh-release.
2026-02-08 19:39:18 +02:00
oop7 04e043c689 Add app update strings to translations
Add 'app_updates_title' and 'check_beta_updates' translation keys to language files (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh). These localized strings support the app updates settings UI (including an option to receive beta updates) and keep translations consistent with the existing auto-update-related entries.
2026-02-08 17:43:24 +02:00
oop7 d250c1b05f Add opt-in beta update UI and checks
Introduce an opt-in beta updates feature: add a styled "Receive Beta Updates" checkbox in the Updater UI with i18n strings, load/save logic in the custom options dialog, and a default config key (check_beta_updates=false).

Add _fetch_github_beta_version to the update thread to query GitHub releases (selecting the highest tag) and emit update_available for newer beta builds. When beta checking is enabled, the thread will perform the GitHub beta check and return early to avoid conflicting with the PyPI check. This enables users to opt into preview releases safely.
2026-02-08 17:41:13 +02:00
oop7 d2bc08e937 Bump package version to 5.0.0b4
Update __version__ in ytsage/__init__.py from 5.0.0b3 to 5.0.0b4 to mark the next beta release.
2026-02-07 19:15:07 +02:00
oop7 3d5dfd6d48 Add Inno Setup installers and build step
Add Inno Setup compilation to the Windows CI: the workflow now installs Inno Setup via choco, adjusts PATH, and runs iscc to compile two installers (standard and -ffmpeg) using /DMyAppVersion,/DMyAppExeName and /DSourceDir, placing outputs into repo/artifacts and failing the job on non-zero exit. Also add two new Inno Setup scripts in setup-scripts/: Setup-windows.iss and Setup-windows-ffmpeg.iss. The scripts include metadata, multi-language support, file/icon/registry/run entries, and Pascal code to create or update the user's ytsage_config.json language setting; the -ffmpeg script adds an optional task to append the app folder to the user's PATH.
2026-02-07 19:13:47 +02:00
oop7 9f1381d27e Update format table directly from analysis
Stop storing result_data["all_formats"] on the mixin and instead call update_format_table(result_data["all_formats"]). Replaces the previous filter_formats() call so the format table is populated directly from the fresh analysis result, avoiding reliance on a separate self.all_formats attribute.
2026-02-07 19:01:37 +02:00
oop7 c8ecdf8eb6 Fix PyPI badge link and add platform badge
Update README badges: change the PyPI badge URL to the official PyPI project page (pypi.org) and add a 'Supported Platforms' badge indicating cross-platform support (linked to releases). This improves badge accuracy and highlights platform compatibility in the project README.
2026-02-07 16:03:39 +02:00
oop7 351504ade9 Add reset and filename_format translations
Add a "reset" button label and new "filename_format" + "filename_format_help" entries to multiple locale JSON files (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh). The help text documents supported yt-dlp output template variables (%(title)s, %(uploader)s, %(upload_date)s, %(resolution)s, %(id)s, %(ext)s) so the UI can accept a custom output filename format.
2026-02-07 15:55:10 +02:00
oop7 40069c039a Clarify README UI labels
Update README text to reflect UI label changes: 'Force Output Format' now points to 'Download Settings → Output Format Settings', and 'Download History' instructs users to click the 'History' button. Improves accuracy of guidance in the docs.
2026-02-07 15:48:11 +02:00
oop7 b1d0034537 Increase help label font size to 11px
Bump help text font-size from 10px to 11px in DownloadSettingsDialog for improved readability. Updated style for force format, audio format, and filename format help labels in ytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py.
2026-02-07 15:40:37 +02:00
oop7 1fbc3a43c2 Add Reset button for filename format
Add a Reset button next to the filename format input so users can restore the default pattern. The filename input and reset button are grouped in a QHBoxLayout; the button is fixed width (70) and sets the field back to the default %(title)s_%(resolution)s.%(ext)s. Also add the corresponding i18n key (buttons.reset -> "Reset") to en.json.
2026-02-07 15:37:26 +02:00
oop7 656a77f943 Document Output Filename Format option
Add a README entry describing the new Output Filename Format setting under Download Settings, showing example variables such as %(title)s, %(uploader)s, and %(resolution)s so users can customize downloaded filenames.
2026-02-07 15:29:42 +02:00