* feat(bookmark): add bookmark editing, priority, color, notes, and improved sorting
- Add UpdateBookMarkRequest DTO and bookmark editing dialog/component in frontend
- Extend BookMark model/entity with color, notes, priority, updatedAt fields
- Implement bookmark update API and service logic with validation
- Sort bookmarks by priority and creation date
- Add Flyway migrations for new columns and index
- Update tests for new bookmark features
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(bookmark): prevent notes length display error in edit dialog
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(bookmark): reset editing state and improve dialog cancel handling
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(bookmark): improve edit dialog template with Angular @if and conditional error display
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(bookmark): add view dialog, search, and improved display for bookmarks in reader
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(bookmark): redesign bookmarks section UI with improved layout, styling, and interactions
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(bookmark): enhance view dialog UI with improved layout, styling, and priority display
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* chore(migration): rename migration files to maintain sequential versioning
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(bookmark): add view and edit actions to bookmark list with improved UI and tooltips
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(bookmark): add search and filter functionality to bookmark list in EPUB reader
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(bookmark): update search input to use PrimeNG IconField and InputIcon components
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* 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>
* 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
* 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>
* 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>
* 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>
* 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>