1. TraktAuthStorage: Added profileId parameter to loadPayload(profileId)
and savePayload(profileId, payload) in Android and iOS actual
implementations, passing it explicitly to ProfileScopedKey.of().
2. TraktAuthRepository: Added currentProfileId and profileGeneration
for cross-profile operation detection. Methods now accept explicit
profileId to isolate auth state per profile. loadFromDisk() and
persist() use the scoped storage key.
3. TraktCredentialSync: Updated to pass profileId to currentStateForSync()
and replaceStateFromSync().
4. ProfileRepository/LibraryRepository: Updated calls to
TraktAuthRepository.onProfileChanged(profileId).
5. WatchedRepository/WatchProgressRepository: Fixed
pullFromServer/forceSnapshotRefreshFromServer to pass profileId
to TraktAuthRepository.ensureLoaded() before checking
activeOperationGeneration.
6. SyncManager: Passes profileId to ensureLoaded().
- New floating pill-shaped bottom nav bar
- Scroll down to collapse labels, scroll up to expand (snap animation)
- Haze blur-through effect on the pill background
- Selected tab uses accent color from theme
- Dynamic pill width: shrinks when collapsed, expands with labels
- Settings option (Android only): Adaptive, Always Expanded, Always Compact, Classic
- Classic mode preserves original flat navigation bar
- NavBarStyle syncs to cloud (ignored on iOS where LiquidGlass is used)
- iOS LiquidGlass tab bar remains untouched
- Polish translations added
Add Android Now Playing support using Media3 MediaSession and media notifications.
* Publish title, subtitle, artwork, duration, position, and playback state
* Add play, pause, seek, rewind, and fast-forward controls
* Support lock screen, notification, headset, and external media controls
* Integrate with both ExoPlayer and libmpv backends
* Keep playback active in the background while the media session is running
* Clean up the media session, notification, and foreground service when playback ends
Add Vietnamese (vi) as an available language option with complete string translations. Updates include Android locale configuration, comprehensive Vietnamese translation file with 1927 strings, and AppLanguage enum to support Vietnamese selection in the app settings.