From d9e981c93e91d86deb448e46bb05289558b8c9f7 Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Thu, 21 Aug 2025 18:25:54 -0700 Subject: [PATCH] update version --- ui/components/version_info_modal.py | 68 ++++++++++++++--------------- ui/sidebar.py | 2 +- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/ui/components/version_info_modal.py b/ui/components/version_info_modal.py index ede18c4e..bb9abbe9 100644 --- a/ui/components/version_info_modal.py +++ b/ui/components/version_info_modal.py @@ -13,7 +13,7 @@ class VersionInfoModal(QDialog): def __init__(self, parent=None): super().__init__(parent) - self.setWindowTitle("What's New in SoulSync v0.6") + self.setWindowTitle("What's New in SoulSync v0.65") self.setModal(True) self.setFixedSize(600, 500) self.setup_ui() @@ -68,7 +68,7 @@ class VersionInfoModal(QDialog): """) # Version subtitle - version_subtitle = QLabel("Version 0.6 - Complete Multi-Server Support") + version_subtitle = QLabel("Version 0.65 - Tidal Playlist Integration") version_subtitle.setFont(QFont("SF Pro Text", 11, QFont.Weight.Medium)) version_subtitle.setStyleSheet(""" color: rgba(255, 255, 255, 0.7); @@ -112,49 +112,49 @@ class VersionInfoModal(QDialog): content_layout.setContentsMargins(30, 25, 30, 25) content_layout.setSpacing(25) - # Multi-Server Support - multiserver_section = self.create_feature_section( - "🔀 Complete Multi-Server Support", - "Full Plex and Jellyfin compatibility across all features and workflows", + # Tidal Integration + tidal_section = self.create_feature_section( + "🎵 Complete Tidal Playlist Integration", + "Full Tidal playlist support with seamless workflow integration matching YouTube/Spotify functionality", [ - "• Added native Jellyfin client with full API integration for artists, albums, and tracks", - "• Automatic server detection and dynamic client switching throughout the application", - "• All sync tools now work seamlessly with both Plex and Jellyfin servers", - "• Database filtering by server source ensures clean separation of library data", - "• Updated all download and analysis workers for multi-server compatibility", - "• Server-specific UI adaptations (e.g., metadata updater hidden for Jellyfin)", - "• Unified media client architecture for consistent cross-server functionality" + "• Native Tidal API client with OAuth 2.0 authentication and automatic token management", + "• Tidal playlist tab positioned between Spotify and YouTube with identical UI/UX patterns", + "• Advanced playlist card system with persistent state tracking across all phases", + "• Complete discovery workflow: discovering → discovered → syncing → downloading phases", + "• Intelligent track matching using existing Spotify-based algorithms for compatibility", + "• Smart modal routing with proper state persistence (close/cancel behavior)", + "• Full refresh functionality with comprehensive worker cleanup and modal management" ], - "Switch between Plex and Jellyfin in Settings → Server Configuration - all features automatically adapt!" + "Configure Tidal in Settings → Connections, then discover and sync your Tidal playlists just like Spotify!" ) - content_layout.addWidget(multiserver_section) + content_layout.addWidget(tidal_section) - # Enhanced Compatibility - compatibility_section = self.create_feature_section( - "⚙️ Enhanced Cross-Server Features", - "All major workflows updated for seamless multi-server operation", + # Advanced Features + features_section = self.create_feature_section( + "⚙️ Advanced Workflow Features", + "Sophisticated state management and user experience improvements", [ - "• Playlist sync (Spotify & YouTube) now supports both Plex and Jellyfin", - "• Download Missing Tracks modals work with active server automatically", - "• Artist browsing and album analysis adapt to your selected media server", - "• Database updates and library scans respect server-specific configurations", - "• Playlist track analysis workers dynamically use the correct server API", - "• All toast notifications and UI feedback are server-aware" + "• Identical workflow behavior across all playlist sources (Spotify, YouTube, Tidal)", + "• Smart refresh system that cancels all active operations and preserves playlist names", + "• Phase-aware card clicking: routes to discovery, sync progress, or download modals appropriately", + "• Proper modal state persistence: closing download modals preserves discovery state", + "• Cancel operations reset playlists to fresh state for updated playlist data", + "• Multi-server compatibility: works with both Plex and Jellyfin automatically" ] ) - content_layout.addWidget(compatibility_section) + content_layout.addWidget(features_section) # Technical Improvements technical_section = self.create_feature_section( - "🔧 Technical Architecture Updates", - "Robust foundation for reliable multi-server operation", + "🔧 Technical Implementation Details", + "Robust architecture ensuring reliable playlist management across all sources", [ - "• Implemented server-agnostic database schema with source tracking", - "• Added unified configuration management for multiple media servers", - "• Created wrapper classes for consistent API interfaces across servers", - "• Enhanced error handling with server-specific messaging", - "• Optimized performance with intelligent client caching and connection pooling", - "• Future-ready architecture for additional media server integrations" + "• Implemented comprehensive state tracking system with playlist card hub architecture", + "• Added PKCE (Proof Key for Code Exchange) OAuth flow for enhanced Tidal security", + "• Created unified modal system supporting YouTube, Spotify, and Tidal workflows", + "• Enhanced worker cancellation system for proper resource cleanup during operations", + "• JSON:API response parsing for Tidal's complex relationship-based data structure", + "• Future-ready architecture for additional music streaming service integrations" ] ) content_layout.addWidget(technical_section) diff --git a/ui/sidebar.py b/ui/sidebar.py index 675924fd..be384e29 100644 --- a/ui/sidebar.py +++ b/ui/sidebar.py @@ -1245,7 +1245,7 @@ class ModernSidebar(QWidget): layout.setSpacing(0) # Version button (clickable) - self.version_button = QPushButton("v.0.6") + self.version_button = QPushButton("v.0.65") self.version_button.setFont(QFont("SF Pro Text", 10, QFont.Weight.Medium)) self.version_button.setCursor(Qt.CursorShape.PointingHandCursor) self.version_button.setStyleSheet("""