* fix: Refactor HardcoverSyncService to improve edition and page count fetching logic. Always fetch edition and page info from Hardcover when a stored book ID is available. Update variable names for clarity and ensure fallback mechanisms are in place for missing data.
* fix: Update key in HardcoverSyncServiceTest to reflect correct edition ID naming convention
* feat: Enhance reading progress tracking in HardcoverSyncService by adding isFinished parameter to upsert methods. This allows for recording completion dates when a book is finished.
---------
Co-authored-by: akiraslingshot <akiraslingshot@gmail.com>
Made changes to some flags, and noticed others had broken links or http request which is fixed to be https.
Changes
New Endpoints: Added ereaderdevices (v2 device feeds) and subs_plans_page (Kobo Plus plans).
Feature Flags: Enabled kobo_superpoints_enabled (previously False).
Security & Protocol: Updated image_host, help_page, and book_detail_page_rakuten to enforce https:// (previously http or protocol-relative).
* feat(custom-covers): add functionality to generate custom covers for selected books
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(book-menu): add option to generate custom covers in metadata menu
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(library): add validation for library path accessibility during rescan
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(BookMapper): add mappings for primary file attributes in BookMapper
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
Add fallback mechanism to extract EPUB cover images when the primary
epub4j getCoverImage() method returns null. The new fallback reads
the 'cover' meta attribute from EPUB metadata and uses it to look up
the cover resource by ID.
This improves cover detection for EPUBs that use the traditional
<meta name="cover" content="image-id"/> and the cover image href
uses a URL-encoded special character which epub4j can't resolve.
Changes:
- Add cover extraction fallback via getMetaAttribute("cover")
- Add null safety check for coverId before resource lookup
- Add test with URL-encoded href to verify proper path handling
* Implement Komga API endpoints with OPDS authentication
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Add database migration and documentation for Komga API
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Address code review comments - improve performance and maintainability
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* chore: update with main develop
* chore: log cleanup
* chore: fixed switch with missing types
* chore: missing case
* Merge pull request #4 from farfromrefug/copilot/fix-500-error-on-books-api
Fix NPE in Komga books API when pageCount is null and add unpaged parameter
* Add collections endpoint and page download with PNG conversion support
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Address code review feedback for better resource management and error messages
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Fix convert parameter to match specification (convert=png)
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* chore: renamed migration
* chore: migration
* chore: migration fix
* chore: should work now
* chore: settings
* chore: working with mihon
* Initial plan
* Add clean query parameter for Komga API endpoints
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Address code review comments - remove unused imports and add @Primary annotation
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Add demo test to illustrate clean mode effectiveness
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Support both ?clean and ?clean=true syntax
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Filter out empty arrays in clean mode
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* chore: missing field
* chore: missing field
* chore: fix error with missing number
* fix: added groupUnknown API parameters to sort by "Unknown Series" (true by default)
* Initial plan
* Convert groupUnknown from query parameter to Booklore setting
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Remove unused groupUnknown variables from service and mapper
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* chore: fix seriesTitle in ungrouped unknowns
* Initial plan
* Optimize Komga API performance for series listing
- Optimize getAllSeries to only convert series on current page to DTOs
- Optimize getBooksBySeries to fetch books only once (not twice)
- Add database query methods for future optimizations
- Update tests to work with new optimizations
- All existing tests pass
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Clean up unused database query methods in BookRepository
Remove unused optimization queries that don't align with application-level series grouping logic
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* Optimize getAllSeries to query distinct series names from database
- Add database queries to fetch distinct series names directly (no need to load all books)
- Add queries to fetch books only for specific series (when building DTOs)
- Support both groupUnknown=true and groupUnknown=false modes
- Add test to verify optimization works and books aren't loaded unnecessarily
- Performance improvement: For 1000+ books grouped into 100+ series, now only queries series names (~100 rows) instead of loading all books (~1000+ rows), then loads books only for the current page (~20-50 books per series on page)
Co-authored-by: farfromrefug <655344+farfromrefug@users.noreply.github.com>
* chore: migration fix from merge
* chore: address comments
* fix: handle getBookPage for PDF/CBX
* chore: rename migration
* chore: komga specific series queries fix
* chore: komga tests fix
* chore: front end komga tests
---------
Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
Co-authored-by: ACX <8075870+acx10@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* feat(ui): add password confirmation to setup screen
* feat(ui): add password confirmation to create user dialog
* fix(tests): force frontend tests to use jsdom, and run tests in isolated environment. Also add debug statements to further diagnose failing test if needed
---------
Co-authored-by: ACX <8075870+acx10@users.noreply.github.com>
* part1 fix: reading days show duration
* part2 fix: Fix time formatting in favorite days chart
---------
Co-authored-by: WorldTeacher <coding_contact@pm.me>