Commit Graph

1271 Commits

Author SHA1 Message Date
Dmitry Manannikov
708e851e0b Add support for fb2 books (#1757) 2025-12-13 21:16:56 -07:00
Muppetteer
0486a4f070 fix: Consistent dialogs (#1842)
* fix/consistent-dialogs

* fix: enforce consistent mobile dialog width

* fix: cover search dialog image size
2025-12-13 21:08:43 -07:00
WorldTeacher
b64c30f3bc feat(opds): add series hierarchy (#1837)
Co-authored-by: WorldTeacher <admin@theprivateserver.de>
2025-12-13 15:46:59 -07:00
aditya.chandel
b55b684125 Update PR template 2025-12-13 15:15:28 -07:00
aditya.chandel
b175007d7f Update PR template 2025-12-12 16:27:49 -07:00
aditya.chandel
6dcc45ab4d Relocate PR template to ensure it appears properly on GitHub 2025-12-12 16:20:06 -07:00
aditya.chandel
7d631233a3 Add missing sections to GitHub templates 2025-12-12 16:16:26 -07:00
Aditya Chandel
eff090d825 Update github templates (#1840) 2025-12-12 16:12:44 -07:00
Balázs Szücs
475f605f26 feat(database): create opds_user_v2 and book_marks tables with necessary constraints and indexes (#1833)
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-12 10:14:25 -07:00
Balázs Szücs
62ea319536 fix(bookdrop): fix 'Select All' query logic and improve filename fallback for missing metadata (#1828)
* fix(bookdrop): fix 'Select All' query logic and improve filename fallback for missing metadata

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* fix(tests): update BookDropServiceTest and PathPatternResolverTest to use findAllIds method

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-12 08:32:57 -07:00
Muppetteer
1a7d92c60d Add /shared/ folder to gitignore (#1827) 2025-12-11 22:51:07 -07:00
Aditya Chandel
1916d6c88c Automatically add newly added books to Kobo shelf (#1826) 2025-12-11 20:21:19 -07:00
aditya.chandel
3fb81a35e4 Add IF EXISTS to personal_rating column drops 2025-12-11 19:01:16 -07:00
Muppetteer
8ee53ff7ba Per user personal ratings (#1820)
* Change personal ratings to be saved per user

* Only copy ratings to users with existing progress records
2025-12-11 18:37:21 -07:00
Muppetteer
73b27944e2 Random sort option for libraries and shelves (#1817) 2025-12-10 20:43:18 -07:00
Muppetteer
78d8f8e596 Fix vertical overflow on metadata edit form dialog: part deux (#1816)
* Fix display overflow on metadata edit form dialog

* More fixes to books in dialog mode
2025-12-10 20:37:51 -07:00
aditya.chandel
ee12a486dd Layout tweaks 2025-12-10 13:43:19 -07:00
Aditya Chandel
d8017ff980 Revert "Fix display overflow on metadata edit form dialog (#1810)" (#1815)
This reverts commit d76251ba21.
2025-12-10 13:24:46 -07:00
aditya.chandel
503c82fcd7 Fix tests 2025-12-10 13:08:21 -07:00
aditya.chandel
ef7354c256 Update repo url 2025-12-10 13:04:27 -07:00
aditya.chandel
6ecc922408 Fix flyway file versioning 2025-12-10 12:58:14 -07:00
CounterClops
3ce8d496e0 Fix issues with library scans and file moves with a focus on SMB usage (#1744)
* fix: add retry and retry delays to handle smb lag

* fix: issue with importing cb7 files. missing required dependency. Scan would fail prematurely if a cb7 file was present

* fix: cleanup empty subdirectories when cleaning up parent folders

* fix: update folder cleanup to account for SMB delays

* chore: cleanup redundant and weak tests from auto-generated unit tests

* fix: make sleep function name more descriptive

* fix: minor optimisation around path matching

* fix: update xz package to latest version
2025-12-10 12:52:37 -07:00
Balázs Szücs
f97b23ea14 feat(bookmark): implement bookmark management with CRUD operations (#1795)
* feat(bookmark): implement bookmark management with CRUD operations and UI integration

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* feat(bookmark): add uniqueness constraint for bookmarks and check for existing bookmarks before creation

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-10 12:51:51 -07:00
Balázs Szücs
3bfece030b feat(search): Add denormalized search_text column for better book search (#1791)
* fix(search): Optimize book search with denormalized search_text column

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* fix(search): Enhance search text normalization for diacritics in author names

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* fix(migration): Implement batch processing for populating search text and enhance error handling

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* fix(search): Manually trigger search text update after author modifications and enhance special character handling

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* fix(search): Update special character handling to be more permissive in search text normalization

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* feat(AppMigrationService): add FileService dependency for enhanced file handling

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* feat(database): add search_text column to book_metadata for improved search functionality

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* feat(database): add search_text column to book_metadata for improved search functionality

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* fix(database): correct join condition and ordering in findBooksForMigrationBatch query

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-10 12:51:18 -07:00
Muppetteer
d76251ba21 Fix display overflow on metadata edit form dialog (#1810) 2025-12-10 12:50:47 -07:00
Muppetteer
cc38079c40 Enable java remote debug on dev docker stack (#1808)
* Enable java remote debug on dev stack

* Enable java remote debug on dev stack

* Update docs with info on docker development stack

* Update dev docs
2025-12-10 12:49:58 -07:00
Balázs Szücs
9ba06eae7b fix(book-card): add menu toggle events and update styles for open state (#1813)
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-10 12:49:01 -07:00
Balázs Szücs
ac38c5d5f6 fix(metadata): Fix genre/category disappearing bug in metadata updates (#1807)
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-10 00:24:09 -07:00
Balázs Szücs
28c0fc311d refactor(api): minor QOL updates, code modernization (#1802)
* refactor(api): minor QOL updates, code modernization

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* refactor(oidc): replace regex literals with compiled patterns for improved performance

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* refactor(shelf): remove redundant icon type initialization method

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-10 00:23:41 -07:00
Muppetteer
ff67bed2c4 Fix: locking fields discards unsaved changes (#1799)
* Fixes data loss on lock fields

* Test combined metadata update and lock field
2025-12-10 00:23:16 -07:00
Jürgen Fleiß
962e232495 delete broken (legacy?) github discussions link in contributing.md (#1805) 2025-12-09 14:08:29 -07:00
Aditya Chandel
e2062b5dc6 Allow uploading multiple SVG icons and render them directly as inline SVGs instead of using <img> tags (#1796) 2025-12-09 13:38:39 -07:00
Balázs Szücs
c945c95e17 fix(book-card): indicate collapse series number on the library tooltip (#1800)
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-09 13:25:26 -07:00
Balázs Szücs
bf64abf318 docs: update license information from MIT to GPL-3.0 in CONTRIBUTING.md (#1803)
* docs: update license information from MIT to GPL-3.0 in CONTRIBUTING.md

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* docs: correct formatting of GPL-3.0 license statement in CONTRIBUTING.md

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-09 13:20:37 -07:00
Muppetteer
ca1e7ee6e3 Improve metadata edit UI (#1792) 2025-12-08 13:10:51 -07:00
Aditya Chandel
42d2e83599 Add loader for long running operations (#1790) 2025-12-07 20:23:47 -07:00
shiggsy365
b00bc5f908 Add authors hierarchy and series metadata to OPDS feed (#1777)
This commit enhances the OPDS server with two major features:

1. Series Metadata in OPDS Feed:
   - Add series name and book number to OPDS book entries
   - Uses standard OPDS/EPUB 3 metadata format with <meta> tags
   - Includes belongs-to-collection and group-position properties

2. Authors Navigation Hierarchy:
   - Add new /authors endpoint for browsing books by author
   - Implement authors list navigation feed with alphabetical sorting
   - Add author filtering to catalog feed via ?author parameter
   - Support library-based access control for author lists
   - Add authors link to root OPDS navigation

Changes:
- OpdsFeedService: Add series metadata to appendMetadata(), add generateAuthorsNavigation()
- OpdsController: Add getAuthorsNavigation() endpoint
- OpdsBookService: Add getDistinctAuthors() and getBooksByAuthorName() methods
- BookOpdsRepository: Add queries for distinct authors and books by author name
- Updated generateCatalogFeed() to support author parameter
- Updated determineFeedTitle() and determineFeedId() to handle author context

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-07 19:17:57 -07:00
Balázs Szücs
afe9c59380 fix(path): remove trailing dots from path components for Windows compatibility (#1786)
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-07 15:17:27 -07:00
Balázs Szücs
5e5bb41585 fix(bookdrop): improve file filtering to ignore .caltrash (calibre generated trash file) (#1785)
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-07 15:16:53 -07:00
Aditya Chandel
ad0a99bcbc Add support for uploading and assigning custom SVG icons to libraries… (#1788)
* Add support for uploading and assigning custom SVG icons to libraries and shelves

* Add few default icons
2025-12-07 15:16:22 -07:00
Aditya Chandel
04b9f88510 Fix: Assign Books to Shelves popup visually broken (#1783) 2025-12-06 20:56:16 -07:00
Andrew Roberts
6eae9b88dc Configureable delimiter for remote auth groups (#1782)
* add groups-delimiter (REMOTE_AUTH_GROUPS_DELIMITER) for parsing groups from a remote auth source

* added doc
2025-12-06 20:20:52 -07:00
Jose Alvarez
21e53e1609 Add missing field for Kobo OverDrive expiration check (#1774) 2025-12-06 20:18:18 -07:00
Balázs Szücs
7b5128a511 fix(epub): fix and improve cover image extraction from EPUB files (specifically support for: EPUB 3 specification) (#1773)
* fix(epub): improve cover image extraction from EPUB files

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* fix(epub): enhance cover image extraction and path resolution

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-06 20:17:51 -07:00
Balázs Szücs
d336cde261 fix(bookdrop): ignore dot and underscore files during monitoring (#1771)
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-06 20:12:57 -07:00
Ryan Mellmer
05261c84f1 Add OIDC mobile redirect support for mobile apps (#1767)
* Add mobile OIDC authentication endpoint

This adds a new REST endpoint for mobile applications to complete OIDC
authentication. Mobile apps cannot use the web-based OIDC callback because
they need to receive tokens via a custom URL scheme.

New endpoints:
- POST /api/v1/auth/mobile/oidc/callback
  Accepts authorization code, PKCE verifier, and redirect URI.
  Returns Booklore JWT tokens (accessToken, refreshToken).

- GET /api/v1/auth/mobile/oidc/redirect
  Alternative endpoint that redirects to the mobile app's URL scheme
  with tokens as query parameters.

The flow works as follows:
1. Mobile app initiates OIDC auth with PKCE, using its own redirect URI
2. User authenticates with the OIDC provider
3. OIDC provider redirects to Booklore server's oauth2-callback
4. Mobile app calls this new endpoint with the authorization code
5. Booklore exchanges the code for OIDC tokens
6. Booklore validates the tokens and provisions/finds the user
7. Booklore issues its own JWT tokens to the mobile app

This enables iOS/Android apps to use OIDC authentication with Booklore.

* Fix compilation issues in MobileOidcController.java
2025-12-06 09:45:45 -07:00
Muppetteer
51fa54bed3 Improve bookdrop UI (#1768)
* Improve bookdrop UI

* Rename resetAll as it doesn't apply to all now

* Fix display of copied metadata fields
2025-12-06 09:16:42 -07:00
Muppetteer
474e95c4f2 Hide empty filters from sidebar (#1759) 2025-12-05 09:45:10 -07:00
Muppetteer
16fe1b632b Fix script error on clearing multi-select fields (#1756) 2025-12-05 09:44:04 -07:00
Balázs Szücs
147c374d51 hotfix(auth): add missing EC algo for Authentik, manually increase timeout limit (#1747)
* hotfix(auth) enhance OIDC JWT validation error messaging and improve JWK source configuration

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

* fix(auth): add RSA algorithm to JWS algorithm set for JWT processing

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-05 08:41:28 -07:00