- 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.
- Improved playlist item handling with pagination, error logging, and dedicated request hooks.
- Consolidated reusable helpers for track ID normalization, playlist validation, and removal logic.
- Enhanced error handling by introducing `PlaylistNotFound` and `UserNotAuthenticated` exceptions.
- Refined Pytest `qapp` fixture for headless CI compatibility and session-scoped reuse.
- Replaced redundant fixtures in multiple test files for consistency.
- Improved playlist management GUI with detailed debug logging for notifications and operations.
- Added `deptry` configuration to handle transitive dependencies and ignored exclusions.
- Updated Pytest and Tox configurations for consistent environment setup during CI/CD runs.
- 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.
- 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.
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.
* Moved `TrackStreamInfo` class definition from `download.py` to `downloader.py`.
* Removed redundant `dataclass` import from `download.py`.
* Updated import statements to maintain clarity and organization.
- Introduced a new context menu option to download all albums from selected favorites.
- Implemented methods to handle downloading albums from favorite albums, artists, and tracks.
- Enhanced logging for better tracking of the download process and errors.
* Implemented `on_download_favorites` method to allow users to download all items from a favorites category.
* Added context menu option for downloading all items from favorites.
* Enhanced error handling and logging for better user feedback.
* Implemented context menu options for downloading playlists and albums from folders.
* Added methods to fetch playlists and tracks from a folder.
* Enhanced user experience by allowing bulk downloads from folder structures.
* Updated `user_media_lists` to return a dictionary containing both `playlists` and `mixes`, including `Folder` objects.
* Modified `on_populate_tree_lists` to handle `Folder` items and display their contents.
* Introduced new methods for loading and displaying folder contents in the user interface.
* Introduced a new `AGENTS.md` file containing detailed coding standards for the project.
* Covers topics such as Python version support, naming conventions, type annotations, error handling, and best practices.
* Aims to improve code quality, maintainability, and team consistency.
* Changed `function_name` for `fav_tracks`, `fav_artists`, and `fav_albums` to use paginated versions.
* Ensures uniformity in function naming across favorites.
For albums that are listed with a non-"main" artist first (ex: 37691520), the album artist replacement was returning an empty string. This isn't a problem with the default settings, but if you format albums into `{album_artist}/...`, the path becomes `/...` in this case, and is interpreted as an absolute path instead of a relative one, causing the download to fail.
This changes the logic so that if the `first_only` flag is passed, it will return after the first artist is actually added to the list, no longer returning an empty string.