Commit Graph
34 Commits
Author SHA1 Message Date
Warry e89be804fd Merge remote-tracking branch 'warry-github/master' into feature/json-downloaded
# Conflicts:
#	README.md
2025-12-03 09:32:08 +01:00
Warry 4f2eaececc feat: Add download history tracking with duplicate prevention
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)
2025-11-29 18:04:54 +01:00
E.J. Talevi 0e74ac32d6 Added clarity and grammar fixes to documentation and to some strings on the program itself. 2025-11-25 23:56:56 -03:00
Robert Honz 3bd41f2139 chore: ✨ update header in README for improved branding
* Changed the header format to include an icon for better visual appeal.
* Ensures consistency with the overall project branding.
2025-10-26 09:59:51 +01:00
Robert Honz 7b72146092 chore: 🔧 update Python version requirements in README
* Updated the requirements section to include support for Python 3.13.
* Clarified compatibility for users regarding Python versions.
2025-10-26 09:52:42 +01:00
Robert Honz 2d60f54b39 docs: 📚 update README for Dolby Atmos support and build instructions
* Added information on downloading Dolby Atmos files.
* Updated build instructions for macOS and added options for Windows and Linux.
* Corrected the build status badge link in the README.
2025-10-22 23:05:04 +02:00
Robert Honz a35a89a823 docs: 📝 add note about terminal flashing issue on Windows
* Added a section addressing the terminal flashing issue when running the app on Windows.
* Provided a link to issue #103 for further details.
* Explained that this occurs due to the Python `ffmpeg` library when `extract_flac` is activated.
2025-10-06 12:55:49 +02:00
Robert Honz d4ffefa113 docs: 📝 add installation instructions for libxcb-cursor0 on Ubuntu
* Added a section in the README.md to guide users on installing the `libxcb-cursor0` dependency for Linux systems, specifically Ubuntu and Debian.
2025-10-06 12:28:54 +02:00
Robert Honz 1a3baac75a fix(README): 📝 update Python version requirement to 3.12 only
* Clarified the Python version requirement for installation.
* Removed mention of Python 3.13 to avoid confusion.
2025-09-07 18:52:06 +02:00
Jasper BlumandGitHub bc6d2b9a76 Update README.md to work with zsh
The brackets are interpreted by zsh making the command fail with a not useful error message. By putting it in quotes this does not happen.
2025-07-04 17:50:29 +02:00
Robert Honz 29ffd5df4b chore: 🔧 Update link format in README
- Changed the link to `cookiecutter-poetry` for consistency.
2025-07-01 11:09:27 +02:00
Robert Honz d3164f48de ✨ Add Python 3.13 support and update dependencies
Extends Python version support to include 3.13 in CI workflows,
tox environments, and documentation. Updates dependencies to
ensure compatibility with the new Python version and resolves
legacy workarounds for macOS GitHub Actions runners.

Upgrades include:
- `pyside6` to version 6.9.1
- `click` to version 8.2.1
- Other relevant dependency updates for compatibility.

Re-enables `pyupgrade` pre-commit hook targeting Python 3.12+.

Fixed binary creation for Intel macOS.
2025-07-01 08:04:21 +02:00
Robert Honz 353fedd682 🛠️ Fixed link to orbittwz profile. 2025-06-29 13:08:42 +02:00
Robert Honz 85ecdf866e 🛠️ Fixed wrong repo url after pyproject.toml update. Credits to @orbittwz in README. 2025-06-29 12:36:08 +02:00
Robert Honz aa71d9993f ✨ Readme and Makefile have been extended regarding setup instructions for dev environment. 2025-03-27 18:57:34 +01:00
Robert Honz 40a998e6e7 ✨ FAQ section created. 2025-02-28 11:19:14 +01:00
Robert Honz 0aa9831bb1 👷 More explanation added to readme. 2025-01-04 13:26:37 +01:00
V3ntus bed812d69e doc: update README with new dl_fav usages 2025-01-03 15:34:02 +00:00
Robert Honz a65cb55913 ✨ More specific wording for GUI binary version download. 2025-01-02 14:35:39 +01:00
Robert Honz 0f36d25aef ✨ Remark on PyInstaller. 2025-01-02 13:59:31 +01:00
Robert Honz 6ef9c4ba1e 👷 Minimum Python version is now 3.12. 2024-12-17 09:45:10 +01:00
Robert Honz a03cda10ec ✨ Playlist can be created for downloaded albums, mixes, UserPlaylists etc. Fixes #108 2024-12-16 14:42:53 +01:00
Robert Honz 8d5af178f2 ✨ Typo. 2024-12-15 23:50:41 +01:00
Robert Honz e381b40bad ✨ Some refinement and details. 2024-12-15 23:49:40 +01:00
Robert Honz 87864bf930 Python version requirement changed. 2024-11-08 16:01:43 +01:00
Robert Honz 2ff0aa2ee3 ✨ Adjusted app description according to TIDAL latest plan changes. 2024-04-21 21:24:47 +02:00
Robert Honz 59b8ee1f02 👷 Readme description update. 2024-04-01 18:57:44 +02:00
Robert Honz c1bf278fd7 ✨ Implemented login dialog for PKCE login method. Fixes #22. 2024-02-01 07:38:01 +01:00
Robert Honz a994aa629e ✨ README console output update. 2024-01-30 06:35:39 +01:00
Robert Honz 5b7c49c1f6 ✨ Readme extended with screenshot and cli output. 2024-01-19 14:43:29 +01:00
Robert Honz f578ae566c ♻️ Removed a part in readme. 2024-01-11 07:08:29 +01:00
Robert Honz aeefae3f3d 🛠️ Typos fixed. 2023-12-20 13:52:50 +01:00
Robert Honz cfe51660fe ⭐️ GUI only version mentionend in readme. 2023-12-20 13:50:19 +01:00
Robert Honz 0d4a9d6b87 🌟 Re-add all project files. 2023-12-19 23:58:57 +01:00