Commit Graph

1172 Commits

Author SHA1 Message Date
Aditya Chandel
4f60f79e47 Merge pull request #1593 from booklore-app/develop
Merge develop into master for the release
v1.11.0
2025-11-21 00:46:59 -07:00
aditya.chandel
a0dcfe68c2 Resolve Flyway migration version conflict 2025-11-21 00:43:22 -07:00
aditya.chandel
8f811bb82d Fixes are PR merges 2025-11-21 00:42:02 -07:00
aditya.chandel
be925de5da Fix LoginGuard 2025-11-21 00:23:04 -07:00
Chris Debenham
f53a5cf8ff Fix metadata writing to file (#1592)
Fixes bug #1572
2025-11-21 00:19:22 -07:00
Chris Debenham
5b6c0b54a0 Fix file moving - fixes issue #1521 (#1582)
* Fix file moving - fixes issue #1521

* Fix metadata writing to file

Fixes bug #1572
2025-11-21 00:18:56 -07:00
CounterClops
7ebdc7b106 Feature: Sync reading progress from Kobo in-built reader (#1541)
* feat: add kobo reading progress sync

* fix: remove old variable references

* fix: avoid changing koreader behaviour

* fix: resolve typo in koreader progress

* fix: remove link between booklore progress and kobo sync progress

* feat: add unit tests for kobo reading status sync

* fix: remove unnecessary conversion value for kobo progress

* fix: resolve issue with kobo_progress beiong optional in template

* fix: update entitlement to provide existing reading progress back to kobo on sync

* fix: use stored bookmark before creating new bookmark

* fix: update default thresholds to full numbers. kobo doesn't report progress with any decimal places

* chore: update unit tests

* fix: remove decimal places in kobo settings progress threshold
2025-11-21 00:17:57 -07:00
CounterClops
9eb0dabd5e Feature: Next/previous book buttons on CBX reader (#1549)
* feat: add next book button to cbx reader

* chore: reduce redundant css elements

* chore: additional css cleanup
2025-11-21 00:16:55 -07:00
Muppetteer
f141fa49ba Feature: Autocomplete for publisher and series on book metadata edit screen (#1587)
* Autocomplete for publisher and series on book metadata edit screen

* Add autocomplete to bulk edit metadata form

* seriesName was missing the [disabled]="clearFields.seriesName" attribute

---------

Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
2025-11-20 23:56:53 -07:00
Muppetteer
f6790d53dc Add DatePicker to edit metadata page (#1586) 2025-11-20 21:24:29 -07:00
Muppetteer
4561c2b1cf Show invisible googleId on metadata picker pages (#1581) 2025-11-20 21:23:48 -07:00
Lars De Volder
1bcd0d1c3b Change p-tabpanels height (#1580) 2025-11-20 21:23:12 -07:00
Chris Debenham
79ab4ec5a1 Add ability to mark magic shelves as public (#1489)
Adds a checkbox to the create/edit magic shelf dialog to set the shelf
as public.
If public then it shows up for all users.
Only admins can edit public shelves (edit options disabled for
non-admin)
2025-11-20 21:17:10 -07:00
beedaddy
229c360116 Continue Reading: Don't show already finished books (#1520)
This fixes #1480
2025-11-20 21:16:06 -07:00
Benjamin Jackson
c74ed5b846 Init. (#1524) 2025-11-20 21:14:38 -07:00
Yann
27033560c0 feat: add language restriction option for google parser and improve search metadata by title/author query (#1502)
* feat: add language restriction option for google parser and improve search metadata by title/author query

* Fix syntax error.
2025-11-20 21:14:12 -07:00
astrodad
3a8a46b3cc Added timestamp from koreader_last_sync_time to returned json on GET for KOReader Sync API (#1518) 2025-11-20 21:12:33 -07:00
Ionuț Staicu
014874cd11 set the correct file name when triggering a download (#1513) 2025-11-20 21:11:45 -07:00
beedaddy
278b11e9e1 Enhancement: Import custom pagecount field from calibre (#1486)
* Enhancement: Import custom pagecount field from calibre

Calibre exports custom columns as JSON strings. This PR parses this JSON data and adds the pagecount value to booklore.
By convention, the calibre column must be named "pagecount".

* Don't use another external library for JSON
2025-11-20 21:10:29 -07:00
Balázs Szücs
5c42e2e765 refactor(api, test): improve readability and code quality across services, and tests (#1494)
* refactor(tests): improve readability and consistency across services

- Replace field declarations with local variables in test setup methods to simplify code.
- Introduce constants for patterns and update regex logic in `BookMediaController`.
- Improve assertions and use more precise methods like `getFirst()` in tests.
- Utilize `EnumMap` and `EnumSet` for better performance and memory efficiency in metadata logic.
- Concatenate XML strings using multi-line strings or simplify where applicable.
- Deprecate and refactor user provisioning to ensure consistency and reuse of logic.
- Add additional parameters such as `watch` in `Library` entities and set defaults in builders.
- Replace manual comparator logic with core library features like `Comparator.reverseOrder`.
- Update metadata merging methods to use `getFirst()` for target values.
- Adjust mocked objects to include additional fields in validation methods.

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

* refactor(service): remove deprecated user provisioning method

- Remove `provisionRemoteUser` method marked as deprecated in `UserProvisioningService`.
- Encourage use of `provisionRemoteUserFromHeaders` as the preferred entry point.

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

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-11-20 21:09:39 -07:00
Subhashini Ganesh
cb8f5e7a29 Fix: Normalize paths for relative sub-path calculation (#1501)
Fixes a bug preventing import of books with duplicate filenames in
different sub-folders.

The path relativization in FileUtils.getRelativeSubPath would fail in
some cases, yielding an empty sub-path. This caused a database
unique index violation as only the filename was saved as the filePath.

This commit fixes the issue by normalizing both paths before
relativization. Adds FileUtilsTest.java to validate the fix.

Fixes #1499
2025-11-20 21:08:39 -07:00
Ionuț Staicu
db9bc40960 feat: Set the browser title based on what section of the app you are on (#947)
* when reading a book, set the page title

* set page title on various sections of the app

* update page title service
2025-10-31 10:31:30 -06:00
Ionuț Staicu
d542c87afb make grid view cells clickable (#1485) 2025-10-31 01:31:07 -06:00
Ionuț Staicu
529522cf74 close #1180 - add sort by fileName (#1482) 2025-10-31 01:23:47 -06:00
beedaddy
14692b0176 Fix: Detect ISBN even if "scheme" is empty. (#1484)
This is often the case if book comes from calibre.

Fixes #1483
2025-10-31 01:23:06 -06:00
Ionuț Staicu
58bbb8d318 fix TS compile error (#1481) 2025-10-31 01:22:04 -06:00
vhqkze
d2db787867 fix: improve KOReader compatibility with Content-Disposition filename encoding (#1475)
Adjust the encoding of the `filename` attribute within the
`Content-Disposition` header to ensure better compatibility with
KOReader.

Previously, `Content-Disposition` was constructed using Spring's
`ContentDisposition.builder()`, which KOReader could not properly get
the correct filename.

This update modifies the `filename` attribute to replace non-ASCII
characters with underscores, providing a more robust fallback filename
that KOReader can correctly process. It also maintains the `filename*`
attribute for UTF-8 encoded filenames, allowing modern clients to
display the full filename.
2025-10-31 01:21:32 -06:00
Balázs Szücs
a5183c0953 refactor(api): refactor obsolete APIs including: (#1467)
- obsolete Date APIs
- obsolete Zipfile from Apache Commons Compress Updates
- JWT related obsolete APIs
- deprecated Junrar method
etc...

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-10-31 01:20:38 -06:00
Balázs Szücs
e479eb2452 feat(metadata-parser): improve Amazon parser with international locale support (#1473)
- Added locale mapping for Amazon domains to support diverse language/format specific parsing.
- Improved date parsing logic by introducing multiple date formats and locale-specific handling.
- Updated rating and review parsing to handle international formats (e.g., comma as decimal separator).
- Adjusted request headers to dynamically include locale-specific `accept-language`.
- Enhanced logging for parsing failures to provide clearer insights into issues.

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-10-31 01:19:28 -06:00
Balázs Szücs
b592e3677a refactor(tests): replace runtime-dependent timestamps with fixed values (#1469)
- Introduced fixed timestamps for `Instant` and `LocalDateTime` in multiple test classes.
- Replaced calls to `Instant.now()` and `LocalDateTime.now()` with predefined fixed values for consistency and test stability.

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-10-31 01:18:43 -06:00
aditya.chandel
865042162f Update readme 2025-10-28 13:35:51 -06:00
Aditya Chandel
1c681854ac Merge pull request #1472 from booklore-app/develop
Merge develop into master for release
v1.10.0
2025-10-28 12:42:10 -06:00
Aditya Chandel
e644000ff5 Add Book Type (epub, pdf, etc.) to sidebar filter (#1464) 2025-10-27 23:49:49 -06:00
Aditya Chandel
a5a563abf8 chore(ui): add placeholder to published date input field (#1463) 2025-10-27 23:20:46 -06:00
Aditya Chandel
7e6a553450 Add filter by “Last Read Time” to Magic Shelf (#1462) 2025-10-27 23:10:45 -06:00
aditya.chandel
3155a3666a Fix last read 2025-10-27 23:01:17 -06:00
Balázs Szücs
cd0ca7ffa8 refactor(api): Use try-with-resources for better resource management (#1457)
- Use `try-with-resources` for better resource management in `EpubMetadataWriter` and `AppMigrationService`.
- Use a single `HttpClient` instance in `GoogleParser` to improve efficiency.

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-10-27 13:38:58 -06:00
Benjamin Jackson
9e7afe6e51 Adjust permission requirement for uploading books. (#1459) 2025-10-27 13:35:24 -06:00
Me Hoy
156c16e37a feat: additionally listen to IPv6 (#1343) 2025-10-26 22:54:28 -06:00
Balázs Szücs
947a12c20a refactor(api): use pre-compiled Pattern variables instead of dynamic regular expressions (#1450)
* refactor(api): centralize and standardize regex patterns

- Extract inline regex strings to named constants
- Consolidate duplicate patterns across multiple backend classes
- Improve pattern readability with verbose regex syntax and comments

Commit improves code maintainability by eliminating pattern duplication and making regex logic more explicit without altering functionality.

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

* refactor(api): centralize regex patterns for improved maintainability

- Extracted inline regex strings to named constants across multiple classes.
- Replaced duplicate inline patterns with shared constants.
- Enhanced code readability and reduced redundancy without changing behavior.

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

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-10-26 22:53:22 -06:00
Aditya Chandel
9065d065fb Fix: Cannot delete user after KOReader setup (#1454) 2025-10-26 22:40:21 -06:00
aditya.chandel
ed2e4c4719 Add repobeats 2025-10-26 17:27:57 -06:00
aditya.chandel
3da214c4bb Refine generated SVG covers 2025-10-26 13:09:02 -06:00
aditya.chandel
88e25fcec3 Keep dashboard scroller titles for magic shelves synchronized with their respective shelf titles 2025-10-26 12:40:08 -06:00
Aditya Chandel
11e59f7588 Add configurability to dashboard scrollers with support for magic shelves (#1453) 2025-10-26 11:51:06 -06:00
Chris Debenham
4251fe42c3 Show a generated cover for books which are missing a cover image (#1438)
* Replace 'Missing Cover' image with a generated SVG

Instead of showing the 'Missing Cover' cover image, generate one using
SVG.  Split title/Author into words/10 characters manually since SVG
doesn't support word-wrap

* Styling for the generated cover
2025-10-26 09:39:36 -06:00
Aditya Chandel
5759934e41 Fix websocket OIDC check (#1436) 2025-10-24 17:48:35 -06:00
Aditya Chandel
f4beb80d38 Fix Cleanup Temporary Metadata task (#1435) 2025-10-24 17:47:19 -06:00
aditya.chandel
68745d7c16 Apply consistent global scrollbar styling 2025-10-24 17:11:27 -06:00
Aditya Chandel
8e0a2d8d00 Fix: Resolved “Book archive too large to cache” error (#1434) 2025-10-24 16:49:44 -06:00