Commit Graph
100 Commits
Author SHA1 Message Date
schroda 9e621edbf4 Use active theme as default value when creating new custom theme 2026-01-18 19:17:21 +01:00
schroda 54e9f6f9bc Reduce manga page chapter list item text size
Partially closes #1049
2026-01-18 19:17:21 +01:00
schroda 383d46846e Reduce manga page thumbnail size on small screens
Partially closes #1049
2026-01-18 19:17:19 +01:00
schroda 2b986c3564 Reduce base font size
Partially closes #1049
2026-01-18 19:07:12 +01:00
schroda 41b0fe77d6 Fix reference error causing white screen 2026-01-18 18:07:07 +01:00
schroda 7e39df09c4 Add max-age expiration to service worker image caches 2026-01-18 16:57:05 +01:00
schroda 7b13c1dcc1 Split service worker image cache into multiple 2026-01-18 16:56:57 +01:00
schroda 25b8c85ef2 Fix broken webui was updated info text
Regression 65a9a905be
2026-01-15 01:27:08 +01:00
schroda bc077bdad7 Prevent potential TypeError
"sourcesByLanguage" can be empty while the sources are still loading
2026-01-15 01:22:46 +01:00
schroda 081d37a459 Make source language filter language header sticky 2026-01-15 00:53:49 +01:00
schroda a8eea7eddd Change source language filter source select input to checkbox 2026-01-14 23:44:21 +01:00
schroda 7ef353aa2e Fix missing pinned sources in source language filter 2026-01-14 23:39:17 +01:00
schroda cfc0e672ef Store refresh token in local storage
For convenience to not have to log in everytime after closing the tab, opening a new tab, closing the browser/pwa app.

closes #1018
2026-01-14 17:13:32 +01:00
schroda 650adde181 Fix forced webui page reload on update 2026-01-14 16:47:39 +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 3d8d230995 Render some components outside of auth guard 2026-01-13 17:32:57 +01:00
schroda 9642c85007 Fix total library size chip color in light mode 2026-01-08 16:09:50 +01:00
schroda 23c587b351 Change pure black mode paper background color to true black 2026-01-08 15:42:59 +01:00
schroda 0ed0ab1109 Prevent red hue in automated neutral background colors 2026-01-08 15:15:03 +01:00
schroda f7967fbfe2 Change "save dynamic theme" button toolbar menu position 2026-01-08 15:13:45 +01:00
schroda 62fc547957 Do not disable "save dynamic color theme" button during refresh 2026-01-08 15:13:03 +01:00
schroda f2b440a669 Fix disabled save custom theme button in "save_dynamic" mode 2026-01-08 15:11:55 +01:00
schroda 2e4d2fccca Fix primary, secondary dynamic theme colors for inactive theme mode
When the DARK mode is active, the primary and secondary colors still need to be correctly selected for the dynamic theme light mode.
Otherwise, in case the dynamic color theme gets saved, the inactive theme mode has incorrect primary and secondary colors
2026-01-02 23:08:38 +01:00
schroda 3ef4e92114 Fix save "dynamic color theme" dialog title 2026-01-02 22:50:12 +01:00
schroda ce4eb98cbc Increase max length of custom themes to 32 2026-01-02 22:40:03 +01:00
schroda 4eaa701851 Add option to save dynamic manga color theme 2026-01-02 22:38:26 +01:00
schroda bc06d88db0 Use AwaitableComponent for "CreateThemeDialog" 2026-01-02 22:38:04 +01:00
schroda fd856c5cbd Increase threshold of large thumbnails for dynamic theme colors algo 2026-01-02 22:38:03 +01:00
schroda b8fa4478f7 Always use Dark-/LightVibrant color as primary color dynamic theme 2026-01-02 22:38:03 +01:00
schroda a317d55320 Improve theme auto background color
Should keep more of the original color, which previously got "washed out" because it was darkened/lightened too much
2026-01-02 22:38:02 +01:00
schroda 1d54a24adf Set "secondaryColor" for dynamic themes 2026-01-02 21:18:42 +01:00
schroda 82600fae65 [skip ci] Add missing contributors to release v20251230.01 in changelog 2025-12-30 18:05:16 +01:00
schroda 3fb4d53091 [Release] v20251230.01 2025-12-30 17:51:04 +01:00
schroda f9973e0ef3 Improve image processing settings url target adding search parameters 2025-12-28 02:42:52 +01:00
schroda cf24b388ba Fix extension info meta and action button styling
Ensure all components have the same width. Otherwise, the divider is not centered properly, which makes it look weird
2025-12-23 04:06:44 +01:00
schroda 04cdfafe31 Show uninstall button for updatable extension
fixes #1042
2025-12-23 04:06:44 +01:00
schroda 8da12f7a6e Simplify disabling image processing for mime-type 2025-12-23 02:35:01 +01:00
schroda 5def0ea818 Add new image processing settings on serve 2025-12-23 02:10:06 +01:00
schroda d20ca69dc0 Extract "image processing" components 2025-12-23 02:08:24 +01:00
schroda 4c18348890 Move "clear cache" to "images" settings page 2025-12-23 02:08:15 +01:00
schroda cedb865a42 Add "images" settings page 2025-12-23 02:08:14 +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 14a881f17f Consider "empty" download conversion as unchanged 2025-12-22 12:56:18 +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 43d994f843 Keep unchanged metadata stable for memoization
Everytime the metadata got updated, unchanged values could cause rerenders because their reference changed.
This happened e.g., for the "customThemes" which caused the MUI theme to get recreated resulting in all components to rerender due to the theme context change.
2025-12-22 12:32:48 +01:00
schroda bded64b0b1 Convert "download conversions" setting to a page 2025-12-22 12:31:54 +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
schroda 36248e17f0 Change add to library "show duplicate entry" button to be a link 2025-12-02 22:12:49 +01:00
schroda 17390b4ed9 Fix manga page "in library" button after click on "show duplicate entry" 2025-12-02 22:11:56 +01:00
schroda 13d6d1e525 Revert "Reduce rerenders on current page changes"
This reverts commit 3e9078420a.

Fixes #1040
2025-12-02 21:51:51 +01:00
schroda 8358a2f51e Include "last update timestamp" in chapter updates query 2025-11-30 18:48:12 +01:00
schroda 9646aa2caf Fix reader progress bar size setting slider max value 2025-11-30 18:44:23 +01:00
schroda 3e9078420a Reduce rerenders on current page changes
The chapters state always created a new array reference which caused potential unnecessary rerenders.
2025-11-29 16:23:45 +01:00
schroda 3d8a81bc5d Reduce rerenders of reader desktop nav bar 2025-11-29 15:26:57 +01:00
schroda b5d71adeae Prevent reader progressbar tooltips on mobile 2025-11-28 23:30:10 +01:00
schroda 860b00a0b5 Prevent reader progressbar tap highlighting on mobile 2025-11-28 23:29:51 +01:00
schroda 3dcdca7166 Reduce image rerenders in continuous reading modes on page change
In continuous reading modes the pages are always rendered regardless of if they are visible or not. This is the case to prevent layout shifts when prepending pages while scrolling up.

However, this means that a pages "load priority" and its "should load" flag changes everytime the current page changes, which causes unnecessary rerenders.
The "load priority" and "should load" flag do not matter once a page has been loaded and therefore should stay consistent once loaded.
2025-11-28 23:09:36 +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 d0735365ff Fix first visible page detection
50a6b72716 did not properly fix the detection and broke it for other reader settings.
2025-11-27 02:38:09 +01:00
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