Skip to content

Add Random Episode Feature - #5

Open
DeclanSC wants to merge 36 commits into
devfrom
feat-random-episode
Open

DeclanSC wants to merge 36 commits into
devfrom
feat-random-episode

Conversation

@DeclanSC

@DeclanSC DeclanSC commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Important

Feature approval requested in NuvioMedia#1555. This PR remains a draft and is not presented as approved or ready for review. The implementation can be revised, reduced, or closed based on maintainer direction.

Summary

Adds Random Episode functionality:

  • Random Episode button on the series detail screen
  • Show Random Episode Button toggle in layout settings (off by default)
  • Random next-episode logic for continuous random playback
  • Full removal of tracking/scrobbling for random episodes (excluded from Continue Watching)
  • Click and long-press handling on the Random Episode button, mirroring the existing Play button behavior
  • Player back-button navigation returns straight to the top of the detail page
  • No-repeat logic within a single continuous playback session (repeats allowed only once every episode has been shown)
  • Random episode session persists when switching sources

PR type

  • Translation/localization only
  • Critical bug fix

Neither applies. This is a feature addition, opened as a draft against product-direction review per NuvioMedia#1555, not as a policy-compliant submission.

Why

Multiple users have requested the ability to play a random episode of a show — useful for shows where episode order doesn't matter, and removes the need to manually pick an episode each time.

Approval status

Reproduction steps

Not applicable - feature addition, not a bug fix.

UI / behavior impact

  • No UI change
  • No behavior change
  • UI changed only to fix a documented glitch/bug
  • Behavior changed only to fix a documented bug/regression
  • UI change has explicit maintainer approval
  • Behavior change has explicit maintainer approval

New UI (Random Episode button on detail screen, layout settings toggle) and new behavior (random next-episode playback, tracking/scrobbling exclusion). Left unchecked pending maintainer review — see approval status above.

Policy check

  • I have read and understood CONTRIBUTING.md.
  • This PR fits the current PR policy: localization/translation only or a critical bug fix.
  • This PR does not add features, UI changes, refactors, or other non-critical changes.
  • This PR is small, focused, and limited to one issue.
  • This PR does not bundle unrelated refactors, cleanups, formatting, or drive-by changes.
  • This PR includes a linked issue, reproduction steps, and testing notes if it is a critical bug fix.
  • I listed the testing performed below.

Not checking the policy-fit boxes since this is a feature PR, submitted openly as outside the current accepted PR types, pending maintainer direction on NuvioMedia#1555.

Scope boundaries

  • No changes to non-random playback tracking/scrobbling behavior.
  • No changes to existing Continue Watching logic for normal (non-random) playback.
  • Layout settings toggle is off by default — no change to existing users' detail screen unless explicitly enabled.

Testing

  • Manual testing on device via test APK (linked below).
  • Verified: random episode selection from detail screen (click and long-press), continuous random-next-episode playback, no repeats within a session until all episodes exhausted, session persists across source switches, tracking/scrobbling (Trakt, Simkl, Nuvio Sync) and watch progress fully suppressed during random playback, back navigation from player returns to top of detail page.
  • Verified random plays do not appear in Continue Watching after the session.

Screenshots / Video

Demo video: https://www.dropbox.com/scl/fi/zdstftubnduq47cdq5b7k/RandomEpisode.mp4?rlkey=qc25wxzry8i1bb5rhsg8s5vdy&st=niaq32vo&e=1&dl=0

Screenshots:
Image
Image

Test build: https://www.dropbox.com/scl/fi/ucgtzt7hbrscmozl8o4hk/app-full-universal-debug.apk?rlkey=kvjonspwthwmw4yvgq0vcp3am&st=4k5rtn2v&dl=0

Breaking changes

None.

Linked issues

NuvioMedia#1555

DeclanSC and others added 28 commits March 22, 2026 20:00
Release Beta Release 0.5.1
# Conflicts:
#	app/src/main/java/com/nuvio/tv/ui/navigation/NuvioNavHost.kt
Remove extra comma
…-episode

# Conflicts:
#	app/src/main/java/com/nuvio/tv/ui/navigation/NuvioNavHost.kt
#	app/src/main/java/com/nuvio/tv/ui/navigation/Screen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/detail/HeroSection.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/detail/MetaDetailsScreen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerScreen.kt
# Conflicts:
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeController.kt
# Conflicts:
#	app/src/main/java/com/nuvio/tv/ui/navigation/NuvioNavHost.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeController.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeControllerPlaybackEvents.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeControllerScrobble.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerScreen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/settings/LayoutSettingsViewModel.kt
# Conflicts:
#	app/src/main/java/com/nuvio/tv/ui/navigation/NuvioNavHost.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/detail/HeroSection.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/detail/MetaDetailsScreen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeController.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeControllerPlaybackEvents.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeControllerScrobble.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerScreen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/settings/LayoutSettingsViewModel.kt
# Conflicts:
#	app/src/main/java/com/nuvio/tv/ui/navigation/NuvioNavHost.kt
#	app/src/main/java/com/nuvio/tv/ui/navigation/Screen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/detail/MetaDetailsScreen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeControllerPlaybackEvents.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeControllerScrobble.kt
# Conflicts:
#	app/src/main/java/com/nuvio/tv/data/local/LayoutPreferenceDataStore.kt
#	app/src/main/java/com/nuvio/tv/ui/navigation/NuvioNavHost.kt
#	app/src/main/java/com/nuvio/tv/ui/navigation/Screen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeControllerPlaybackEvents.kt
Persist random playback across manual stream selection screen.
@DeclanSC DeclanSC changed the title Random Episode Feature Add Random Episode Button Aug 22, 2026
@DeclanSC DeclanSC changed the title Add Random Episode Button Add Random Episode Feature Aug 22, 2026
DeclanSC and others added 3 commits September 4, 2026 18:36
# Conflicts:
#	app/src/main/java/com/nuvio/tv/ui/navigation/NuvioNavHost.kt
#	app/src/main/java/com/nuvio/tv/ui/navigation/Screen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/detail/HeroSection.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/detail/MetaDetailsScreen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeController.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerRuntimeControllerPlaybackEvents.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerScreen.kt
#	app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerViewModel.kt
Removed redundant popBackStack call when poppedToStream is false. Added in previous commit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant