Skip to content

Reader 0.2.0: the reading controls

Choose a tag to compare

@yarosz yarosz released this 30 Sep 23:13
· 9 commits to main since this release
v0.2.0
5a79f8d

Reader 0.2.0: the reading controls (N5). Light builds and signs Tools from a public commit, so this release is the tagged commit. There is no APK here; a Light-signed build will follow when Light's developer portal opens.

versionName 0.2.0, versionCode 2. light-sdk stays at v0.1.2, still Light's newest tag.

Reading

  • The Page fills the screen. The top line and footer are gone; a centre tap shows the controls over the Page, which stays as it is under them (#41).
  • Tap zones are three full-height columns: the left 30% turns back, the middle 25% shows the controls, the right 45% turns forward. The volume keys turn as before, and every turn hides the controls (#41).
  • The controls: back to the Shelf, the running head and the list icon for Contents at the top; A−, the minutes left in the Chapter and A+ in one row at the bottom (#41, #42).
  • The running head names the Chapter the Page goes by, with its Part on a line above when the table of contents nests it ("I. A SCANDAL IN BOHEMIA" over "II."), and the Book's title in Front matter and on the end page (#40, #41).
  • A sixth font size, 15 sp; 20 sp stays the default. settings.fontSize holds the size in sp, and every save still writes the old fontStep, so an older build reads a size (#44).
  • The screen stays on while you read, until 10 minutes pass without a tap or key press; then the phone's own timeout applies (#45).
  • A first-run walkthrough shows the three taps once: next page, back, then the controls. It never shows in dev-start, so CI is unaffected (#45).

Contents

  • Parts appear as heading rows before their first Chapter, as a printed contents page sets them. Choosing one goes to its heading (#40).
  • Contents has no Shelf button: back returns to the Page, with the controls still up. The controls' back is the way to the Shelf (#43, #45).
  • "you’re here" takes a typographic apostrophe (#46).

About

  • "Reader" in the Shelf's top bar opens About: the version, the no-network promise, the keep-awake rule, where to find Books without copy protection, the repository's address and the licenses. Static text, nothing fetched (#46).

Fixes

  • A failed search on a Catalogue whose search template puts the terms in the URL path no longer logs them; search URLs are logged as the host plus "/…" (#46).
  • A title of nobility is dropped from an author's name when it trails or leads it ("graf Leo Tolstoy" → "Leo Tolstoy"); capitalised pen names like "Baron Corvo" stay (#46).

Smaller APK

  • Reader excludes ML Kit, CameraX, Play services, Firebase and Data Transport, which Light's sdk:ui pulls in only for its QR code scanner. The release APK drops from 27.1 MB to 5.2 MB, and ML Kit's native libraries, models and manifest entries are gone (#46; THIRD_PARTY_NOTICES.md).

Upgrading

  • Your Shelf, every Place and your font size carry over from 0.1.0. The reading data gains settings.fontSize and settings.readingHintDismissed; schemaVersion stays 1.

Next

  • N6: measuring layout speed on the phone again after N3–N5. Then illustrations.

Release checks

  • Unit and property tests: 555 passed (501 at 0.1.0). Domain drift: 0 unresolved.
  • mise run light-build (Light-builder simulation, SDK v0.1.2): OK.
  • Upgrade path on the emulator: 0.1.0 built from its tag, two Gutenberg Books downloaded and read to a Place at a larger font size, then this build installed over it. Both Books, their Places and the font size survived, and each Book reopened on the same Page.
  • Minified release on the emulator (scripts/emulator-build.sh ./gradlew :tool:assembleRelease, dev-signed, 5.2 MB): starts, opens a Book, turns pages, changes the font, opens Contents and About. No crash.
  • signoff/emulator and signoff/lp3 via mise run ci on the release commit.