* 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)
* 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)
* Added support for AI and Cloud credits in the Pro flavor.
* Implemented credit-based authentication and authorization for AI features and Cloud TTS.
* Updated AI feature access and purchase handling to a credit-based system.
* Refactored and enhanced the Text-to-Speech (TTS) system with persistent caching and a redesigned UI.
* Improved TTS cache management by organizing audio files by book title and adding a detailed cache storage UI.
* Refactored the TTS service to use a WebSocket-based Gemini Live connection for cloud audio generation.
* Removed the TTS cache settings tab and simplified voice sample playback by removing local caching logic.
* Implemented a low-latency streaming mechanism for Cloud TTS using a custom `ConcurrentInputStream` and `ExoPlayer` data source.
* Improved cloud TTS stability and prefetching logic in `TtsService` and `TtsPlaybackManager`.
* Implemented AI summarization caching and cost tracking in the EPUB reader.
* Enhanced chapter summary caching and UI feedback.
* limit summaries for pro users to 10 per day
* Implemented local caching for Cloud TTS audio chunks.
* Removed the Free tier tab from `ProScreen` and simplified the subscription interface. Updated tab logic to focus on Pro and Credits, including a new cost breakdown section for AI and Cloud TTS features.
* Refactored HTML parsing to include all child nodes during content chunking and semantic block parsing.
* Improved image rendering consistency in epub pagination reader
* Improved HTML parsing in `HtmlParser.kt` to better handle complex nested structures
* Improved CSS styling support in the epub paginated reader for word spacing and text decorations.
* Implemented scroll throttling in `epub_reader.js` to improve performance during scroll events
* Improved CFI resolution and scrolling reliability in EPUB reader
* Optimized PaginatedReader performance by caching text decorations.
* Implemented batching for recent file database operations to handle large datasets and introduced `RecentFileSummary` to optimize data retrieval by excluding heavy JSON columns.
* Improved navigation stability by wrapping `navController.navigate` and `popBackStack` calls in a try-catch block to handle `IllegalStateException` during concurrent transitions. Additionally, refined the backstack check for the main route to prevent redundant pops.
* feat(tts): redesign TTS controls with overlay UI and cache management
* Expanded and improved the TTS (Text-to-Speech) capabilities, particularly for Cloud voices.
* Improved TTS playback control and cache management.
* Integrated the TTS cache manager into the settings sheet and improved the TTS configuration UI.
* Updated `DeviceVoicesTab` to respect the current TTS mode, disabling voice selection when not in `BASE` mode.
* Improved error handling and state management for Cloud TTS in `TtsService` and `TtsPlaybackManager`.
* Improved TTS voice selection UI and sample playback logic.
* Updated `TtsUtils` and `TtsService` to remove `chunkIndex` from TTS cache filenames. Refined the cache file naming convention to rely on text and speaker hashes, and updated the cache file filter logic to correctly identify speakers in both legacy and new filename formats.
* Optimized tile rendering and state propagation in PDF viewer
* Added "Expand All", "Collapse All", and "Locate" functionality to the Table of Contents in both EPUB and PDF readers.
* Added sign-in requirement for credit purchases and improved purchase migration logic.
* Updated `EpubReaderTts` to support authenticated TTS requests by passing an auth token provider. The `ttsController.start` method now includes an `authToken` retrieved via `getAuthToken` and explicitly sets the `playbackSource` to "READER".
* feat(ai): replace summarization popup with a comprehensive AI Hub Bottom Sheet
* Improved locator logic and block traversal in `BookPaginator`.
* Updated AI features and Cloud TTS logic.
* Added manual clear and auto-reset functionality for AI summaries and recaps
* Optimized file importing, EPUB parsing, and TTS playback concurrency.
* Restricted TTS mode to BASE in OSS flavor and fixed TTS mode persistence in PDF viewer
* Bump version to 1.0.43(44)
* 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.
* Added support for highlight notes in EPUB reader
* fix(epub annots): ensure persistent highlights and preserve notes on color change
- refactor: unified processAndAddHighlight across scroll and paginated modes
- fix: re-apply highlights to virtualized DOM elements on chunk load
- fix: replaced '|' with ';;' in JS bridge to prevent CFI parsing errors
* feat(epub): redesign annotation UX with theme-aware Bottom Sheet
* Updated highlight handling to use full CFI strings instead of splitting into parts during deletion and style updates. Adjusted `processAndAddHighlight` to return the final CFI and updated the delete button UI to use a contained button style.
* Added support for notes in PDF highlights.
* Implemented support for custom highlight colors in the PDF reader.
* Improved PDF annotation notes and theme handling in the bottom sheet.
* 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
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.