* 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
* 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>
* 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>
* 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
* 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
* 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>