jtube-tv/BACKLOG.md
Jeena 764fa8b34c docs: Record verified watching and history API behavior
Live-tested the the test account account against tube.jeena.net: the watching
endpoint stores the playback position (resume possible via
userHistory=true) and populates user history; history rows carry no
lastViewedAt. Notes feed the v0.2 resume-from-server item.
2026-10-10 10:53:49 +00:00

3 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 via GET videos/{shortUuid}?userHistory=true (verified working, returns userHistory.currentTime), next/previous video from list, focus current item in 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.
  • Verify searchTarget=local channel search behaves well for instances without federation; consider search/video-channels endpoint as an alternative.
  • (Verified 2026-10-10 via the test account account) history subscriptions + watching endpoints behave as documented; upload seeding uses flat multipart form fields on /api/v1/videos/upload (legacy), not a metadata JSON part — only relevant for seeding test data, the app itself doesn't upload.
  • 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.