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.
55 lines
No EOL
3.4 KiB
Markdown
55 lines
No EOL
3.4 KiB
Markdown
# 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. |