<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tidal-dl-ng/tests, branch master</title>
<subtitle></subtitle>
<id>http://git.cashmere.rs/tidal-dl-ng/atom/tests?h=master</id>
<link rel='self' href='http://git.cashmere.rs/tidal-dl-ng/atom/tests?h=master'/>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/'/>
<updated>2025-12-29T19:54:26Z</updated>
<entry>
<title>feat: Refactor playlist management, error handling, and testing infrastructure</title>
<updated>2025-12-29T19:54:26Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-12-29T19:54:26Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=7b60f92a48b4ff54604e8179503488800866ca6f'/>
<id>urn:sha1:7b60f92a48b4ff54604e8179503488800866ca6f</id>
<content type='text'>
- 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.
</content>
</entry>
<entry>
<title>feat: Enhance playlist management and GUI logic</title>
<updated>2025-12-29T19:05:34Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-12-29T19:05:34Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=f413240b51f574c01144e6ae672b24c412a949e1'/>
<id>urn:sha1:f413240b51f574c01144e6ae672b24c412a949e1</id>
<content type='text'>
- 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.
</content>
</entry>
<entry>
<title>feat: Add playlist management functionality and compliance checks</title>
<updated>2025-12-29T16:37:39Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-12-29T16:37:39Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=296c6c7d6b319b38958b2aacb9904f18f6f46fd1'/>
<id>urn:sha1:296c6c7d6b319b38958b2aacb9904f18f6f46fd1</id>
<content type='text'>
- 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.
</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>Merge branch 'feature/informations-window' into fusion-refafac-setings</title>
<updated>2025-12-03T08:40:49Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-12-03T08:40:49Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=85f7e33b28985afd62a99d64b3e7a6883d62b072'/>
<id>urn:sha1:85f7e33b28985afd62a99d64b3e7a6883d62b072</id>
<content type='text'>
# Conflicts:
#	.gitignore
</content>
</entry>
<entry>
<title>feat: refactor settings UI with category navigation and add Delimiters page</title>
<updated>2025-11-30T14:37:32Z</updated>
<author>
<name>Warry</name>
<email>FunWarry@users.noreply.github.com</email>
</author>
<published>2025-11-30T14:37:32Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=121dbb788d051c76375261cd18fa8dca0f23b935'/>
<id>urn:sha1:121dbb788d051c76375261cd18fa8dca0f23b935</id>
<content type='text'>
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 &amp; 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
</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(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>🛠️ Fixed GitHub action on push (tox).</title>
<updated>2024-01-12T12:24:49Z</updated>
<author>
<name>Robert Honz</name>
<email>exislow+github@gmail.com</email>
</author>
<published>2024-01-12T12:24:49Z</published>
<link rel='alternate' type='text/html' href='http://git.cashmere.rs/tidal-dl-ng/commit/?id=a30ee0550d585cc9a63a8bca747c9755dbada760'/>
<id>urn:sha1:a30ee0550d585cc9a63a8bca747c9755dbada760</id>
<content type='text'>
</content>
</entry>
</feed>
