Repository navigation
Theorem 1.6.1
Pre-releaseFixed
- Shelf actions on phones — Align Add, view and More actions to the right so the shelf dropdown stays on screen and its actions remain reachable.
- Settings help on phones — Add a Help tab for diagnostics, release downloads and issue reporting; show desktop update checking only where it works. Preserve ZIP bytes when log export uses Tauri's byte-array response fallback.
- Edited covers and metadata stay edited after sync — Merge book details and reading position independently, version cover replacements and removals, and publish the first cover edit after sync starts. Stale peer copies cannot restore an older cover or a cleared author, rating or series. Keep the search index aligned with retained metadata.
- Delete automatic copies — Remove individual automatic database backups from Data & Storage after confirming the date and size, without changing the current library or other copies.
Features & Enhancements
-
Android reminder broadcast validation — Reschedule reminders only for the five supported system actions; ignore missing, unknown and lookalike broadcast actions before accessing alarms or preferences.
-
Android security analysis — Compile our maintained Kotlin plugins for CodeQL using the locked Tauri API, without a native build or APK packaging; stop excluding plugin sources as vendored code.
-
Release cache isolation — Remove persistent Cargo/pnpm caches from signed release builds, reject tags outside main, and remove the separate release dry-run workflow.
-
Reliable local option clicks — Keep native select controls clear of reading-reminder toasts during release verification, retaining the real click and persistence assertions.
-
Local E2E release verification — Run the complete native E2E suite locally before tagging. GitHub keeps unit tests, lint, typechecks, security scans and release builds without hosted E2E jobs, nightly schedules or native test-binary builds.
-
ZIP maintenance patch — Update to zip 9.2.1, including its writer cleanup and getrandom build fix.
-
Follow-up dependency updates — Update translation rendering, icons, logging, Unicode widths and ZIP parsing.
-
Sync dependency compatibility — Keep docs and blobs versions aligned until their coordinated upgrade is available.
-
Workflow efficiency — Run automatic CI once on main, select relevant gates without losing coverage after cancellations, share verified frontend assets with native checks, and share one frontend/icon build across release platforms. Workflow and helper shell checks protect job selection; release jobs require installers and signatures before publication. Manual releases use the exact requested tag; patch releases are marked prereleases. Docs-only updates no longer redeploy the product landing page.
-
Release branch maintenance — Pull requests and manual CI check
1.6.1, and Dependabot targets the active release branch. -
Dependency maintenance — Update the JavaScript, Rust and CI dependencies, preserve hotspot discovery in the mDNS upgrade, and adapt neural speech to the new ONNX environment API while retaining compatibility with installed runtimes.
-
Updated screenshots and user guides — Fresh public-domain books and cultural feeds illustrate the current desktop and phone layouts, with a placement guide, reading rhythm, attached notes and optional navigation.
-
Optional Discover and Feeds tabs (#173) — Settings → General can hide either destination from the phone bottom bar and desktop sidebar on each device. Remaining tabs fill the space; restoring a tab retains its data and keyboard shortcuts keep their existing numbers.
-
Audiobook media controls — Supported system controls show artwork, playback state and position, and can move between chapters.
-
Generated audiobook metadata — Opus files embed book and chapter tags, including large chapter lists, with atomic cancellation-safe finalization.
-
Terminal chapter names — The TUI reads EPUB 3 navigation or EPUB 2 NCX chapter titles in spine order and retains numbered fallbacks.
-
Statistics share footer — Share cards are branded “Theorem”; recently read covers stay within a three-column footprint so the footer remains visible with fewer books.
-
Daily Review stays dismissed — Dismissal now survives app restarts for the local day; completion updates immediately and remains complete after annotation changes. The fullscreen overlay renders outside Library scrolling/containment, preventing clipping and stray scrollbar tracks, and a fresh day resets it while the app stays open.
-
Cover images from URLs — Desktop and mobile download and validate cover images in Rust, avoiding WebView CORS restrictions. The editor blocks Save while loading, ignores stale results, and preserves the previous cover after failure.
-
Readable one-time onboarding — Reading setup and the optional guide share a responsive layout with explicit page-width tokens, app illustrations, and persistent footer actions. Sidebar and Library control icons share 16px Lucide glyphs and bare-button styling.
-
Existing reading history and XP — Existing readers receive daily XP from retained reading activity, including profiles that already enabled a rhythm. Fractional minutes are supported and repeated backfills preserve awards. Library view and filter icons are larger and use bare icon controls, with rows and funnel glyphs. Statistics has equal-sized level badges, a weekly completion check and explicit scheduled goal changes, brighter earned achievements, and icons in place of emoji.
-
Reading rhythm and levels — Choose a flexible weekly reading goal, see a compact read-only level journey in Statistics, and earn lasting XP and numbered levels. Weekly goals are edited in Settings. Goals start with a suggested four days per week; five reading minutes qualify a day. Daily goals and streaks stay separate. Upgraded devices merge reading contributions and awards without duplication; older statistics remain compatible.
-
Reading-first setup — A short optional-goal setup leads to Library or Discover, with the full feature guide available on demand. Completed steps survive restart. Mobile navigation keeps its labels and shared destination order. Reading-day selectors use the app dropdown. Library retains its earlier action toolbar; selection starts in the book context menu and folder management lives in Settings. The first selected book is retained when entering selection mode.
-
Accurate reading intervals — Short sessions retain fractional minutes, midnight sessions count toward the correct local dates, hidden readers do not start a timer, and clock corrections no longer change elapsed reading time. Failed native records persist for safe retry. Fractional durations display without long decimals, and successfully opening a book adds a continue-reading cue to its existing card before a page turn.
-
Replay-safe reading records — Added an immutable native reading-chunk API so retrying a recorded interval cannot add its minutes twice. The legacy additive session command remains supported.
-
Daily Review Card Stack in Library — Upgraded the static Daily Highlight banner into an interactive physical 3D card deck embedded at the top of the Library feed. Controlled by
settings.showDailyHighlight("Daily Review"), the deck resurfaces daily reflections with stacked card layers, tap-to-advance, drag-tilt, fling gestures, source jumping, and session dismiss. Once reviewed or dismissed, it collapses cleanly to leave the book grid unencumbered. -
Swipe Actions on RSS Articles — On touch screens, swiping an article row right marks it read and swiping left deletes it with an Undo toast (
SwipeableArticleItem), for one-handed triage in Feeds. -
Bookmark Ribbon Cards and a Physical Card Deck — Bookmarks in the Workbench are shown as ribbon cards with their page or position instead of empty quote blocks, and the review deck now looks like a physical card deck with visible layers underneath.
-
Refocused Workbench Workspace — Workbench is refocused exclusively on deep search, filtering, and browsing across Highlights, Notes, Vocabulary, and Bookmarks without daily takeover interruptions, while retaining an on-demand deck Card View toggle (
viewMode === "cards"). -
Library List View Details (#159) — Enhanced the library list view row cards with dedicated format badges, series and volume index annotations, compact progress bar visualization, and relative date indicators for last read and added dates, maintaining a fixed 96px virtualized row height.
-
CLI Scripting & Headless Follow-ups (#162):
- Added
--data-dir <path>global option andTHEOREM_DATA_DIRenvironment variable support to run headless commands against arbitrary libraries, external drives, or testing sandboxes without modifying default application data paths. - Added
theorem highlights export [--format md|json|csv] [--book <id>] [--since <date>] [--out <path>]for scripted Obsidian markdown, JSON, or CSV highlights and notes extraction suitable for external cron jobs and PKM tools. - Added
theorem highlights card [<id>] [--book <id>] [--theme dark|sepia|tinted|light] [--format square|story] [--out <path>] [--out-dir <dir>] [--no-note]for scripted headless Bauhaus highlight share card generation as standalone PNG or vector SVG images with automatic typography fallbacks and design tokens. - Added
theorem feeds import <file.opml>andtheorem feeds export [--out <file.opml>]for importing and exporting RSS/Atom subscriptions via standard OPML format.
- Added
-
Connected Library Folders Management — Added a dedicated Library Folders section in Settings (
Settings → Storage → Library Folders) to connect, rescan, and manage external folder roots on desktop and mobile. Integrated folder filtering and book counts directly into the Library filter panel with safe folder disconnect workflows.
Bug Fixes
-
CI screenshots — Preserve WebKit presentation updates with Mesa software compositing, and cancel stalled WebDriver requests instead of waiting for a five-minute header timeout. Keep the real UI and screenshot assertions.
-
Library after Settings — Returning from a scrolled Settings page resets the shared outer viewport so Library is fully visible again, while preserving the book grid’s own scroll position.
-
Attached notes in Workbench (#170) — Notes now includes highlights with attached note text, including existing saved annotations. Counts update when notes are added, edited or cleared, and highlights remain available in Highlights. Real-app coverage verifies reader note saving and both kinds of notes after restart.
-
Nero audiobook chapters — M4B attachments recognize Nero
chplchapters when QuickTime chapters are absent. -
Generated audiobook checksums — Ogg pages use the correct checksum, verified by an independent reader.
-
Terminal Unicode truncation — Column truncation respects CJK display widths, combining marks and joined emoji.
-
Offline laptop hotspots — Local IPv4 discovery follows network interfaces as they appear and disappear, allowing paired devices to find each other on a laptop-hosted hotspot that is not the default route, without an internet relay.
-
RSS Channel Title Deduplication — Fixed an XML parsing bug in the RSS engine where an RSS 2.0
<channel><image><title>block duplicated or overwrote the parent feed title. -
EPUB Note Saving — Fixed an issue where clicking "Add Note" from the highlight color picker triggered a delayed dismissal that cleared selection context, preventing the "Save" button from saving the note.
-
Mobile Smart Shelf Modal Scrolling — Restructured modal layout with an internal flex column container so the shelf form and conditions list scroll properly within the viewport on mobile devices.
-
Workbench PDF Note Navigation — Opening PDF documents from freehand notes and annotations in the Workbench now jumps directly to the target annotated page instead of defaulting to the first page.
-
Light Theme Switching — Ensured explicit light theme selections override OS system dark mode styles and color schemes, preventing unintended dark overrides in EPUB and app reader views.
-
Mobile Library Card Overlap (#164) — Fixed an issue where switching between tabs on mobile caused virtualized library book cards to collapse to zero height and stack on top of each other upon returning to the Library.
Download & install
| Platform | Download |
|---|---|
| Windows (x64) | Theorem_1.6.1_x64-setup.exe |
| Windows (x64, MSI) | Theorem_1.6.1_x64_en-US.msi |
| macOS (Apple Silicon) | Theorem_1.6.1_aarch64.dmg |
| macOS (Intel) | Theorem_1.6.1_x64.dmg |
| Linux (Debian/Ubuntu) | Theorem_1.6.1_amd64.deb |
| Linux (any) | Theorem_1.6.1_amd64.AppImage |
| Android (arm64, most phones) | app-arm64-release.apk |
| Android (32-bit arm) | app-arm-release.apk |
| Android (x86_64 emulator) | app-x86_64-release.apk |
| Android (x86 emulator) | app-x86-release.apk |
Linux one-liner: curl -fsSL https://raw.githubusercontent.com/Fundaments-Work/Theorem/main/scripts/install-linux.sh | bash
Desktop builds auto-update in place (Settings → Help → Check for Updates). Android updates are manual unless installed via F-Droid.