Commit Graph

451 Commits

Author SHA1 Message Date
schroda
41b0fe77d6 Fix reference error causing white screen 2026-01-18 18:07:07 +01:00
schroda
7b13c1dcc1 Split service worker image cache into multiple 2026-01-18 16:56:57 +01:00
schroda
0fd5bb3284 Fix missing "custom app languages"
Regression c1ac58f4d6
2026-01-14 16:34:38 +01:00
schroda
65a9a905be Migrate to lingui
Switch to "lingui" for better DX.
Tried to persist existing languages as much as possible.

Removed "vite-plugin-node-polyfills" because it's incompatible with "lingui"
2026-01-13 17:33:36 +01:00
schroda
c1ac58f4d6 Split up language utils file 2026-01-13 17:33:34 +01:00
schroda
f9973e0ef3 Improve image processing settings url target adding search parameters 2025-12-28 02:42:52 +01:00
schroda
5def0ea818 Add new image processing settings on serve 2025-12-23 02:10:06 +01:00
schroda
1b0d907708 Add new "external image processing" settings for downloaded images 2025-12-23 02:07:56 +01:00
schroda
083586c567 Update graphql files structure 2025-12-22 14:00:44 +01:00
schroda
230dae83c3 Fix SourceMangas showing incorrect loading placeholder
After all pages had been loaded, the revalidation request of the first page caused the loading placeholder to not disappear anymore.
This was only a visual bug and did not affect the actual functionality.
2025-12-22 12:35:40 +01:00
schroda
30856f996d Always revalidate first page for local source browse requests
fixes #1041
2025-12-22 12:35:08 +01:00
schroda
162b477032 Add "auto backup flags" settings 2025-12-22 12:31:48 +01:00
schroda
3ff6f2ec5f Add "opds cbz mime-type" setting 2025-12-13 17:50:29 +01:00
schroda
064dc9041b Add "hikari connection pool" setting 2025-12-06 20:01:31 +01:00
schroda
e914c04c88 Fix force page reload decision after a webui update 2025-12-06 20:01:09 +01:00
Zeedif
84cfa6bea5 Update KOReader Sync settings (#1030)
* feat(settings): refactor and implement KOReader Sync settings page

Refactors the KOReader Sync settings section into its own dedicated page and implements the full connection and configuration flow.

The previous implementation in the main server settings was outdated and incomplete. This change aligns the frontend with the latest backend logic and provides a complete user experience.

Key changes include:
- Separated the UI into two states: a login form for initial connection and a configuration panel for existing connections.
- Implemented `connectKoSyncAccount` and `logoutKoSyncAccount` mutations to handle authentication with the KOReader Sync server.
- Updated the `SERVER_SETTINGS` GraphQL fragment to use the new `koreaderSyncStrategyForward` and `koreaderSyncStrategyBackward` fields, removing the deprecated `koreaderSyncStrategy`.
- Moved all KOReader Sync settings from the generic Server Settings page to a dedicated route at `/settings/koreader-sync`.
- Restructured and improved i18n keys for better clarity and consistency.

Ran `yarn gql:codegen` to regenerate GraphQL types and helpers.

* Extract credentials login into component

* Update to server changes and cleanup

---------

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
2025-12-06 19:59:39 +01:00
schroda
8358a2f51e Include "last update timestamp" in chapter updates query 2025-11-30 18:48:12 +01:00
schroda
57a782c30b Fix adding search params to url 2025-11-23 16:42:15 +01:00
schroda
3dfb80a237 Fix image queue creation 2025-11-23 00:23:33 +01:00
schroda
fe4bfd922e Queue image requests per source
If http protocol is h2 or newer, allow:
 - 5 requests per source
 - unlimited local source requests
2025-11-23 00:08:23 +01:00
schroda
890b304b4a Ignore source/extension, tracker icon and thumbnails requests from image queue
The server is not requesting these images through an extension; thus, it is not a problem to send them directly to the server since there is no problem of getting the server "stuck" due to extension rate limits.
2025-11-22 23:50:05 +01:00
schroda
9ed05f3fc0 Cache images via service worker
Improves the image request logic by making it possible to check if an image is cached.
In case an image is cached, it does not need to be put into the image queue because it won't be sent to the server.
2025-11-22 23:50:03 +01:00
schroda
704d3b191f Flag event listeners as passive 2025-11-22 19:14:43 +01:00
schroda
651edf7c82 Prevent potential TypeError during pointer device type determination 2025-11-22 16:49:06 +01:00
schroda
e5eda76ea7 Recreate ws client when receiving auth error message 2025-11-20 13:58:44 +01:00
schroda
88f1ef7384 Improve reader horizontal mode scroll Y to X re-mapping
When scrolling really fast, the delta value could increase, which leads to incorrect trackpad detection, because the delta value is not consistent over consecutive scroll events
2025-11-13 01:35:44 +01:00
schroda
cdab741ce5 Replace missed occurrences with koration 2025-11-09 01:13:31 +01:00
schroda
490ebb5bde Restart subscriptions after token refresh
In case the connection got lost and the client reconnected again, there is a possibility that the auth token is expired. This will lead to the subscription to fail due to being unauthorized.
This, however, does not close the connection and the heartbeat messages are still being sent and received.
Thus, after refreshing the token, the connection is still alive but not authorized, which is the same as not having the connection open.
2025-11-07 12:09:36 +01:00
schroda
284c194ac3 Add "reset" functions to clients 2025-11-07 01:28:56 +01:00
schroda
8ac93ff3ff Recreate graphql ws client only as last resort
Try to force a reconnection by terminating the client first.
2025-11-06 02:42:33 +01:00
schroda
1d639f45ca Restart graphql subscriptions after ws client recreation
Disposing the client does not restart active subscriptions.
2025-11-06 02:41:58 +01:00
schroda
71b70ab0da Ensure graphql ws client is terminated when recreating it 2025-11-06 02:39:02 +01:00
schroda
932499f211 Reset app initial load time on page reload 2025-11-05 01:17:18 +01:00
schroda
198d899b86 Fix forced reload detection when tab is resumed after WebUI update
In case the tab gets resumed, it does not get fully reloaded but does reexecute js.
This caused the initial timestamp to get overwritten and lead to the forced reload detection to be incorrect, because it assumed that the app just got loaded.
2025-11-04 23:29:17 +01:00
schroda
ed0d597185 Cleanup getting server base url 2025-10-19 20:23:03 +02:00
schroda
0ffb54e2cc Fix infinite loading
- Reset "requires auth" flag in session storage for reset on tab refresh
- Fix context los for resolving, rejecting queued request
- Process queued requests after successful login

Regression 6636cc66b1

fixes #1028
2025-10-15 22:50:27 +02:00
schroda
6636cc66b1 Prevent sending requests that are known to fail
In case it's still unknown if auth is set up on the server, only the initial request to detect this should be sent. Since all other requests will also just fail, they should be blocked until the auth initialization is completed.

While the access token is getting refreshed, no request will succeed since the access token is expired; thus, they should not be sent.
2025-10-15 03:06:46 +02:00
schroda
f539afb404 Introduce "koration" duration api 2025-10-14 21:14:52 +02:00
schroda
f961e734bc Improve graphql ws client connection loss handling
- Retry on all disconnect events
- Retry infinitely
- Cap retry backoff strategy delay at heartbeat interval (20s)
- Recreate client in case reconnecting isn't working
2025-10-10 19:08:46 +02:00
schroda
f0c6e789cd Add backup flags to backup import 2025-10-07 22:27:07 +02:00
schroda
60f11a2832 Create backups via graphql api
Fixes #1022
2025-10-04 00:18:09 +02:00
schroda
7ddc4949e5 Fix loading of locales 2025-09-25 01:41:00 +02:00
schroda
ad3b8d4567 Update server injected subpath detection 2025-09-25 00:20:31 +02:00
Soner Köksal
4d4477640e Add dynamic subpath support (#1011)
* Add dynamic subpath support for WebUI

- Add SubpathConfig utility for server-side subpath detection
- Configure React Router basename from server config
- Update API base URL handling for subpath compatibility
- Fix asset loading with relative paths
- Add VITE_SUBPATH environment variable for development
- Update locales and manifest paths for subpath support

Closes #174

* Move VITE_SUBPATH interface to vite-env.d.ts

* Ensure production bundle always uses relative base
2025-09-23 23:23:19 +02:00
schroda
b6d7f6da5d Add zustand dev tools 2025-09-22 01:10:36 +02:00
schroda
19e45424ae Make react router routing possible outside components 2025-09-21 01:16:44 +02:00
schroda
e68cb65874 Move reader "overlay state" to "reader store" 2025-09-21 01:16:15 +02:00
schroda
7d71780fbc Properly type scalar "Duration" 2025-09-18 22:28:08 +02:00
schroda
80a576db63 Include chapter info in continue reading button tooltip 2025-09-18 22:28:07 +02:00
schroda
8745101c8a Add "open in webview" button in "SourceMangas"
closes #991
2025-09-08 00:59:14 +02:00