summaryrefslogtreecommitdiff
path: root/tidal_dl_ng/ui
Commit message (Collapse)AuthorAgeFilesLines
* chore: Update all repository references to the new fork URLWarry2025-12-292-2/+2
| | | | | | - Replaced `exislow/tidal-dl-ng` URLs with `FunWarry/tidal-dl-ng-For-DJ` across documentation, configuration files, UI components, and metadata. - Synchronized all hyperlinks in README, issue templates, pyproject.toml, and mkdocs.yml. - Ensured all references to the old repository are removed for consistency with the new fork.
* feat: Enhance playlist management and GUI logicWarry2025-12-291-0/+37
| | | | | | | | | | - Improved playlist item fetching by adding robust pagination and low-level request hooks for better testing and flexibility. - Refactored track ID extraction logic into reusable helpers for clarity. - Improved initialization for dialog components to avoid circular dependencies in the GUI. - Added new unit tests to validate playlist operations, including track addition/removal and API integration. - Updated metadata functions to simplify dictionary access using `.get` for better readability. - Ensured PySide6 system dependencies are installed in GitHub Actions to address CI compatibility issues. - Streamlined UI package initialization to improve modularity and robustness of imports.
* feat: Add playlist management functionality and compliance checksWarry2025-12-292-0/+262
| | | | | | | | | | - Introduced a new "Playlists" column in results view with visual indicators for membership. - Added `playlist_api.py` to handle playlist-related operations (fetch, add, remove tracks). - Implemented `PlaylistManagerDialog` for seamless playlist addition/removal with caching. - Integrated compliance check script (`check_agents_compliance.py`) for ensuring coding standards. - Added extensive documentation (`playlist_membership_manager.md`) covering architecture and flow. - Updated GUI logic and QStandardItemModel setup to include playlist data. - Included unit tests for playlist management components and API.
* Merge branch 'feature/json-downloaded' into fusion-refac-&-infoWarry2025-12-034-5/+712
|\ | | | | | | | | | | | | # Conflicts: # .gitignore # README.md # tidal_dl_ng/gui.py
| * feat: Add download history tracking with duplicate preventionWarry2025-11-292-0/+377
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement comprehensive download history system with JSON persistence and duplicate prevention capabilities. Features: - Persistent JSON-based download history with atomic writes - Duplicate prevention toggle in Tools menu - Thread-safe operations with proper locking - Automatic corruption recovery with backup creation - Import/Export functionality for history portability - Statistics view grouped by source (playlist, album, mix) - Green console messages for improved visibility - Custom exception handling for better error reporting Technical Details: - HistoryService singleton with O(1) track lookups - Track-centric JSON structure for performance - Atomic file operations to prevent data corruption - Custom HistoryFormatError exception class - Complexity reduction through helper methods - Full AGENTS.md compliance (ruff, black, type hints) UI Changes: - Added "Tools" menu with two actions: - "View Download History..." - Opens history dialog - "Prevent Duplicate Downloads" - Toggle with persistence - New Download History dialog with: - Tree view grouped by source - Statistics display - Import/Export buttons - Clear history option - Open folder functionality Files Added: - tidal_dl_ng/history.py (438 lines) - tidal_dl_ng/dialog_history.py (325 lines) - tidal_dl_ng/ui/dialog_history.py - tidal_dl_ng/ui/dialog_history.ui - tests/test_history_service.py (38 tests) - tests/test_download_duplicate_prevention.py (10 tests) - tests/test_gui_duplicate_prevention.py (22 tests) - tests/test_logger_configuration.py (20 tests) - FEATURE_DOCUMENTATION.md (900+ lines) - tests/README.md - CODE_QUALITY_COMPLIANCE.md - FINAL_SUMMARY.md Files Modified: - tidal_dl_ng/download.py - History integration - tidal_dl_ng/gui.py - Tools menu and handlers - tidal_dl_ng/logger.py - Green INFO messages Testing: - 91 tests total, all passing (100% pass rate) - Full test coverage for all new functionality - Thread safety validated with concurrent tests - Corruption recovery tested - Import/Export functionality verified Quality: - Zero ruff violations (full AGENTS.md compliance) - All pre-commit hooks passing - Type hints on all functions - Google-style docstrings throughout - Black formatted - Security reviewed (subprocess usage annotated) Performance: - O(1) track existence checks via dict - Atomic writes prevent corruption - Minimal memory footprint (~100 bytes per track) - Fast startup (<50ms for 1000 tracks) Breaking Changes: None Backward Compatible: Yes (legacy format auto-migrated)
* | Merge branch 'feature/informations-window' into fusion-refafac-setingsWarry2025-12-034-31/+1472
|\ \ | | | | | | | | | | | | # Conflicts: # .gitignore
| * | feat: enable rich text links for metadata fields and add search functionalityWarry2025-11-291-78/+128
| | | | | | | | | | | | | | | | | | | | | | | | - Introduced clickable metadata links (tracks, albums, artists, playlists, videos). - Left-click triggers in-app search; Ctrl+click or right-click opens browser search. - Enhanced label interactions and added tooltips for actionable fields. - Simplified artist, album, and playlist rendering with rich links. - Extended search functionality with URL-safe encoding and type mapping.
| * | fix: correct find_attr calls to use variadic args instead of listWarry2025-11-292-12/+12
| | | | | | | | | | | | | | | | | | After refactoring find_attr signature from list to *args, forgot to update the call sites. Track number and other metadata were not displaying due to passing list instead of individual arguments.
| * | feat(hover): add track details preview on hover + fix all ruff violationsWarry2025-11-294-31/+1422
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement comprehensive track information display on hover and resolve all code quality issues to achieve complete ruff compliance. MAJOR FEATURES: - Track details preview on hover with rich metadata display - Async BPM fetching with loading indicator - Enhanced metadata utilities with fuzzy matching - TIDAL API extras integration FILES MODIFIED: 15+ files (core, UI, tests, docs) RUFF COMPLIANCE: 0 errors (89+ violations resolved) - Fixed E999 syntax error in metadata_utils.py - Refactored 10+ complex functions (C901) - Updated error handling (S110, S112, SIM105) - Modernized type hints (UP038) - Fixed naming conflicts (A001, F811) BUG FIXES: - Added missing _on_update_cover() method (11 test failures) - Fixed BPM display and async loading - Improved thread safety TESTING: 30 passed, 1 skipped DOCUMENTATION: Windows PowerShell support, tox troubleshooting
* / feat: refactor settings UI with category navigation and add Delimiters pageWarry2025-11-302-837/+1571
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes #640 ## Changes ### UI Refactoring - Replace monolithic settings dialog with category-based navigation - Add QListWidget (lw_categories) for category selection on the left - Add QStackedWidget (sw_categories) for content pages on the right - Organize settings into 5 distinct pages: - Flags (14 checkboxes) - Quality (3 combo boxes) - Numbers (2 spin boxes) - Paths & Formats (7 line edits + 2 browse buttons) - Delimiters (4 line edits) — NEW ### New Feature: Delimiters Category - Add customizable separators for artists in metadata and filenames: - metadata_delimiter_artist - metadata_delimiter_album_artist - filename_delimiter_artist - filename_delimiter_album_artist - Auto-integration with DialogPreferences via parameters_line_edit - Line edits with max width 100px for compact display ### Styling - Apply dark theme to settings dialog: - Category list: #2b2b2b background, #3d5a80 selection, #3a3a3a hover - Settings area: #333333 background, styled GroupBoxes (#3a3a3a) - Light text (#e0e0e0) for better contrast - Add spacing property (6px) to category list for better readability - Style QListWidget items with padding (4px 3px) and margin (2px 0px) ### Testing - Add comprehensive test suite (61 tests total): - test_settings_ui.py: UI and basic integration (14 tests) - test_settings_dialog_structure.py: detailed structure validation (20 tests) - test_dialog_preferences_integration.py: DialogPreferences integration (14 tests) - test_delimiters_category.py: new Delimiters page validation (13 tests) - Fix ruff issues (F841, S108) in test files - All tests passing with 100% success rate ### Documentation - Add docs/refactor_settings_ui.md: comprehensive refactor overview - Add docs/delimiters_category.md: Delimiters feature documentation - Add docs/ui_styles.md: dark theme style guide - Add docs/testing_summary.md: testing overview and commands ### Code Quality - Apply ruff/black/pyupgrade via pre-commit hooks - Fix F841 (unused variable) in test_dialog_preferences_integration.py - Fix S108 (insecure temp path) using Path.home() in test_settings_ui.py - End-of-file fixes applied automatically ## Files Modified - tidal_dl_ng/ui/dialog_settings.ui (complete restructure) - tidal_dl_ng/ui/dialog_settings.py (auto-generated from .ui) - tidal_dl_ng/dialog.py (add 4 delimiter params + Delimiters category) - tests/* (4 new test files with 61 tests) - docs/* (4 new documentation files) ## Impact - Improved UX: intuitive category navigation, better visual organization - Extensibility: easy to add new settings pages/categories - Quality: comprehensive test coverage ensures robustness - User flexibility: customizable separators for metadata and filenames ## Technical Notes - QStackedWidget pages indexed 0-4 matching category list order - Navigation via QListWidget::currentRowChanged signal - Automatic save/load through existing DialogPreferences methods - No breaking changes to existing settings or configuration ## Testing Commands ```powershell poetry run pre-commit run -a poetry run pytest -q
* chore(ui): 🎨 update application icons for improved visual consistencyRobert Honz2025-10-228-0/+0
| | | | | * Replaced multiple icon files in the UI. * Ensured all icon sizes are updated to maintain a cohesive look across the application.
* refactor(gui): ✨ update album download options and improve session validationRobert Honz2025-10-222-29/+47
| | | | | | * Added a new action to download all albums in a playlist. * Removed the deprecated `validate_session` method and replaced it with a direct call to `self.tidal.session.check_login()`. * Adjusted the UI layout in `dialog_settings` to accommodate new options and improved sizing.
* Merge pull request #596 from Winman486/fix/rate-limiting-playlist-downloadsexislow2025-10-221-2/+17
|\ | | | | Fix/rate limiting playlist downloads
| * Merge upstream/master and resolve conflictsWinman4862025-10-202-2/+25
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | - Resolved conflict in dialog_settings.py (kept both cb_use_primary_album_artist and cb_mark_explicit checkboxes) - Fixed code quality issues found by make check: * Removed duplicate on_download_album_from_track function (F811) * Updated isinstance calls to use X | Y syntax instead of (X, Y) (UP038) * Fixed unused loop variable album_stub (B007) * Applied automatic formatting fixes (black, prettier, trailing whitespace) - Only remaining issue is C901 complexity warning in on_download_all_albums_from_playlist (expected per maintainer feedback)
| * | feat(gui): add 'Download Full Album', 'Download All Albums', and 'Single ↵Winman4862025-10-171-3/+8
| | | | | | | | | | | | album folder (primary artist)' preference
* | | Move credentials to constants, improve docs (tidal_obj), and clean up Atmos ↵Rikrdoga2025-10-211-5/+0
| | | | | | | | | | | | legacy code
* | | Refactor Dolby Atmos ImplementationRikrdoga2025-10-201-0/+17
| | |
* | | Refactor Dolby Atmos feature to be internal and seamlessRikrdoga2025-10-202-43/+243
| | |
* | | Add support for Dolby AtmosRikrdoga2025-10-202-240/+45
| |/ |/|
* | fix(cfg): 🐛 update `mark_explicit` default value and improve help textRobert Honz2025-10-201-203/+166
| | | | | | | | | | * Set default value of `mark_explicit` to `False`. * Update help text to clarify that marking explicit tracks applies only to metadata.
* | Add a checkbox to settings that toggles the explicit symbol in track titlesTrubo2025-10-192-168/+218
|/
* Queue button should indicate the action that will occur when clicked — ↵Robert Honz2025-10-172-3/+3
| | | | | | currently it shows present state Fixes #561
* feat(gui): enhance app icons with multi-resolution supportRobert Honz2025-08-129-0/+0
| | | | | | | | | | | | Improves the application's icon handling by introducing multi-resolution support, replacing a single PNG file with multiple resolution-specific icons. - ✨ **Added** multiple resolution icons (16x16, 32x32, 48x48, 64x64, 256x256, 512x512). - 🔄 **Updated** GUI setup to use multi-resolution icons for better scalability. - 🗑️ **Removed** the old single-resolution `icon.png`. This update ensures better compatibility and visual quality across different platforms and screen resolutions.
* ✨ Downloads can be now paused / resumed. Fixes #149 & 324Robert Honz2025-03-032-12/+43
| | | | 👷 Shutdown is handled more gracefully.
* 👷 File extension guesser improved. Fixes #322Robert Honz2025-01-122-33/+43
|
* ✨ Config options created for symlinking tracks and playlist creation.Robert Honz2024-12-162-6/+56
|
* ✨ Multithreaded downloads implemented (for Playlists, Albums etc.). Fixes #180Robert Honz2024-12-152-2/+53
|
* ✨ Album track number padding can be set. Fixes #142Robert Honz2024-12-152-1/+65
|
* ✨ Merge with master.Robert Honz2024-11-292-63/+40
|\
| * ✨ Removed complex skipping options in favor of a faster duplicates check / ↵Robert Honz2024-11-132-63/+40
| | | | | | | | skipping of already present items without download delay.
* | ✨ GUI login updated to device mode.Robert Honz2024-11-131-37/+36
| |
* | ✨ Backend and GUI changed to device login. Login dialog needs to be ↵Robert Honz2024-11-122-47/+88
|/ | | | threaded / non blocking.
* ✨ Options for album art added to GUI. Fixes #125Robert Honz2024-11-112-10/+60
|
* Since TIDAL has remove MQA (`HI_RES`), all traces of MQA have been removed here.Robert Honz2024-11-062-38/+9
|
* ✨ Results tree uses `View` component and displays filter input fields.Robert Honz2024-05-142-59/+9
|
* ✨ FLAC can be extracted from MP4 containers (see options). Downgrade on ↵Robert Honz2024-04-212-95/+145
| | | | HI_RES download is possible (see options). Fixes #93 #86
* ✨ Can add multiple media lists to download queue.Robert Honz2024-04-012-1/+5
|
* ✨ Cosmetic changes.Robert Honz2024-04-012-0/+33
|
* ✨ Able to remove single items from download queue.Robert Honz2024-04-012-17/+17
|
* ✨ Cover will be shown for download queue.Robert Honz2024-04-012-345/+345
|
* ✨ Can remove all queue items and finished queue items.Robert Honz2024-04-012-403/+421
|
* Merge branch '71-feature-show-queued-downloads'Robert Honz2024-03-293-392/+648
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | * 71-feature-show-queued-downloads: ✨ Lists can also be downloaded using the "Download List" button. 👌 Reduced network traffic for covers. ✨ Display cover in info area. ✨ Use `Album.image()` to get cover url. ✨ Software named explicitly. ✨ Info pane will be initialized correctly. ✨ Added info pane to GUI. # Conflicts: # tidal_dl_ng/gui.py
| * ✨ Lists can also be downloaded using the "Download List" button.Robert Honz2024-03-292-15/+43
| |
| * ✨ Use `Album.image()` to get cover url.Robert Honz2024-03-253-1/+1
| |
| * ✨ Added info pane to GUI.Robert Honz2024-03-233-392/+620
| |
* | ✨ Can explicitly set `ffmpeg` path.Robert Honz2024-03-292-0/+92
| |
* | ✨ Updates will be automatically checked on startup and can also be checked ↵Robert Honz2024-03-284-52/+352
|/ | | | manually. Version dialog is used to display update information. Fixes #76
* 🧑‍🔧️ GUI buttons correctly prefixed with `pb`.Robert Honz2024-03-222-21/+21
|
* ✨ GUI user lists can be reloaded. Logout is possible.Robert Honz2024-02-054-124/+166
|
* ✨ Preferences dialog added. Show settings.Robert Honz2024-02-044-2/+1140
|