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.
51 lines
No EOL
3 KiB
Markdown
51 lines
No EOL
3 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 — 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. |