ui: SmartTube-style home rows, focus memory and UX-review fixes
The home screen is now stacked horizontal rows ('Continue watching'
with red progress bars from server-reported positions, 'New videos'
paged) instead of one tall list - matching the SmartTube look the app
is modeled on. The player renders as an overlay so the list beneath
keeps its scroll and focus across BACK (was resetting to the top),
grid scroll state is saved per destination, cards render focus
scale/border via tv-material, thumbnails carry relative dates and
privacy badges only where meaningful, overscan margins guard the 1080p
safe area, and the setup screen got a password reveal, clipboard paste
helpers and an always-focusable validating Sign in.
UX review by Claude Opus 5.5 (claude CLI) on emulator screenshots;
remaining suggestions are triaged in BACKLOG.md.
This commit is contained in:
parent
83dde8ba74
commit
43056065e1
14 changed files with 532 additions and 143 deletions
43
BACKLOG.md
43
BACKLOG.md
|
|
@ -2,27 +2,42 @@
|
|||
|
||||
Status vocabulary: `todo` · `doing` · `done`.
|
||||
|
||||
## v0.1 — MVP (this release)
|
||||
## v0.1 — MVP (implemented, pending device sign-off)
|
||||
|
||||
| # | 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 |
|
||||
| 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 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.
|
||||
deduplicated list (v0.1 keeps Home rows + My videos).
|
||||
- Global local-channels browse (search endpoint rejects empty queries) — consider
|
||||
`GET /api/v1/video-channels` paged without search + host filter, or `search/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 — 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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue