jtube-tv/BACKLOG.md
Jeena 59029438ad app: Scaffold Android TV PeerTube client (MVP)
Start the SmartTube-inspired PeerTube TV client as a Kotlin + Compose
for TV app. It targets any PeerTube instance (v1 API), with JTube as
the default, and covers login 0, local/own video listings 1-2, search
3, subscriptions 4, server-backed history 5 and HLS/progressive
playback with watching reports 6.

Password is only used for the OAuth password grant and never stored;
tokens are kept in EncryptedSharedPreferences. Building needs JDK 17+
(see README); the Gradle wrapper is checked in so no local Gradle is
required.
2026-10-10 10:20:02 +00:00

2.5 KiB

Backlog

Status vocabulary: todo · doing · done.

v0.1 — MVP (this release)

# Item Status Notes
0 Ask for credentials + instance URL, store safely todo Login screen → users/token; store tokens + OAuth client creds in EncryptedSharedPreferences, never the password; refresh-token single-flight on 401
1 List local videos (public) + user's own videos incl. private/internal todo Sidebar entries "Videos" (public, videos?isLocal=true) and "My videos" (users/me/videos); privacy badge on non-public items
2 List local channels todo video-channels?search=&searchTarget=local; tap → channel videos
3 Search local videos todo videos?search=…&isLocal=true
4 Subscription videos todo users/me/subscriptions/videos
5 Watch history (server) todo users/me/history/videos read-only
6 Playback + report to server history todo ExoPlayer HLS (mp4 fallback); POST videos/{shortUuid}/watching every ~20 s

Next up (v0.2+)

  • Unified "accessible videos" feed: merge public-local + own private into one paged, deduplicated list (v0.1 keeps them as two sidebar entries).
  • Logout / "switch account" button on the Home screen.
  • Playback polish: resume from server-recorded position, next/previous video from list, auto-focus currently watched item on history screen.
  • Thumbnails of private/internal videos may 404 — probe server behavior and add a fallback (generic poster) when required.
  • Verify searchTarget=local channel search behaves well for instances without federation; consider search/video-channels endpoint as an alternative.
  • Release build: enable minifyEnabled + R8 rules, decide on signing, versioning scheme.
  • Error UX: friendlier messages (offline, instance down, wrong credentials vs. expired token → re-login screen), retry buttons.
  • i18n: move user-facing strings to strings.xml, consider German + English.
  • Video detail screen (description, tags, views, duration, channel page link).

Longer term

  • Multiple saved instances / switching between them.
  • Live streams playback (HLS live), premieres.
  • Subtitles/captions selection.
  • Downloads for offline watching (probably limited to public videos).
  • Comments viewing (read-only) — needs moderation-safe UI thinking.
  • BACKLOG triage rhythm: keep "Next up" ≤ 8 items.
  • Out of scope by user request (do not implement without asking): uploading, editing, subscribing/unsubscribing, deleting, creating channels/users/playlists.