v1.1.0
What's Changed
- Fixed bug #1 by @primetime43 in #5
- Fixed bug #2 by @primetime43 in #6
- Fixed bug 4 & added a skip download by default option by @primetime43 in #7
- 3 show log button up near the settings button by @primetime43 in #8
Full Changelog: v1.0.0...v1.1.0
[1.1.0]
Added
- Skip Option in Subtitle Selection: Added a "Skip - Don't download subtitle for this item" radio button that is selected by default, allowing users to selectively choose which subtitles to download instead of being forced to download all
- Show Log Modal: Added "Show Log" button in the header (next to Settings) that opens a modal dialog to view application logs, freeing up vertical space in the main UI
- Open Logs Folder Button: Added "Open Logs Folder" button on login screen to access logs even when login fails, helping with OAuth debugging
- Comprehensive OAuth Logging: Added detailed logging at every step of the OAuth authentication process to help diagnose login issues in packaged .exe files
- Fully Clickable Dropdowns: Made all dropdown/combobox widgets clickable anywhere (not just on the arrow), improving UX with hand cursor indication
- Loading Indicators for Bulk Operations: Added visual feedback (blue text status messages) when selecting shows/seasons, with disabled buttons to prevent race conditions
- Season Expansion Loading State: Added hourglass (⏳) indicator when expanding seasons, preventing UI freezes from rapid clicking
Changed
- Relocated Download Button: Moved "Download Selected" button from top action row to a standalone section at the bottom, giving more vertical space to the subtitle selection panel
- Removed Inline Log: Removed the collapsible inline log display from the main UI (log is now only accessible via modal), significantly increasing space for subtitle results
- Async Season/Show Selection: Converted synchronous season/show selection to asynchronous with proper state management, preventing UI freezes and race conditions while maintaining data integrity
- Improved Button Layout: Reorganized action buttons from 3 columns (Search, Download, List) to 2 columns (Search, List), with Download moved to bottom
- Pinned Dependencies: Locked all dependency versions in requirements.txt for reproducible builds (plexapi==4.17.0, customtkinter==5.2.2, subliminal==2.4.0, babelfish==0.6.1)
Fixed
- OAuth Login in Packaged .exe: Fixed "We were unable to complete this request" error on Plex website during OAuth login in PyInstaller-built .exe files by explicitly setting PlexAPI client identifier (prevents memory address from being used as client ID)
- Checkbox State Synchronization: Fixed bug where episode checkboxes would show as checked after subtitle download but episodes were actually deselected from
selected_items, causing search to fail (#1) - TypeError in Confirmation Dialog: Removed invalid
item_countparameter fromshow_confirmation_dialog()calls that was causing crashes - Season Selection Search Bug: Fixed issue where selecting a season checkbox wouldn't work for search - search would only work with individually selected episodes (#4)
- Episode Checkbox Updates: Fixed bug where unchecking a season wouldn't visually uncheck the individual episode checkboxes, creating confusion between UI state and actual selection state
- Rapid Season Expansion Freeze: Fixed "Not Responding" freeze when clicking season expand arrows too quickly by implementing loading state tracking and preventing duplicate operations
- Season/Show Selection Race Conditions: Eliminated race conditions where clicking "Search" immediately after selecting a season/show would fail because background thread hadn't finished loading episodes into
selected_items
Technical Improvements
- Set PlexAPI client headers (X_PLEX_IDENTIFIER, X_PLEX_PRODUCT, X_PLEX_VERSION) explicitly to ensure proper OAuth authentication in PyInstaller builds
- Added PlexAPI configuration logging at application startup for debugging
- Added
is_selectingflag for tracking bulk selection operations in progress - Added
start_selection_operation()andend_selection_operation()methods for consistent state management - Modified
enable_action_buttons()to check selection state and prevent premature operations - Implemented
_loading_seasonsset to track seasons currently being loaded and prevent duplicate operations - Added
make_combobox_clickable()helper method to enhance dropdown UX - Improved error handling in season/show selection with proper cleanup on failure
UI/UX Improvements
- Status updates now only go to logs (visible in Show Log modal), reducing UI clutter
- All dropdowns now show hand cursor and respond to clicks anywhere
- Bulk selection operations show informative messages like "Selecting episodes from Breaking Bad..."
- Download button is now more prominent and logically placed below the subtitle selection area
- Episode checkboxes automatically sync with selection state after season-level operations