Commit graph

1411 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
317a21adc0
chore(discord): Enhance Discord integration and update application ID (#1236)
* fix(discord): Update Komikku image

* feat(discord): Enhance Discord connection preferences with login state and improved UI

* fix(discord): Update application ID for Discord Rich Presence
2025-10-13 14:38:27 +07:00