Commit Graph

179 Commits

Author SHA1 Message Date
2174579cc1 fix: hide "mark as unread" button on unread books for Stripstream provider
Return null for readProgress when Stripstream book status is "unread"
with no current page, aligning behavior with Komga provider.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 21:19:20 +01:00
e6eab32473 fix: fetch real book counts in Stripstream getSeriesById to fix greyed covers
All checks were successful
Build, Push & Deploy / deploy (push) Successful in 4m18s
bookCount and booksReadCount were hardcoded to 0, causing all series
covers to appear completed (opacity-50). Now queries the series endpoint
to get actual counts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:41:27 +01:00
86b7382a04 refactor: merge onDeck and ongoingBooks into single "continue reading" carousel
Some checks failed
Build, Push & Deploy / deploy (push) Has been cancelled
Uses /books/ongoing as single source for Stripstream, displayed with
featured header style. Removes separate "up next" section.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:39:33 +01:00
53af9db046 perf: use dedicated /books/ongoing and /series/ongoing Stripstream endpoints
All checks were successful
Build, Push & Deploy / deploy (push) Successful in 4m52s
Replaces manual ongoing series derivation (fetching 200 series per library)
with the new API endpoints, reducing API calls and improving accuracy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:25:49 +01:00
b0d56948a3 fix: use proper reading_status filters for Stripstream home page
All checks were successful
Build, Push & Deploy / deploy (push) Successful in 7m13s
The Stripstream provider was showing all books and first library's series
instead of using reading status filters. Now ongoingBooks uses
reading_status=reading, ongoing series are derived from books being read,
and latest series are fetched from all libraries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 21:19:35 +01:00
fc9c220be6 perf: stream Stripstream images and increase image fetch timeout
Some checks failed
Build, Push & Deploy / deploy (push) Failing after 3s
Stream image responses directly to the client instead of buffering the
entire image in memory, reducing perceived latency. Increase image fetch
timeout from 15s to 60s to avoid AbortError on slow page loads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 17:53:37 +01:00
539bb34716 perf: optimize Komga caching with unstable_cache for POST requests and reduce API calls
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
- Fix POST requests (series/list, books/list) not being cached by Next.js fetch cache
  by wrapping them with unstable_cache in the private fetch method
- Wrap getHomeData() entirely with unstable_cache so all 5 home requests are cached
  as a single unit, reducing cold-start cost from 5 parallel calls to 0 on cache hit
- Remove N+1 book count enrichment from getLibraries() (8 extra calls per cold start)
  as LibraryDto does not return booksCount and the value was only used in BackgroundSettings
- Simplify getLibraryById() to reuse cached getLibraries() data instead of making
  separate HTTP calls (saves 2 calls per library page load)
- Fix cache debug logs: replace misleading x-nextjs-cache header check (always UNKNOWN
  on external APIs) with pre-request logs showing the configured cache strategy
- Remove book count display from BackgroundSettings as it is no longer fetched

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 23:10:31 +01:00
7e4c48469a feat: enhance Stripstream configuration handling
- Introduced a new resolver function to streamline fetching Stripstream configuration from the database or environment variables.
- Updated various components and API routes to utilize the new configuration resolver, improving code maintainability and reducing direct database calls.
- Added optional environment variables for Stripstream URL and token in the .env.example file.
- Refactored image loading logic in the reader components to improve performance and error handling.
2026-03-11 21:25:58 +01:00
7d0f1c4457 feat: add multi-provider support (Komga + Stripstream Librarian)
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
- Introduce provider abstraction layer (IMediaProvider, KomgaProvider, StripstreamProvider)
- Add Stripstream Librarian as second media provider with full feature parity
- Migrate all pages and components from direct Komga services to provider factory
- Remove dead service code (BaseApiService, HomeService, LibraryService, SearchService, TestService)
- Fix library/series page-based pagination for both providers (Komga 0-indexed, Stripstream 1-indexed)
- Fix unread filter and search on library page for both providers
- Fix read progress display for Stripstream (reading_status mapping)
- Fix series read status (books_read_count) for Stripstream
- Add global search with series results for Stripstream (series_hits from Meilisearch)
- Fix thumbnail proxy to return 404 gracefully instead of JSON on upstream error
- Replace duration-based cache debug detection with x-nextjs-cache header

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 11:48:17 +01:00
a1a95775db fix: align book sorting with Komga numberSort
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m19s
2026-03-05 08:45:02 +01:00
3d7ac0c13e feat: add global Komga search autocomplete in header
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 5m50s
2026-03-04 13:46:02 +01:00
6a06e5a7d3 fix: disable service worker by default in production
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 2m6s
2026-03-02 21:20:47 +01:00
30e3529be3 fix: invalidate library series cache when read progress changes
Some checks failed
Deploy with Docker Compose / deploy (push) Failing after 48s
- Add LIBRARY_SERIES_CACHE_TAG to getLibrarySeries fetch
- Revalidate library-series tag in updateReadProgress and deleteReadProgress
- Add eslint ignores for temp/, .next/, node_modules/

Made-with: Cursor
2026-03-02 13:27:59 +01:00
fdc9da7f8f fix: support service worker toggle in prod and dev
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 2m5s
2026-03-01 21:41:33 +01:00
5a3b0ace61 fix: improve service worker offline flow and dev toggle UX 2026-03-01 12:47:58 +01:00
b8961b85c5 fix: reduce unauthenticated log noise and add request path context
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m46s
2026-02-28 22:18:55 +01:00
dc9f90f78f fix: preserve custom backgrounds and home fallback layering 2026-02-28 22:05:07 +01:00
01951c806d refactor: make library rendering server-first and deterministic
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m7s
Move library header/covers to deterministic server-side rendering, split preference controls into controlled/uncontrolled modes, and remove client cover wrapper to eliminate hydration mismatches and provider coupling on library pages.
2026-02-28 14:06:27 +01:00
612a70ffbe chore: resolve lint warnings with targeted type and rule fixes 2026-02-28 11:59:30 +01:00
1a88efc46b chore: migrate lint to ESLint CLI with flat config 2026-02-28 11:52:27 +01:00
ecce0a9738 fix: invalidate home cache when updating read progress
- Add cache tags support to BaseApiService
- Tag home data with 'home-data' tag in HomeService
- Use revalidateTag('home-data', 'max') after read progress updates
- With 'max' profile: serve stale while fetching fresh in background
2026-02-28 10:16:12 +01:00
fcbd9d0533 chore: next upgrade 2026-02-27 17:01:14 +01:00
0c3a54c62c feat: perf optimisation
Some checks failed
Deploy with Docker Compose / deploy (push) Failing after 2s
2026-02-27 16:23:05 +01:00
38c7e59366 fix: use fullTextSearch in body for series search API 2026-02-27 09:14:53 +01:00
b9c8b05bc8 fix: resolve komga api errors 2026-02-27 09:02:11 +01:00
Julien Froidefond
ad11bce308 revert: restore page-by-page download method (old method works better) 2026-01-04 11:39:55 +01:00
Julien Froidefond
1ffe99285d feat: add fflate library for file decompression and implement file download functionality in BookOfflineButton component
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 5m18s
2026-01-04 11:32:48 +01:00
Julien Froidefond
2c8c0b5eb0 feat: enhance service worker functionality with improved caching strategies, client communication, and service worker registration options
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m42s
2026-01-04 06:48:17 +01:00
Julien Froidefond
b497746cfa feat: enhance home and library pages by integrating new data fetching methods, improving error handling, and refactoring components for better structure
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m17s
2026-01-04 06:19:45 +01:00
Julien Froidefond
489e570348 feat: enrich library data by fetching book counts from the API and handling errors gracefully 2026-01-04 05:57:22 +01:00
Julien Froidefond
0d7d27ef82 refactor: streamline image handling by implementing direct streaming in BookService and ImageService, and update .gitignore to include temp directory 2026-01-03 22:03:35 +01:00
Julien Froidefond
e903b55a46 refactor: implement abort controller for fetch requests in multiple components to prevent memory leaks and improve error handling 2026-01-03 21:51:07 +01:00
Julien Froidefond
512e9a480f refactor: remove caching-related API endpoints and configurations, update preferences structure, and clean up unused services
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 7m22s
2026-01-03 18:55:12 +01:00
Julien Froidefond
87ac116b9b feat: implement recursive file deletion in ServerCacheService to remove matching JSON cache files based on prefix key 2025-12-07 19:35:12 +01:00
Julien Froidefond
181240cd5f feat: add cache invalidation for series after updating or deleting read progress, and enhance BookGrid and BookList components with refresh functionality 2025-12-07 18:49:16 +01:00
Julien Froidefond
feb8444b35 refactor: streamline book and series services by removing deprecated methods and enhancing API calls for fetching books and series data 2025-12-07 13:09:29 +01:00
Julien Froidefond
10b903a136 refactor: update API service parameters to support multiple values and enhance filtering logic for library and series services 2025-12-07 12:58:34 +01:00
Julien Froidefond
e242b919ac Revert "refactor: implement caching for user preferences using ServerCacheService to reduce database calls and improve performance"
This reverts commit 1fa4024f91.
2025-12-07 11:57:20 +01:00
Julien Froidefond
1fa4024f91 refactor: implement caching for user preferences using ServerCacheService to reduce database calls and improve performance 2025-12-07 11:40:10 +01:00
Julien Froidefond
daeb90262a refactor: optimize ServerCacheService TTL settings for paginated lists and static data to enhance caching efficiency 2025-12-07 11:37:20 +01:00
Julien Froidefond
0bbc92b0e4 refactor: enhance library and series services to improve API data fetching and caching mechanisms, including client-side filtering for deleted items and unread status 2025-12-07 11:12:47 +01:00
Julien Froidefond
4c4ebf2b06 Revert "feat: enhance ClientSeriesPage to utilize initial series and books props for improved data handling and loading state management"
This reverts commit 239ea19ac3.
2025-12-07 10:10:55 +01:00
Julien Froidefond
239ea19ac3 feat: enhance ClientSeriesPage to utilize initial series and books props for improved data handling and loading state management 2025-12-07 10:03:44 +01:00
Julien Froidefond
39e3328123 chore: update various components and services for improved functionality and consistency, including formatting adjustments and minor refactors 2025-12-07 09:54:05 +01:00
Julien Froidefond
4f5724c0ff fix: increase maximum size parameter in library service API calls to improve data retrieval 2025-12-07 09:53:41 +01:00
Julien Froidefond
3b24fe0f01 feat: implement view mode toggle functionality in PaginatedBookGrid and PaginatedSeriesGrid components 2025-11-16 08:02:37 +01:00
Julien Froidefond
349448ef69 feat: implement request deduplication and concurrency management in image loading for improved performance 2025-10-31 13:07:37 +01:00
Julien Froidefond
b49177ffbf feat: enhance KOMGA_DEBUG functionality to disable request delays in debug mode and log request queue statistics 2025-10-29 13:33:38 +01:00
Julien Froidefond
24431c6718 feat: add KOMGA_DEBUG environment variable for enhanced logging of Komga requests and responses 2025-10-29 13:15:17 +01:00
Julien Froidefond
0a1ae8c9ea refactor: update logger configuration to use standard ISO timestamps and simplify production output format for better readability 2025-10-29 13:12:41 +01:00