Commit Graph
100 Commits
Author SHA1 Message Date
schroda e42fde5232 Fix incorrect error message when closing backup restore dialog 2025-11-26 18:18:31 +01:00
schroda 57a782c30b Fix adding search params to url 2025-11-23 16:42:15 +01:00
schroda 87c3f03f3d Fix calling SpinnerImage load, error callbacks 2025-11-23 00:27:02 +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 36e6d7d13e Start pointer device determination on load 2025-11-22 19:14:36 +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 48b57c4a74 Simplify reader visible page detection 2025-11-17 02:19:36 +01:00
schroda 36477d1c95 Simplify scroll page into view inline alignment determination 2025-11-17 01:37:32 +01:00
schroda 50a6b72716 Fix first visible page detection in RTL + continuous horizontal mode 2025-11-17 01:24:58 +01:00
schroda d093fe0281 Prevent default action on hotkey by default 2025-11-16 22:32:18 +01:00
schroda 64d5f3b8e1 Fix preserving current page on "reader width" change
Preservation triggered on every setting change because the object instance changed
2025-11-16 22:26:06 +01:00
schroda 5c743f668c Update dependencies 2025-11-16 21:04:57 +01:00
schroda bab55bafdb Preserve reader current page on "reader width" change 2025-11-13 01:35:46 +01:00
schroda 7b89fa10c5 Fix reader current page preservation on window resize 2025-11-13 01:35:46 +01:00
schroda 2510d11888 Preserve reader current page on "page scale" setting change 2025-11-13 01:35:45 +01:00
schroda 197d55f819 Rename "useReaderHorizontalModeInvertXYScrolling" to reflect actual behavior
The Y scroll direction gets mapped to the X direction. And the horizontal direction gets inverted based on the reading direction.
2025-11-13 01:35:45 +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 b062871163 Skip gql subscriptions until auth is properly set up 2025-11-06 21:38:00 +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 7c1e4be0e8 Close "category select" dialog on "edit/create" click 2025-11-03 21:59:29 +01:00
schroda 02621dec98 Introduce "awaitable-component" 2025-11-03 21:45:53 +01:00
schroda 7502393f40 Fix back button when previous page should be ignored
In case the previous page in the history should be ignored, the back button just went back to the root page (library).
Instead, it should try to go back to the next page in the history until there is no page to go back to anymore.
2025-10-30 00:26:19 +01:00
schroda 79e708db60 Update dependencies 2025-10-26 16:12:26 +01:00
schroda ed0d597185 Cleanup getting server base url 2025-10-19 20:23:03 +02:00
schroda 2a9a794744 Fix tracker oauth login redirect url for self-hosted webui 2025-10-19 20:23:03 +02:00
schroda 2656666d2e Move request to correct component 2025-10-19 17:38:52 +02:00
schroda 18deca32f6 Simplify session context usage
Most cases were preventing some requests from getting triggered. However, this is not necessary anymore since with 6636cc66b1, this is handled globally now
2025-10-19 17:38:37 +02:00
schroda 258d1a496a Remove "auth required flag" from session storage
With 12ef012e4b this has no benefit anymore, because the app now always checks if authentication is enabled by the server first before any other request can be sent.
2025-10-16 22:46:03 +02:00
schroda f63c461fb3 Update "initial load timestamp" on initial app load 2025-10-15 23:48:57 +02:00
schroda f36b39c685 Reset "auth required flag" on initial app load 2025-10-15 23:39:56 +02:00
schroda 12ef012e4b Block requests until successful login 2025-10-15 22:50:28 +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 17a811cd39 Fix webui preview changelog url 2025-10-15 00:38:36 +02:00
schroda 588b6fc68b Update CHANGELOG.md
Add missing changes from old preview changelog
2025-10-15 00:33:16 +02:00
schroda bb6865e111 Optionally require forced page refresh on detected webui update
A forced refresh is only necessary in case the webui was already loaded and thus, still uses outdated files from the old version.

In case the app just got freshly opened in a tab, a refresh is not necessary because the latest files are already being used.
In that case, just show an update dialog which won't force a tab refresh.
2025-10-15 00:21:22 +02:00
schroda 8d276c25bd Update CHANGELOG format to follow "Keep a Changelog" 2025-10-14 21:14:53 +02:00
schroda b5c730d3db Fix tracker redirection on non logged in trackers
Incorrectly routed to the tracker oauth page which then just redirected to the tracker settings page.

Missed occurrences in 765799b236
2025-10-14 21:14:53 +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 28a2b44e94 [skip ci] Fix mapping to non-existend ui version 2025-10-08 23:29:43 +02:00
schroda beb642d150 [skip ci] Update versionToServerVersionMapping 2025-10-07 22:29:37 +02:00
schroda f0c6e789cd Add backup flags to backup import 2025-10-07 22:27:07 +02:00
schroda faa53b049f Fix downloading created backups while in dev env
Use absolute url to ensure that the backup file gets requested from the servers domain
2025-10-04 21:42:09 +02:00
schroda bc2d7cadc4 Use "GlobalDialogManager" for backup validation 2025-10-04 16:36:30 +02:00
schroda b795f98766 Replace "useCategorySelect" with "GlobalDialogManager" 2025-10-04 14:51:35 +02:00
schroda d33f708104 Add backup flag selection on backup creation 2025-10-04 14:51:34 +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 60f11a2832 Create backups via graphql api
Fixes #1022
2025-10-04 00:18:09 +02:00
schroda 6b16cdbf54 Move "i18n" import to "index.tsx" 2025-10-01 23:22:07 +02:00
schroda bd13261f7e Remove "fontsource" dependency
Fonts get loaded dynamically through "ThemeFontLoader"

Fixes #1016 along with 8c50b33a93.
See explanation of linked commit.

The problem with this import was that MUI by default uses font weight 300, 400, 500 and 700.
For some reason importing all font weights caused the issue of the linked ticket while importing only the necessary font weighs fixed it.
2025-10-01 23:22:05 +02:00
schroda bee048cfc9 Extract theme font loading logic 2025-10-01 23:20:18 +02:00
schroda 8c50b33a93 Improve theme fonts loading
- Extract all fonts and all font weights from the theme
- Load all required weights per font

Not clear 100% what is the root cause. But the (missing font weights?) loaded fonts did cause some incorrect initial tooltip width measurement that lead to an out-of-viewport tooltip placement. Depending on the tooltip text and the monitor (size + scaling) the measurement might result in a fractal width. In case the tooltip was placed right on the horizontal end of the viewport this then lead to a horizontal scrollbar which potentially caused an additional vertical scrollbar resulting in a layout shift.
Once the tooltip was rendered, the placement got corrected. Depending on the mouse placement, however, this issue caused an infinite loop of appearing and disappearing scrollbars.

Fixes #1016
2025-10-01 23:20:17 +02:00
schroda 121c74ed73 Fix source iso language detection
Caused issue for some languages, e.g., for all the different chinese languages, which are not all specified in the "IsoLanguages". These languages all incorrectly used the standard native chinese name which resulted in multiple different source groups with the same group name.
2025-10-01 01:44:30 +02:00
schroda 29e3f64527 Fix download queue start/stop button tooltip text 2025-10-01 01:44:29 +02:00
schroda c1f9699834 [skip ci] Fix bug issue template 2025-09-28 23:30:16 +02:00
schroda fb26ef2675 [skip ci] Make database field required in bug issue template 2025-09-28 23:29:02 +02:00
schroda 637bbdb4a8 [skip ci] Add database to bug issue template 2025-09-28 23:28:14 +02:00
schroda 207564cd4b [skip ci] Align bug issue template with server
- Same sort order
- Add database field
- Add server desktop environment field
2025-09-28 23:26:31 +02:00
schroda 741426173a Prevent horizontal scrollbar on viewport width increase
When increasing the window, the main reader container did not immediately reflect the change and was still smaller than the available width.
In case the viewed pages were filling the full width, this then caused the horizontal scrollbar to appear until the resize action was finished.
2025-09-27 17:40:31 +02:00
schroda d7690f9a36 Reduce rerenders on reader overlay visibility change 2025-09-27 17:40:30 +02:00
schroda b1babc9dd1 Preserve correct page index during reader resize
Ensure the restored page index is based on the page index at the start of a resize event to maintain consistency.
At least in the continuous horizontal mode, it was possible to sometimes cause the page to change while resizing.
2025-09-27 17:40:29 +02:00
schroda 1c526b3feb Prevent reader page preservation in none continuous modes 2025-09-27 13:51:26 +02:00
schroda ab1521fb81 Fix editing global reader settings
Regression 433dc17c35
2025-09-26 23:27:16 +02:00
schroda 7ddc4949e5 Fix loading of locales 2025-09-25 01:41:00 +02:00
schroda 60e03a4404 [skip ci] Update versionToServerVersionMapping 2025-09-25 01:09:55 +02:00
schroda ad3b8d4567 Update server injected subpath detection 2025-09-25 00:20:31 +02:00
schroda a2d7091712 Remove "forwardRef" usage 2025-09-25 00:20:10 +02:00
schroda bcb5e391f0 Downgrade PREVIEW version
Latest "subpath" support is broken.

Opening anything but the root path gives a blank page.
In the console a "Failed to load module script" error is shown.
This is caused because any path after the root is considered to be part of the root. Thus, invalid urls are used for all requests.

Example:
  Root: "localhost:4567/manga"
  
  Open page on "localhsot:4567/manga/44" will lead to this url being used as the root.
2025-09-24 20:43:31 +02:00
schroda 0706e4671f Normalize extracted theme fonts before loading them
Ensure fonts are properly trimmed and stripped of quotes to maintain consistency and avoid potential loading issues.

The default fonts defined by MUI e.g., are set as "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif" which lead to an invalid font request.

Fixes #1012
2025-09-23 22:15:11 +02:00
schroda d625a7b3dc Fix incorrect truthy check for conditional rendering in SourceLanguageSelect
Ensure proper validation for `sourcesOfLanguage` to prevent potential rendering issues.
2025-09-22 23:59:20 +02:00
schroda f37d7e892a Fix tsc issues 2025-09-22 17:58:28 +02:00
schroda b6d7f6da5d Add zustand dev tools 2025-09-22 01:10:36 +02:00
schroda f6b94c838b Fix reset of reader store
After the slice states got reset, the base reset function just reverted all those resets and only reset the base states in the store (manga, scrollbar, ...)
2025-09-22 01:10:35 +02:00
schroda 525173e05e Add dedicated store access util functions
Makes it easier to find the specific store slice usage
2025-09-21 01:16:59 +02:00
schroda ed488f76dd Always use "useShallow" for store selection 2025-09-21 01:16:57 +02:00
schroda 5730690ae6 Simplify ReaderControls#useHandleClick 2025-09-21 01:16:53 +02:00
schroda ca5920919e Simplify ReaderControls#useOpenPage 2025-09-21 01:16:51 +02:00
schroda f5c7379fc4 Simplify ReaderControls#useOpenChapter 2025-09-21 01:16:49 +02:00
schroda 1c0b982bae Remove unnecessary TFunction parameter 2025-09-21 01:16:47 +02:00
schroda 19e45424ae Make react router routing possible outside components 2025-09-21 01:16:44 +02:00
schroda b13bb86f40 Move app theme related types to dedicated file
Fixes circular dependency.
2025-09-21 01:16:42 +02:00
schroda ed53aff071 Extract "reader chapters store slice" into file 2025-09-21 01:16:39 +02:00
schroda 9f5db5496f Extract "reader pages store slice" into file 2025-09-21 01:16:36 +02:00
schroda 6da8a3fd87 Move reader store in sub dir 2025-09-21 01:16:33 +02:00
schroda fb70d89940 Move reader "tap zone state" to "reader store" 2025-09-21 01:16:30 +02:00
schroda f60b537115 Move reader "progress bar state" to "reader store" 2025-09-21 01:16:28 +02:00