<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tidal-dl-ng/tidal_dl_ng/gui.py, branch master</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/tidal-dl-ng/atom/tidal_dl_ng/gui.py?h=master</id>
<link rel='self' href='http://git.cashmere.rs/tidal-dl-ng/atom/tidal_dl_ng/gui.py?h=master'/>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/'/>
<updated>2025-12-04T11:03:31Z</updated>
<entry>
<title>refactor: Restructure GUI components into separate modules for improved maintainability</title>
<updated>2025-12-04T11:03:31Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-12-04T11:03:31Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=75868b32d07aafe46b69649d2da0dc2c833f112d'/>
<id>urn:sha1:75868b32d07aafe46b69649d2da0dc2c833f112d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'feature/json-downloaded' into fusion-refac-&amp;-info</title>
<updated>2025-12-03T10:41:18Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-12-03T10:41:18Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=c1d40619aa2aa44f5d967af9b5f47d040d6dc7dd'/>
<id>urn:sha1:c1d40619aa2aa44f5d967af9b5f47d040d6dc7dd</id>
<content type='text'>
# Conflicts:
#	.gitignore
#	README.md
#	tidal_dl_ng/gui.py
</content>
</entry>
<entry>
<title>feat: Add download history tracking with duplicate prevention</title>
<updated>2025-11-29T17:04:54Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-11-29T17:04:54Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=4f2eaececc769a8aa662b4185ada49e8df52a10a'/>
<id>urn:sha1:4f2eaececc769a8aa662b4185ada49e8df52a10a</id>
<content type='text'>
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 (&lt;50ms for 1000 tracks)

Breaking Changes: None
Backward Compatible: Yes (legacy format auto-migrated)
</content>
</entry>
<entry>
<title>feat: enable rich text links for metadata fields and add search functionality</title>
<updated>2025-11-29T13:15:51Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-11-29T13:15:51Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=8905ac7e75029a772d92dc2898976ebb0e79acd3'/>
<id>urn:sha1:8905ac7e75029a772d92dc2898976ebb0e79acd3</id>
<content type='text'>
- 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.
</content>
</entry>
<entry>
<title>feat(hover): add track details preview on hover + fix all ruff violations</title>
<updated>2025-11-29T11:10:06Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-11-29T11:10:06Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=d2c3e8ab8f1dcaec2b8be7ff9d1fb6c0df2d5296'/>
<id>urn:sha1:d2c3e8ab8f1dcaec2b8be7ff9d1fb6c0df2d5296</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>feat(gui): ✨ add functionality to download albums from favorites</title>
<updated>2025-11-12T14:31:44Z</updated>
<author>
<name>Robert Honz</name>
<email>exislow+github@gmail.com</email>
</author>
<published>2025-11-12T14:31:44Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=d06dfa90a8486114c2dc50aa6b679f15fca34220'/>
<id>urn:sha1:d06dfa90a8486114c2dc50aa6b679f15fca34220</id>
<content type='text'>
- 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.
</content>
</entry>
<entry>
<title>feat(gui): ✨ add favorites download functionality</title>
<updated>2025-11-12T14:27:05Z</updated>
<author>
<name>Robert Honz</name>
<email>exislow+github@gmail.com</email>
</author>
<published>2025-11-12T14:27:05Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=03266db08763e131502ada673d5a6b0c6db587df'/>
<id>urn:sha1:03266db08763e131502ada673d5a6b0c6db587df</id>
<content type='text'>
* 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.
</content>
</entry>
<entry>
<title>feat(gui): ✨ add folder support for media downloads</title>
<updated>2025-11-12T14:20:11Z</updated>
<author>
<name>Robert Honz</name>
<email>exislow+github@gmail.com</email>
</author>
<published>2025-11-12T14:20:11Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=3f936038ae7662355e774d7a023be44d0fdcff2f'/>
<id>urn:sha1:3f936038ae7662355e774d7a023be44d0fdcff2f</id>
<content type='text'>
* 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.
</content>
</entry>
<entry>
<title>feat(gui): ✨ enhance user media handling with folder support</title>
<updated>2025-11-12T14:05:20Z</updated>
<author>
<name>Robert Honz</name>
<email>exislow+github@gmail.com</email>
</author>
<published>2025-11-12T14:05:20Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=9baea9b82c539eae693b11416aeb74db434b86ee'/>
<id>urn:sha1:9baea9b82c539eae693b11416aeb74db434b86ee</id>
<content type='text'>
* 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.
</content>
</entry>
<entry>
<title>chore(gui): 🎨 update data file inclusion pattern for icons</title>
<updated>2025-10-22T20:50:25Z</updated>
<author>
<name>Robert Honz</name>
<email>exislow+github@gmail.com</email>
</author>
<published>2025-10-22T20:50:25Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=777a5e394d0bf68744b24c3e50db86052da883d4'/>
<id>urn:sha1:777a5e394d0bf68744b24c3e50db86052da883d4</id>
<content type='text'>
* Adjusted the pattern for including icon files to ensure proper matching.
* This change enhances the flexibility of file inclusion during the build process.
</content>
</entry>
</feed>
