* Added PDF top tab strip visibility toggle and fixed WebView hit test NPE
* Refactored desktop reader screens and state management into specialized components
* Added image gallery to reader sidebar and refactored desktop PDF UI components
* Implemented EPUB image gallery
* Refactored reader and library models to use shared common types, centralizing file type resolution and texture management while removing redundant mapping logic
* Standardized UI styling and refactored app navigation layout
* Implemented auto-hiding reader chrome and activity tracking in desktop
* Refactored reader panels into distinct left and right modal layers with platform-specific sizing and keyboard navigation support.
* Added PPTX support for desktop and refactored parsing into a shared module
* Implement paid AI features and account management for the desktop application.
* Implement AI Hub and enhanced Cloud TTS integration for Desktop
* Implement streaming support for AI definition and summarization features
* Implement support for password-protected PDFs and file actions in the desktop reader.
* Implement cloud synchronization for desktop using Firestore and Google Drive
* Implement PDF reflow and "Text View" for the desktop reader
* Refactor OPDS logic to use SharedOpdsController
* Optimize PDF tile rendering performance
* Implement two-page spread support for PDF pagination
* Implement two-page spread support for the PDF viewer
* Improved shared spread zoom in PDF viewer
* Improve PDF spread navigation with fling support and configurable page gaps
* Add brightness control to PDF and EPUB readers
* Refactor folder synchronization to use shared logic engine
* Implement safe string formatting and validation for localized resources
* Implement TTS chunk skip navigation
* Implement deep-linking and playback controls for TTS media sessions
* Implement start index for TTS playback
* Improve TTS navigation, prefetching, and notification duration reporting
* Implement TTS mini playback bar for background reading
* Implement multi-window reader support for the desktop application
* Improve desktop modal window management and visibility syncing
* Implement localized string support for Desktop and shared UI
* Implement language selection and persistence for Desktop
* Implement plural string support for Desktop and migrate hardcoded counts to plurals.xml
* Implement localized banner messages and UI strings using resource-backed SharedText
* Implement compact badge styling for small book covers
* Refactor PDF native interaction and improve HTML import memory safety
* fix language persistence
* Refactor reader overflow menus to use section-based logic
* Refactor PDF layout remapping and improve text box interaction
* Improve CFI resolution and TTS resume accuracy using dynamic chunk offsets
* Centralize PDF annotation export mapping and improve metadata handling
* Add support for threaded comments in PDF highlight annotations
* Flatten highlight comments into a single thread for PDF export and allow author editing
* Integrate page slider into reader chrome and persist toggle state
* Handle fragments and queries in EPUB chapter paths
* Implement dynamic, theme-aware coloring for the reader slider
* Implement customizable app-wide font preference
* Implement one-hand zoom gestures in the PDF viewer
* Implement File Information dialog for PDF and EPUB readers
* Bump version to 1.0.49 (53)
* Refactor PDF reader logic into modular components
* Add ProGuard rules to prevent R8 optimization issues in EPUB reader screens
* Add option to use PDF filenames as display names
* Fix preservation of PDF filename display preference in library projection
* 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)
* 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
* 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
* Replaced PDF-to-Markdown reflow with an enhanced PDF-to-HTML generator.
Specific changes include:
- Replaced `PdfToMarkdownGenerator` and `PdfReflowGenerator` with `PdfToHtmlGenerator`.
- Added native bridge methods in `NativePdfiumBridge.kt` and `pdfium_bridge.cpp` to extract character bounding boxes, page objects, and image pixels.
- Implemented vertical merging of text and images in `PdfToHtmlGenerator` to maintain document layout.
- Added logic to detect and filter repeating headers and footers across PDF pages.
- Updated `ReflowWorker` to generate `.html` files instead of `.md` files and updated `FileType` handling.
- Simplified `SingleFileImporter` by removing dependencies on the legacy Markdown generator.
* Updated PDF to HTML generation to include page breaks and split HTML files into individual chapters based on page markers.
* Added junk character filtering and normalization to PDF text extraction
* - Added `allRecentFiles` to `ReaderScreenState` to track all files, including reflowed versions.
- Updated `recentFiles` in `MainViewModel` to filter out reflowed files (`_reflow`) from the main library view.
- Implemented `deleteBookPermanently` in `MainViewModel` to handle book deletion and cache cleanup.
- Added a "Delete Text View" option to the `EpubReader` controls for reflowed files.
- Improved reflow file detection in `PdfViewerScreen` by checking against `allRecentFiles`.
* Implemented a centralized data-saving mechanism in `PdfViewerScreen` using a debounced `saveAllData` function. This refactor consolidates the saving of annotations, text boxes, highlights, bookmarks, and scroll positions, adding lifecycle-aware triggers and a mutex to ensure data integrity during pauses or document navigation.
* Optimized PDF selection and annotation performance by offloading heavy operations to background threads and improving UI responsiveness.
- Moved PDF page/text opening, character range calculations, and text extraction to `Dispatchers.IO`.
- Wrapped UI updates in `updateSelectionVisuals` and selection logic with `withContext(Dispatchers.Main)`.
- Implemented a more efficient `Popup`-based magnifier to replace manual offsets and transformations.
- Updated `PdfSelectionMenuPopup` properties to prevent focus and click-outside dismissal conflicts.
* Added support for reading and displaying embedded PDF annotations.
Changes include:
- Added JNI bindings in `NativePdfiumBridge` and `pdfium_bridge.cpp` to extract annotation count, subtypes, rectangles, and string values (Contents, NM, IRT, T) using PDFium.
- Introduced `EmbeddedAnnotation` data class to represent PDF annotations and their reply threads.
- Implemented annotation extraction logic in `PdfPageComposable` to fetch, group, and map embedded annotations (Sticky Notes, Highlights, etc.) to screen coordinates.
- Updated `PdfSelectionMenuPopup` to support displaying and copying comment threads.
- Improved selection menu positioning and hit detection for annotations.
- Added a safety check to recycle bitmaps in `PdfTile` rendering if handover to the main thread fails.
* Improved comment thread UI
* perf(pdf): native Pdfium-based reflow engine with auto-open
Migrate PDF-to-Markdown reflow generation from PDFBox to a custom
native implementation using Pdfium. This transition improves
processing speed by ~10x and significantly reduces memory overhead.
- Native JNI Bridge: Implemented `pdfium_bridge.cpp` using `dlopen`
to hook into the existing `libpdfium.so` memory space.
- Optimized Extraction: Replaced character-by-character JNI calls
with bulk array retrieval (`getPageFontSizes`, `getPageFontWeights`),
drastically reducing JNI boundary overhead.
- Enhanced Accuracy: Improved Markdown formatting logic by using
native font weight (bold) and relative font size variance (headers).
- Thread Safety: Refactored generator to process pages sequentially
while synchronized with the global `PdfiumCore.lock` to ensure
stability across concurrent UI operations.
- Seamless UX: Implemented a reactive auto-open system in the
PDF viewer that tracks user intent and navigates to the reflow
view immediately upon background task completion.
* Improved PDF to Markdown conversion and added cache cleanup.
- Implemented automated cleanup of imported file caches when deleting books.
- Enhanced `PdfToMarkdownGenerator` with support for font flags (italics), improved kerning, and smarter paragraph wrapping.
- Updated `NativePdfiumBridge` and C++ JNI code to extract font information flags from PDFium.
* Implemented seamless file switching and enhanced reflow transition logic.
Key changes include:
- Added `switchToFileSeamlessly` to `MainViewModel` to handle state transitions and navigation when switching between PDF and reflowed text views.
- Updated `generateAndImportReflowFile` to support automatic opening of the generated file at a specific page/chapter.
- Integrated `NavigationEvent` and `CompletableDeferred` to manage asynchronous navigation and state updates during file switches.
- Modified `EpubReaderScreen` and `PdfViewerScreen` to pass the current position when toggling between PDF and text modes.
- Updated `AppNavigation` to move navigation logic out of the `NavHost` and added loading overlays to viewers to improve UI feedback during transitions.