Commit graph

8812 commits

Author SHA1 Message Date
Cuong-Tran
6f06974524
feat: split "sync on add" into separate metadata and chapter fetch preferences (#1563)
* feat: split "sync on add" into separate metadata and chapter fetch preferences

* refactor: remove redundant SnackbarHostState and error snackbars when auto sync entries

* clean other languages strings
2026-03-17 13:09:48 +07:00
Cuong-Tran
3fa1cf9e07 chore(deps): Automate app shortcuts with shortcut-helper plugin
- Revert shortcuts setup with `com.github.zellius.shortcut-helper`
- Switch to komikku-app/android-shortcut-gradle:0.2.0
2026-02-24 12:11:58 +07:00
Cuong-Tran
78f9cf65c0 feat(navigation): Allow clearing search when Back on Extensions Screen (#1506) 2026-02-20 18:17:44 +07:00
Cuong-Tran
a09e55270c (chore): Don't wrap an intent-chooser inside another intent-chooser (#1505) 2026-02-20 17:02:46 +07:00
Cuong-Tran
7380e77b5c feat(theme): Support Dynamic theme for Android 11 and below (#1504) 2026-02-20 12:02:31 +07:00
Cuong-Tran
fe7b10f941
feat(migration): Allow skipping smart search for single entry migration (#1496)
* feat(migration): Allow skipping smart search for single entry migration

Introduces a "Smart search" setting when migrating a single manga, allowing users to choose between an automated best-match search or manual selection directly.

* ensure manual migration is only triggered once

* Add UI toggle

* refactor pref
2026-02-20 08:49:51 +07:00
Cuong-Tran
36c1c642ca
fix(recommends): Handle crash due to null manga case in RecommendsScreenModel (#1495) 2026-02-13 13:53:11 +07:00
Cuong-Tran
4292b22743
fix(logging): Fix xLog crash (#1494) 2026-02-13 12:31:53 +07:00
Syabit
dd3b19fa89
fix(notifications): paused notifications not showing (#1468)
* fix(notifications): paused notifications not showing

* docs(notifications): clarify notification dismissal and add comment for paused notifications

* refactor

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-02-10 13:54:36 +07:00
Cuong-Tran
b68444f3cb
fix(ExH): Fix CF cookies interceptor (#1485)
* fix(ExH): Fix CF cookies interceptor

* No need getting cookies from system webview
2026-02-10 12:51:57 +07:00
MajorTanya
513e5e8dd3 Add src:local search alias for Local Source (mihonapp/mihon#2928)
(cherry picked from commit cf93afab4526bf7dc336b9eaec93a45181785ff1)
2026-02-09 10:24:19 +07:00
MajorTanya
34102027d1 Clean up some build warnings (mihonapp/mihon#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.

(cherry picked from commit b543bc089a442c5e93b0fb6c83bc4037740b1eb5)
2026-02-05 22:56:31 +07:00
MajorTanya
0d712e4365
Add "src:" prefix to search by source ID (mihonapp/mihon#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.

(cherry picked from commit 4e4bdffdf38043418685ab42b177c8476842c83c)
2026-02-03 18:06:57 +07:00
Kudomaga
696908f94b
feat(sync): Add WebDAV synchronization service (#1104)
* Add WebMAV synchronization service

* extract custom client builder

* validation

* FIX: If the subfolder does not exist, create it first.

* FIX: Handle existing folders more leniently.

* refactor

* Fix strings

* lint & comment

* Default file name & log

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-02-03 15:36:57 +07:00
David Brochero
e7bdbb5794
feat: option to auto sync metadata and chapter list when adding to library (#1091)
* feat: auto-fetch chapter list when adding to library

* simplify impl

* IO context (gemini suggestion)

* don't trigger NoChapterException

* add option to settings

* linting

* fix: fetching on bulk

* add kmk comment

* fix exception handling

* linting again

* feat: also sync metadata

* fix: rebase issues

* remove KMK comment

* Use `manga` instead of `new` so its title got updated with source's `getMangaDetails`; also reset chapterFlags

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-02-02 16:47:34 +07:00
David Brochero
c7e0585c6f
feat(tracker): add support for EnhancedTracker to merged sources (#932)
* fix: add support for `EnhancedTracker` to merged sources

* ref: readability

* fix: use only sources specific to the merged title

* fix: don't match using name

* formatting

* don't block, suspend

* Move merged source out of EnhancedTracker

* Extract Injekt

* Return first accepted merged manga

* Move getMergedSources to SourceManager and update usages accordingly

* simplify code

---------

Co-authored-by: Cuong-Tran <cuongtran.tm@gmail.com>
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-02-02 12:17:23 +07:00
Cuong-Tran
8f57f4a5a0
feat(history): Allow multi/range-selection and batch reset for history items (#1437)
* feat(history): Allow multi-selection and batch reset for history items

* Use chapterId instead of history.id

* use remember getUiModel

* Toolbar selection mode

* cleanup History

* Replace selectedChapterIds with selection for chapter selection state

* Remove userSelected parameter from selection logic and related function signatures

* remove parentheses

* Fix range selection

* longclick on cover too

* disable clear-history button when none-selected
2026-02-02 11:21:32 +07:00
Cuong-Tran
f373818d93
feat(history): Add Filters to History screen (#1433)
* Add Filters to History screen

* Revert favorite condition
2026-01-28 16:43:07 +07:00
MajorTanya
3e7dc5c41a Add Filters to Updates screen (mihonapp/mihon#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 mihonapp/mihon#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>

---------

* Merge Panorama toggle into Filter diaglog
* Make Panorama toggle persistent and share it with History
* Implement toggleSwitch method for preference management to avoid create new function on every composition

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>

(cherry picked from commit bbe9aa8561360f030072fbc49f79748e71c6535e)
2026-01-28 12:41:18 +07:00
Jobobby04
1e39a8d4db Cleanup
(cherry picked from commit 08d6c604bc65755ec635c4cc425b4adf0284c4ee)
2026-01-27 13:46:06 +07:00
Jobobby04
e0340be73c Minor fixes
(cherry picked from commit b8b468cea7f1d117f54331780d75584bff9cf644)
2026-01-27 13:46:06 +07:00
Jobobby04
ad9736a2ba Lanraragi delegation
(cherry picked from commit 3ae6c0131b2a975c8e517c4de00e65a3637b01cc)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-27 13:24:20 +07:00
NGB-Was-Taken
db22e8add3 Add handling for previously unhandled preferences (delegated MD) (jobobby04/TachiyomiSY#1524)
* Include romanized titles of the original language in description

* Implement handling for `finalChapterInDesc` preference.

* Handle `preferExtensionLangTitle` preference when fetching manga details.

* Address some warnings, clean up unused code and spotless apply.

(cherry picked from commit 582d0ef1219ae2a2e1dd275d969b35a2e5511a73)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-27 12:47:35 +07:00
Jobobby04
8828da80b7 Use ComposeStars from RatingBar library.
(cherry picked from commit 01e8c6cc12f6345ad780d31033b2ef739bf959b3)
2026-01-26 14:33:10 +07:00
NGB-Was-Taken
1ac96825c4 Add preference to toggle chapter URL hash for downloads (jobobby04/TachiyomiSY#1533)
(cherry picked from commit 0ffc798e9ae5a201ef2051d48099bf38f467815b)

* Or

(cherry picked from commit b1e6fa65d6437427b6a3eb03af36b3d9e3e5e645)
2026-01-26 14:13:21 +07:00
Cuong-Tran
64f12cc6a5
fix(reader-chapter): Fix deletion of duplicated chapters when automatically mark as read (#1421) 2026-01-26 13:59:38 +07:00
Cuong-Tran
505c8c23f0
fix(migration): Throttle E-Hentai requests (#1420) 2026-01-26 13:43:00 +07:00
AntsyLich
7e71162519 Remove checksum from release notes and improve download tip
(cherry picked from commit b93337cb3d53278e191cf1dceeaf6c4effdb141d)
2026-01-26 13:19:41 +07:00
Cuong-Tran
d60181c3ea Fix memoization in manga bottom action menus (#1418) 2026-01-26 11:18:17 +07:00
az4521
d01903ff34 significantly less stupid cloudflare cookie detection in EH
(cherry picked from commit 31e2e62cd3a262b9b194ffd2049e601617bd1aac)
2026-01-22 18:15:02 +07:00
az4521
5e3915eae8 EH keep CF cookies
(cherry picked from commit 68dc8b51765537bdb7bd4edcca5c95e0f3cf025a)
2026-01-22 18:15:02 +07:00
Cuong-Tran
a86ec40c79 refactor: clean up browse/migrate (#1414)
* Support mass migration in 'Browse -> Migrate' (mihonapp/mihon#2338)

(cherry picked from commit 22f851173b1eca242645f328a46e6038c035d5ec)

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2026-01-22 15:52:34 +07:00
AntsyLich
9cbd46947b Support mass migration for selected library items (mihonapp/mihon#2336)
(cherry picked from commit 982ebcf777215c90584ad28fae79e9ca8a22a951)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-22 12:29:35 +07:00
AntsyLich
9a3934eadf Fix migration "Attempt to invoke virtual method" crash (mihonapp/mihon#2632)
(cherry picked from commit 93ba6acea56334573fc506d593affd5bea2a86b2)
2026-01-22 09:16:33 +07:00
Cuong-Tran
b28778221e fix(migrate-dialog): Fix Migrate Manga dialog won't show the second time (#1409)
Also handle the case migrate-dialog keeps loading forever in case of exception
2026-01-21 20:08:35 +07:00
AntsyLich
e79b3f97f4
Fix migration dialog migrating to wrong entry (mihonapp/mihon#2631)
(cherry picked from commit 5e7fecc2c11b4a175fe1c3f698f7daeb58fe311f)
2026-01-21 19:48:12 +07:00
AntsyLich
c6a0eaf67c Fix title text color in light mode on mass migration list (mihonapp/mihon#2370)
(cherry picked from commit a93f71b82be4489a7a2aefd8fa08bb114cae8db5)
2026-01-21 18:14:35 +07:00
jobobby04
935f447fbb Mass migration implementation (mihonapp/mihon#2110)
There is no way to trigger mass migration at the moment. The functionality will be added in a follow up PR.

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit ee19050cc00b0a787af65b641624d07bb194e155)

* Fix background crash in mass migration screen

(cherry picked from commit 63943debc2fd4efa1a0418bbfefaea93a24b49fd)

* Fix same manga check logic in mass migration

(cherry picked from commit f1193866f4306384a2a466c6353446bfed2bd9aa)

* Fix migration progress not updating and category flag mischeck (mihonapp/mihon#2484)

- Fixed an issue where migration progress wasn't updated after a manual source search
- Fixed incorrect logic where the category migration flag was ignored due to checking the chapter flag instead

(cherry picked from commit 16b5317b90b3064d12aa38f687cc30110fd8cdb3)

* Fix mass migration advanced search query building (mihonapp/mihon#2629)

(cherry picked from commit 7c08b75555a5444ede4912dc5e32607fac2b9678)

* Fix mass migration not using the same search queries as individual migration (mihonapp/mihon#2736)

(cherry picked from commit 7161bc2e825bdfd66a1829f7dce42bd0570b1008)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-21 17:55:14 +07:00
Cuong-Tran
bc581e1d4b refactor(migration): clean up migration list logic and UI components (#1403)
*   Merged `MigrationItem`, `MigrationItemResult`, and `MigrationActionIcon` into `MigrationListItem` variants within `MigrationListScreenContent.kt` for better cohesion.
*   Simplified `MigrationListScreen` and `MigrationListScreenModel` by removing `MigrationProcedureConfig` and `MigrationType` in favor of direct parameters (`mangaIds`, `extraSearchQuery`).
*   Renamed `newSelectedItem` to `matchOverride` in migration screens.
*   Updated `SmartSourceSearchEngine` and `BaseSmartSearchEngine` method names for clarity: `smartSearch` -> `regularSearch` and `normalSearch` -> `deepSearch`.
*   Refactored search result states: `SearchResult.Result` is now `SearchResult.Success`.
*   Improved `MigrationMangaDialog` and `MigrationExitDialog` by standardizing parameter names and structure.
*   Inlined `BrowseSourceFloatingActionButton` logic into `SourceFeedScreen` and `MigrateSourceSearchScreen` using standard `SmallExtendedFloatingActionButton`.
*   Cleaned up various internal field names and logic related to "unmatched" vs "not found" entries.
2026-01-21 13:03:21 +07:00
Cuong-Tran
e2a92b9220 refactor(mass-migration): move migration list feature to mihon.feature.migration.list (#1402)
- Relocates migration process screens, models, and components from `eu.kanade` and `exh` packages to a unified `mihon.feature.migration.list` package.
- Renames `MigrationListScreen` (presentation) to `MigrationListScreenContent` to avoid naming conflicts with the UI screen.
- Moves `SmartSourceSearchEngine` and `BaseSmartSearchEngine` to `mihon.feature.migration.list.search`.
- Updates all affected imports across the project.
2026-01-21 12:42:48 +07:00
Cuong-Tran
d8bef417f1 refactor(mass-migration): replace MigrationBottomSheetDialog with MigrationConfigScreenSheet (#1401)
- Replaces the legacy `MigrationBottomSheetDialog` (which used View binding) with the newer Compose-based `MigrationConfigScreenSheet`.
- Deletes `MigrationBottomSheetDialog.kt` and its associated layout XML `migration_bottom_sheet.xml`.
- Adds a `fullSettings` flag to `MigrationConfigScreenSheet` to support a simplified UI mode by hiding advanced search and priority options.
- Updates the primary button text in the sheet based on the `fullSettings` state.
- Exposes `preferences` in `MigrationListScreenModel` to facilitate the sheet migration.
2026-01-21 12:19:19 +07:00
AntsyLich
42a97bb918 Add more migration config options and remove skipping option (mihonapp/mihon#2193)
(cherry picked from commit 288f577a45a6835c34ad41caab95794f164b7a0b)

* Further tweak migration config screen sheet

(cherry picked from commit 019fc08da2392725c36e064ffadc4e645edafb63)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-21 11:47:31 +07:00
AntsyLich
2236e94f50 Add option to skip migration config
(cherry picked from commit 8714653a2f3b1a1f536494bcefbe66e7a7bbb4f7)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-21 11:09:06 +07:00
AntsyLich
5ab24620ec Cleanup migrate manga dialog and related code (mihonapp/mihon#2156)
(cherry picked from commit 2b126f1ff56b63e470b48a04149e28c609f01148)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-21 10:46:16 +07:00
AntsyLich
2196c84a0c Fix no sources while migrating alongside UI and code cleanup (mihonapp/mihon#2155)
(cherry picked from commit 5919f34fc96f254724bd3042ac2b91ac65912930)
(cherry picked from commit f0e6103f44d5a59e19decbd3ff48269009d782fc)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-20 16:41:10 +07:00
AntsyLich
c328b37675 Add migration config screen to select and prioritize target sources (mihonapp/mihon#2144)
(cherry picked from commit 2e180005a01f633ad7fafc5cfb3079f0bc858448)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-01-20 13:36:59 +07:00
Radon Rosborough
f12e997fb8 Improve handling of downloads for chapters with same metadata and optionally for OSes that don't support Unicode in filename (mihonapp/mihon#2305)
Co-authored-by: jkim <jhskim@hotmail.com>
Co-authored-by: fatotak <111342761+fatotak@users.noreply.github.com>
Co-authored-by: MajorTanya <39014446+MajorTanya@users.noreply.github.com>
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 58b25d697f7987e9888344e815d5646ec010a663)
2026-01-14 12:56:19 +07:00
AntsyLich
4affedcf5a Handle reader cutout setting with Insets to support Android 15+ (mihonapp/mihon#2640)
(cherry picked from commit 0e0b6d92833f8e4f3aebdcc1f7c8c175084175d6)

Fix extra padding appearing in reader after user interactions (mihonapp/mihon#2669)

(cherry picked from commit aa300cb53ea3a02b63c3b3f3fca60d5e7533a8f1)
2026-01-13 15:18:17 +07:00
Cuong-Tran
26b1331750 refactor(ReaderAppBars): simplify reader app bar layout and vertical navigator (#1386)
- Removes `BoxIgnoreLayoutDirection` wrapper and related `CompositionLocalProvider` logic.
- Integrates vertical `ChapterNavigator` directly into the main `Column` layout using `Modifier.weight(1f)`.
- Replaces separate `AnimatedVisibility` blocks for vertical navigation with a single `when` branch inside the main UI structure.
- Refines positioning for `NavBarType.VerticalLeft` and `NavBarType.VerticalRight`.
2026-01-13 14:42:37 +07:00
AntsyLich
77ecb97535 Make reader edge-to-edge (mihonapp/mihon#1908)
(cherry picked from commit 5f0c4606681cd59b38ae0855c7827e149fa5488c)
2026-01-13 14:42:37 +07:00
Constantin Piber
8cf4d9dd96 Migrate Kitsu to use library_id and remote_id properly (mihonapp/mihon#2609)
(cherry picked from commit cbf72f4c60cb85f29f8446ba1adb1cfd29d38a59)
2026-01-13 14:05:40 +07:00
Jobobby04
b85fa5b9c9
Minor refactors
(cherry picked from commit 9b6c5effc9262f190c8758d2047708cd51549855)
2026-01-09 16:31:05 +07:00
Cuong-Tran
9136c15b9e
Revert part of "Switch to MaterialExpressiveTheme" (#1377)
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit 3e6afee13b9fd5716f7f2d547b3edcd3e17915db)

This reverts part of commit 3ab83f1270.
2026-01-09 14:30:16 +07:00
MajorTanya
ab9e17c739 Add authors/artists to MAL search results (mihonapp/mihon#2833)
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit 51b3ab3fd19bdf6a7c3bd2085104392a9c412622)
2026-01-08 15:20:55 +07:00
MajorTanya
69aba243ed Optimise MAL search queries by ~11x (mihonapp/mihon#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.

(cherry picked from commit 9bf2d78a421213b1885456f5b54c3286edc539e1)
2026-01-08 15:20:55 +07:00
NGB-Was-Taken
58d1bf34d3 Enable logcat logging on stable and debug builds without enabling verbose logging (mihonapp/mihon#2836)
(cherry picked from commit a4f5a8184c956a3d92183e52a1c96d786cfe9517)
2026-01-08 14:29:25 +07:00
Constantin Piber
cfa624811a Add a small increment to chapter number before comparison to fix progress sync issues for Suwayomi (mihonapp/mihon#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>
(cherry picked from commit bd5c4d48f980d2d3dcc1112fe499dba17ef8e507)
2026-01-08 14:02:42 +07:00
NGB-Was-Taken
59ecc73253 Fix crash when trying to install/update extensions while shizuku isn't running (mihonapp/mihon#2837)
(cherry picked from commit 4ce249c1a0ee9f3a20d91214fd09145e0924b2e4)
2026-01-08 13:42:03 +07:00
AntsyLich
f24949748f Switch to M3E ExtendedFloatingActionButton
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit a39b5a56e853a9c11c0984b0385a2e60b0addc3a)
2026-01-08 12:55:25 +07:00
AntsyLich
3ab83f1270 Switch to MaterialExpressiveTheme
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit 3e6afee13b9fd5716f7f2d547b3edcd3e17915db)
2026-01-08 12:15:55 +07:00
Cuong-Tran
259b682527
refactor(color-scheme): Remove manual contrast level handling (#1370)
- Remove manual `contrastLevel`
- Simplify color scheme generation
2026-01-08 11:12:34 +07:00
AntsyLich
bbb460bfd5 Use materilalKolor for monet compat color scheme
(cherry picked from commit 9a11ec8ead41cb7199e10f3c7464790a0bd3b1ad)
2026-01-08 10:51:14 +07:00
Cuong-Tran
8eaa177ad5
Update dependency com.pinterest.ktlint:ktlint-cli to v1.8.0 (#1369)
* Update dependency com.pinterest.ktlint:ktlint-cli to v1.8.0 (mihonapp/mihon#2708)

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 13552c5ffa796aa9bf5db5e12c758a4b3763bf2b)

* chore: disable ktlint consecutive comments and single line block comment rules

* spacing-between-declarations-with-comments & mix condition

* Remove unused rule

* More blank lines

---------

Co-authored-by: Mend Renovate <bot@renovateapp.com>
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2026-01-08 10:19:37 +07:00
AntsyLich
3a7898eeac Cleanup extension screen search query predicate
(cherry picked from commit e059190fabe3cbe8498fc3cec7e39b0350f3c289)
2026-01-07 12:03:05 +07:00
AntsyLich
e3186b3db4
Remember descriptionAnnotator across composition
Closes mihonapp/mihon#2510

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit 906d6f3cdbd6f7168d9cdea0c3eb8f9c663a09c2)
2026-01-07 11:46:46 +07:00
Constantin Piber
c525ce49af Implement automatic removal of downloads on Suwayomi after reading, configurable via extension settings (mihonapp/mihon#2673)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 1263df9d4111511e49a43463c9808060433ce76d)
2026-01-07 11:27:00 +07:00
MajorTanya
130aae8515 Fix pre-1970 upload date display in chapter list (mihonapp/mihon#2779)
A user in mihonapp/mihon#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.

(cherry picked from commit 7a1c8a1b61e07d2e1a402b5daf0e7c04c232f655)
2026-01-05 15:46:17 +07:00
AntsyLich
2274e901a1 Fix reader not saving read duration when changing chapter (mihonapp/mihon#2784)
(cherry picked from commit 2e0786f699cc6d4863eb20331739c8325a451e63)
2026-01-05 14:56:08 +07:00
Luca Auer
a5d8f2efac
Minimize memory usage by reducing in-memory cover cache size (mihonapp/mihon#2266)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 4c9cfd8da5f9c67daa4b6401a910f979fd79179f)
2026-01-05 14:19:08 +07:00
AntsyLich
5e40d56dce Update tracker icons (mihonapp/mihon#2773)
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit 876c3f951b7e9782054d8f788ab39772ae6cf440)
2026-01-05 13:56:59 +07:00
AntsyLich
d5d36300ad Cleanup BaseOAuthLoginActivity and TrackLoginActivity (mihonapp/mihon#2748)
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit c222a28bd14c989b6fa0d53d7497bf063887c9ec)
2026-01-05 12:55:37 +07:00
NGB-Was-Taken
b7cdc46c0e Fix shizuku installer not updating installed extensions (mihonapp/mihon#2697)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit c3d858a5613a133352f6b140916d05de7f752771)
2026-01-05 12:23:58 +07:00
NGB-Was-Taken
9ade58cc95 Stop tap zones from triggering when scrolling is stopped by tapping (mihonapp/mihon#2680)
(cherry picked from commit 2ec67ac0c1831a68d8d73e2679f8c98a5a48acf5)
2026-01-05 11:03:17 +07:00
NGB-Was-Taken
f225e611c6
Fix flaky migration tests (mihonapp/mihon#2663)
(cherry picked from commit 506d51a007e730594e4e5f05f00b4f94c4f24e05)
2025-12-31 13:54:37 +07:00
Constantin Piber
4293c00a50
Update Suwayomi tracker to use GraphQL API instead of REST API (mihonapp/mihon#2585)
(cherry picked from commit cc2877673539db779af00fbefab3802ac52a7719)

Co-authored-by: Constantin Piber <59023762+cpiber@users.noreply.github.com>
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2025-12-31 13:54:37 +07:00
Trevor Paley
87d4783bdd
Improve WebView multi-window UX (mihonapp/mihon#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

(cherry picked from commit 855eea2ada8c09404dee99a965325913b246618f)
2025-12-31 13:54:37 +07:00
bapeey
2f41991b5d
Fix WebView crash introduced in v0.19.2 (mihonapp/mihon#2649)
(cherry picked from commit bdb0ce4779d565fc528e97bd38133a72ff3c1724)
2025-12-31 13:54:37 +07:00
Trevor Paley
b6bda7fea2
Added proper multi window support in WebView instead of treating everything as a redirect (mihonapp/mihon#2584)
(cherry picked from commit 6ab87c793122165f98c36b4b7d9158069ea40f5a)
2025-12-31 13:54:37 +07:00
Kashish Aggarwal
987109098c
Fix date picker not allowing the same start and finish date in negative time zones (mihonapp/mihon#2617)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 8662f80fbf6b7c3aee4945bf656def8341cfdfd3)
2025-12-31 13:54:37 +07:00
Cuong-Tran
eb8e9ba986
feat(extension): add refresh functionality for extension list after enabling/disabling repos (#1345) 2025-12-31 13:54:37 +07:00
c2y5
dfacf681fa
Fix extension download stuck at pending state in some cases (mihonapp/mihon#2483)
Also auto update extension list whenever a repository is added or removed

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 87c6f34a558b009be4d316e396ec3eeb4cfbbbf8)
2025-12-31 13:54:37 +07:00
AntsyLich
8ec37f3807
Add option to customize concurrent downloads, increase page concurrency (mihonapp/mihon#2637)
(cherry picked from commit 643762f91325a460c74398d472a555fb00ed9f63)
2025-12-31 13:54:37 +07:00
AntsyLich
4ab421e822
Add subtitle support to slider preference and general cleanup (mihonapp/mihon#2635)
(cherry picked from commit f36c259c1faf2ee4a108fd98a5d27d93014ba34c)
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2025-12-31 13:54:37 +07:00
AntsyLich
c9b3f8fda0
Fix reader "Unable to edit key" error (mihonapp/mihon#2634)
(cherry picked from commit aef3beb15fb2d4acbde9cb2ea4c5f639606d9fc8)
2025-12-31 13:54:37 +07:00
Cuong-Tran
76803d9649
Update shizuku.version to v13.1.5 (mihonapp/mihon#2566)
* Update shizuku.version to v13.1.5 (mihonapp/mihon#2566)

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit e9469451acf6c7ad39ff08e344ad5013ddc39337)

* fix(ShizukuInstaller): Improve error handling during asset installation and receiver unregistration

* fix(ShizukuInstaller): Reset readiness state on service disconnection

* fix(ShellInterface): Enhance output stream handling with improved exception management

* fix(ShizukuInstaller): Improve null handling for shell interface during entry processing

---------

Co-authored-by: NGB-Was-Taken <76197326+NGB-Was-Taken@users.noreply.github.com>
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2025-12-31 13:54:35 +07:00
Luca Auer
617c8788d5
feat(coil): Configure Coil-cache to no longer leak memory (#1031)
Configure Coil-cache to no longer leak memory, causing the app to slow down and eventually crash

This configures the memory caching in the way presented by the official documentation at
https://coil-kt.github.io/coil/image_loaders/
2025-12-09 16:29:30 +07:00
Cuong-Tran
51c1f95791
fix(manga-cover-dialog): Avoid crash with SubsamplingScaleImageView (SSIV) not fully support Hardware decoder (#1319)
* Avoid crash with SubsamplingScaleImageView (SSIV) not fully support Hardware decoder

* keep original config if it's not Hardware

* refactor
2025-12-09 16:16:05 +07:00
Cuong-Tran
2d5497dcd9
Fix eHentai tag's text color (#1317) 2025-12-09 15:21:55 +07:00
Cuong-Tran
294f7d046d
Merge hentaiSourceIds (#1318) 2025-12-09 15:21:33 +07:00
Cuong-Tran
6b15d76be6
chore: Replace deprecated usages with Locale, LocalResources, Bitmap and toColorInt (#1316)
* Replace deprecated usages with Locale, LocalResources, Bitmap and toColorInt; remove FlagKit class

* remember(resources)
2025-12-09 14:55:49 +07:00
Cuong-Tran
b648afb889
fix(sticky-header): Fix sticky-header and scrolling issues in source screens (#1315)
* Fix padding in MigrateSourceScreen

* Fix scrolling bar glitch due to sticky headers in RelatedMangasList

* Dynamically measure source search's height

* sticky header in source screen

* fix(sticky-header): update sticky header keys for improved uniqueness

* Fix padding on related-manga-grid

* Avoid mixing dp and px units when initializing searchBoxHeight

* extract `hasKeyword`

* fillMaxWidth
2025-12-09 13:19:54 +07:00
dhanuarf
b24b14c73d
fix(sources-search): search box visibility glitch when scrolling (#1278)
* fix(sources-screen): search box visibility glitch when scrolling

* Refactor to a reusable function

* Apply to MigrateSourceScreen

* Fix warning

* suggestions

* Revert "Fix warning"

This reverts commit b1c97bcf04b9e34b3eb314fd54c45be953d2f451.

* Add comment

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2025-11-28 14:21:41 +07:00
kana-shii
798bfc19ff
Re-add bookmarks in reader screen (#1262) 2025-11-06 14:13:17 +07:00
Cuong-Tran
f668e31cf6
fix(migration): Add Merged Manga Dedupe Mode Migration and update versioning (#1258) 2025-10-30 08:59:30 +07:00
mrtear
dd69b6f9c0
Manhua type support to AutoWebtoonMode (#1248)
* AutoWebtoonMode: manhua
2025-10-30 07:54:20 +07:00
Cuong-Tran
3e55ea8eac
fix(library-update-job): Fix disappearing library update job (#1254)
* fix(library-update-job): Fix disappearing library update job

* extract to shared utils
2025-10-29 09:42:11 +07:00
Cuong-Tran
98e4c24939
feat(discord-UI): Re-UI logout button and improve thumbnail URL handling (#1253)
* feat(discord): re-UI the logout button

* fix(discord): Add URL utility functions and improve thumbnail URL handling

* refactor

* Update core/common/src/main/kotlin/tachiyomi/core/common/util/system/UrlUtils.kt

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>

* fix(UrlUtils): Correct comments for URL scheme checks in utility functions

* removing redundant checks

* Remove redundant comment about URL scheme validation

---------

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2025-10-27 15:26:17 +07:00
Cuong-Tran
0fa21a3de4
fix(discord): Fix service crash (#1252)
* fix(discord): Fix crash caused by late/not calling `Service.startForeground`

* fix(discord): Prevent Discord RPC from re-starting without a valid token

* Pass connectionsManager to start method after restart intent failure

* refactor condition
2025-10-27 12:07:19 +07:00
Cuong-Tran
6dcd548061
fix(sync-job): Fix disabling sync-job (#1251)
* fix(sync-job): Fix disabling sync-job

* param
2025-10-27 11:52:17 +07:00
Cuong-Tran
212e0d8a45
fix(backup-job): Fix disappearing backup job (#1250)
* fix(backup-job): Fix disappearing backup job

* optimize

* localization

* fix string resource

* try/catch exception on workinfo
2025-10-27 11:33:35 +07:00