Merge library slice and reuse shared image policy
Some checks failed
review/design-claude Changes requested: 7 design-parity findings (separator opacity, line-box rhythm, stage gap, mark chips, avatar, count, thumb fringe)
Some checks failed
review/design-claude Changes requested: 7 design-parity findings (separator opacity, line-box rhythm, stage gap, mark chips, avatar, count, thumb fringe)
This commit is contained in:
commit
439eea3ff8
629 changed files with 2202 additions and 22 deletions
|
|
@ -59,8 +59,8 @@ 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` adds shell, grid and sheet measurements from that
|
||||
same prototype. Generate the committed Kotlin, CSS and checksum manifest together:
|
||||
|
||||
```sh
|
||||
python3 wolfskin-design/generate_tokens.py
|
||||
|
|
@ -141,6 +141,9 @@ the generated-client data path. There is no Seerr fallback or handwritten HTTP.
|
|||
Foreground refreshes once; an open sheet or unsettled requests refresh every
|
||||
30 seconds while started. The immutable debug projection is loaded once, not
|
||||
decoded again on every poll.
|
||||
Thumbnails reuse `LibraryImages` with a 96×144-pixel request, RGB565, no crossfade,
|
||||
the shared 64 MB memory/128 MB disk cache and four-read limit. Actor separators
|
||||
reuse the shared caption-opacity token rather than defining another convention.
|
||||
|
||||
Uncached focused ratings wait 350 ms; moving away cancels the read. Read ratings
|
||||
show immediately on return; sign-out clears visibility. This follows the frozen
|
||||
|
|
@ -173,6 +176,44 @@ density 2.0. Title selection currently uses an explicitly labelled
|
|||
this slice does not claim to implement title pages, TV sign-in, release or device
|
||||
deployment.
|
||||
|
||||
## Libraries and See all
|
||||
|
||||
Movies, Shows and Anime use the shell's retained view and a continuous six-column
|
||||
lazy grid. Up from its first row reaches Sort/Filter, then the nav; Back preserves
|
||||
the card and scroll. Sort cycles A–Z, Recently added and Rating. The letter rail
|
||||
exists only at 200 titles with A–Z selected. Card OK activates on key-up through
|
||||
the same shell hold guard, without a long-press menu.
|
||||
Down clamps a short final title row before entering the separate Try again / Show
|
||||
more row; an empty slot cannot activate recovery. An unavailable library hides
|
||||
its unknown item count.
|
||||
|
||||
Caption separators use 40% of the existing muted colour's alpha. The rail follows
|
||||
the locked prototype CSS: bold 24 px letters, with the focused letter bold 28 px,
|
||||
overriding the spec table's generic caption style for this component.
|
||||
Library header initials use the muted colour over the person's fill; navigation,
|
||||
picker and Settings avatars retain their dark initials.
|
||||
|
||||
The debug-only `wolfskin-library.json` and `library/assets/` contain the locked
|
||||
prototype's titles and local poster art. Release libraries read through
|
||||
`LibraryReadFacade`, with 200-item Jellyfin chunks and ten-minute per-server/person
|
||||
snapshots using the existing atomic disk cache. Saved data is painted before a
|
||||
quiet refresh; a failed refresh keeps it. Production ratings remain hidden until
|
||||
Conductarr sign-in exists.
|
||||
|
||||
Home/Discover shelves open a full list through
|
||||
`WolfskinSeeAllLists.open(person, key, title, fullList, navigation, loadNextPage)`.
|
||||
The optional suspend page provider returns `LibraryPage(items, hasMore)` using the
|
||||
generated Conductarr client. The grid reads within ten cards of its end, deduplicates
|
||||
title identities, and pauses on Try again or Show more rather than looping.
|
||||
Title activation pushes the explicitly named `library-title/{id}` destination for
|
||||
the title-screen implementation; this slice does not implement title pages.
|
||||
|
||||
`LibraryCaptureTest` renders the sixteen approved library/See all states offline.
|
||||
`LibraryKeysTest` reads the approved JSON path and reaches Spirited Away in exactly
|
||||
20 Android key presses. Paging and snapshot tests cover duplicate-only reads,
|
||||
failure/retry, stale copies, and person/server isolation. Captures are written to
|
||||
the same `build/wolfskin-captures/` directory as the shell captures.
|
||||
|
||||
## 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