jtube-tv/BACKLOG.md
Jeena 83dde8ba74 test: Add e2e release gate (script + manual checklist)
Releases need more than eyeballs: scripts/e2e-api-check.sh now runs
18 assertions over the live instance (login/refresh, listings, private
rows, subscriptions incl. remote channels, watching + stored position,
file token, playlist reachability) and TESTS.md defines the manual
D-pad checkout that a script cannot do.

Also switch the channels screen to the user's own channels (the
search-based local listing rejects empty queries) and resolve the real
account name at login since logins accept email addresses.
2026-10-10 11:02:22 +00:00

3.4 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 — verified on tube.jeena.net: instance thumbnail paths are publicly readable (HTTP 200 without auth); add a fallback poster only if other instances behave differently.
  • Security note for tube.jeena.net: object-storage (R2) media for private test videos is publicly readable without token ("private" only via URL obscurity). Flag to the instance admin; the app must not rely on this laxness.
  • 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.