Download EinkBro
GitHub Releases
Download the latest stable APK directly from GitHub. Multiple architecture variants are available (arm64-v8a, armeabi-v7a, x86, x86_64).
F-Droid
Install from the F-Droid free software repository. Updates may be slightly delayed compared to GitHub releases.
Snapshot / Nightly
Get the latest development build from the CI pipeline. These builds include the newest features but may be less stable.
Installation
- Download the APK for your device architecture (most E-Ink devices use arm64-v8a)
- On your device, go to Settings → Security and enable Unknown Sources (or allow installation from your file manager/browser)
- Open the downloaded APK file and tap Install
- Once installed, open EinkBro and start browsing
Tip: If you're unsure which architecture your device uses, download the arm64-v8a variant first — it works on most modern E-Ink devices including Boox, Kobo (with Play Store), and Kindle (with sideloading).
Changelog
15.14.0
Features
- Redesigned Site Settings dialog with pinned Reset/OK buttons
- Per-site override to force desktop viewport width
- Supernote: dedicated reader for saved EPUB/PDF files; downloads routed to Document/
- In-process open-file chooser replaces the system picker
- Live FAB position switching without activity restart
- Pick toolbar position from a tablet diagram dialog
- Mirrored toolbar side and full-height preview in toolbar config
- Newly inserted toolbar icons appear in the middle and blink
- PDF print zoom scales from page layout width
- Long-press Share icon replays the last-used share target
- Favicon-grid mode for address bar history
Fixes
- Blob-based downloads now work
- Paragraph translation no longer breaks page layout or hits caching errors
- Bookmarks dialog stays open across layout changes
- Supernote saves routed through SAF to avoid scoped-storage crash
- Open-with dialog shown on the main thread
- YouTube caption capture hardened; cleared on SPA route changes
- EPUB image fetch hardened
- PDF saved via SAF picker without going through the system print spooler
- Multitouch swipe handler no longer crashes on pointerIndex
- Captions only move vertically in audio-only mode
- AI chat pages excluded from history
- Translation semaphore always released on error
- GPT_SETTINGS not overwritten when ALL_PREFERENCES is selected for restore
15.13.0
Features
- Per-domain custom CSS and post-load JavaScript overrides
- Agent tools that persist JS/CSS DOM patches per domain
- Hide seldom-used items from the main menu
- Cross-row drag with bottom-first menu layout
- Center YouTube captions in audio-only mode
- URL suggestions extended to Bing/Ecosia/Startpage/Yandex (capped at 4)
Improvements
- Faster menu dialog open via Compose prewarm (drops 300ms alpha-hide)
- Long-press Share icon to copy link (replaces dedicated copy-link tiles)
- Page AI Actions replaces "Chat With Web" tile in the menu
- Touch-area toggles moved into Gestures settings; text labels removed
- Manual promoted to its own settings row
- Translation observer pulls viewport content earlier (rootMargin 150px → 400px)
- Migrated EPUB engine from unmaintained epublib to epub4j
- Renamed dialog labels: "More Settings" and "Enable Pagination"
- Dropped per-site "As Page Up/Down key" feature
Fixes
- Dark mode visibility for AI Task dialog and About update progress
- Duplicate tab when connecting/disconnecting a Bluetooth keyboard
- Pull-to-refresh suppressed when finger lands on inner CSS-scrollable areas
- In-place translation survives SPA re-renders and lazy hydration
- App launcher icon used as bookmark favicon fallback
- Reader mode scopes to the correct article container via JSON-LD
- In-place translation no longer mangles page layout
- Restore gesture bindings lost to obfuscated or trimmed action ids
- Preserve BrowserAction sealed-class hierarchy under R8
15.12.0
Features
- News-anchor TTS template that reads full articles aloud
- Task runner for multi-step browser workflows; surfaced as the first Page AI action
- Free-form agent integrated into Chat With Web for follow-up conversations
- Expose all BrowserActions as gesture bindings
- Configurable status bar for fullscreen / no-toolbar mode
- Per-site translation mode with streamlined translation config dialog
- Per-site configuration for display settings
- Apply locale change without restarting the app (preserves WebView tabs)
- Search functionality in Settings — accepts English search terms regardless of app locale
- "Save as MHT" menu item to save web content as a single .mht file
- Offline error page with retry button and a horse-jump game
- Center-expanded progress bar for vertical toolbar mode
Improvements
- Avoid main-thread hop on every subresource in ad-filter (perf)
- Security, error visibility, listener leak fixes, and API modernization pass
- Decompose BrowserController god interface and introduce typed action dispatch
- Coroutinize BaseWebConfig, eliminate runBlocking, introduce BrowserState
- Extract BrowserConfig, TabConfig, UiConfig from ConfigManager
- Extract DisplayConfigDelegate and split BrowserActivity.onCreate
- Replace WebView data backup with database backup; show receive progress hint
- Group toolbar/status bar settings into sections
- Trim gesture action catalog and flatten single-item categories
Fixes
- Keep hero images in reader mode when wrapped in figure/picture or marked aria-hidden
- Null pointer crash in adblock cosmetic filter lookup
- Prevent gesture settings from resetting on release upgrades
- Force-clear dsd-pending attribute so filter-broken hydration doesn't leave pages blank
- Restore EPUB opening broken by delegate refactor
- WebView collapse and stuck progress bar on vertical toolbar
- Remove divider above the first category in settings search results
- Restore "Select Text" context menu and dismiss action mode before ebook pagination
- Error-page game requires explicit start and pauses when the tab/app is hidden
15.11.1
Features
- Ebook touch mode — tap to turn pages directly in WebView with native touch interception
- WebView login data (cookies & storage) included in backup/restore
- OpenAI/Gemini in-place translation support
- Auto-hiding top header with history/menu buttons in chat UI
- Improved web content loading speed with caching optimizations
- Faster app startup and WebView creation performance
Improvements
- Major architecture overhaul — extract delegates from BrowserActivity, fix DI, migrate DB, split interfaces
- Break up BrowserUnit and HelperUnit into focused helpers
- Extract 5 sub-configs from ConfigManager (1135 → 811 lines)
- Extract WebViewJsBridge from EBWebView
- Move ebook touch pagination from JS injection to native view interception
- Simplify update progress UI to show only percentage
Fixes
- Chat with web uses correct webview reference after creating new tab
- Migrate data from old Ninja4.db to Room on upgrade
- Crash on launch due to uninitialized ebWebView in TabManager
- Crash on startup due to Kotlin init order in BaseWebConfig
- Restore long-press text selection when ebook touch pagination is disabled
- Remove animations from menu/bookmark dialogs to reduce flicker
- Harden video autoplay blocking with multi-layer approach
- Prevent screen power cycling when starting TTS on E-ink devices
- Snapshot update stuck state, install screen not showing, and extraction progress
15.10.0
Features
- Share/receive app data over local network
- Selective backup/restore with category chooser
- Video autoplay toggle in Behavior Settings
- E-ink image optimization for web resources (JPEG/PNG/WebP)
- Vertical toolbar mode (left/right side positioning)
- Font folder browser with preview and search
- Anchor toolbar dialogs horizontally near the clicked icon
- Preserve code snippet styling in reader mode when keepExtraContent is on
- Option to preserve MathJax/KaTeX math in reader mode
- Make e-reader toolbar actions configurable, separate from browser toolbar
- GPT type icon indicator in context menu for GPT actions
- Ad-block scriptlet injection with crash guards
Improvements
- Redesign GPT result history UI with card-style layout
- Group behavior settings into logical sections with dividers
- Show vertical preview in toolbar config when in vertical mode
- Use landscape toolbar config for vertical toolbar mode
- Improve tab count icon with Canvas slash, support 10+ tabs
- Convert BookmarkEditDialog to ComposeDialogFragment
- Remove deprecated translation modes (Onyx, Google Text, Papago Text/URL/Dual)
- Remove bookmark sync URL feature
Fixes
- Show audio-only button on YouTube SPA navigations
- Preserve dark detail in e-ink image processing
- Fix e-ink image processing broken on Instagram and CDN-served images
- Make progress bar thinner (2dp) in vertical toolbar mode
- Reposition progress bar to match toolbar position in vertical mode
- Prevent ConstraintSet crash in vertical toolbar mode
- Reload toolbar icons when position changes
- Improve download reliability with User-Agent, cookie auth, and data URL support
- Wrap injected touch-tracking JS in IIFE to fix libbyapp.com
15.9.0
Features
- Audio-only mode to hide video while keeping audio and captions
- Read-it-later feature replacing save-as-archive
- MediaStyle notification with play/pause/stop/close for TTS
- Add EinkBro identifier to saved EPUBs and editable TOC with drag-and-drop
- Cache translated images to disk and skip delay for cached results
- Long-click translate icon to batch translate all remaining images
- Show translated image as overlay on top of original image
Improvements
- Combine open/save EPUB menu items into single tabbed dialog
- Use GPT icon for Page AI toolbar action to avoid confusion with EPUB
- Compact BookmarkEditDialog title field and inline folder row
- Enhance TwoPaneLayout divider with elegant pill-shaped drag handle
- Remove all remaining layout XMLs, convert to Compose/programmatic views
- Remove all AbstractComposeView wrapper classes
- Update README with organized features and fresh screenshots
Fixes
- Detect video sites by URL so audio-only icon shows on first load
- Tab list border now correctly highlights only the active tab
- Improve dual caption reliability with proper cookies and User-Agent
- Prevent pull-to-refresh from intercepting two-finger swipe gestures
- Toolbar position switching crash when moving to top
- Improve text translation observer robustness and JS escaping
15.8.0
Fixes
- Page info and jump-to-top for inner scroll containers
- Generic JS-based pagination for inner scroll containers
- Crash when opening EPUB3 files from file explorer
- Pull-to-refresh only triggers at top of page
- Prevent pull-to-refresh from intercepting two-finger gestures
- Polyfill GitHub's include-fragment for older WebView versions
- Improve download filename parsing with proper RFC 5987/6266 support
- Skip filename dialog when content-disposition provides exact name
- Sort history URLs newest-first in URL bar suggestions
- Request persistent write permission for EPUB file URIs
- Update Edge TTS to use Chromium 143 headers and MUID cookie