Build the Wolfskin Home feed
This commit is contained in:
parent
9be55c570a
commit
0fd0ec035d
683 changed files with 2561 additions and 18 deletions
|
|
@ -59,8 +59,9 @@ cover the Wolfskin nav.
|
|||
The independent `:wolfskin-design` module owns the shell components, fixed person
|
||||
colours, focus policy, per-person root-view memory, palette and motion. Its
|
||||
`tokens.json` is the copied approved TV-spec source, retaining the locked prototype
|
||||
SHA and provenance. `shell-tokens.json` adds shell measurements from that same
|
||||
prototype. Generate the committed Kotlin, CSS and checksum manifest together:
|
||||
SHA and provenance. `shell-tokens.json` and `home-tokens.json` add measured shell
|
||||
and Home geometry from that same prototype. Generate the committed Kotlin, CSS
|
||||
and checksum manifest together:
|
||||
|
||||
```sh
|
||||
python3 wolfskin-design/generate_tokens.py
|
||||
|
|
@ -77,7 +78,7 @@ Settings groups hand off to existing upstream pages; the Requests entry explicit
|
|||
has no request data yet. **Advanced settings → Wolfskin screens** is the persistent
|
||||
rollout switch: turning it off renders upstream Home and library destinations,
|
||||
while retaining Wolfskin's nav, picker and Settings list. Turning it on renders
|
||||
the labelled placeholders until the corresponding screen slices ship.
|
||||
Wolfskin Home; later-slice screens remain explicitly labelled navigation targets.
|
||||
|
||||
Debug people, tabs and initials come from the shell-only projection of the locked
|
||||
prototype fixture in `app/src/debug/assets/wolfskin-shell.json`; release resources
|
||||
|
|
@ -104,6 +105,51 @@ artifact provider and AAPT2. It checks all string, plural and array configuratio
|
|||
rejecting user-visible upstream branding while preserving the upstream legal
|
||||
attribution and project URL. The check does not depend on incremental merge files.
|
||||
|
||||
## Wolfskin Home
|
||||
|
||||
Home is one lazy frame: a non-rotating resume → Next up → newest → pick hero,
|
||||
Jellyfin shelves, per-destination "Your …" shelves and the Discover continuation.
|
||||
The final action opens Discover at its top. Discover (`discover`) and See all
|
||||
(`see-all:{row-id}`) are named integration targets, not implementations of those
|
||||
later screens. Title navigation remains the shell's later-slice target.
|
||||
|
||||
All Home components and immutable screen models live in `:wolfskin-design`.
|
||||
The shell's remembered view owns vertical position, each row's card and the
|
||||
bounded six-hour ratings session cache. Back preserves the viewport; returning
|
||||
to Home does not re-run focus-follow over a manually scrolled saved view. The
|
||||
next arrow re-enters visible content when scrolling moved focus off-screen.
|
||||
Pointing changes focus without activation, cards activate on key-up, and held
|
||||
OK events cannot activate twice.
|
||||
|
||||
`HomeReadFacade` is the only Home code importing Jellyfin API clients. Release
|
||||
variants read the selected user's Resume, Next up, newest titles and destination
|
||||
shelves, with app-private last-known-good projections through the shared atomic
|
||||
disk cache. A missing saved library becomes a recovery panel; a saved library
|
||||
stays visible when Jellyfin is unreachable. Playback resolves an actual film or
|
||||
episode and checks Jellyfin before opening upstream's player. No season,
|
||||
recommendation stub or different person's session is promoted to playback.
|
||||
|
||||
Debug variants additionally package the locked fixture and local artwork under
|
||||
`wolfskin-design/src/debug/assets/wolfskin-home/`; release variants exclude them.
|
||||
The fixture provider supplies the approved household data and Home states without
|
||||
network reads in tests. Conductarr sign-in is not implemented here: real signed-out
|
||||
Home hides every rating and shows "Discover needs sign-in". No Seerr fallback is
|
||||
used. Catalogue data and ratings in debug captures are fixture-backed.
|
||||
|
||||
Home images request exact slot sizes, use RGB565 for posters, disable crossfades,
|
||||
share a 64 MiB memory/128 MiB disk cache, limit image work to four reads and prefetch
|
||||
the next shelf. Rating plates use the TV locale, start at 14 sp, shrink to 12 sp
|
||||
and drop trailing entries rather than wrap. Their uncached read gate is 350 ms;
|
||||
cached focus returns without that delay.
|
||||
|
||||
`make test` includes `HomeCaptureTest` (23 native acceptance states) and the
|
||||
data-driven paths in `wolfskin-home-presses.json`: play next 2, resume 3, Discover
|
||||
4, deep-row Back/Down 9, Trending 13 and Trending's See all card 33 presses.
|
||||
Home captures are written to `build/wolfskin-captures/home/`. Compare those images
|
||||
side by side with the frozen spec captures; Compose Roboto/JPEG rasterisation,
|
||||
the approved button-scale consolidation and removal of prototype sample pills
|
||||
are recorded differences, not a claim of browser pixel equality.
|
||||
|
||||
## Toolchain and disk use
|
||||
|
||||
`Dockerfile` pins Temurin JDK `21.0.11+10` by image digest, command-line tools
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue