Repository navigation
Releases: yarosz/light-reader
Release list
Reader 0.3.2: built on Light SDK v0.2.0
Reader 0.3.2: built on Light SDK v0.2.0, ready for Light's Tool Library. Light builds and signs Tools from a public commit, so this release is the tagged commit. There is no APK here; the Light-signed build comes from Light's Tool Library.
versionName 0.3.2, versionCode 5. light-sdk moves from v0.1.2 to v0.2.0, Light's newest tag.
What changes
- Reader now builds against Light SDK v0.2.0, which Light's Tool Library asks for (#54).
- The keyboard in search and in adding a Catalogue no longer shows a dictation key. The LP3's keyboard never supported dictation, so nothing that worked goes away.
- The app no longer exposes the SDK's old file provider to other apps. Permissions are unchanged.
- Reader now targets Android API 34, the same as the build Light signs. On the LP3 (Android 14) nothing behaves differently.
Upgrading
- Your Shelf, every Place and your font size carry over from 0.3.1. The reading data is unchanged;
schemaVersionstays 1.
Next
- Adding your own EPUBs from a computer through LightOS's Tool Manager, once LightOS on phones supports it. Then illustrations.
Release checks
- Unit and property tests: 596 passed. Domain drift: 0 unresolved.
- Light-builder simulation (
lightbuilder prepare+ unsigned minified release, SDK v0.2.0): OK. - Upgrade path on the emulator: the 0.3.1 APK (target API 36), then this build (target API 34) over it. Android accepted the update, the reading data was untouched and the Shelf renders with its Places.
- Minified release on the emulator: opens, changes the font, turns pages; reading data unchanged.
signoff/emulator(LightOS emulator app from SDK v0.2.0) andsignoff/lp3(LightOS 582) viamise run cion the release commit.
Reader 0.3.1: no "Opening…" flash
Reader 0.3.1: no "Opening…" flash. 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.3.1, versionCode 4. light-sdk stays at v0.1.2, still Light's newest tag.
Opening
- Since 0.3.0 a Book opens in about a tenth of a second, which turned the "Opening…" screen into a flicker. Now the reading view stays blank while a Book opens, and "Opening…" (with "Back to Shelf") appears only once the open has taken 500 ms. Once shown, it stays at least 500 ms, so it never flashes. A tap on the Shelf goes straight to the Page (#52).
- "Couldn't open this Book." and "This Book has no text." still show at once. During the blank first moment, system back still leaves for the Shelf.
Upgrading
- Your Shelf, every Place and your font size carry over from 0.3.0. The reading data is unchanged;
schemaVersionstays 1.
Next
- Illustrations: first the drop caps drawn as an image inside a paragraph, then the editions with images, with line art inverted for the display.
Release checks
- Unit and property tests: 596 passed (589 at 0.3.0). Domain drift: 0 unresolved.
- Light-builder simulation (
lightbuilder prepare+ unsigned minified release, SDK v0.1.2): OK. - Upgrade path on the emulator: this build over the installed one with six Books on the Shelf, five with a Place. Every Place was kept and the Shelf renders.
- Minified release on the emulator: opens, changes the font, turns pages; reading data unchanged.
signoff/emulatorandsignoff/lp3viamise run cion the release commit.
Reader 0.3.0: long Books open at once
Reader 0.3.0: long Books open at once (N6). 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.3.0, versionCode 3. light-sdk stays at v0.1.2, still Light's newest tag.
Opening
- A Book opens on its Page after reading only its package, its tables of contents and the Spine item your Place is in. The rest of the Book comes in behind the Page, and Contents and Progress follow once it has (#50, ADR 0009).
- On a Light Phone III (release build, P90, from the open to the drawn Page): War and Peace 692 → ~126 ms, the King James Bible 730 → ~127 ms, Alice 151 → ~108 ms. A Book that keeps everything in one huge file gains less: a 638 K-character one opens in ~186 ms, a 1.43 M-character one in ~361 ms.
- Until the whole Book is in, the Progress line is blank, Contents opens once it's in, and a turn past the Spine item's edge waits, then turns. The reader's latest action wins: showing the controls drops a waiting turn, and hiding them drops a waiting Contents (#50).
- A Book with a broken Spine item now shows its first Page, then "Couldn't open this Book." once the rest fails to parse. It doesn't retry on resume; reopening from the Shelf does (#50).
Speed, measured (N6)
- ADR 0007's bar holds on the phone with room to spare. On five Books, from a 163 K-character Alice to the 4.3 M-character King James Bible: the first Page at any Place takes 11–45 ms (P90, bar 300), a font change 29–80 ms, and a page turn under 4 ms with no layout work.
- ADR 0009 adds a bar for the whole open: ≤ 300 ms P90 to the drawn Page when the Place's Spine item is ≤ 200 K characters.
- The ~0.9 s that every open seemed to take in earlier measurements was Light's splash screen (held for the Activity's first second), which only test sessions met. A tap on the Shelf can't come before it (#49).
Tooling
scripts/perf.shmeasures release builds (-r), any Place (-i/-o), page turns across a window seam, the main-thread repack, the time to the drawn Page, how long the whole Book takes, and memory. It restores the phone as it found it, including the installed build (#48, #50).scripts/ci.shopens the Book lazily on both devices and checks that the whole Book came in (#50).
Upgrading
- Your Shelf, every Place and your font size carry over from 0.2.0. The reading data is unchanged;
schemaVersionstays 1.
Next
- Illustrations: first the drop caps drawn as an image inside a paragraph, then the editions with images, with line art inverted for the display.
Release checks
- Unit and property tests: 589 passed (555 at 0.2.0). Domain drift: 0 unresolved.
- Light-builder simulation (
lightbuilder prepare+ unsigned minified release, SDK v0.1.2): OK. - Upgrade path on the emulator: this build installed over 0.2.0 with six Books on the Shelf, five with a Place. Every Place was kept and the Shelf renders.
- Minified release on the emulator: opens lazily, changes the font, turns pages; reading data unchanged.
signoff/emulatorandsignoff/lp3viamise run cion the release commit.
Reader 0.2.0: the reading controls
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.fontSizeholds the size in sp, and every save still writes the oldfontStep, 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:uipulls 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.fontSizeandsettings.readingHintDismissed;schemaVersionstays 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/emulatorandsignoff/lp3viamise run cion the release commit.
Reader 0.1.0: a Shelf, Catalogues and Contents
Reader's first release: a DRM-free EPUB reader for the Light Phone III. 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.
Reading
- EPUB reading set in Literata, with tap or volume-key page turns (N1, before PRs; key-up handled in #23).
- A 480 dpi type scale with five font sizes (A− and A+). Your place survives every change (#6, #9).
- Pages avoid ending inside a hyphenated word or on a heading, unless that would leave a Page under 70% full. After a size change, a Page starts on a whole word when that's within a few lines, and stays in its Chapter (#6, #30).
- Each Page is laid out from your place: on the LP3, laying out the first Page takes about 110 ms and a font change about 120 ms, under 200 ms when your place sits at a layout seam (P90, Pride and Prejudice's longest chapter; not counting reading the EPUB itself, which can take seconds for a long Book) (#7, #8, #9).
- The top line names the Chapter. The footer shows the minutes left in it, learned from how fast you read while Reader is open; skimming doesn't count (#24, #29).
- Contents lists every Chapter, marks where you are, jumps to one, and leads back to the Shelf (#22, #26, #27).
- An end page follows the last Page of the text and marks the Book finished. A Book's back matter (Gutenberg's license, colophons) comes after it, reached through Contents (#24, #25, #32).
- Text in divs and tables reaches the Page, and so do a Book's dedications, epigraphs and forewords (#32).
Books and where they come from
- The Shelf: Books you're reading first, most recent on top, then ones you haven't opened, then finished ones. A Book you're reading shows its percent. Edit removes a Book (#16, #24).
- Project Gutenberg and Standard Ebooks' new releases are built in. Add any public OPDS (Atom) Catalogue at an https address. Browse, search, "More", and download straight to the Shelf (#15, #19).
- A Book downloaded from a Catalogue can be downloaded again if its file goes missing (#16).
- "Read" on a Book's page opens it over the Shelf (#28).
- Failures say what went wrong: an address that doesn't exist, no connection, a copy-protected Book (refused), a file that isn't an EPUB (#15, #19, #31).
- Your places, font size and Shelf live in one file on the phone, replaced atomically with a backup, so a relaunch lands on the same Page (#14).
- https only. Every request's User-Agent names Reader and its version, and nothing about you or the phone (#15, #35).
- No accounts, no tracking. Reader goes online only to fetch a Catalogue or download a Book.
- By design: EPUB only, no covers, and no page numbers (your place and the minutes left stand in for them).
Not yet
- Catalogues that need a username and password ("Sign-in isn't supported yet").
- Downloads in the background: a download runs only while Reader is running.
- Next release: hideable reading controls, an About screen, and a smaller font size.
For developers