Commit Graph

6181 Commits

Author SHA1 Message Date
MajorTanya 33faa5a356 Address bundleOf deprecation (#3073) 2026-03-18 12:56:10 +06:00
AntsyLich f6b2684323 Add installation id for feature flags (#3052) 2026-03-10 23:53:11 +06:00
AntsyLich 81871a3469 Reapply "Fix cache invalidation isn't done at startup (#2970)"
This reverts commit d219c5e3bb.
2026-02-26 18:43:03 +06:00
AntsyLich 0024278f4b Reapply "Fix thread starvation caused by not yielding or using an inappropriate thread pool (#2955)"
This reverts commit 1d7c838ae6.
2026-02-26 18:42:54 +06:00
AntsyLich f9f938f5af Release v0.19.4 2026-02-26 18:27:20 +06:00
AntsyLich 1d7c838ae6 Revert "Fix thread starvation caused by not yielding or using an inappropriate thread pool (#2955)"
This reverts commit  22d5c9d9f4
2026-02-26 18:25:56 +06:00
AntsyLich d219c5e3bb Revert "Fix cache invalidation isn't done at startup (#2970)"
This reverts commit e6cc38de06.
2026-02-26 18:25:56 +06:00
AntsyLich 84265febf3 Fix extension install/update stuck at pending (#3000)
Co-authored-by: p
2026-02-26 01:58:38 +00:00
AntsyLich 0394714274 Run automatic library updates even when connected to a VPN (#2996)
Co-authored-by: jeremiejig <3978761+jeremiejig@users.noreply.github.com>
2026-02-25 13:05:30 +00:00
Cuong-Tran 75b445fa8f Going back now first clears search query on browse extension tab (#2906)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2026-02-25 12:41:45 +00:00
AntsyLich 0cc724108b Add all pages of adjacent chapters in the UI instead of only the first or last three (#2995) 2026-02-25 12:28:53 +00:00
AntsyLich 8b2d35f306 Fix migration dialog not showing for consecutive prompts from the same screen (#2994) 2026-02-25 11:15:13 +00:00
AntsyLich 47816d4b21 Fix migration's selected sources order not preserved (#2993) 2026-02-25 17:04:24 +06:00
NarwhalHorns 3c6f0f1697 Add option for bookmarked chapters to download dropdown (#2891) 2026-02-21 16:14:55 +06:00
NarwhalHorns ab214526c6 Optimize tracked library filter (#2977)
Co-authored-by: NarwhalHorns <onefailedgamer@gamil.com>
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2026-02-20 16:22:46 +00:00
Luca Auer e6cc38de06 Fix cache invalidation isn't done at startup (#2970) 2026-02-20 21:09:00 +06:00
Cuong-Tran 9867c160f7 Remove redundant userSelected from selection methods (#2976) 2026-02-20 20:22:05 +06:00
Cuong-Tran 20c899f2cd Don't wrap an intent-chooser inside another intent-chooser (#2921) 2026-02-20 20:20:13 +06:00
Luca Auer 22d5c9d9f4 Fix thread starvation caused by not yielding or using an inappropriate thread pool (#2955) 2026-02-15 21:47:31 +06:00
MajorTanya cf93afab45 Add src:local search alias for Local Source (#2928) 2026-02-06 01:15:34 +06:00
MajorTanya b543bc089a Clean up some build warnings (#2929)
* Replace deprecated rememberPlainTooltipPositionProvider

* Remove superfluous when branch

This when is marked as exhaustive.

* Replace deprecated LibrariesContainer call

AboutLibraries now wants us to produce the libraries ourselves.

* Replace deprecated ClipboardManager with Clipboard

Clipboard uses suspend functions, hence the coroutine scope addition.

* Use multi-dollar strs to simplify GraphQL queries

These have been available since Kotlin 2.1.

* Remove various redundant casts & conversions

- WebViewScreenContent: loadingState is in the LoadingState.Loading
  branch, no need to cast at all
- Bangumi: username is not modified, make val
- Kavita: token is already a String
- PagerViewerAdapter: insertPageLastPage is already null-checked
- PagerViewerAdapter: use reified filterIsInstance
- ReaderViewModel: chapter IDs are already Longs
- CloudflareInterceptor: webview is smart-cast to non-null here

* Replace deprecated MenuAnchorType

Literally just a typealias for ExposedDropdownMenuAnchorType anyway.

* OptimizeNonSkippingGroups is enabled by default

* Suppress shadowing warning

This is explicitly intentional according to the KDocs.

* Migrate Context Receivers to Context Parameters

Requires changing the compiler arg, but that is part of the migration:

https://blog.jetbrains.com/kotlin/2025/04/update-on-context-parameters

Apparently, the only visible change is that names are required now.
"_" can be used for anonymous context parameters.

* Fix expression bodies with explicit return

Naming conflict resolved by aliasing.

From 2.4/2.5 onward, these will only be allowed with explicit return
types, or have to be turned into a block body. I opted for the latter
since the function is reasonably dense already.

see: https://youtrack.jetbrains.com/issue/KTLC-288

* Suppress deprecation of non-AutoMirrored icons

We use these arrows for navigation in the Upcoming screen.
I strongly doubt the AutoMirrored versions would make sense for our
use-case.

* Explicitly opt-in to new annotation default rules

affects the following annotated value-parameters:
- Preference.SliderPreference.steps (`@IntRange`)
- ReaderViewModel.State.brightnessOverlayValue (`@IntRange`)
- ReadingMode.iconRes (`@DrawableRes`)
- MigrationListScreenModel.Dialog.Progress.progress (`@FloatRange`)

see: https://youtrack.jetbrains.com/issue/KT-73255
see: https://github.com/Kotlin/KEEP/blob/change-defaulting-rule/proposals/annotation-target-in-properties.md

Warning message was the following:

    This annotation is currently applied to the value parameter only, but in the future it will also be applied to field.
    - To opt in to applying to both value parameter and field, add '-Xannotation-default-target=param-property' to your compiler arguments.
    - To keep applying to the value parameter only, use the '@param:' annotation target.
2026-02-05 11:29:21 +06:00
MajorTanya 4e4bdffdf3 Add "src:" prefix to search by source ID (#2927)
Allows users to search for the exact source ID in their library.

Similar to the Browse > Migrate screen, but filtered in the Library,
where users can take all the usual actions.

Could be used in the future to change the search behaviour of tapping
the source name in the title info view to search by the ID with this
prefix.
2026-02-03 15:54:22 +06:00
Cuong-Tran 82ffc8efa6 Fix Add Repo input not taking up the full dialog width (#2816) 2026-01-24 19:50:15 +06:00
Cuong-Tran 533a578bdb Fix memoization in manga bottom action menus (#2886) 2026-01-24 19:41:18 +06:00
MajorTanya bbe9aa8561 Add Filters to Updates screen (#2851)
* Add Filters to Updates screen

Behaves basically like the filters in the library:

- Unread: Show/Don't show unread chapters
- Downloaded: Show/Don't show downloaded chapters
- Started: Show/Don't show chapters that have some progress but aren't
  fully Read
- Bookmarked: Show/Don't show chapters that have been bookmarked

Started behaves differently from its Library counterpart because the
actual manga data is not available at this point in time and I thought
calling getManga for each entry without caching would be a pretty bad
idea.

I have modelled this closely on the filter control flow in the
Library, but I'm sure this can be simplified/adjusted in some way.

* Move most filtering logic to SQL

Unread, Started, and Bookmarked filters are now part of the SQL query.

Download state cannot be filtered in the database so it remains in
Kotlin.

Because the Downloaded filter has to be run in Kotlin, the combine
flow uses the preferences flow twice, once to get the SQL query params
and once for the Kotlin filters (only Downloaded at this time).

* Add "Hide excluded scanlators" to update filters

Based on the work done in #1623 but integrated with the other filters
in this PR. Added the user as a co-author for credit.

Co-authored-by: Dani <17619547+shabnix@users.noreply.github.com>

---------

Co-authored-by: Dani <17619547+shabnix@users.noreply.github.com>
2026-01-17 10:43:40 +00:00
NGB-Was-Taken a4f5a8184c Enable logcat logging on stable and debug builds without enabling verbose logging (#2836) 2026-01-07 22:22:52 +06:00
NGB-Was-Taken 4ce249c1a0 Fix crash when trying to install/update extensions while shizuku isn't running (#2837) 2026-01-07 22:17:53 +06:00
MajorTanya edcf84d902 Fix nullability of MAL authors breaking search (#2834)
One of these days I'll get through a tracker change without
nullability problems...
2026-01-07 19:30:44 +06:00
Constantin Piber bd5c4d48f9 Add a small increment to chapter number before comparison to fix progress sync issues for Suwayomi (#2675)
Due to a `Float->Double->Float` conversion somewhere inside Mihon, the
tracker sees 2.1 as 2.0999999046325684, which means this filter ignores
the 2.1 chapter (which we just tried to mark as read). This small
epsilon is small enough to never bother any serious usage, but large
enough to ignore any such conversion errors.

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2026-01-07 08:36:37 +00:00
MajorTanya 51b3ab3fd1 Add authors/artists to MAL search results (#2833) 2026-01-07 08:16:56 +00:00
MajorTanya 9bf2d78a42 Optimise MAL search queries by ~11x (#2832)
Previously, the app made one request for the search, and then fired
off 1 request per search result to obtain additional data, such as
each title's synopsis, etc.

However, MAL's search allows field selection during the initial query,
which will return all the data in that first response, avoiding the
massive bunch of requests (and alleviating some pressure on MAL from
our userbase).

By combining the selected fields into one constant, I was able to also
get rid of the MALUserListSearch entirely because it was redundant.
This allows for a unified MALManga->TrackSearch helper, further
reducing complexity.

I got to my "11x" improvement because on page of search results has 10
elements, and this change turns 11 (1+10 for results) requests into 1.
2026-01-07 13:59:42 +06:00
AntsyLich 906d6f3cdb Remember descriptionAnnotator across composition
Closes #2510

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2025-12-27 01:43:39 +06:00
AntsyLich e059190fab Cleanup extension screen search query predicate 2025-12-27 01:34:00 +06:00
AntsyLich a39b5a56e8 Switch to M3E ExtendedFloatingActionButton 2025-12-27 01:04:49 +06:00
AntsyLich 3e6afee13b Switch to MaterialExpressiveTheme 2025-12-27 00:50:03 +06:00
AntsyLich 9a11ec8ead Use materilalKolor for monet compat color scheme 2025-12-27 00:31:18 +06:00
Constantin Piber 1263df9d41 Implement automatic removal of downloads on Suwayomi after reading, configurable via extension settings (#2673)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2025-12-20 12:54:17 +00:00
MajorTanya 7a1c8a1b61 Fix pre-1970 upload date display in chapter list (#2779)
A user in #2777 was using the ComicInfo.xml Year/Month/Day fields to
indicate date of publication for some American comics, which often
predate the UNIX Epoch of 1970.

They were seeing "N/A" displays because this line of code discarded
date information for any time before Jan 1st, 1970.

The `toRelativeString` extension function used in the other
`relativeDateText` function already accounts for very distant dates
(anything >7 days away turns into full date, not relative, regardless
of setting, though disabling the relative timestamp setting
circumvents this with the same result). Removing this line should not
cause any issues as it is purely a display difference and the use case
of backdating comics to pre-1970 is worth it in my opinion.
2025-12-18 11:26:35 +00:00
Luca Auer 4c9cfd8da5 Minimize memory usage by reducing in-memory cover cache size (#2266)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2025-12-16 23:08:24 +06:00
AntsyLich 2e0786f699 Fix reader not saving read duration when changing chapter (#2784) 2025-12-12 18:49:57 +00:00
AntsyLich 876c3f951b Update tracker icons (#2773) 2025-12-10 15:19:46 +06:00
AntsyLich c222a28bd1 Cleanup BaseOAuthLoginActivity and TrackLoginActivity (#2748) 2025-11-30 12:17:25 +00:00
AntsyLich 7161bc2e82 Fix mass migration not using the same search queries as individual migration (#2736) 2025-11-23 18:05:30 +00:00
NGB-Was-Taken c3d858a561 Fix shizuku installer not updating installed extensions (#2697)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2025-11-23 08:16:38 +00:00
Mend Renovate 13552c5ffa Update dependency com.pinterest.ktlint:ktlint-cli to v1.8.0 (#2708)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2025-11-23 07:55:54 +00:00
NGB-Was-Taken 2ec67ac0c1 Stop tap zones from triggering when scrolling is stopped by tapping (#2680) 2025-11-14 13:10:19 +06:00
AntsyLich 412815af06 Revert "Fix reader tap zones triggering after scrolling was stopped by the user" (#2670) 2025-11-07 13:07:14 +00:00
AntsyLich aa300cb53e Fix extra padding appearing in reader after user interactions (#2669) 2025-11-07 10:00:59 +00:00
Trevor Paley 855eea2ada Improve WebView multi-window UX (#2662)
- Navigation history for lower windows is preserved when a popup is opened
- Back gesture will close a popup window rather than the entire WebView activity when there is no previous page
- The leftmost close button closes the entire activity as before
- When a popup window is shown, a new button appears to close just that window
2025-11-07 15:26:04 +06:00
NGB-Was-Taken 506d51a007 Fix flaky migration tests (#2663) 2025-11-07 15:21:17 +06:00