The account name identifies a real, seeded account on the instance; the public source doesn't need it to make sense. Credentials were never in the repo and still live only in sops.
4.7 KiB
4.7 KiB
Backlog
Status vocabulary: todo · doing · done.
v0.1 — MVP (implemented, pending device sign-off)
| # | Item | Status | Notes |
|---|---|---|---|
| 0 | Ask for credentials + instance URL, store safely | done | Login screen → users/token; tokens + OAuth client creds in EncryptedSharedPreferences; refresh single-flight; show/paste password helpers; debug-only seed intent for automation |
| 1 | Local videos + user's videos incl. private/internal | done | Home rows (SmartTube-style) + "My videos" grid with privacy badge; internal (instance-member) videos appear in listings too |
| 2 | Local channels | done | MVP = user's own channels (accounts/{me}/video-channels); search-based local listing needs non-empty query — revisit in v0.2 |
| 3 | Search local videos | done | Own screen in sidebar |
| 4 | Subscription videos | done | Verified incl. remote (federated) channels |
| 5 | Watch history (server) | done | read-only grid |
| 6 | Playback + report to server history | done | ExoPlayer HLS w/ videoFileToken for non-public media; watching reports every ~20 s verified server-side; resume position retrievable |
Next up (v0.2+)
UX-review findings (Claude Opus 5.5, 2026-10-10) — implemented already: focus + scroll memory (player-as-overlay, per-destination grid state), 2-column grid, visible focus (tv-material Cards with scale/border), relative dates on cards, privacy badge only on My videos, password reveal + paste, overscan margins, sign-out entry, neutral form focus colors, always-focusable Sign in with inline validation. Deferred from review:
- "Continue watching" refinement: auto-remove finished entries, exact resume (start
playback at
userHistory.currentTime, show "Resuming at 1:23" toast). - Trending/featured row on Home; rows per subscribed channel (SmartTube-like).
- Video progress bars in ALL lists (needs per-video history merge; currently only Continue-watching has them).
- Search-as-overlay vs sidebar entry; autoplay focus previews; playback speed; auto-next after video end; subtitles (captions) support; phone-QR-assisted login.
- Drawer restructure proposal: Home / Channels (subs first) / Search / History / Account — decide together with merged-feed item below.
- Unified "accessible videos" feed: merge public-local + own private into one paged, deduplicated list (v0.1 keeps Home rows + My videos).
- Global local-channels browse (search endpoint rejects empty queries) — consider
GET /api/v1/video-channelspaged without search + host filter, orsearch/video-*. - Logout / switch account: sign-out entry exists; add switch-account (re-login screen without losing scroll state).
- Release build: enable
minifyEnabled+ R8 rules, decide signing/versioning. - Thumbnails of private/internal videos may 404 — on some instances thumbnail paths are publicly readable while on others they need auth; add a fallback poster only if needed.
- Security note (verified live against tube.jeena.net): some instances serve non-public media / thumbnails from object storage with only URL-based access control. The app must not rely on that laxness; always send auth headers / file tokens for non-public media. (Detail intentionally omitted from the public repo — report instance-specific findings privately.)
- Verify
searchTarget=localchannel search behaves well for instances without federation; considersearch/video-channelsendpoint as an alternative. - Release build: enable
minifyEnabled+ R8 rules, decide on signing, versioning scheme. - Verify
searchTarget=localchannel search behaves well for instances without federation; considersearch/video-channelsendpoint as an alternative. - (Verified 2026-10-10 via the test 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.
BACKLOGtriage 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.