Commit Graph
100 Commits
Author SHA1 Message Date
schroda aacf1903a1 Remove console log 2025-08-27 01:24:12 +02:00
schroda 33fb30a399 Fix including credentials in gql client
Caused the basic auth popup to constantly open again

Regression 4aad410957
2025-08-27 01:10:09 +02:00
schroda 0bd3370d89 Add auth header only when necessary 2025-08-27 00:41:59 +02:00
schroda 592161353e [skip ci] Remove unused dependency "js-cookie" 2025-08-26 23:18:24 +02:00
schroda a3603c475e [skip ci] Cleanup "useMouseDragScroll" array access 2025-08-26 23:11:23 +02:00
schroda ece31ddc18 Fix mouse cursor drift during drag scroll
Previously, the drag-scroll implementation used incremental relative positioning
  which accumulated rounding errors over time. This caused the mouse cursor to
  gradually drift away from its original position during prolonged drag operations,
  particularly noticeable on slower hardware or systems with lower frame rates.

  The fix switches from cumulative delta updates to absolute positioning:
  - Track initial mouse and scroll positions when drag starts
  - Calculate scroll position as: initialScroll - (currentMouse - initialMouse)
  - This ensures the visual position remains locked throughout the entire drag

  This change eliminates drift by avoiding cumulative floating-point
  errors that occurred with the previous += approach.

  1. Inverted Logic: The code adds the mouse delta to scrollLeft/scrollTop, but this is backwards. When you drag right, you want the content to move left (scroll increases), and vice versa.
  2. Cumulative Rounding Errors: Using += with floating-point deltas accumulates rounding errors over time, especially on slower hardware where mousemove events may be processed less frequently or with more delay.
  3. Frame Rate Dependency: On slower hardware, if the browser can't keep up with all mouse events, some movements get skipped, but the positions still update, causing the reference point to drift.
2025-08-26 23:06:45 +02:00
schroda 4e4a607c01 Ensure up-to-date navbar extension update amount
The shown amount was based on the cached extension data from the server.
To refresh the data, the "Extensions" page had to be opened.
2025-08-26 23:06:45 +02:00
schroda 4aad410957 Add "ui login" support 2025-08-26 23:06:44 +02:00
schroda 403cab7d80 Fix deletion of chapters while reading logic
- Consider duplicated chapters in "should delete chapter" check
- Check each duplicate if it can be deleted
2025-08-25 02:06:23 +02:00
schroda bfb10ad204 Fix app storage "null" and "undefined" value handling 2025-08-24 20:48:31 +02:00
schroda 414211ae74 Hide extension update info in navbar without available updates 2025-08-24 20:48:26 +02:00
schroda 21e2e5cd8c [skip ci] Fix pushing outside repo in "update_i18n_languages" workflow 2025-08-19 01:31:39 +02:00
schroda 5d7f0a1f07 [skip ci] Push git changes in "update_i18n_languages" workflow 2025-08-19 01:23:20 +02:00
schroda 446fee9108 [skip ci] Fix commiting changes in "update_18n_languages" workflow 2025-08-19 01:08:32 +02:00
schroda b81cc8ec17 Show available extension updates in navbar 2025-08-18 22:52:28 +02:00
schroda 11e98b6913 Prevent infinite browse source loading
The loading placeholder was never removed in case the whole source catalogue was added to the library and the "hide entries in library" setting has been enabled.
2025-08-18 22:45:25 +02:00
schroda 9b189db919 Update dependencies 2025-08-16 18:03:55 +02:00
schroda 7b9cce765e Remove outdated "@ts-ignore" usage
Got fixed with v5.3.5
2025-08-16 17:25:54 +02:00
schroda f13fcc0e8c Move type "NullAndUndefined" to util types 2025-08-16 17:10:48 +02:00
schroda e1058200c0 Delete unused "ExtensionOptions" component 2025-08-16 16:04:02 +02:00
schroda a403e6cb5f Structure "extension" in sub-features 2025-08-16 16:03:32 +02:00
schroda d2b2eb9595 Move components to "browse" feature 2025-08-16 15:58:43 +02:00
schroda 32bfca8db2 Structure "source" in sub-features 2025-08-16 15:48:07 +02:00
schroda 9e5af57a5f Move "core" folder out of "features" into "base" 2025-08-16 15:44:17 +02:00
schroda f4c06d474d Merge "Context" and "ContextProvider" components 2025-08-16 02:21:43 +02:00
schroda f548ba9502 Structure "reader" in sub-features 2025-08-16 02:02:13 +02:00
schroda fc12f5dfd3 Move "UpdateChecker" to "updates" feature 2025-08-15 22:17:10 +02:00
schroda 1b4bf22542 Rename folder "modules" to "features" 2025-08-15 22:02:58 +02:00
schroda 7e6ced1d09 Fix manga migration with disabled category step
Should have been included in 1f55531436

fixes #1000
2025-08-15 19:24:11 +02:00
schroda c4663d9e23 Prevent creating categories without names
Fixes #995
2025-08-13 22:39:35 +02:00
schroda 847de5b9cf Cleanup category settings 2025-08-13 22:01:10 +02:00
schroda e6a0f68621 Show correct empty category message 2025-08-13 21:37:36 +02:00
schroda 24a1fca8be Infer base url again on prod
Regression 5543e134fa
2025-08-13 11:03:54 +02:00
schroda 6bd931ef79 [skip ci] Fix "preview" and "build" scripts 2025-08-13 01:00:37 +02:00
schroda bdf1413648 Trim "ALLOWED_HOSTS" env var values 2025-08-13 00:57:46 +02:00
schroda 954fa4bf82 Add "setup" script
- install deps
- create env files
2025-08-13 00:53:44 +02:00
schroda 765799b236 Fix tracker redirection on non logged in trackers
Incorrectly routed to the tracker oauth page which then just redirected to the tracker settings page.
2025-08-04 21:53:04 +02:00
schroda 063ec5ea83 Hide private track option if unsupported in active track card 2025-08-04 21:37:09 +02:00
schroda 1f55531436 Fix handling of disabled manga migration steps
In case e.g., the "tracking" should not get migrated, the "migration action" was still created.
While creating the action, an error was thrown because the "tracking" information was missing, as expected, since it's not required.

To prevent this, the actions should only get created in case they are actually required for the migration.
2025-08-03 15:41:30 +02:00
schroda 5543e134fa Use env vars 2025-08-02 23:14:21 +02:00
schroda 4f5754399b Prevent translation of hardcoded value in user facing text 2025-08-02 13:05:29 +02:00
schroda 4d6e1bef74 [Release] v20250801.01 2025-08-01 20:35:05 +02:00
schroda c758cc41e1 Prevent white screen on page load
Bug introduced with ff58dcc480.
With 18ddf46f17 the "appearance" settings got moved from the local storage to the server metadata.
However, the old settings still remained in the local storage, which includes a value with they key "appTheme". This was the id of the selected app theme.
With ff58dcc480 this key got resued for the app theme object, which leads to a type error in case the old setting is still present in the local storage.
2025-08-01 20:32:54 +02:00
schroda cd04be7f52 [Release] Version v20250731.01 2025-07-31 21:13:49 +02:00
schroda ca938a6438 Fix tsc error 2025-07-28 20:59:14 +02:00
schroda a38b2fce9d Simplify "useStorage" hook 2025-07-28 20:57:16 +02:00
schroda 7eb3b0ac45 Fix parsing storage value
Regression ef6c1fce56
2025-07-28 20:56:36 +02:00
schroda ed2d60dd1c Handle reading string values from storage
Regression ef6c1fce56
2025-07-28 20:40:39 +02:00
schroda 6d98bf8870 Ensure app theme "id" property exists
The app themes do not have the "id" prop by default.
2025-07-28 02:51:54 +02:00
schroda 1ab0178d88 Fix local light app theme flicker on initial render
MUIs "useColorScheme" hook always returned "system" on the initial render.
(Probably because it's used outside the AppProvider context)
2025-07-28 02:38:18 +02:00
schroda ef6c1fce56 Fix local/session storage parsing/stringifying values
The old logic stringifyed all values, including strings, which caused problems with reading external stored values (e.g., mui-mode) via the "useStorage" hook.
2025-07-28 02:34:02 +02:00
schroda fb00f51107 Set last known app theme background color until theme is loaded 2025-07-28 00:25:30 +02:00
schroda ff58dcc480 Set last known app theme until theme is loaded 2025-07-28 00:24:27 +02:00
schroda dabadf1b43 Reset nav bar width on override 2025-07-28 00:24:26 +02:00
schroda 7b581e49b0 Remove error name from error message 2025-07-28 00:22:36 +02:00
schroda 56eabae9ae Improve graphql errors display in toast 2025-07-28 00:22:35 +02:00
schroda 20ca6d6cda Fix download conversion setting input labels 2025-07-26 01:12:25 +02:00
schroda fcc68ce594 Mention "none" download conversion target mime-type in description 2025-07-26 01:12:25 +02:00
schroda a846a84777 Fix download conversion change detection
The setting was considered to have always been modified. This resulted in the save button never being disabled.
2025-07-26 01:12:24 +02:00
schroda bd6653ff88 Consider unread chapters only for "mark prev as read"
Otherwise, the "last read at" timestamp gets unintentionally updated
2025-07-25 01:50:04 +02:00
schroda 9a9dbab7df Introduce "SearchParam" enum 2025-07-23 01:52:41 +02:00
schroda 18f524c91a Move virtuoso constant to proper location 2025-07-23 01:37:47 +02:00
schroda ebe8a3c376 Fix "extension" root route redirect
Not sure why this redirects to the root route instead of to the extension page (got introduced in 2e105a0539)
2025-07-23 01:36:05 +02:00
schroda b444c427e4 Fix removed "source" route redirect
Page got merged in db65b9df44 and never got properly redirected to the new location (8178574815)
2025-07-23 01:36:05 +02:00
schroda 2ccd4a3de7 Rename "browse" "source" tab to "sources" 2025-07-23 01:36:03 +02:00
schroda 39d34af9bc Improve backup install missing extension routing
Only opened the "browse" page instead of routing to the "extension" tab of the "browse" page
2025-07-23 01:35:55 +02:00
schroda cc4ab2e0dd Remove unused args in "createUpdateReaderPageLoadState" 2025-07-23 01:27:13 +02:00
schroda 1fb5b3cc09 Fix chapter list download ahead option
The option should not download anything in case there is already the download ahead number of unread downloaded chapters available.

Regression 85cec6fd8d
2025-07-21 02:40:10 +02:00
schroda bbb2da52f4 Change scanlator exclusion filter checked icon to "X" 2025-07-20 23:01:36 +02:00
schroda 53b14a8878 Auto focus time setting 2025-07-20 23:01:36 +02:00
schroda 1dd67ff072 Save "custom filters" reader settings per device 2025-07-20 23:01:35 +02:00
schroda 93b9e84a37 Fix "pure dark mode" setting visibility
In case the apps theme mode was never changed, the "mui-mode" was never set.
This lead to the "pure black mode" setting to never be visible.
2025-07-20 23:01:35 +02:00
schroda 2b1c2a0b6c Add "download conversion" setting support 2025-07-20 23:01:34 +02:00
schroda fed291a5dc Remove "__typename" prop from gql request variables
Will cause the request to fail in case the prop was not expected
2025-07-20 16:48:59 +02:00
schroda 98d087dd58 Remove DialogTiles from DialogContent children 2025-07-20 14:02:16 +02:00
schroda bac77599f5 Add WebView support 2025-07-19 21:33:13 +02:00
schroda 0d23d8077f Add private tracking support 2025-07-19 21:33:12 +02:00
schroda 3c4321e625 Extract tracker search track button 2025-07-19 16:54:14 +02:00
schroda 13a7d21e60 Show new tracker search result data
- score
- totalChapters
2025-07-19 16:40:29 +02:00
schroda b9d6339270 Fix track search result type detection
The server replaces "_" with "-" in the track result format (at least or Anilist)
2025-07-19 16:23:35 +02:00
schroda 4f0fcea7f5 Ignore cached data for database library manga category cleanup
Button only worked once and then required a page refresh, because, otherwise, the cached data from the first call just kept getting used
2025-07-15 01:53:11 +02:00
schroda 4d573174c6 [skip ci] Fix i18n resource generator workflow skip condition
The commit message is the title plus description. Thus, using "endsWith" for matching the title does not work
2025-07-15 01:48:33 +02:00
schroda 02557743dd Update dependencies 2025-07-15 01:33:17 +02:00
schroda ae1d0ecd67 Remove html parsing of manga and tracker descriptions
Reverts d726793e3d and a48cb0ce27 to get rid of the known issue mentioned in the commit description of d726793e3d.
Don't remember why I added this, it doesn't seem that either of the descriptions contains any html.
2025-07-15 01:33:17 +02:00
schroda f221425a89 Recursively escape disallowed html tags in manga and tracker descriptions
In case there the description contained something like "<some text that is interpreted as an invalid html tag>", it was sanitized to "<some" with the rest of the text in the "tag" getting removed.
2025-07-15 00:44:35 +02:00
schroda b49243607d Fix lib folder name of "react-router-dom" 2025-07-15 00:35:15 +02:00
schroda 89cff9db6a Handle duplicated chapters in chapter download action again
Regression 85cec6fd8d
2025-07-13 14:21:30 +02:00
schroda 73f8c72204 Remove unnecessary button link in "Extensions" "ExtensionCard"
The "Card" itself is already a link to the same path. Besides this being invalid html which might cause unexpected errors
2025-07-12 18:12:11 +02:00
schroda 84c6371380 Prevent routing to "ExtensionInfo" on extension list action button click 2025-07-12 18:09:06 +02:00
schroda 57e7a806bd Remove switch click handling in "ExtensionInfo" "SourceCard"
The click handling caused the mutation to be executed twice due to the click handling on the CardActionArea itself.
This then caused issues with the set metadata, because the server doesn't prevent storing the same "sourceId" and "meta key" combination twice.
2025-07-12 18:04:37 +02:00
schroda 2d44fc8d00 [skip ci] Insert weblate token into "tokens.json" in "update_i18n_languages" workflow 2025-07-12 01:59:25 +02:00
schroda 107ad79b17 [skip ci] Create empty "tokens.json" in "update_i18n_languages" workflow 2025-07-12 01:38:27 +02:00
schroda 5eb3d93afa [skip ci] Fix "update_i18n_languages" workflow package json script execution 2025-07-12 01:30:49 +02:00
schroda 49c1fa6cee [skip ci] Ignore "update_i18n_languages" workflow head commit name condition on manual dispatch 2025-07-12 01:29:21 +02:00
schroda f55e090a73 [skip ci] Add options to trigger "update_i18n_languages" workflow manually 2025-07-12 01:25:33 +02:00
schroda a77a587e59 [skip ci] Fix "update_i18n_languages" workflow dependency installation 2025-07-12 01:20:37 +02:00
schroda c3cff8ee8b [skip ci] Move "misc" server settings to bottom of page 2025-07-12 01:11:38 +02:00
schroda 74f0fec02d Fix dnd on touch devices 2025-07-09 00:22:21 +02:00
schroda 8783956fbc Slice chapter list correctly for downloads
Chapters are sorted in desc order and thus, the oldest chapters are at the end of the list.
Thus, the chapters to download need to be taken from the end instead from the start
2025-07-09 00:22:19 +02:00
schroda 1c9d62659f Include "meta" field in manga library fragment
The chapter list options stored in the meta are required for the download action
2025-07-08 22:02:25 +02:00