Commit Graph

1317 Commits

Author SHA1 Message Date
acx10
7f66cd34f2 .... 2025-12-19 19:41:51 -07:00
acx10
01df30b5c4 ... 2025-12-19 19:22:11 -07:00
acx10
aa981101bb Merge branch 'develop' into feature/serve-angular-from-spring-drop-nginx
# Conflicts:
#	booklore-api/src/main/java/com/adityachandel/booklore/config/security/SecurityConfig.java
2025-12-19 19:11:28 -07:00
Pedro Nave
bfa08054b5 Fix: Add missing kobo progress bar and stats (#1942)
* fix: added missing kobo progress bar from book card

* fix: added kobo progress bar to metadata viewer

* fix: consider kobo progress in stats
2025-12-19 18:59:31 -07:00
Giancarlo Perrone
32a1a2ac34 Fix/hardcover api key per user (#1943)
* feat: add hardcover API key and sync settings to KoboSync and KoboUserSettings entities

* feat(hardcover): enhance sync functionality to use per-user API keys

- Updated HardcoverSyncService to utilize user-specific Hardcover API keys for syncing reading progress.
- Modified syncProgressToHardcover method to accept userId, allowing for personalized sync settings.
- Improved logging to include userId in sync operations for better traceability.
- Adjusted KoboReadingStateService to pass userId when triggering sync to Hardcover.

* feat(database): update kobo_location_source column size and add hardcover settings

- Increased the size of the kobo_location_source column to accommodate longer location strings from Kobo devices.
- Added new columns for hardcover API key and sync settings in the kobo_user_settings table to enhance user customization.

* refactor(hardcover): update tests to use user-specific Kobo settings

- Replaced AppSettingService with KoboSettingsService in HardcoverSyncServiceTest to utilize user-specific settings.
- Modified syncProgressToHardcover method calls to include userId for personalized sync operations.
- Added a new test case to handle scenarios where user settings are not found, ensuring robust error handling.

---------

Co-authored-by: akiraslingshot <akiraslingshot@gmail.com>
2025-12-19 18:56:41 -07:00
CounterClops
54108754f9 feat: add additional cover art actions and settings (#1938)
* feat: add cover image auto cropping when oversized

* feat: add smart cropping to ignore sections of constant colours in cover images

* fix: description implied cbx files would be excluded from cover regeneration when they are not

* feat: add options to bulk edit cover images in the library view

* fix: resolve issues with batching requests and data validation for cover images
2025-12-19 11:20:50 -07:00
Balázs Szücs
4e6842c189 refactor(fb2, misc): Improve code quality, update to modern Java patterns, add reasonable initial values for StringBuilders (#1932)
* fix(FilenamePatternExtractor): correct date format regex logic and add comprehensive tests

- Fix bug in buildRegexForDateFormat to handle single 'M' and 'd' at any position
- Add FilenamePatternExtractorDateFormatTest and FilenamePatternExtractorIntegrationTest for date extraction scenarios
- Improve StringBuilder initialization for performance in multiple classes
- Precompile regex patterns in Fb2MetadataExtractor for efficiency
- Add Fb2MetadataExtractorOptimizationTest for pattern and StringBuilder usage
- Add null check in BookFilePersistenceService.markAllBooksUnderPathAsDeleted
- Improve path validation logic in PathPatternResolver

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

* test: remove unnecesary tests

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

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-19 10:59:11 -07:00
Muppetteer
0767f75ddb fix: Library icon name bug (#1934) 2025-12-19 10:58:42 -07:00
ripdog
cc76501fd0 feat: add library sync URL generation in KoboUrlBuilder (#1937) 2025-12-19 10:58:17 -07:00
Giancarlo Perrone
2da01e7a2e feat(hardcover): sync Kobo reading progress to Hardcover (#1926)
* feat(hardcover): sync Kobo reading progress to Hardcover

- Add HardcoverSyncService to sync reading progress asynchronously
- Store hardcover_book_id in book_metadata for faster lookups
- Integrate with KoboReadingStateService to trigger sync on progress updates
- Add database migration for hardcover_book_id column

* test(hardcover): add unit tests for HardcoverSyncService

* test(hardcover): add HardcoverSyncService mock to unit tests for improved coverage

* refactor(hardcover): update syncProgressToHardcover method to use book ID

- Changed syncProgressToHardcover to accept book ID instead of BookEntity.
- Integrated BookRepository to fetch BookEntity within the method.
- Updated related unit tests to reflect the new method signature and ensure proper functionality.

* feat(hardcover): enhance HardcoverSyncService with edition lookup and logging

- Added a method to find an edition by ISBN, improving the accuracy of edition information.
- Enhanced logging for progress calculations, search responses, and reading progress updates for better traceability.
- Updated the handling of default edition IDs to ensure correct page counts are used when available.

* feat(metadata): add hardcoverBookId and its locking mechanism

- Introduced hardcoverBookId and hardcoverBookIdLocked fields to MetadataClearFlags, BookMetadata, and BookMetadataEntity.
- Updated BookMetadataUpdater to handle locking for hardcoverBookId.
- Enhanced MetadataChangeDetector to compare changes for hardcoverBookId, ensuring proper metadata management.

* feat(metadata): add hardcoverBookId input and display in metadata dialogs

- Introduced hardcoverBookId input field in the metadata editor with locking mechanism.
- Updated metadata restore dialog to display hardcoverBookId when available.
- Enhanced user interface for better metadata management and visibility.

* feat(metadata): integrate hardcoverBookId across components and forms

- Added hardcoverBookId and hardcoverBookIdLocked fields to relevant models and interfaces.
- Updated metadata editor, picker, and review components to include hardcoverBookId input and locking functionality.
- Enhanced form controls and metadata handling to support the new hardcoverBookId feature for improved user experience.

* feat(migration): add hardcover_book_id_locked column to book_metadata table

- Introduced a new column hardcover_book_id_locked with a default value of FALSE to the book_metadata table for enhanced metadata management.

* fix(metadata): realign html with develop

---------

Co-authored-by: akiraslingshot <akiraslingshot@gmail.com>
2025-12-19 10:56:40 -07:00
ACX
f869ac0ac4 Add sequential next/previous book navigation from library, filtered, and search views (#1931)
Co-authored-by: acx10 <acx10@users.noreply.github.com>
2025-12-18 14:48:40 -07:00
CounterClops
63f71d1fde fix: load all pages before doing bulk actions (#1928) 2025-12-18 11:11:09 -07:00
CounterClops
79278216ea fix: file renaming with wrong extension (#1929)
* fix: update path pattern resolver to better handle file extensions

* chore: add unit tests to cover the newly found edge cases

* fix: resolve issue with file extension duplication when using fallback filename
2025-12-18 11:09:43 -07:00
Muppetteer
7c2736229f fix: Bookdrop bulk edit mobile fixes (#1925) 2025-12-18 11:08:32 -07:00
Balázs Szücs
055e86df18 fix(FileService): update User-Agent header for ComicVine to let the Parser through (#1880)
* fix(FileService): update User-Agent header for improved metadata fetching

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

* fix(ComicvineBookParser): update User-Agent header for enhanced metadata fetching

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

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
2025-12-16 23:31:20 -07:00
ACX
690dbb0aa2 Upgrade from Angular 20 to 21 + update other dependencies (#1916)
Co-authored-by: acx10 <acx10@users.noreply.github.com>
2025-12-16 23:29:18 -07:00
CounterClops
6df338a0d7 feat(api, ui): add bookdrop bulk edit and metadata pattern extraction (#1846)
* feat: add bulk editors for bookdrop

* fix: update pattern behaviour and remove redundant frontend logic

* fix: clean up pattern extractor

* fix: create shared logic to align bulk edit and pattern extract and resolve some minor behaviour issues

* fix: date matching pattern and resolve issues with pattern matching to ignore extra trailing data

* chore: cleanup tests and code to be cleaner

* chore: cleanup autogenerated testing rules

* fix: update to use the new dialog launcher service

* fix: add boolean null check and data validation on pattern extract api

* feat: add bulk edit batching to avoid issues with extremely large import counts

* fix: adding timeout to avoid potential redos issue

* fix: add try blocks for issues with potential NumberFormatException

* fix: update isbn and asin regex to better match spec

* fix: improve error handling and logging

* fix: make component names consistent with the project

* fix: mising import for pattern syntax exception

* chore: add additional tests for the bulk edit service

* fix: improve accessibility to new ui elements

* fix: further improvements to the pattern extractor timeout

* fix: improve frontend placeholder validation

* fix: add back changes accidently removed by merge
2025-12-16 23:27:17 -07:00
Muppetteer
0a5f12f38c fix: Bookdrop UI mobile support (#1911)
* fix: Bookdrop UI mobile support

* fix: Wrap long select option items in mobile mode
2025-12-16 21:28:26 -07:00
acx10
80249b17aa Update tag 2025-12-15 23:12:36 -07:00
acx10
694358fc2f Switch version bump logic to bump:major/minor/patch labels 2025-12-15 22:15:54 -07:00
dependabot[bot]
a10b0da8e5 chore(deps): bump docker/login-action from 2 to 3 (#1908)
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-15 22:06:54 -07:00
acx10
150038d308 Add dependabot.yml 2025-12-15 21:57:14 -07:00
acx10
a65e88f275 Fix tagging 2025-12-15 21:37:40 -07:00
acx10
5a54ed509d UI Tweaks 2025-12-15 21:20:39 -07:00
acx10
32386a405b Fix flyway file version 2025-12-15 19:57:14 -07:00
acx10
7ef92ba459 Skip docker login and image push on pull requests 2025-12-15 19:30:45 -07:00
WorldTeacher
a4a94b731a feat(opds): allow user to set sorting for opds feed in settings (#1824)
* feat(opds): allow user to set sorting for opds feed in settings

* patch(opds): re-add search normalization

* patch(opds): add series to feedid determination

---------

Co-authored-by: WorldTeacher <admin@theprivateserver.de>
2025-12-15 19:24:01 -07:00
renovate[bot]
83f5e3a31d chore(deps): update actions/setup-java action to v5 (#1871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 19:26:36 -07:00
renovate[bot]
8318dcde8e chore(deps): update actions/upload-artifact action to v6 (#1872)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 19:26:15 -07:00
Muppetteer
0b4bccb462 fix(ui): Force page reload on logout (#1870) 2025-12-14 19:22:06 -07:00
Muppetteer
ed05820658 fix(ui): library directory picker dialog double heading (#1867) 2025-12-14 19:21:19 -07:00
ACX
3f14376a3a Add Flyway migration conflict detection in CI (#1888)
* Add Flyway migration conflict detection in CI

* Update flyway version

---------

Co-authored-by: acx10 <acx10@users.noreply.github.com>
2025-12-14 12:16:16 -07:00
ACX
f602137bc7 Speed up CI builds by introducing dependency caching (#1874)
Co-authored-by: acx10 <acx10@users.noreply.github.com>
2025-12-14 11:35:40 -07:00
renovate[bot]
5a0daff2c4 chore(deps): update actions/checkout action to v6 (#1869)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 01:59:25 -07:00
renovate[bot]
3a4a1f3000 chore(deps): update dependency org.flywaydb:flyway-mysql to v11.19.0 (#1868)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 01:59:10 -07:00
renovate[bot]
8a520481ae chore(deps): update dependency org.apache.commons:commons-text to v1.15.0 (#1865)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 01:58:53 -07:00
renovate[bot]
eace4fcbde chore(deps): update lscr.io/linuxserver/mariadb docker tag to v11.4.8 (#1862)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 01:58:24 -07:00
renovate[bot]
1382698d54 chore(deps): update dependency org.freemarker:freemarker to v2.3.34 (#1861)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 01:58:14 -07:00
ACX
79c8a61c21 Add Flyway migration version conflict check in GitHub Actions (#1863)
Co-authored-by: acx10 <acx10@users.noreply.github.com>
2025-12-14 01:57:32 -07:00
renovate[bot]
55eddf4063 chore(deps): update dependency org.assertj:assertj-core to v3.27.6 (#1859)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-13 23:42:52 -07:00
renovate[bot]
95ea371bdd chore(deps): update dependency gradle to v8.14.3 (#1858)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-13 23:42:31 -07:00
CounterClops
3b839d06ba fix: remove the personal rating extraction from fb2 books (#1856) 2025-12-13 22:46:30 -07:00
Harsh Vardhan
9da13ae818 Feat/conversion CBX to EPUB compression configuration (#1844)
* feat(conversion): add image compression percentage setting for CBX to EPUB conversion

* feat(conversion): add conversion image compression setting to kobo sync settings frontend
2025-12-13 21:23:19 -07:00
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