diff --git a/PLAN.md b/PLAN.md index 24a7f94..420f79c 100644 --- a/PLAN.md +++ b/PLAN.md @@ -10,16 +10,21 @@ gained about twenty features on 2026-10-02 that Android does not have. ## Status (2026-10-03) -Done: section 0, every parity item, the Library, Title, Shares and Settings -redesigns, Inter, and screenshot tests. Not yet verified on a device; the -host gate (ktlint, lint, unit and screenshot tests) and CI's build job pass. +Done: section 0, every parity item, and every recommendation in section 2 — +the Library, Title, Shares, Settings and Downloads redesigns, per-page app +bars drawn edge to edge, search behind an icon, skeleton loading and +generated placeholder art, Settings sub-pages and a language picker, a +long-press Change match, Inter, light and tablet screenshots, the library +and a title side by side from 840 dp, a poster-to-backdrop shared element +transition, and predictive back on the title page. -Open, from section 2: per-screen app bars and edge-to-edge under the status -bar, skeleton loading and generated placeholder art, a search icon that -expands, a language picker, Settings sub-pages, the Downloads page, light -theme and tablet screenshots, `ListDetailPaneScaffold` on tablets, shared -element transitions and predictive back, and a long-press Change match (the -title page has it). +Two departures from the text below. The tablet layout is a two-pane `Row` +rather than `ListDetailPaneScaffold`, which would have added the +`adaptive-layout` artifact for one split. Pull to refresh shows the +indicator while a crawl runs, but not the crawl's progress. + +Not yet verified on a device; the host gate (ktlint, unit and screenshot +tests) passes, and Android lint runs in CI. ## 0. CI (done) diff --git a/docs/TESTING.md b/docs/TESTING.md index a9720a3..0f5d0e0 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -212,13 +212,17 @@ client's decisions, so a change to `pstr_app::theme::Role` that nobody carried across fails here rather than being noticed in a screenshot. **Screenshot tests** (`ScreenshotTest`, Roborazzi) draw each screen from fixed -records — Library on a phone, a tablet and at font scale 1.5, an empty library, -a title, History, Shares, Settings and Downloads — and `check` compares them with the -images in `app/src/test/screenshots`. A layout regression compiles and passes -everything else; here it fails, and the review shows the changed image. After a -deliberate change, `gradlew recordRoborazziDebug` rewrites the images and they -are committed with it. No artwork loads on the host, so tiles show their -placeholder, and the palette is the shipped default. +records — Library on a phone, a tablet, at font scale 1.5, while loading and +empty; a title on a phone and a tablet; History on a phone and a tablet; Shares; +the Settings index and its Playback and Storage pages; Downloads with a season +saved and empty; and the library and a title again in Catppuccin Latte — and +`check` compares them with the images in `app/src/test/screenshots`. A layout +regression compiles and passes everything else; here it fails, and the review +shows the changed image. After a deliberate change, `gradlew +recordRoborazziDebug` rewrites the images and they are committed with it. +Artwork loading is switched off (`LocalArtworkLoading`), so every tile shows +its generated placeholder whatever the timing, and the palette is the shipped +default except in the Latte captures. **Instrumentation tests** (`app/src/androidTest`) are the things with no host equivalent: