Add a two-pane layout for large screens, and re-shoot the tablet sets

A window at or above Material expanded breakpoint (840dp) now splits into a master pane and a detail pane: tapping a row highlights it and the second pane shows a folder children, or a preview plus the metadata for a file. Opening moves to a double tap on wide windows only; phones (~411dp) and the 7-inch in portrait (~600dp) keep their layout and their tap behaviour.

Found while taking the tablet screenshots: the app had no large-screen layout at all, so on a 2560x1600 canvas every row was 2560px wide with its content stranded in the left ~240px.

The tablet sets are re-shot on this build. That also caught a blank capture (7-inch 01-roots) that had already been committed: a headless AVD draws its system bars before Compose composes its first frame, so the file was not obviously empty. make-store-screenshots.sh now measures each capture app area and refuses to normalise one that is blank.
This commit is contained in:
2026-10-15 00:18:38 +02:00
parent b28e9dca37
commit 55dc2293b2
21 changed files with 447 additions and 32 deletions
+21 -3
View File
@@ -31,6 +31,20 @@ upload needs a **higher `versionCode`** than every previous upload.
### Added
- **A two-pane layout for large screens.** A window at or above Material's "expanded"
breakpoint — 840 dp, which a 10-inch tablet in landscape at 1280 dp clears — now splits
into a master pane and a detail pane. Tapping a row highlights it, and the second pane
answers "what is in there?" without a navigation step: a folder's children, or a preview
plus the metadata for a file. Opening therefore moves to a double tap **on wide windows
only**, because once there is somewhere to show a selection a single tap has to mean
"show me"; phone (~411 dp) and 7-inch-portrait (~600 dp) windows keep the layout and the
tap behaviour they already had. The root screen previews the main volume on arrival
rather than leaving the second pane empty.
Found while taking the tablet screenshots, where it turned out the app had **no**
large-screen layout at all: on a 2560×1600 canvas every row was 2560 px wide with its
content stranded in the left ~240 px.
- **M10 — store assets.** The app is named **Plain Files** (one string; the `applicationId`
was already locked in M0). `tools/make-store-assets.sh` renders the 512×512 RGBA icon and
the 1024×500 RGB feature graphic from the app's own icon vectors, so the store icon *is*
@@ -42,9 +56,13 @@ upload needs a **higher `versionCode`** than every previous upload.
declaration requires. The feature graphic's copy was verified to survive Play's
centre-square crop by cropping the rendered PNG, not by trusting the arithmetic.
**Not finished:** the screenshots themselves. The generator and the raw-capture
directories are in place, but no captures have been taken, so `store-assets/screenshots/`
is still empty. The listing is publishable except for that.
**Screenshots:** 5 phone shots at 1080×2160, 4 on a 7-inch tablet at 1200×1920 and 4 on a
10-inch tablet at 2560×1600 — all 24-bit RGB with no alpha, inside Play's 2:1 cap. The
tablet sets come from AOSP AVDs, because there was no tablet hardware to hand. The
generator now measures every capture and refuses to normalise a blank one: a headless AVD
that has not composed the app's first frame still draws its system bars, so a
pure-background capture is not obviously empty — and one had already been committed
before the check existed.
- **M9 — monetisation.** Decided: a **one-time paid app at €4.49, with a 14-day launch price
of €2.29**, both set in the Play Console. No ads, no subscription and no in-app purchases —