You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Episodes watched while binge-watching a TV series can remain marked as unwatched when playback is continued using the Next Episode button from the player.
The affected episodes still appear as unwatched in the series details screen and, when spoiler blur is enabled, their thumbnail/synopsis remains hidden as a spoiler even though the episode has already been watched.
This seems specific to episodes transitioned through the player's Next Episode action rather than episodes started directly from the Details screen.
There may be a race condition in the Player → Next Episode navigation path: onPlayNext() immediately navigates to a new Player destination and removes the current Player from the back stack, while the final saveProgress() / watched-state update runs asynchronously in the current PlayerViewModel's viewModelScope.
Steps to Reproduce
Open ARVIO on Android TV / Google TV.
Open a TV series.
Start an episode from the series Details screen.
Watch the episode and use the player's Next Episode button to continue to the following episode.
Continue watching one or more episodes this way.
Return to the series Details screen.
Notice that some episodes watched through the Next Episode flow are still marked as unwatched.
With spoiler blur enabled, those episodes are also still displayed as spoilers.
Expected Behavior
An episode that has reached the watched threshold or finished playback should be marked as watched before ARVIO navigates to the next episode.
Using Next Episode should produce the same watched/history state as finishing an episode and returning to the Details screen.
Screenshots / Video
A screen recording can be provided if required.
Environment & Device Information
Platform (Check and complete the applicable section):
Android TV / Google TV / Fire TV
Device Model: Nvidia Shield
OS / Firmware: [complete]
App Version: [complete]
Install Source: [complete]
Android Mobile / Tablet
ARVIO Web (iOS / iPadOS / Desktop Browser)
Affected Component / Feature
Playback / Player (ExoPlayer/Media3, video stutter, audio passthrough, HDR/DV)
Subtitles / Audio (Subtitle sync, missing tracks, AI subtitles)
IPTV / Live TV (M3U / Xtream playlists, EPG guide, stream playback)
Home Servers & Sources (Jellyfin, Emby, Plex, Telegram, Addons)
Media & Playback Details (If reporting a video/audio/playback issue)
Source Type: Addon/Debrid
Stream Format / Codecs: Not relevant / occurs independently of stream format
Player Settings: Auto Play Next enabled
Crash Logs / Logcat (If applicable)
No crash occurs.
Additional Technical Context
The Player's manual Next Episode action calls onPlayNext() directly without explicitly finalizing the current playback session.
AppNavigation then navigates to the next Player route using:
popUpTo(Screen.Player.route) { inclusive =true }
Meanwhile, the final playback persistence performed during PlayerScreen disposal calls PlayerViewModel.saveProgress(), which starts a new coroutine in viewModelScope.
Since removing the current Player destination also destroys its ViewModel, that coroutine may be cancelled before scrobbleStop() and the watched-state update complete.
It may be safer to explicitly finalize/save the current episode before executing onPlayNext(), or otherwise make the final playback-state persistence survive destruction of the current Player ViewModel.
The manual Next Episode button, MediaNext, and the automatic post-episode countdown should ideally all use the same transition/finalization path to avoid different watched-state behavior depending on how the next episode is started.
Describe the Bug
Episodes watched while binge-watching a TV series can remain marked as unwatched when playback is continued using the Next Episode button from the player.
The affected episodes still appear as unwatched in the series details screen and, when spoiler blur is enabled, their thumbnail/synopsis remains hidden as a spoiler even though the episode has already been watched.
This seems specific to episodes transitioned through the player's Next Episode action rather than episodes started directly from the Details screen.
There may be a race condition in the Player → Next Episode navigation path:
onPlayNext()immediately navigates to a new Player destination and removes the current Player from the back stack, while the finalsaveProgress()/ watched-state update runs asynchronously in the currentPlayerViewModel'sviewModelScope.Steps to Reproduce
Expected Behavior
An episode that has reached the watched threshold or finished playback should be marked as watched before ARVIO navigates to the next episode.
Using Next Episode should produce the same watched/history state as finishing an episode and returning to the Details screen.
Screenshots / Video
A screen recording can be provided if required.
Environment & Device Information
Platform (Check and complete the applicable section):
Android TV / Google TV / Fire TV
Android Mobile / Tablet
ARVIO Web (iOS / iPadOS / Desktop Browser)
Affected Component / Feature
Media & Playback Details (If reporting a video/audio/playback issue)
Crash Logs / Logcat (If applicable)
No crash occurs.
Additional Technical Context
The Player's manual Next Episode action calls
onPlayNext()directly without explicitly finalizing the current playback session.AppNavigationthen navigates to the next Player route using:Meanwhile, the final playback persistence performed during
PlayerScreendisposal callsPlayerViewModel.saveProgress(), which starts a new coroutine inviewModelScope.Since removing the current Player destination also destroys its ViewModel, that coroutine may be cancelled before
scrobbleStop()and the watched-state update complete.It may be safer to explicitly finalize/save the current episode before executing
onPlayNext(), or otherwise make the final playback-state persistence survive destruction of the current Player ViewModel.The manual Next Episode button,
MediaNext, and the automatic post-episode countdown should ideally all use the same transition/finalization path to avoid different watched-state behavior depending on how the next episode is started.