Commit Graph

50 Commits

Author SHA1 Message Date
c5da33d6b2 feat: add anonymous mode toggle to hide reading progress and tracking
Adds a toggleable anonymous mode (eye icon in header) that:
- Stops syncing read progress to the server while reading
- Hides mark as read/unread buttons on book covers and lists
- Hides reading status badges on series and books
- Hides progress bars on series and book covers
- Hides "continue reading" and "continue series" sections on home
- Persists the setting server-side in user preferences (anonymousMode)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:35:22 +01:00
a82ce024ee feat: display missing books count badge on series covers
Show an orange badge with BookX icon on series covers when the Stripstream
API reports missing books in the collection. Also display a warning status
badge on the series detail page header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:17:53 +01:00
f48d894eca feat: add show more/less toggle for series description
Allow users to expand long series descriptions with a "Show more" button
and scroll through the full text, instead of being limited to 3 lines.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:11:05 +01:00
1d03cfc177 feat: add favorite series carousel on home page
All checks were successful
Build, Push & Deploy / deploy (push) Successful in 4m15s
Displays a carousel of favorite series after the ongoing sections.
Hidden when the user has no favorites.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:03:06 +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
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
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
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
e6fe5ac27f fix: harden offline fallback and track visitable pages
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 1m36s
2026-03-01 18:33:11 +01:00
5a3b0ace61 fix: improve service worker offline flow and dev toggle UX 2026-03-01 12:47:58 +01:00
Julien Froidefond
0d33462349 feat: update service worker to version 2.4, enhance caching strategies for pages, and add service worker reinstallation functionality in CacheSettings component
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 2m57s
2026-01-04 07:39:07 +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
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
df3c386199 feat: add view mode toggle and update pagination controls in PaginatedSeriesGrid component 2025-11-16 08:05:57 +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
7cc72dc13d feat: implement advanced settings for user preferences, allowing configuration of max concurrent requests, reader prefetch count, and circuit breaker settings 2025-10-24 17:50:58 +02:00
Julien Froidefond
bc3da12fbb feat: enhance service worker caching strategies and implement offline accessibility checks for books 2025-10-19 20:23:37 +02:00
Julien Froidefond
d3860ce7cc feat: add tabbed interface for ClientSettings with display, connection, and cache options 2025-10-19 10:40:04 +02:00
Julien Froidefond
0c080bd525 feat: implement image caching mechanism with configurable cache duration and flush functionality 2025-10-19 10:36:19 +02:00
Julien Froidefond
7d9bac5c51 feat: add scan library functionality and related error handling in LibraryHeader and services 2025-10-19 09:55:07 +02:00
Julien Froidefond
9024a78938 feat: enhance ClientLibraryPage with LibraryHeader component and improve loading skeleton structure for better user experience 2025-10-18 21:59:13 +02:00
Julien Froidefond
816abe2b90 feat: add cache entries API and enhance CacheSettings component with server and service worker cache previews 2025-10-18 13:45:15 +02:00
Julien Froidefond
b7704207ec feat: add caching debug logs and configurable max concurrent requests for Komga API to enhance performance monitoring 2025-10-18 09:08:41 +02:00
Julien Froidefond
f5e1332e21 feat: add force reload functionality to PhotoswipeReader for refreshing images and improve memory management by revoking blob URLs 2025-10-17 22:53:58 +02:00
Julien Froidefond
4672532a3a feat: integrate PhotoswipeReader component and remove BookReader for enhanced reading experience; add zoom functionality to control buttons 2025-10-17 17:04:37 +02:00
Julien Froidefond
2e183bb5d6 feat: add background customization settings with gradient and image options, update preferences context and UI components for user preferences management 2025-10-17 10:47:05 +02:00
Julien Froidefond
77742bbec2 feat: add retry functionality to ErrorMessage component and implement retry logic in ClientLibraryPage and ClientSeriesPage for improved error handling 2025-10-17 10:21:35 +02:00
Julien Froidefond
f636a7b112 feat: add cache size retrieval functionality and display in CacheSettings component 2025-10-17 08:23:27 +02:00
Julien Froidefond
9899789fce feat: add admin role management with user authentication checks and update sidebar for admin access 2025-10-16 22:39:04 +02:00
Julien Froidefond
83f523c11a feat: implement user account management features including profile display and password change functionality 2025-10-16 22:27:06 +02:00
Julien Froidefond
4139d8a059 refactor: streamline LibraryPage component by integrating ClientLibraryPage for improved structure and error handling 2025-10-16 13:25:51 +02:00
Julien Froidefond
4c676cfd16 feat: add service worker cache clearing functionality and update French translations 2025-04-03 10:42:19 +02:00
Julien Froidefond
fcd084863a feat: add pagination size selection and compact view toggle in series grid 2025-03-28 13:51:44 +01:00
Julien Froidefond
66f467c66b feat: nextbook on next page if last page 2025-03-07 08:15:34 +01:00
Julien Froidefond
60481d9433 feat: errors traductions 2025-03-06 21:48:47 +01:00
Julien Froidefond
907e09682b fix: little bugs and refacto debug service 2025-03-06 21:41:24 +01:00
Julien Froidefond
2e9b191f98 fix: translation error in french books 2025-03-02 06:56:46 +01:00
Julien Froidefond
2289753b84 feat(i18n): components pack translated 2025-03-02 06:31:41 +01:00
Julien Froidefond
d94232e531 feat(i18n): controlbutton 2025-03-02 06:15:20 +01:00
Julien Froidefond
00554d73b0 fix: error on book fetches 2025-02-28 08:11:32 +01:00
Julien Froidefond
bc2ceadb8f fix: errorMessage has to throw apperror code if apperror 2025-02-28 08:00:34 +01:00
Julien Froidefond
279f6c6e88 refacto: error and types 2025-02-27 21:59:14 +01:00
Julien Froidefond
ea51ff53a9 feat(i18n): first shoot on translated errors 2025-02-27 15:05:44 +01:00
Julien Froidefond
e76b849b17 feat(i18n): loginpage translate 2025-02-27 12:48:59 +01:00
Julien Froidefond
148bfd71e1 feat(i18n): download page 2025-02-27 12:45:03 +01:00
Julien Froidefond
0d1d969e53 feat(i18n): series page 2025-02-27 12:33:58 +01:00
Julien Froidefond
52a212ef07 feat(i18n): translate library page 2025-02-27 12:29:15 +01:00
Julien Froidefond
ed8817d76c feat: i18n : sidebar and settings page 2025-02-27 11:48:20 +01:00
Julien Froidefond
f39e4779cf feat: first shoot on translation 2025-02-27 11:31:39 +01:00