Commit Graph

40 Commits

Author SHA1 Message Date
schroda
6564484540 Support descriptions in "CheckboxInput" 2026-05-17 13:36:41 +02:00
schroda
60b6a39bdc Update dependency "@graphql-codegen" 2026-05-15 20:41:14 +02:00
schroda
34efed7470 Revert "Support "produced characters" as hotkeys"
This reverts commit bc66d52701.

"useKey" is broken https://github.com/JohannesKlauss/react-hotkeys-hook/issues/1318
2026-05-13 23:55:34 +02:00
schroda
bc66d52701 Support "produced characters" as hotkeys
"Produced characters" were not supported as hotkeys. I.e., using "!" as a hotkey was not possible.
2026-05-13 19:05:07 +02:00
schroda
dcad44218b Fix setting invalid value for reader settings
When changing a setting from DEFAULT to another value, the value was incorrectly wrapped in an array which lead to an invalid value to get set.
This then caused an error to be thrown, making the reader unusable

fixes #1099
2026-05-09 16:44:28 +02:00
schroda
6b234ff9bc Replace "InfoIcon" with "WarningIcon" 2026-05-08 13:02:36 +02:00
schroda
d1e70c2609 Add "safe area inset" setting to reader 2026-05-08 01:58:06 +02:00
tomaioo
929a38e6fc Use static mask for password redaction 2026-05-07 23:13:43 +02:00
schroda
1ee454c137 Fix infinite hook call loop
Regression a7dcdd5651

"usePrevious" uses "useEffect" to update the ref while the fix of the commit updated the state during the render function call.
This causes the component to not actually render and immediately call the render function again. Which then leads to the "usePrevious" hooks "useEffect" to never getting called.
2026-05-05 02:09:36 +02:00
schroda
60e087d79a Fix aborting image requests
Regression 9ed05f3fc0

Due to the change to check if an image is cached, which is done async, it was possible that the image request was aborted before the request actually got queued.

In that case, the abort was called against the "noop" function and did not actually abort the triggered request.
Thus, after the image got queued, we have to optionally abort it again to ensure that the request really gets aborted.
2026-05-02 21:23:50 +02:00
schroda
e3babfed31 Fix reader page retry button in continuous reading modes
In these modes the reader does not load leading pages to prevent the resulting layout shift on load.
This behavior prevented the retry button functionality.

Due to the way loading/failed pages are rendered and how the current page is detected, it's possible that the retry button for a leading page is visible, which resulted in showing a retry button without any functionality.

fixes #1088
2026-05-02 15:30:31 +02:00
schroda
425a9bca5e Fix formatting 2026-04-27 18:07:15 +02:00
schroda
a7dcdd5651 Fix outdated selected languages in selection dialog
When directly opening the source/extension browse page as the initial page, the metadata server settings weren't loaded yet, and thus, the default values were being used.
Thus, when opening the dialog the first time, it was showing the default selected languages.
2026-04-27 15:57:33 +02:00
schroda
f95b0c8bcc Update dependency mui to v9.x 2026-04-25 23:46:03 +02:00
schroda
f6302fe3aa Add bulk migration 2026-04-17 02:19:40 +02:00
schroda
8a5aaf51f3 Add guard to "enable flaresolverr" setting 2026-04-07 15:16:08 +02:00
schroda
9ce273b5ce Use stable array/object constants 2026-03-20 03:02:52 +01:00
schroda
b63c8a548e Fix collectable collection selecting initial items lazily 2026-03-20 01:42:57 +01:00
schroda
72af9d52d1 Update lint rules 2026-03-11 19:42:02 +01:00
schroda
5dda4304d9 Migrate to oxlint + oxfmt 2026-03-11 19:41:49 +01:00
schroda
22e1b6d224 Update dependency "eslint" to v9.x
v9.39.4
2026-03-10 21:41:50 +01:00
schroda
d99d950585 Fix refreshing thumbnail during manga refresh
When using blobs (e.g. due to authentication), manually refreshing caused the thumbnail to break on the manga page.
This was caused because the image got cleaned up, but did not get reloaded again because it was considered to be already loaded.

Regression 3a27461598
2026-02-13 00:58:13 +01:00
schroda
4d7eb74a56 Merge "selected source/extension" languages 2026-01-25 17:35:42 +01:00
schroda
7ef353aa2e Fix missing pinned sources in source language filter 2026-01-14 23:39:17 +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
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
36248e17f0 Change add to library "show duplicate entry" button to be a link 2025-12-02 22:12:49 +01:00
schroda
3a27461598 Prevent triggering load of already loaded image
This caused the reader to "jump to random pages" because it caused the image to get unrendered and rendered again, leading to layout shifts.

This issue existed already for a long time but could only rarely be observed because of the hacky "cache check" logic.
The changes from 9ed05f3fc0 caused this issue to be consistent in case the new service worker could not get installed due to not meeting the required installation prerequisites. If that was the case, the cache check always returned false causing the above-described behavior.

fixes #929
2025-11-28 23:09:35 +01:00
schroda
87c3f03f3d Fix calling SpinnerImage load, error callbacks 2025-11-23 00:27:02 +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
02621dec98 Introduce "awaitable-component" 2025-11-03 21:45:53 +01:00
schroda
f539afb404 Introduce "koration" duration api 2025-10-14 21:14:52 +02:00
schroda
3e98b5172d Move "SelectableCollection" to "base" folder 2025-10-04 14:49:01 +02:00
schroda
9329ef5fdc Improve logic to show dialog outside of components 2025-10-04 14:49:00 +02:00
schroda
a2d7091712 Remove "forwardRef" usage 2025-09-25 00:20:10 +02:00
schroda
4aad410957 Add "ui login" support 2025-08-26 23:06:44 +02:00
schroda
9e5af57a5f Move "core" folder out of "features" into "base" 2025-08-16 15:44:17 +02:00