- Introduced a new `IntegrationsSettingsPage` to manage TMDB, MDBList, and Trakt integrations.
- Updated `SettingsNavigationRow` to support both `ImageVector` and `Painter` for icons.
- Created `IntegrationLogo` enum to represent different integration logos.
- Implemented platform-specific logo handling in `IntegrationLogoPainter` for Android and iOS.
- Added new drawable resources for MDBList logo in both Android and common resources.
- Refactored `SearchScreen` to improve query handling and search history recording.
- Updated TraktAuthState to replace device and user codes with pending authorization fields.
- Modified TraktAuthUiState to remove polling fields and include pending authorization timestamp.
- Introduced TraktBrandAsset enum for brand assets.
- Implemented traktBrandPainter function for Android and iOS to provide appropriate brand images.
- Added SVG and XML resources for Trakt brand assets (logo wordmark and favicon).
- Updated iOS app to handle URL callbacks for Trakt authentication.
- Added TraktAuthBridge to manage authentication callback handling.
- Introduced MetaExternalRating data class to hold external ratings.
- Updated MetaDetails to include externalRatings list.
- Implemented MdbListMetadataService for fetching ratings from MDBList API.
- Created MdbListSettings and MdbListSettingsRepository for managing settings.
- Added UI components for displaying external ratings in DetailMetaInfo.
- Integrated MDBList settings into the settings screen with options for enabling/disabling and configuring providers.
- Updated ProfileRepository to handle MDBList settings changes.
- Enhanced error handling and caching for MDBList API requests.
- Introduced a new toggle for trailers in TMDB settings.
- Updated TMDB metadata service to fetch and handle trailers.
- Enhanced TMDB settings repository and storage to persist trailer preferences.
- Implemented trailer playback resolver for iOS, integrating YouTube extractor.
- Modified player bridge to support loading video with audio.
- Added necessary data classes and methods for trailer management and playback.
- Updated PlayerEpisodesPanel, PlayerOverlays, PlayerSourcesPanel, SubtitleModal, and SubtitleStylePanel to use MaterialTheme.colorScheme for consistent theming.
- Replaced hardcoded colors with dynamic colors from the MaterialTheme, enhancing adaptability to different themes.
- Improved accessibility and visual consistency across various player components by ensuring text and background colors align with the current theme.
- Added clear() method to PlayerLaunchStore for resetting launch state.
- Refactored PlayerScreen to manage active playback state with new variables for source and episode details.
- Introduced PlayerSourcesPanel for displaying and selecting available streams.
- Implemented PlayerStreamsRepository for managing stream fetching and state for sources and episodes.
- Added reset() method to SearchRepository for clearing search state.
- Enhanced various repositories (PlayerSettingsRepository, WatchedRepository, etc.) with clearLocalState() methods for resetting their states.
- Created PlatformLocalAccountDataCleaner for iOS to handle local account data cleanup.
- Added `DeviceLanguagePreferences` for Android and iOS to retrieve preferred language codes.
- Enhanced `PlayerSettingsStorage` to save and load preferred audio and subtitle languages.
- Updated `PlayerSettingsRepository` to manage audio and subtitle language preferences.
- Modified `PlayerScreen` to apply preferred audio and subtitle selections.
- Introduced `PlaybackSettingsSection` in `PlaybackSettingsPage` for user to select audio and subtitle languages.
- Added language normalization and matching functions to support language preference logic.
- Updated `SubtitleTrack` model to include `isForced` property for subtitle tracks.
- Improved logging for pull operations in SyncManager, detailing the authentication state and pull sequence.
- Refactored AddonRepository to streamline addon retrieval from the server, including migration of local addons if the server returns no results.
- Added timeout handling for waiting on addon manifests in WatchProgressRepository to prevent indefinite blocking.
- Updated MainAppContent to support profile switching.
- Added onSwitchProfile callback to SettingsScreen and related components.
- Introduced a new "Switch Profile" option in the settings menu for easier profile management.
- Improved watch progress synchronization by resolving remote metadata for entries.
- Added AuthRepository for handling user authentication states and actions.
- Implemented AuthScreen for user sign-in and sign-up functionality.
- Introduced Profile management with ProfileEditScreen and PinEntryDialog for secure access.
- Enhanced synchronization of user profiles and library data with Supabase.
- Created necessary data models and network providers for seamless integration with Supabase services.
- Introduced ContinueWatchingPreferencesStorage for managing user preferences.
- Added ContinueWatchingPreferencesRepository to handle loading and saving preferences.
- Created UI components for Continue Watching settings, including visibility toggle and style selection.
- Implemented new settings pages for Appearance and Continue Watching.
- Updated MainActivity to initialize ContinueWatchingPreferencesStorage.
- Enhanced HomeScreen to display Continue Watching section based on user preferences.
- Refactored NuvioShelfSection to allow customizable item spacing.
- Added new styles for Continue Watching cards: Wide and Poster.
- Implemented SubtitleModal composable for displaying subtitle options.
- Created SubtitleRepository to handle fetching and managing addon subtitles.
- Added SubtitleStylePanel for customizing subtitle appearance and settings.
- Updated PlayerEngine for iOS to support subtitle track management