Commit graph

99 commits

Author SHA1 Message Date
wIUnUIw
5672b0e197
Added translation using Weblate (Vietnamese) 2026-04-23 15:29:57 +02:00
berebara
5a9b091665
Translated using Weblate (Russian)
Currently translated at 100.0% (9 of 9 strings)

Translation: Episteme/plurals
Translate-URL: https://hosted.weblate.org/projects/episteme/plurals/ru/
2026-04-23 15:29:56 +02:00
Hosted Weblate
f3d2f4129e
Merge remote-tracking branch 'origin/main' 2026-04-23 10:02:30 +02:00
berebara
30affd11cd
Added translation using Weblate (Russian) 2026-04-23 09:59:59 +02:00
berebara
444254417a
Added translation using Weblate (Russian) 2026-04-23 09:59:58 +02:00
Quentin Michaud
7521ef67db
Translated using Weblate (French)
Currently translated at 100.0% (690 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/fr/
2026-04-23 09:59:57 +02:00
Otto Zumkeller
dec0020e12
Translated using Weblate (German)
Currently translated at 99.8% (689 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/de/
2026-04-22 12:09:50 +02:00
Aryan
cb7de86224
v1.0.45-oss (#221)
* 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)
2026-04-22 14:11:52 +05:30
Aryan
71e3614ad6
App themes (#217)
* Updated `.gitattributes` to correctly vendor all files within the `libmobi` and `woff2` directories.

* Improved TTS chapter transition handling

* Improved TTS stability and chapter advancement in the EPUB reader.

* Implemented PDF metadata extraction for titles and authors using PdfiumCore in `MainViewModel` and `MetadataExtractionWorker`.

* Implemented support for interactive footnotes in the EPUB vertical reader.

* Added support for footnotes in the paginated EPUB reader.

* Implemented a customizable app theming system.

* Added support for app-wide contrast and text brightness customization in the "App Theme" option.

* option to adjust pull-to-chapter-change drag in the EPUB vertical reader under visual options.

* Updated `PdfViewerScreen` to replace the standalone full-screen toggle with a more comprehensive "Visual Options" system UI management tool.
2026-04-21 18:11:55 +05:30
Cabbar Hayıroğlu
43267dd54d
Translated using Weblate (Turkish)
Currently translated at 100.0% (690 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/tr/
2026-04-20 11:42:47 +02:00
Aryan
d310cfbc2c
Fix strings (#213)
* Update translations and standardize ellipsis in Arabic, German, and Turkish strings

* Clean up merge conflict markers in Arabic translations
2026-04-20 11:14:16 +05:30
Cabbar Hayıroğlu
f46ad702ee Translated using Weblate (Turkish)
Currently translated at 84.6% (584 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/tr/
2026-04-20 11:02:32 +05:30
Eyad alkordy
284288dfb6 Translated using Weblate (Arabic)
Currently translated at 10.1% (70 of 689 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/ar/

 Conflicts:
	app/src/main/res/values-ar/strings.xml
2026-04-20 11:02:32 +05:30
mavosaure
530a90fc6e Translated using Weblate (French)
Currently translated at 44.4% (4 of 9 strings)

Translation: Episteme/plurals
Translate-URL: https://hosted.weblate.org/projects/episteme/plurals/fr/
2026-04-20 10:36:03 +05:30
faab
892c882556 Added translation using Weblate (French) 2026-04-20 10:36:03 +05:30
Br0t
361e2c9684 Added translation using Weblate (Spanish) 2026-04-20 10:36:03 +05:30
Enrico Ferrer
ae58b3939d Translated using Weblate (Portuguese (Brazil))
Currently translated at 22.2% (2 of 9 strings)

Translation: Episteme/plurals
Translate-URL: https://hosted.weblate.org/projects/episteme/plurals/pt_BR/
2026-04-20 10:36:03 +05:30
Enrico Ferrer
ea681ef621 Added translation using Weblate (Portuguese (Brazil)) 2026-04-20 10:36:03 +05:30
Silent Coder
d51407c363 Added translation using Weblate (Hindi) 2026-04-20 10:36:03 +05:30
Eyad alkordy
1ce93c083f Translated using Weblate (Arabic)
Currently translated at 88.8% (8 of 9 strings)

Translation: Episteme/plurals
Translate-URL: https://hosted.weblate.org/projects/episteme/plurals/ar/
2026-04-20 10:36:03 +05:30
Eyad alkordy
e79da9c329 Translated using Weblate (Arabic)
Currently translated at 100.0% (9 of 9 strings)

Translation: Episteme/plurals
Translate-URL: https://hosted.weblate.org/projects/episteme/plurals/ar/
2026-04-20 10:36:03 +05:30
Otto Zumkeller
8875cdd7c0 Translated using Weblate (German)
Currently translated at 88.8% (8 of 9 strings)

Translation: Episteme/plurals
Translate-URL: https://hosted.weblate.org/projects/episteme/plurals/de/
2026-04-20 10:36:03 +05:30
Otto Zumkeller
5e4d1a655a Added translation using Weblate (German) 2026-04-20 10:36:03 +05:30
Eyad alkordy
abdce865fb Translated using Weblate (Arabic)
Currently translated at 11.1% (1 of 9 strings)

Translation: Episteme/plurals
Translate-URL: https://hosted.weblate.org/projects/episteme/plurals/ar/
2026-04-20 10:36:03 +05:30
Eyad alkordy
309c85596b Added translation using Weblate (Arabic) 2026-04-20 10:36:03 +05:30
Cabbar Hayıroğlu
23ae7928bd Translated using Weblate (Turkish)
Currently translated at 100.0% (9 of 9 strings)

Translation: Episteme/plurals
Translate-URL: https://hosted.weblate.org/projects/episteme/plurals/tr/
2026-04-20 10:36:03 +05:30
Cabbar Hayıroğlu
c890fbc588 Added translation using Weblate (Turkish) 2026-04-20 10:36:03 +05:30
Weblate (bot)
413825481b
Translations update from Hosted Weblate (#208)
* Added translation using Weblate (Turkish)

* Translated using Weblate (Turkish)

Currently translated at 36.5% (252 of 689 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/tr/

* Translated using Weblate (Turkish)

Currently translated at 45.1% (311 of 689 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/tr/

* Added translation using Weblate (Arabic)

* Translated using Weblate (Arabic)

Currently translated at 10.1% (70 of 689 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/ar/

* Added translation using Weblate (German)

* Translated using Weblate (German)

Currently translated at 52.1% (359 of 689 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/de/

* Translated using Weblate (Arabic)

Currently translated at 73.4% (506 of 689 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/ar/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (689 of 689 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/ar/

* Added translation using Weblate (Hindi)

* Added translation using Weblate (Portuguese (Brazil))

* Translated using Weblate (German)

Currently translated at 99.5% (687 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/de/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 10.4% (72 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/pt_BR/

* Translated using Weblate (Turkish)

Currently translated at 78.2% (540 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/tr/

* Added translation using Weblate (Spanish)

* Translated using Weblate (Spanish)

Currently translated at 8.8% (61 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/es/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (690 of 690 strings)

Translation: Episteme/strings
Translate-URL: https://hosted.weblate.org/projects/episteme/strings/ar/

* Added translation using Weblate (French)

---------

Co-authored-by: Cabbar Hayıroğlu <halil48efe@gmail.com>
Co-authored-by: Kara Pisicik <noircat43@gmail.com>
Co-authored-by: Eyad alkordy <waeleyad248@gmail.com>
Co-authored-by: Otto Zumkeller <ottozumkeller@gmail.com>
Co-authored-by: Silent Coder <silentcoder@tutamail.com>
Co-authored-by: Enrico Ferrer <mathferrer17ea@gmail.com>
Co-authored-by: Br0t <travelty.thigh614@passmail.net>
Co-authored-by: faab <fa4b@tuta.io>
2026-04-20 09:35:25 +05:30
Aryan
46620fa71a
V1.0.43 oss (#202)
* 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)
2026-04-18 16:46:58 +05:30
Aryan
2c03f125a9
Converted hardcoded pluralization strings to Android plural resources. (#176) 2026-04-12 17:51:23 +05:30
Aryan
b027331bd1
String extraction (#174)
* 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.
2026-04-12 16:34:47 +05:30
Aryan
17a0097d4a
General improvements (#164)
* Optimized PDF tile rendering performance and quality.

* Added support for adjusting TTS voice speed and pitch.

* Updated the TTS settings UI and playback logic to support real-time parameter adjustments.

* Added horizontal scrolling to the PDF viewer bottom toolbar and updated tool arrangement to use fixed spacing.

* Refined cross-page selection and text extraction in `PaginatedReader`

* Updated EPUB reader styling logic to refine typography and layout controls.

* Bump version to 1.0.42(43)
2026-04-10 20:23:39 +05:30
Aryan
12d50bb68d
Library improvements (#163)
* 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.
2026-04-10 17:49:37 +05:30
Aryan
49e08cc9f1
Epub improvements (#162)
* Added a "Remove Edge Padding" option in "Visual Options"

* Added support for paragraph gap settings in the EPUB vertical reader.

* Added support for adjustable paragraph gaps in the paginated reader.

* fix(epub-pagination): ensure custom fonts override embedded epub fonts

* feat(epub): allow overlapping highlights and resolve gesture selection conflicts
2026-04-10 17:43:01 +05:30
Aryan
291504fd90
More formats support (#161)
* 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.
2026-04-10 17:35:31 +05:30
Aryan
6a60aec0ef
Epub improvements (#160)
* 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.
2026-04-10 17:30:48 +05:30
Aryan
26692d2c05
General improvements (#151)
* 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)
2026-04-05 10:36:44 +05:30
Aryan
65e0570d0e
Support notes with highlights (#150)
* 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.
2026-04-05 09:52:05 +05:30
Aryan
c8f361376f
General improvements (#149)
* 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
2026-04-05 09:41:26 +05:30
Aryan
381193d774
String extract (#148)
* 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
2026-04-05 09:32:59 +05:30
Silent Coder
da1c5bce1e
refactor: about dialog ui enhance (#139)
* refactor: about dialog ui enhance

* Update app/src/main/java/com/aryan/reader/SharedComposables.kt

Co-authored-by: Aryan <aryanrajivyms@gmail.com>

* Update app/src/main/java/com/aryan/reader/SharedComposables.kt

Co-authored-by: Aryan <aryanrajivyms@gmail.com>

---------

Co-authored-by: Aryan <aryanrajivyms@gmail.com>
2026-04-02 22:09:36 +05:30
Aryan
6fd6dd5609
General improvements (#134)
* 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)
2026-03-30 22:44:26 +05:30
Aryan
15264a31ae
Support opds (#133)
* 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
2026-03-30 21:42:06 +05:30
Aryan
355664fbcc
Bug and crash fixes (#132)
* 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.
2026-03-30 21:19:27 +05:30
Aryan
4c5cd20b21
General improvments (#114)
* 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
2026-03-26 13:22:05 +05:30
Aryan
60dacf9c12
Pdf reader improvments (#113)
* Improve PDF rendering quality and performance.

- Set `FilterQuality.High` when drawing base bitmaps and high-res tiles in `PdfPageComposable`.
- Implement `inSampleSize` calculation in `UniversalDocument` to optimize memory usage during region decoding.
- Enhance bitmap drawing quality by adding `ANTI_ALIAS_FLAG` and `DITHER_FLAG` to the paint configuration.

* Implement custom reader themes for PDF viewer.

This change integrates the `ReaderThemePanel` and theme management logic into the PDF viewer, allowing users to apply preset or custom themes. Previously, the PDF viewer only supported a simple dark mode toggle.

Specific changes:
- Moved `ReaderTheme`, `ReaderTexture`, and theme-related utility functions from `EpubReaderScreen.kt` to `Common.kt` to allow sharing between EPUB and PDF readers.
- Updated `PdfPageComposable` to use `activeTheme` instead of `isDarkMode`, implementing a `ColorMatrix` to apply custom background and text colors to PDF pages.
- Replaced the dark mode toggle in `PdfViewerScreen` with a theme selection button that opens `ReaderThemePanel`.
- Introduced `PdfBuiltInThemes` to provide PDF-specific theme presets.

* Reset page transformation on constraint changes and refine tile rendering logic.

- Reset scale to 1.0 and offset to zero in `PdfPageComposable` when constraints change.
- Update `UniversalDocument` to use floating-point precision for source rectangle calculations and `RectF` for destination mapping to improve rendering accuracy.

* Improve eraser hit detection and visual thickness settings in PDF reader.
2026-03-26 13:05:50 +05:30
Aryan
4db2c97a30
Support more formats (#112)
* 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.
2026-03-26 12:27:56 +05:30
Aryan
32e29dfc07
Epub tts fix (#103)
* build: bump version to 1.0.38 and improve CFI page lookup logic

* fix: resolve duplicate TTS audio and broken highlights in Vertical Mode

Updated the text extraction logic in epub_reader.js to pick only the most granular matching elements, preventing duplication when elements like <p> are nested inside <li>.
2026-03-21 13:26:03 +05:30
Aryan
fbe8e7aa56
General fixes (#102)
* Improved PDF embedded annotation hit detection logic

* Updated EPUB and PDF reader logic to improve position tracking and TTS stability.

Key changes:
- Refined CFI and locator handling in `EpubReaderScreen` with improved initialization.
- Updated `BookPaginator` to more accurately calculate text offsets in chunks and improve CFI matching logic.
- Modified `TtsPlaybackManager` to insert media items at the correct index, ensuring proper playback order.
- Simplified `EpubReaderTts` page scrolling by removing conditional checks for backward jumps.
- Disabled OCR fallback in `PdfViewerScreen` during text extraction for TTS.

* Updated extractTextWithCfiFromTop to use getBoundingClientRect for identifying the starting block
2026-03-21 11:49:27 +05:30
Aryan
ddcd253c7b
Home and Library screen update (#101)
* 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
2026-03-20 21:51:03 +05:30