Three WebView setup paths exist in the app. MyApplication.kt already wraps
setWebContentsDebuggingEnabled in 'if (BuildConfig.DEBUG)'. The other two
paths were missing the guard:
- MainActivity.onCreate calls WebView.setWebContentsDebuggingEnabled(true)
unconditionally at the end of onCreate. On a release build that leaves
chrome://inspect attachable from any USB-connected machine for any
WebView the app spawns later. CWE-489.
- MathMLRenderer.setupWebView does the same thing before constructing
the renderer WebView. Same exposure.
While in MathMLRenderer, drop settings.allowFileAccess = true. The
renderer only ever loads file:///android_asset/MathML-template.html, and
the android_asset scheme is permitted on every supported Android version
even when setAllowFileAccess(false) is in force. The flag is dead and
the WebView is set up with javaScriptEnabled = true + a JS bridge, so
leaving it on widens the surface for no benefit.
ChapterWebView intentionally keeps allowFileAccess = true because the
custom-font path renders @font-face src: url('file://<path>') against
the user-picked font file.
|
||
|---|---|---|
| .github | ||
| .idea | ||
| app | ||
| desktopApp | ||
| docs | ||
| fastlane/metadata/android/en-US | ||
| gradle | ||
| shared | ||
| spotless | ||
| .gitattributes | ||
| .gitignore | ||
| build.gradle.kts | ||
| CLA.md | ||
| CONTRIBUTING.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Episteme Reader
A modern, offline‑first, privacy‑focused document & e‑book reader for Android, built with Kotlin and Jetpack Compose.
Overview
Episteme Reader is a comprehensive, customizable reader for documents and e-books on Android. It features a modern Jetpack Compose UI, powerful reading tools, and extensive theming.
To best serve different user preferences regarding privacy and network usage, Episteme Reader is available in three distinct editions:
- PlayStore Version: The full-featured release which includes proprietary code and features.
- OSS Version (GitHub/F-Droid): A fully open-source build.
- OSS Offline Version (GitHub): A strictly offline build with network permissions completely removed.
Feature Comparison
📚 Supported Formats
| Feature | PlayStore | OSS | OSS Offline |
|---|---|---|---|
| Documents: PDF, DOCX, ODT/FODT | ✅ | ✅ | ✅ |
| E-books & Text: EPUB, MOBI, AZW3, FB2, MD, HTML, TXT | ✅ | ✅ | ✅ |
| Comics: CBZ, CBR, CB7 | ✅ | ✅ | ✅ |
| View-Only: CSV, TSV, JSON, XML, Logs, Code Files | ✅ | ✅ | ✅ |
📖 Core Reading Experience
| Feature | PlayStore | OSS | OSS Offline |
|---|---|---|---|
| Display Modes: Paginated & Vertical Scroll | ✅ | ✅ | ✅ |
| PDF Multi-Tab Reading & Reflow | ✅ | ✅ | ✅ |
| PDF Annotations: Ink (Pen, Highlight, Erase) & Text | ✅ | ✅ | ✅ |
| App-wide Customization & Reader Theming | ✅ | ✅ | ✅ |
| Custom Fonts: Local Import (TTF and OTF) | ✅ | ✅ | ✅ |
| Typography Control | ✅ | ✅ | ✅ |
| Auto-Scroll & Musician Mode | ✅ | ✅ | ✅ |
| System Text-to-Speech (TTS) | ✅ | ✅ | ✅ |
⚙️ Advanced & Network Features
| Feature | PlayStore | OSS (F-Droid) | OSS Offline |
|---|---|---|---|
| Local Folder Sync & Library Management | ✅ | ✅ | ✅ |
| Download Google Fonts | ✅ | ✅ | ❌ |
| OPDS Catalog Support | ✅ | ✅ | ❌ |
| PDF Bubble Zoom Magnifier | ✅ | ❌ | ❌ |
| ML Kit OCR (Scanned PDF Text Selection) | ✅ | ❌ | ❌ |
| Cross-Device Cloud Sync | ✅ | ❌ | ❌ |
| AI Tools (Summaries, Story Recap, Dictionary) | ✅ | 🔜 | ❌ |
| Cloud Text-to-Speech | ✅ | 🔜 | ❌ |
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
ossDebugorossOfflineDebugvariant, or - Build from the command line:
./gradlew assembleOssDebug
The APK will be generated at:
app/build/outputs/apk/oss/debug/Episteme-oss-v{version}-oss-debug.apk - Open in Android Studio and run the
Open Source Libraries
Powered by the Android OSS ecosystem:
- Core & UI: AndroidX, Jetpack Compose, Kotlinx Serialization
- Document Engines: PdfiumAndroidKt (PDF), libmobi (MOBI/AZW3)
- Parsers: Jsoup (HTML/EPUB), Flexmark (Markdown)
- Media & Image Loading: Coil, Media3 (ExoPlayer)
- Utilities: Room (Database), Timber (Logging)
Contributors
| Contributor | Contribution |
|---|---|
| Testing & QA | |
| Translation (German) | |
| Translation (Turkish) | |
| Translation (Arabic) | |
| Translation (Russian) | |
| Translation (French) |
Translations
Help translate Episteme Reader into your native language! Weblate is used to manage localization.
License
Licensed under the GNU Affero General Public License v3.0 (AGPL‑3.0). See the LICENSE file.
Support the Project
Help make Episteme Reader even better:
- ❤️ Support on Patreon
- ⭐ Star the repository to help visibility
- 🐞 Report bugs or request features via GitHub Issues
- 💬 Share feedback in Discussions
- ✍️ Leave a review on the Google Play Store
- 📣 Tell a friend!

