Repository navigation
ApriReader 1.5.0
Desktop-only release. The Android build has been removed; ApriReader is a Windows reader again.
Fixed
- Blank reader page. Page measurement advanced from inside its own layout effect, so a book with more than roughly fifty chapters exhausted React's nested update limit and tore the reader down. The crash fallback then inherited the reader's four-row grid, which placed its
<main>in the three-pixel progress row and clipped the recovered text out of sight. - Chapter names showing as "Section 1". Titles are now read from styled title wrappers and from
h4–h6, so books converted from FB2 are named correctly. A horizontal rule is no longer mistaken for a heading. - Books missing from the file dialog. The picker carried Android-only options on the desktop.
- A full library could be replaced by an empty one. Recovery restored the most recent intact backup even when it held no books; it now restores the backup that recovers the most.
Added
- Footnote and cross-reference links. Markers such as
[85]are clickable, following one remembers your place, and a single click returns to it. Links are stored beside the block text as ranges rather than inside it, so existing highlights and notes keep addressing the same characters. - A watched folder can be forgotten. The books it imported stay in the library.
- The table of contents is rendered in batches, so a book with very many sections no longer freezes the window.
- Links that leave the book are reported rather than handed to the system browser, matching the deliberately narrow opener allow-list.
Removed
- The unfinished Android build: mobile audio, managed document import, the system back button, and the mobile capability flags.
tauri-plugin-fs, which no longer had a consumer or a granted permission.
Verification
ApriReader_1.5.0_x64-setup.exe
f2f096966b06bdcf61512fa33ed55aa810e6f319a9ab862e951511b923d6385b
This download is not code-signed. Windows SmartScreen will warn on first
run. As stated in the code signing policy,
ApriReader artifacts stay explicitly labelled as unsigned until the SignPath.io
open-source certificate is approved and a release passes that policy's
verification. Check the SHA-256 above before installing.
Built from 81fd962 on main. Gate: 120 Rust tests, 113 frontend tests, tsc, eslint --max-warnings 0, prettier, cargo fmt, cargo clippy -D warnings, release audit, SBOM, and third-party licence manifests.