* Centralize library management logic and introduce support for plain text and HTML formats
* Centralize library management logic and introduce support for plain text and HTML formats
* Expand unit test coverage for library state management, UI models, and MainViewModel features.
* Add comprehensive unit tests for PDF reader core logic, preferences, and data persistence
* Add unit tests for EPUB parsing, content loading, search functionality, and reader JavaScript bridges.
* Add unit tests for OPDS parsing and Smart Collection engine, and integrate Kover plugin
* Add comprehensive unit tests
* Centralize library snapshot serialization in the `shared` module and improve filtering and sorting logic.
* Implement text selection, highlighting, and reading state persistence for PDF and EPUB engines in desktop version
* Folder import support for desktop app
* Introduce Smart Shelves with rule-based filtering in desktop version
* Implement shared EPUB annotation serialization and highlight rendering
* Centralize file type capabilities and platform-specific support logic
* Refactor reader state management to use a central reducer
* Implement customizable reader toolbar and advanced formatting settings in shared
* Implement locator-based navigation and customizable highlight palette for desktop app
* Enhance reader customization and expand search functionality in desktop app
* Redesign reader settings and tools into a tabbed control panel in desktop app
* Enhance reader navigation and highlight precision in desktop app
* Implement bidirectional position synchronization and dynamic highlights in the desktop reader
* Implement shared state management and enhanced search for the PDF reader in desktop app
* Add vertical scroll support to the desktop PDF reader
* Implement ink, text, and eraser annotation support in desktop PDF viewer
* Implement PDF bookmarks, Table of Contents, and annotation editing in desktop app
* Implement link handling and navigation for PDF and EPUB readers in desktop app
* Implement PDF jump history for navigation in desktop app
* Enhance PDF ink rendering and annotation capabilities in desktop app
* Implement advanced PDF text annotations with inline editing and rich styling in desktop app
* Add move handle and movement logic for PDF text annotations in desktop app
* Implement local folder synchronization and metadata sidecar support in desktop app
* Implement book metadata extraction and drag-and-drop import for Desktop
* Implement dynamic and custom app theme management for desktop
* Introduce canonical PDF annotation codec and support for multi-segment highlights
* Implement rich text editing and pagination support for the PDF reader in desktop app
* Improve PDF rich text pagination, synchronization, and observability in desktop
* Hide trailing structural page breaks in rich text editor
* Implement a unified JVM book loader and expand supported formats on Desktop
* Add comic archive support for Desktop and enhance MOBI parsing
* Implement shared OPDS catalog support and UI for Android and Desktop
* Improve native WebView lifecycle and surface transition management on Desktop
* Enable Compose Swing interop blending and simplify Desktop WebView management
* Integrate BYOK AI features and Cloud TTS for desktop
* Enhance Desktop TTS with streaming audio and improved secure storage for AI key
* Implement scoped Cloud TTS with synchronized highlighting for EPUB and PDF in desktop app
* Implement custom font management and utility screens in desktop app
* Implement PDFium-based PDF annotation export
* Remove PdfBox dependency and standardize PDF export via Pdfium
* Implement local audio caching and playback controls for Gemini Cloud TTS in desktop app
* Implement reader themes and custom texture support in desktop app
* Redesign non-reader UI with responsive navigation and enhanced library management in desktop app
* Introduce ReaderWorkspaceShell to unify EPUB and PDF reader layouts in desktop app
* Exclude manual-only files from automated sync and import
* Implement customizable Text-to-Speech (TTS) word replacements
* Optimize reader performance with persistent layout caching and decoupled theme rendering
* Improve position restoration during reader reconfiguration in epub pagination
* Use independent thickness for eraser tool and stylus override
* Add performance and stylus debugging logs
* Refactor and decouple UI models from `MainViewModel`
* Refactor library state management and projection logic
* Implement desktop shell using Compose Multiplatform
* Implement desktop shell using Compose Multiplatform
* Implement desktop shell using Compose Multiplatform
* Introduce ReaderEngine and enhance EPUB reader features in windows app
* Move core paginated reader logic to a Kotlin Multiplatform `shared` module and introduce experimental desktop support.
* Implement PDF rendering and text extraction for desktop using Pdfium
* Add `NonReaderScreens.kt` and UI dependencies
* Refactor and centralize library state management and models to improve cross-platform consistency
* Implement JSON persistence for desktop library and enhance library management features including shelf CRUD, tagging, and metadata editing
* Implement PDF annotation system and enhanced zoom controls for the desktop viewer
* Implement WebView-based EPUB rendering for desktop using CEF and embedded resources
* Optimize UI state projection, navigation state handling, and main screen pager performance
* Implement Bring Your Own Key (BYOK) support for AI features in OSS version
* Support Gemini-based Cloud TTS with BYOK support for OSS builds
* Refactor table cell image sizing in `PaginatedReader` and improve `MobiParser` native library loading and error handling.
* crash fixes
* Enhance navigation stability with lifecycle-aware safety checks and update `navigation-compose` to 2.9.6
* Implement dynamic bottom padding for the page info bar to account for device rounded corners
* Implement bidirectional jump history navigation and replace the jump-back pill with a dedicated `PdfJumpHistoryBar`
* Optimize PDF tiling performance and refine pan-and-fling gesture handling
* Implement customizable toolbars with drag-and-drop reordering and placement for PDF and EPUB readers
* Updated UI for customize toolbar
* Refine drag-and-drop reordering and section assignment for PDF and EPUB reader controls
* restructure PDF viewer UI component hierarchy to fix verifier crash
* Implement separate text dimming factors for light and dark themes
* Synchronize Pdfium access and improve resource lifecycle safety across Kotlin and native layers
* Enhance image alignment in paginated and EPUB readers through anchor detection and style-based positioning
* Centralize file type resolution logic and implement HTML sanitization during import
* Introduce vertical margin customization and configurable progress bar positioning
* texture support in epub reader
* Enhance TTS session management, progress tracking, and diagnostic logging
* Optimize library state projection and folder synchronization performance by refactoring collection lookups and refining metadata extraction logic.
* Refine TTS page mapping for PDF and overhaul TTS control UI
* Implement natural session completion logic in `TtsPlaybackManager` for cloud tts
* Replace Snackbar with `CustomTopBanner` for notifications in `PdfViewerScreen`
* Refine TTS playback continuity across PDF pages and improve state management for session transitions
* Implement global texture transparency and enhance textured theme support across PDF and EPUB readers.
* Update reader themes and improve texture rendering in page animations, EPUB UI, and immersive mode
* Add Support Project screen
* Optimize library performance via projection caching, batch database updates, and scoped folder synchronization.
* Enhance folder synchronization with fallback query mechanisms and refactor annotation sidecar importing logic
* Bump version to 1.0.47 (51)
* Remove custom-onnxruntime-arm64.aar
* Refactor remaining, hardcoded UI strings into localizable resources and added French and Russian to language list
* Fix background auto-advance for Text-to-Speech (TTS)
* add a UI trigger for demo annotations
* Implement internal link navigation
* Simplify bottom padding logic in `EpubReaderScreen` for vertical scroll mode
* Add support for Calibre metadata
* Implement advanced library management with Room-backed collections, tags, and smart rules.
* Display book series information in book details and remove tags from home screen
* Implement zoom reset functionality in PDF viewer
* Add a "Pages" thumbnail view to the PDF navigation drawer
* Implement jump-back navigation in PDF viewer
* MainViewModel: disable FolderSyncWorker, add log export, and enhance PDF position logging
* Replace Gson with Kotlin Serialization in SmartCollectionEngine
* Implement ONNX-based speech bubble detection
* Implement speech bubble detection in PDF viewer
* Implement "Smart Comic Zoom" feature for PDF manga/comic reading
* Implement reader session persistence and restoration in `MainViewModel`
* Add tap-to-turn page feature to PDF viewer
* Improve book cache management and recovery
* Refactor top overlay padding logic in `PdfViewerScreen`
* Implement stylus eraser support in PDF reader
* Refactor ReaderTextFormatPanel to use ModalBottomSheet and add new formatting controls
* Introduce a customizable horizontal margin setting for the EPUB reader
* Refine folder sync and metadata handling for better conflict resolution and stability.
* Introduce user-adjustable image scaling for the EPUB reader
* Use maxWidthPx as default width fallback for blocks
* Improve cross-page text selection and header styling in the paginated reader
* Refactor speech bubble detection and UI to support segmentation masks and interactive scaling
* Improve speech bubble detection masking and rendering quality
* Update ONNX speech bubble detector to use `.ort` model and optimize inference
* Improve pagination accuracy
* Implement hierarchical folder navigation for the library.
* Refactor library item layout for improved space efficiency
* Add support for browsing and downloading Google Fonts
* Persist library landing state and add shelf search functionality
* Fix base tts sample.
* Move SpeechBubbleDetector to main source set and update ONNX dependency
* Implement a "locate" feature and improve synchronization for TTS (Text-to-Speech) playback across EPUB and PDF readers.
* Refine TTS synchronization and voice management in the EPUB reader
* Adjust OCR checks for OSS flavor and optimize external dictionary intent flags
* Add "Locate" button to PDF drawer's pages tab and move the page number to bottom right of thumbnail
* fix various crashes
* Refactor SpeechBubbleDetector into product flavors
* Implement speech bubble detection caching and background prefetching
* Implement on-demand download for Bubble Zoom ML model
* Add smooth animation for PDF speech bubble expansion
* fixes#252
* hide Google Fonts option, in FontsScreen, for offline variant
* Bump version to 1.0.46(46)
* Implemented ML-based comic panel detection and a panel popup viewer.
* Optimized `ComicPanelDetector` for performance and memory efficiency.
* Optimized comic panel detection performance by introducing a dedicated single-thread dispatcher for ML tasks, replacing mutex-based synchronization.
* Refactored system UI handling and layout padding in `PdfViewerScreen`.
* Refactor `PdfViewerScreen.kt` by extracting components and logic into specialized files.
* replace hardcoded padding with dynamic header height and adjust IME layout logic
* Improve `PdfTextBox` interaction and visual consistency during zoom and pan.
* improve PDF text box dragging and scaling behavior across zoom levels
* optimize color scheme calculation using remember and expand text dimming coverage
* Implement in-app language selection and per-app language preferences.
* Improve PDF lock stability in `PdfVerticalReader`
* Implement "Preserve Image Colors" option for PDF themes
* Optimize TOC locate in ReaderDrawer
* Update library and home screen UI components
* smoother page turn animation in epub pagination mode
* Implement automatic page skipping for TTS when no text is found in PDF viewer
* Refine status bar handling and window insets across main screens
* Optimize ViewModel initialization and integrate AndroidX SplashScreen
* Move ComicPanelDetector to debug source set and introduce IPanelDetector interface
* Optimize TOC scrolling in PdfNavigationDrawerContent
* Bump version to 1.0.45(45)
* Refactored the EPUB reader to use localized string resources instead of hardcoded strings across multiple components.
* Refactored the PDF viewer and annotation components to use centralized string resources instead of hardcoded text.
* Updated `strings.xml` with extensive translation hints and localization metadata.
* Improved local folder sync and file management by migrating sidecar metadata to a dedicated subfolder and enhancing book ID stability.
* Optimized folder sync and increased synced folder limits.
* Added support for managing active tabs in the `HomeScreen`.
* Added support for strict file type filtering when picking documents.
* Added support for ODT and FODT file formats.
* Improved `OdtParser` to support enhanced document formatting and external assets
* Added support for viewing CSV, TSV, JSON, XML, logs, and source code files by dynamically converting them to HTML.
* Improved navigation and search result highlighting in the EPUB reader
* refactor: implement JIT chunk restoration for robust navigation
- Fixes search and bookmark navigation failing in same-chapter transitions.
- Introduced JIT (Just-in-Time) HTML restoration in `epub_reader.js` to
re-populate virtualized chunks before CFI resolution or search scrolling.
- Synchronized search highlighting and user highlights within
newly-restored chunk segments.
- Improved search navigation accuracy by mapping occurrences to
relative chunk indices.
* Implemented a custom text selection engine for the paginated EPUB reader to support cross-page selection and improved handle interaction.
* Implemented management of external file behavior and improved library filtering.
* Added support for toolbar customization in the EPUB reader.
* Added support for toolbar customization in the PDF reader.
* fix: rendering during auto-scroll and navigation on long pages
* Added a "Scroll to Top" feature to the auto-scroll controls in both EPUB and PDF readers.
* Updated folder synchronization logic and redesigned the file type filter dialog.
* Fixed CFI generation and navigation stability in the EPUB reader.
* Improved CFI scrolling and position calculation in the EPUB reader by implementing text node traversal using `TreeWalker`. This ensures accurate positioning and scrolling when a CFI offset spans multiple fragmented text nodes.
* fix fb2 multiline titles, retain footnotes, and prevent stream leaks
- Fix FB2 titles with multiple paragraphs by inserting breaks/spaces
- Prevent resource leaks by properly closing InputStreams in all importers
- Retain "notes" and "comments" sections in FB2 instead of skipping them
- Add support for FB2 poem, stanza, cite, and link tags
* Implement persistence for zoom and pan states when pan lock is enabled in the PDF reader.
* Added `FileTypeBadge` to home and library screens
* Bump version to 1.0.41(42)
* Improved eraser hit detection and added horizontal scrolling to AnnotationDock
* fix: lock scroll tracking during PDF rotation to prevent page jumping in vertical mode
* Implemented a multi-tab reading system for the PDF viewer.
* Redesigned the About dialog on homescreen.
* improved bulk file import support
* Implemented document caching and improved tab restoration in the PDF viewer.
* Implemented native link detection and information extraction in `pdfium_bridge.cpp` and integrated it into `PdfPageComposable.kt`. This includes adding `getLinkInfoAtPoint` to `NativePdfiumBridge` to handle URI, GoTo, and RemoteGoTo/Launch actions, and updating the tap gesture logic to prioritize native link handling.
* Fixed index bounds and layout padding calculation in PdfViewerScreen
* FolderSyncWorker: update supported file types in getFileType
* Extract hardcoded strings to `strings.xml` and `plurals.xml`
* Extract hardcoded strings to `strings.xml` and `plurals.xml`
* Extract hardcoded strings to `strings.xml` and `plurals.xml` in MainViewModel
* Extract hardcoded strings to `strings.xml` and `plurals.xml` in Common.kt
* Extract hardcoded strings to `strings.xml` and `plurals.xml` in Epub Reader
* Add visual options and seamless transitions to the EPUB reader
* Add support for DOCX file format
* Refine padding and status bar inset handling in Epub pagination mode
* Add file size parameter for recent files and sorting
* Refactor book data cleanup logic into a centralized method
* Bump version to 1.0.40(41)
* Add OPDS catalog support for book discovery and downloading
* Implement OPDS search, improved book discovery, and enhanced UI details.
* Improve OPDS search and catalog management
* Add authentication support and extended metadata to the OPDS reader.
* Add support for OPDS 2.0 (JSON) feeds
* Enhance OPDS book downloading with progress tracking and multi-format support.
* Enhance OPDS book management and UI
* Add support for OPDS-PSE (Page Streaming Extension) streaming
* Improve OPDS streaming and catalog management
* feat(EPUB): adapt status bar icon visibility to reader theme
Pass the reader's active isDarkTheme state to EpubReaderSystemUiController to ensure status bar icons automatically switch between light and dark to remain visible against the selected background/page color.
* Implement storage tracking and optimize cache management
This commit introduces a `StorageTracker` to monitor disk usage and implements several optimizations to prevent cache bloat and handle orphaned files.
* refactor: unify book extraction paths and fix cache leaks
- Replaced random UUID and title-based hashing with stable `bookId` for extraction directories across Epub, Mobi, and FB2 parsers.
- Standardized all temporary extraction paths to `cache/imported_file_${bookId}`.
- Updated MainViewModel and MetadataExtractionWorker to provide the mandatory `bookId` during parsing.
- Ensured `clearImportedFileCache` successfully targets the correct directories on book deletion.
- Added a legacy cleanup task in `sweepOrphanedCache` to reclaim storage from old `extracted_epubs` folders.
* fix(pdf): handle NoClassDefFoundError for PdfPasswordException
Updated the PDF loading logic in PdfViewerScreen to catch Throwable
instead of Exception. This prevents the app from crashing when the
underlying pdfium library attempts to throw a PdfPasswordException
that is missing from the runtime classpath (NoClassDefFoundError).
* fix(tts): set language before voice to prevent variant reset
* EpubReaderScreen: increase scroll-hide ignore duration for tap toggles
Increase the threshold for ignoring tap toggles after bars are hidden by scrolling from 250ms to 400ms. This prevents accidental UI toggles caused by "sloppy taps" immediately following a scroll action.
* fix: resolve large bitmap crash on tall PDF pages
- Caps base layer bitmap dimensions to 3000px to prevent GPU texture limit crashes.
- Enables tiled rendering for large pages even at 1x zoom to maintain sharpness.
- Optimizes PdfBitmapPool to support rectangular bitmap allocations.
* Common.kt: ensure unique keys in voice list
* fix: handle ActivityNotFoundException in folder sync screen
* Improve file deletion logic and fix chapter index bounds in epub reader
* fix: ensure WebView bridge callbacks run on UI thread
This resolves a WebViewMethodCalledOnWrongThreadViolation in vertical mode that was preventing chapter chunks from loading beyond the initial viewport.
* Add "Keep Screen On" feature to PDF and Epub readers.
* Add `rawLibraryFiles` to `MainViewModel` and improve file path resolution in `SharedComposables`.
Specifically:
- Updated `MainViewModel` state and UI logic to track and provide unfiltered library files.
- Enhanced file path formatting in `SharedComposables` to better handle Document, Tree, and primary storage URIs.
- Added scrollable support for long text values in `DetailItem` composable.
- Passed `rawLibraryFiles` to `FolderSyncScreen` to ensure sync logic uses the base file list.
* Update info bar background and text colors in EpubReaderScreen to match the selected theme.
* Prevent accidental UI bar toggles immediately after scrolling in EPUB vertical mode.
* feat: implement EPUB highlights sync and legacy migration
- Implement Cloud and Local Folder sync for EPUB highlights.
- Add highlight JSON serialization/deserialization helpers in EpubReaderAnnotations.
- Implement automatic migration of highlights from SharedPreferences to the Database on book open.
- Add cleanup logic to remove legacy SharedPreferences data after successful DB migration.
- Update RecentFilesRepository to trigger local folder metadata sync when highlights are modified.
- Update FolderSyncWorker to pull highlights and custom names from linked folder metadata.
* Update intent filters
* Added support for FB2 book format
* Add support for CBZ files by introducing a `ReaderDocument` abstraction.
Key changes:
- Defined `ReaderDocument`, `ReaderPage`, and `ReaderTextPage` interfaces to provide a unified API for different document types.
- Implemented `PdfDocumentWrapper` and `CbzDocumentWrapper` to handle PDF and CBZ files respectively.
- Updated `PdfViewerScreen`, `PdfPageComposable`, and `MainViewModel` to use the new unified document interfaces.
- Added CBZ file type detection and cover generation logic.
* Add support for CBR and CB7 comic book formats
- Add `me.zhanghai.android.libarchive` dependency to support RAR and 7z archives.
- Implement `ArchiveDocumentWrapper` using `libarchive` to handle CBZ, CBR, and CB7 files uniformly, replacing the previous CBZ-only implementation.
- Update `MainViewModel` and `DocumentFactory` to recognize and process `.cbr` and `.cb7` extensions and their associated MIME types.
- Add support for extracting and caching cover images from CBR and CB7 archives.
- Update UI components (`HomeScreen`, `LibraryScreen`, `AppNavigation`) to handle the new comic book file types.
* Added support for filtering file types in synced folders
* Added support for custom file names and enhanced file information dialog
* added feedback option in the homescreen drawer
* Implemented a limit for number of recent files displayed on the home screen
* Added print functionality to PDF viewer
* feat(pdf): add interactive button support and visibility reveal heuristic
* Moved search state management to MainViewModel and improved search UI interaction.
* Updated `pdfiumandroid` to version 2.0.0 and handled resulting API changes, including nullable page/text page returns and revised native pointer access.
increased compileSdk to 36.
* Fixed Table of Contents (TOC) truncation bug and improved the TOC UI in `PdfViewerScreen`.
- Implemented `getFixedTableOfContents` using reflection to bypass a library issue where sibling nodes were incorrectly truncated during traversal.
- Enhanced the TOC drawer with a nested, expandable tree structure using the new `PdfTocTreeItem` component.
- Added a custom `VerticalScrollbar` with draggable support for better navigation within long TOC lists.
- Integrated `animateColorAsState` and `animateFloatAsState` for smoother UI transitions in the TOC and scrollbar.
- Optimized TOC loading by flattening the tree structure and managing expansion states with `rememberSaveable`.
* Improved zoom pivot calculation and interaction handling in PdfVerticalReader
* Fixed high-res PDF tile bleeding by implementing clipRect in PdfBitmapLayer
* fix(pdf): resolve zoom stuttering, in pagination mode, by removing eager scale snapping
* Added book pinning and library filtering functionality
* Updated folder sync logic, improved metadata extraction, and added persistent banner message while syncing
* build: bump version to 1.0.37 (38)
* Added print functionality to PDF viewer
* feat(pdf): add interactive button support and visibility reveal heuristic
* Moved search state management to MainViewModel and improved search UI interaction.
* Updated `pdfiumandroid` to version 2.0.0 and handled resulting API changes, including nullable page/text page returns and revised native pointer access.
increased compileSdk to 36.
* Fixed Table of Contents (TOC) truncation bug and improved the TOC UI in `PdfViewerScreen`.
- Implemented `getFixedTableOfContents` using reflection to bypass a library issue where sibling nodes were incorrectly truncated during traversal.
- Enhanced the TOC drawer with a nested, expandable tree structure using the new `PdfTocTreeItem` component.
- Added a custom `VerticalScrollbar` with draggable support for better navigation within long TOC lists.
- Integrated `animateColorAsState` and `animateFloatAsState` for smoother UI transitions in the TOC and scrollbar.
- Optimized TOC loading by flattening the tree structure and managing expansion states with `rememberSaveable`.
* Improved zoom pivot calculation and interaction handling in PdfVerticalReader
* Fixed high-res PDF tile bleeding by implementing clipRect in PdfBitmapLayer
* fix(pdf): resolve zoom stuttering, in pagination mode, by removing eager scale snapping
* Added `TooltipIconButton` and integrated tooltips for tool icons in app bars
* Added external translate and search support for EPUB and PDF readers
* docs: refine project overview and update build instructions in readme
* perf: fix Home and Library screen stutter by removing main thread file checks
* feat(pdf): implement straight-line highlighter snap
- Added "Straight Line" toggle to highlighter settings popup with persistent state.
- Implemented "rubber-band" drawing effect for highlighters with cardinal direction snapping (0°, 90°, 180°, 270°).
- Optimized gesture loops in Vertical and Paginated readers to respond instantly to setting toggles.
- Rewrote eraser hit detection using point-to-line segment distance math for pixel-perfect erasure of straight lines.
- Added `SyncedFolder` data class and transitioned from a single `syncedFolderUri` to a list of `syncedFolders`.
- Implemented logic to add, remove, and persist multiple synced folders using JSON in shared preferences, including a migration path for legacy single-folder settings.
- Updated `FolderSyncWorker` to iterate through all registered folders and added an annotation sidecar preloading optimization to reduce file I/O during sync.
- Redesigned the "Folder Sync" UI in `LibraryScreen` to display a list of active folders with individual management options and a 3-folder limit.
- Refined permission handling to request both read and write access for synced folders.
* Updated animation specifications for UI controls and overlays to use a 200ms tween duration.
* Implemented fallback file picker and improved CSS rule merging efficiency to fix OOM.
* feat: rework Folder Sync architecture to separate Managed vs Linked books
- Introduced "Managed" (imported to app storage) vs "Linked" (SAF URI) book logic.
- Disabled Google Drive/Metadata synchronization for Folder-Linked books to respect privacy and storage.
- Updated deletion logic: Folder books are now marked as deleted in the DB to blacklist them from future auto-scans, while Managed books are permanently purged from local and cloud storage.
- Enhanced folder sync discoverability by adding a direct "Sync Folder" navigation button in Home screen.
- Implemented reactive pager navigation in MainScreen and LibraryScreen via LaunchedEffect to allow programmatic tab switching from the ViewModel.
* Implemented a local folder synchronization system to track and update book metadata across devices.
Key changes:
- Added `FolderBookMetadata` and `LocalSyncUtils` for serializing and managing metadata files in a `.episteme` directory.
- Implemented bidirectional sync in `FolderSyncWorker` to reconcile local database state with folder-based metadata using timestamps and Syncthing conflict resolution.
- Updated `MainViewModel` to trigger folder metadata sync when closing a book and verify for remote updates upon opening.
- Enhanced folder management with manual scan support via `WorkManager` and automatic cleanup of database entries when a folder is disconnected.
- Added `RecentFileDao` methods to support bulk deletion and prefix-based file lookups.
* Removed API 34 restriction for chapter processing and updated local folder sync directory name
* Increased TTS timeouts, added edge-to-edge support in MainScreen, and improved TtsChunk mapping safety
* Improved folder synchronization and metadata management.
- Added metadata-only sync option and triggered it on app start.
- Implemented hidden metadata filenames (prefixed with `.`) to reduce file clutter.
- Added automatic creation of `.nomedia` files in the sync directory.
- Enhanced sync conflict resolution by picking the latest metadata and cleaning up obsolete or orphaned files.
- Added "Sync Metadata" button to the Library screen.
- Updated UI labels for local folder sync to clarify Google Drive integration.
- Refactored `FolderSyncWorker` to support targeted metadata-only synchronization.
* Implement folder sync migration and refactoring
- Added a migration dialog to inform users about the folder sync refactor, where books are now read directly from external storage.
- Updated `MainViewModel` to handle migration state and trigger a full scan upon completion or dismissal of the dialog.
- Modified `FolderSyncWorker` to support legacy book matching during migration, updating file URIs and cleaning up internal app storage for migrated books.
- Improved synchronization logic between local and remote metadata, including cleanup of orphaned metadata files.
- Refined `RecentFileItem` updates during sync to preserve progress and bookmarks based on last modified timestamps.
* Implemented pull-to-refresh for library sync and enhanced folder file deletion.
- Added `isRefreshing` state to `MainViewModel` and integrated `PullToRefreshBox` in `HomeScreen`.
- Implemented `refreshLibrary` to trigger cloud and folder metadata synchronization.
- Updated deletion logic to physically remove files and metadata from synced local folders.
- Added a warning to the delete confirmation dialog when removing folder-synced items.
- Improved folder sync reliability by performing lazy cleanup of missing files during interaction and sync.
- Fixed a bug where sync loading indicators would not retract on failure or cancellation.
* Improved bookmark navigation and scroll synchronization in EPUB reader
- Refined bookmark navigation logic for vertical scroll mode to handle chunk injection more reliably.
- Added `isNavigatingToBookmark` state to show a loading overlay during long jumps.
- Implemented `onScrollFinished` callback in `CfiJsBridge` to synchronize UI state with WebView scroll completion.
- Updated `ChapterWebView` to use `rememberUpdatedState` for JavaScript bridge callbacks to ensure data consistency.
- Improved `getCurrentCfi` and `scrollToCfi` in `epub_reader.js` with better visibility probing and retry logic for detached nodes.
* Implemented background metadata extraction for folder sync.
Key changes:
- Added `MetadataExtractionWorker` to handle heavy metadata and cover extraction for files in the background.
- Refactored `FolderSyncWorker` to perform fast file discovery using placeholders, enqueuing the metadata worker upon completion.
- Added `getFolderBooksWithoutCovers` query to `RecentFileDao`.
- Updated UI components (`EmptyState`, `MainViewModel`) to improve user feedback during sync and provide clear setup actions.
- Enhanced `EmptyState` composable to support secondary actions and custom button text.
* Updated Library Screen UI
* docs: Revamp README and add APK naming convention
This commit introduces a complete overhaul of the `README.md` to improve project presentation. Key changes include:
* Adds a new header with the app icon and a Google Play badge.
* Updates the feature graphic and includes a note distinguishing the OSS version from the Play Store version.
* Refines the "Open Source Libraries" section to be more structured.
* Moves the main preview image into the `docs` directory.
Additionally, the `app/build.gradle.kts` file is updated to configure a standardized naming convention for output APK files, including flavor, version, and build type.
* refactor copyright headers and fix README icon alignment
This commit introduces two main changes across the codebase:
The `spotless/copyright.kt` template have been updated for consistency:
* The author name is simplified from "Episteme Authors" to "Episteme".
* The contact email prefix is shortened from "Electronic mail:" to "mail:".
Second, the `README.md` file is adjusted to correct the vertical alignment of the app icon with the project title.
* Added auto-scroll feature for PDF vertical reader
docs: Revamp README and add APK naming convention
This commit introduces a complete overhaul of the `README.md` to improve project presentation. Key changes include:
* Adds a new header with the app icon and a Google Play badge.
* Updates the feature graphic and includes a note distinguishing the OSS version from the Play Store version.
* Refines the "Open Source Libraries" section to be more structured.
* Moves the main preview image into the `docs` directory.
Additionally, the `app/build.gradle.kts` file is updated to configure a standardized naming convention for output APK files, including flavor, version, and build type.
* refactor copyright headers and fix README icon alignment
This commit introduces two main changes across the codebase:
The `spotless/copyright.kt` template have been updated for consistency:
* The author name is simplified from "Episteme Authors" to "Episteme".
* The contact email prefix is shortened from "Electronic mail:" to "mail:".
Second, the `README.md` file is adjusted to correct the vertical alignment of the app icon with the project title.