Material You 3 eBook/audiobook reader — Episteme fork + bookshelf-api/ABS
* Added support for external dictionary apps and a dictionary settings sheet. * Refactored external dictionary integration and improved package visibility - Updated `AndroidManifest.xml` with `<queries>` for common dictionary apps and intent actions (`PROCESS_TEXT`, `SEARCH`, `SEND`) to support Android 11+ package visibility. - Refactored `ExternalDictionaryHelper` to streamline dictionary discovery using `Intent.ACTION_PROCESS_TEXT` and `colordict.intent.action.SEARCH`. - Added a package blocklist in `ExternalDictionaryHelper` to filter out system services (e.g., Samsung Pass, GMS) from dictionary lists. - Simplified `launchDictionary` logic to prioritize `PROCESS_TEXT` intents. - Fixed a bug in `PdfViewerScreen` to only show the dictionary upsell dialog when `useOnlineDictionary` is enabled. * Refactored dictionary settings into a dialog and updated dictionary selection logic. - Renamed `DictionarySettingsSheet` to `DictionarySettingsDialog` and converted it from a bottom sheet to a formal dialog. - Redesigned the dictionary settings UI with a clearer distinction between AI and external app modes. - Added a "Search" option to the external dictionary list that triggers a web search. - Updated `ExternalDictionaryHelper` to include a package blocklist and support for generic web search intents. - Simplified `PdfHelper` by removing Pro user checks for the "Dictionary" action. - Updated icons for dictionary settings across the EPUB and PDF readers. |
||
|---|---|---|
| .github | ||
| app | ||
| docs | ||
| fastlane/metadata/android/en-US | ||
| gradle | ||
| spotless | ||
| .gitattributes | ||
| .gitignore | ||
| build.gradle.kts | ||
| CLA.md | ||
| CONTRIBUTING.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Overview
Episteme Reader is an offline-first application designed for reading various document formats. It leverages native Android technologies and C++ libraries to provide a performant reading experience with customization capabilities.
Note: This is the Open Source (OSS) edition of Episteme Reader. The version available on the Google Play Store is built from this core but includes additional proprietary features.
Features
Supported Formats
- Documents: PDF
- E-books: EPUB, MOBI, AZW3
- Text: MD, TXT, HTML
PDF Features
- Viewing Modes: Vertical Scroll and Paginated view.
- Ink Annotations: Draw directly on pages using Pen, Highlighter, and Eraser tools.
- Text Annotations: Add text notes anywhere on the page using system or custom fonts.
E-Book Features
- Parsing: Native parsing for MOBI/AZW3 via
libmobiand EPUB viaJsoup. - Customization: Adjust font size, line spacing, and margins.
- Custom Fonts: Support for importing user-provided font files (
.ttf,.otf).
General
- Text-to-Speech (TTS): Read documents aloud using the system TTS engine.
- File Management: Built-in library organization.
Architecture
- UI: 100% Jetpack Compose (Material3).
- Architecture: MVVM with Unidirectional Data Flow.
- Database: Room (SQLite) for metadata and annotations.
- PDF Engine:
pdfium-android(Native PDFium bindings). - EPUB Engine: Utilizes standard
WebViewfor vertical scrolling mode, and a custom rendering engine for paginated mode. - Mobi Engine: Custom JNI bindings to
libmobi.
Building from Source
-
Clone the repository:
git clone https://github.com/Aryan-Raj3112/episteme.git cd episteme -
Build: Open in Android Studio and run the
ossDebugvariant../gradlew assembleOssDebug
Open Source Libraries
This project is made possible by the Android open-source ecosystem:
- Core & UI: AndroidX, Jetpack Compose, Kotlinx Serialization
- Document Engines: PdfiumAndroidKt (PDF), libmobi (MOBI/AZW3), Google WOFF2 (Fonts)
- Parsers: Jsoup (HTML/EPUB), Flexmark (Markdown)
- Media & Image Loading: Coil, Media3 (ExoPlayer)
- Utilities: Room (Database), Timber (Logging)
License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for details.
