Fix Home navigation ownership and merge watch lanes
This commit is contained in:
parent
c2f7ccc438
commit
12c201dc55
41 changed files with 671 additions and 307 deletions
|
|
@ -330,7 +330,10 @@ attribution and project URL. The check does not depend on incremental merge file
|
|||
## 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.
|
||||
one merged **Continue watching** lane, newest and per-destination Jellyfin shelves,
|
||||
and the Discover continuation. The watch lane uses landscape tiles, prefers a
|
||||
resumable episode over another next-up episode from the same series, and sorts
|
||||
the chosen items by latest actual watch activity. The hero stays off the lane.
|
||||
The final action opens the real merged Discover screen at its top through the
|
||||
shell's root re-selection transition. Home's See all cards open `WolfskinSeeAllLists`, carrying
|
||||
the complete underlying list rather than the visible shelf window. Title content
|
||||
|
|
@ -339,11 +342,13 @@ remains the 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 selected card and
|
||||
actual horizontal `LazyListState`, and the bounded six-hour ratings session cache.
|
||||
Composing destinations bind `rememberedView(route)` before navigation effects run, so a
|
||||
new See all grid cannot borrow or clamp Home's scroller. Re-entry restores the
|
||||
remembered track before the page with `scrollToItem`, preserving exact indices and
|
||||
pixel offsets rather than animating back. Android focus stays with the shell;
|
||||
cards use its logical focus, without requests against uncomposed lazy items.
|
||||
Every `NavEntry` installs `ScreenEntry` with its own `rememberedView(route)` and
|
||||
active state before navigation effects run. Home, Library, Discover, title and
|
||||
person surfaces consume that entry's viewport; an outgoing page cannot borrow
|
||||
Home's scroller during Back. Only the active entry registers logical key handling
|
||||
or acquires Android focus. Re-entry restores the remembered horizontal track
|
||||
with `scrollToItem`, preserving exact indices and pixel offsets. Cards use the
|
||||
shell's logical focus without requests against uncomposed lazy items.
|
||||
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.
|
||||
|
|
@ -356,10 +361,23 @@ The initial skeleton parks focus on the nav. When the first content arrives,
|
|||
an untouched fresh entry focuses hero button zero; intervening nav input prevents
|
||||
that automatic transfer. Home, Libraries and Discover use the same `ShellContentFocus`
|
||||
release/repeat guard and Back ladder.
|
||||
Landscape title scrims include the reserved state-line area inside their gradient
|
||||
rather than leaving an exposed image strip below it. Their top padding is the
|
||||
shared Home token (18 dp); opacity remains the approved 92%.
|
||||
|
||||
The legacy opt-out Home and its presets also use one combined watch row. Saved
|
||||
local/server/web/plugin split rows migrate at their first position, preserving
|
||||
that row's display options and all unrelated rows. Old serialized row names stay
|
||||
decodable; settings no longer offer separate lanes or a Split action.
|
||||
|
||||
`HomeReadFacade` confines Home SDK reads to the selected user. Resume and Next up
|
||||
publish independently of slow or failed library shelves; saved metadata still
|
||||
paints immediately, but a saved hero offers Details until watch data revalidates.
|
||||
Series chronology reads the latest actually watched episode, not the next-up
|
||||
episode's unwatched user data or premiere date. Enrichment is bounded to three
|
||||
concurrent series reads; absent history leaves the date unknown rather than
|
||||
inventing a timestamp. The disk projection preserves series IDs and watch dates,
|
||||
and still accepts older cache entries without either field.
|
||||
Home and title Play actions resolve the current Jellyfin item and its current
|
||||
checkpoint at the click, preserving millisecond positions. Series actions use
|
||||
live NextUp with resumable episodes enabled; an explicitly opened episode stays
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue