* fix(metadata): fix LubimyczytacId and LubimyczytacRating not appearing with metadata refresh
* fix(metadata): remove searching by ISBN on lubimyczytac.pl (not supported)
* fix(metadata): add retries for lubimyczytac.pl
---------
Co-authored-by: ACX <8075870+acx10@users.noreply.github.com>
* feat(archive): add ArchiveType detection and integrate into book processing
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(cbx): enhance archive type detection for CBX files
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* refactor(tests): rename method for clarity in CbxMetadataWriterTest
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(settings): add hardcover sync settings and integrate into device settings UI
* feat(hardcover): implement Hardcover sync settings API and UI integration
* test(hardcover): add unit tests for HardcoverSyncSettingsService and HardcoverSettingsComponent
* fix(hardcover-settings): correct API key copy function to handle null values properly
---------
Co-authored-by: akiraslingshot <akiraslingshot@gmail.com>
Co-authored-by: ACX <8075870+acx10@users.noreply.github.com>
* refactor(types): improve type safety by replacing 'any' with specific types in various components
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(filters): handle undefined values in filter streams and update type for selected filters
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* refactor(epub-reader): improve rendition cleanup and enhance debug logging in helper functions
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(epub-reader): handle errors during rendition and book destruction in ngOnDestroy
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(comicvine): improve comic metadata handling with additional fields and improved search logic
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(comicvine): enhance series and issue extraction with improved regex patterns and caching mechanism
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(comicvine): enhance ComicvineBookParser with improved metadata extraction and logging
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(comicvine): improve title formatting and author extraction in ComicvineBookParser
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(metadata): add support for Lubimyczytac ID and rating fields
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(metadata): add Lubimyczytac ID and rating fields to metadata editor
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(metadata): add Lubimyczytac ID and rating fields to MetadataRefreshOptions
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat: Add custom font support for EPUB reader
This commit introduces the ability to manage and use custom fonts in the EPUB reader. Key changes include:
**Backend:**
- Added `CustomFontService` for handling custom font operations.
- Introduced `CustomFontController` for API endpoints.
- Created `CustomFontEntity` and `CustomFontRepository` for database interactions.
- Added `CustomFontMapper` and `CustomFontDto` for data transformation.
- Updated `SecurityConfig` to include JWT filter for custom fonts.
- Enhanced `GlobalExceptionHandler` to handle custom font-related exceptions.
- Added database migrations:
- `V83__Create_Custom_Font_Table.sql` for creating the custom font table.
- `V84__Add_Custom_Font_To_Epub_Preferences.sql` for integrating custom fonts with EPUB preferences.
**Frontend:**
- Added `CustomFontsComponent` and `FontUploadDialogComponent` for managing custom fonts in the settings UI.
- Updated `EpubReaderPreferencesComponent` to include custom font options.
- Introduced `CustomFontService` and `CustomFontModel` for frontend logic and data handling.
- Enhanced `SettingsComponent` to integrate custom font management.
**Other Changes:**
- Updated `EpubViewerPreferences` and `EpubViewerPreferencesEntity` to support custom fonts.
- Modified existing components and services to accommodate the new feature.
This feature enhances the user experience by allowing personalized font choices for EPUB reading.
* fix: custom font does not apply after page layout changed
* fix: duplicate API call when change EPUB global settings
* fix: some code review items, extract shared filter logic and improve UX
- Extract AbstractQueryParameterJwtFilter base class to reduce code duplication
between CoverJwtFilter and CustomFontJwtFilter
- Remove cssIdentifier and fontUrl fields from CustomFont model (no longer needed)
- Add font name sanitization to prevent XSS and ensure data integrity
- Improve error handling in CustomFontService with proper APIException usage
- Replace RuntimeException handler with specific IllegalStateException and
UnsupportedOperationException handlers in GlobalExceptionHandler
- Add skeleton loading states for font previews and font dropdowns
- Improve font loading state management in epub-reader component
- Create shared custom-font.util.ts for dropdown population logic
- Use reactive font$ subscription for real-time font updates in preferences
- Make DB migrations idempotent with IF NOT EXISTS clauses
- Optimize font file validation to read only header bytes instead of entire file
* chore: re-version migration scripts
* Fix: Kobo sync missing book covers (v1.16.4) (#2147)
Co-authored-by: acx10 <acx10@users.noreply.github.com>
* Fix: correctly update book cover hash on metadata refresh (#2149)
Co-authored-by: acx10 <acx10@users.noreply.github.com>
* Introduce Vitest as the frontend Angular testing framework for Booklore (#2150)
Co-authored-by: acx10 <acx10@users.noreply.github.com>
* Add Vitest frontend tests to CI with JUnit reporting and coverage (#2151)
Co-authored-by: acx10 <acx10@users.noreply.github.com>
* Update PR template to capture frontend test details
* Add instructions for running Angular frontend tests
---------
Co-authored-by: ACX <8075870+acx10@users.noreply.github.com>
Co-authored-by: acx10 <acx10@users.noreply.github.com>