Commit graph

140 commits

Author SHA1 Message Date
littlecodedragon
4fce1fa940 feat(reading-eta): share SeriesReadingEtaCalculator across reader and library
Extract a single ETA estimator, refresh library badges when history changes,
and expose a history revision stream for reactive updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 10:12:02 +02:00
littlecodedragon
6316b85a09 fix(release): tolerate Forgejo null body/assets in release JSON
Gitea may emit null for empty release notes or assets; enable
Json.coerceInputValues and defaults so update checks do not fail
deserialization (unrelated to release-note workflow length).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 07:04:04 +02:00
littlecodedragon
c15d280cb4 feat(eta): cross-manga page-rate priors for reading time left
All checks were successful
Forgejo Release Builder / release (push) Successful in 5m53s
Blend series-local ms/page with samples from completed chapters in other
titles (similar page counts via ±15%/±30% bands). Removes fixed ms/page
floors; adds SQL query + estimator + DI wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 02:59:22 +02:00
littlecodedragon
fe43d3ef2c Reader: track per-page history metrics for ETA and backups
Persist per-session pages read in history, include it in backup/restore, and prefer a page-based ETA model so chapter-length variance (especially webtoons) is reflected more accurately.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 18:35:41 +02:00
littlecodedragon
384aee7372 Release: use fork update source and upstream-based changelog delta
Point in-app release checks/changelog links to the Forgejo fork and generate release notes against upstream komikku-app baseline commits for clearer fork-specific change visibility.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 18:29:15 +02:00
Cuong-Tran
bf9b663581 Optimize database indexes and clean up schema (#1603)
* Update `excluded_scanlators` index to a composite index on `manga_id` and `scanlator`.
* Convert `idx_history_last_read` into a partial index for entries where `last_read > 0`.
* Remove redundant `idx_manga_sync_manga_id` index.
* Remove unused `last_modified_at` column and its associated trigger from `mangas_categories`.
* Sync migration files with schema changes.
2026-04-23 00:02:39 +07:00
Luca Auer
8bb8d7ccb7 Add missing indexes to improve database query performance (mihonapp/mihon#2950)
(cherry picked from commit cae9fbf3213987e7d263845431dfac10a2ecb3b0)
2026-04-23 00:02:39 +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
AntsyLich
7e71162519 Remove checksum from release notes and improve download tip
(cherry picked from commit b93337cb3d53278e191cf1dceeaf6c4effdb141d)
2026-01-26 13:19:41 +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
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
ea06631670 feat(library): Rework categories filter 2025-08-27 14:29:01 +07:00
AntsyLich
1fd86ca74f Optimize and cleanup library code (mihonapp/mihon#2329)
Co-authored-by: Cuong-Tran <cuongtran.tm@gmail.com>
(cherry picked from commit e62cd0e816402303fdf12513816894624f77e208)
2025-08-27 14:29:01 +07:00
Cuong-Tran
5dae177b08
feat(history): Add indicator for un-finished reading & has more un-read chapters (#992)
* feat(history): Add indicator for un-finished reading & has more un-read chapters

* Fix StateProvider

* Show reading progress in History screen

* Don't count bookmark excluded chapters in unread dot for History

* Don't count bookmark excluded chapters in Library unread count

* Exclude bookmark filtered chapters from continue-reading list

* Bundle `applyFilter` for bookmark & scanlator together

* Remove parentheses
2025-07-21 15:34:12 +07:00
Cuong-Tran
6c530e4fca
fix(recommendation): Fix null RecommendationSource & refactoring (#1000)
* Remove redundant condition & refactor class

* Batch networkToLocalManga

* Fix null source

* Simplify by creating RecommendationSource to match with upstream

* Add comment
2025-06-12 15:39:09 +07:00
Tim Schneeberger
9a31ffcc41
feat(recommendation): batch processing for recommendations & sort by relevancy (jobobby04/TachiyomiSY#1383)
* refactor: use NoResultsException

* refactor: cleanup RecommendationPagingSources

* refactor: turn wake/wifi lock functions into reusable extensions

* feat: implement batch recommendation (initial version)

* fix: serialization issues

* fix: wrong source id

* refactor: increase performance using virtual paging

* refactor: update string

* refactor: handle 404 of MD source correctly

* style: add newline

* refactor: create universal throttle manager

* refactor: throttle requests

* chore: remove unused strings

* feat: rank recommendations by match count

* feat: add badges indicating match count to batch recommendations

* fix: handle rec search with no results

* fix: validate flags in pre-search bottom sheet

* feat: implement 'hide library entries' for recommendation search using custom SmartSearchEngine for library items

* style: run spotless

* fix: cancel button

* fix: racing condition causing loss of state

* Avoid runBlocking in a property getter

* Remove unnecessary `synchronized`

* Fixes screen staying on in library tab. (jobobby04/TachiyomiSY#1451)

(cherry picked from commit 254980695bc39fe064e7aeb181ecdbf70c1eff95)

---------

Co-authored-by: Cuong-Tran <cuongtran.tm@gmail.com>
Co-authored-by: NGB-Was-Taken <76197326+NGB-Was-Taken@users.noreply.github.com>
2025-06-12 15:19:34 +07:00
Cuong-Tran
3d2ad327bc
chore(manga-repository): Revert (in-memory) fast browsing (#965)
* Revert "fix(manga-repository): Fix selected entries while bulk-selection won't show as selected (#927)"

This reverts commit 303a266720.

* Revert "refactor(network-to-local): simplify networkToLocalManga (#910)"

This reverts commit d33efced68.

* Revert "chore(network-local-manga): Reintroduce (in-memory) fast browsing (#909)"

This reverts commit 3310784faf.

* Add updateInfo parameter to insertNetworkManga method
2025-05-31 11:41:20 +07:00
Cuong-Tran
aaa1d855ff
feat(sanitizer): Sanitize manga titles for special characters before searching (#956) 2025-05-28 17:37:13 +07:00
Cuong-Tran
303a266720
fix(manga-repository): Fix selected entries while bulk-selection won't show as selected (#927)
Disable problematic SELECT query in `insertNetworkManga` which causing `getMangaByUrlAndSource` flow not triggered
2025-05-26 16:53:12 +07:00
Cuong-Tran
262c6315fd
feat(library-update-errors): add/clear error when updating manually from entry's screen (#922)
* add/clear error when updating manually from entry's screen

* Optimize redundant code

* Replace default error message with localized string
2025-05-26 14:44:10 +07:00
Fermín Cirella
7f820b590c
feat(library): add category library filter (#895)
* feat(library): add category library filter

* feat(library): pre-calculate filter categories map

* feat(library): ungroup library items if category filter is enabled

* refactor `combine` function and improve flow handling

* fix: Exclude system's `Default` category from the list (as no other category would match with it)

* refactor: categories conversion

* feat: correctly restore categories filter preferences

* feat: improve DB ops performance

* chore: add KMK comment

---------

Co-authored-by: Cuong-Tran <cuongtran.tm@gmail.com>
2025-05-20 15:32:41 +07:00
Cuong-Tran
2024cdf168
feat(update-errors): Allow manually delete update errors (#916)
* Allow manually delete error(s)

* remember swipe action & correct Modifier

* Simplify LibraryUpdateError data structure and separate SourceManager from compose UI

* Add badge count errors

* using SwipeToDismiss

* correct Modifier & StringResource

* remove confirmValueChange when Settle
2025-05-17 19:07:42 +07:00
Cuong-Tran
bc33a75b6b
fix(update-errors): Fix range selection & ordering latest error first (#914)
* Fix range selection

* Sort error list by latest error first

* Correct non-nullable lastUpdate & fix comment
2025-05-16 15:07:37 +07:00
Cuong-Tran
3f594fe4a4
fix(source-paging): correct mapping and filtering of manga with metadata 2025-05-14 15:00:58 +07:00
Cuong-Tran
3310784faf
chore(network-local-manga): Reintroduce (in-memory) fast browsing (#909)
* measure time

* Revert "Revert "Fast browsing (#612)""

This reverts commit d23130b317.

* Fix networkToLocal for bulk-selection selectAll/reverseSelection

* fix comments
2025-05-13 23:18:01 +07:00
Cuong-Tran
98f93bfbad
refactor checksum regex in GH release notes (#858) 2025-04-20 01:38:45 +07:00
AwkwardPeak7
55dc08d330
Add option to keep read manga when clearing database (mihonapp/mihon#1979)
(cherry picked from commit ecc6ede0815a89b7f8288e47c607c57bacc47e71)
2025-04-14 17:14:58 +07:00
NarwhalHorns
f685e6d5fc
Display total chapters on duplicates list items (mihonapp/mihon#1963)
(cherry picked from commit 12abd9938b7c235d6a1c02391624703476c1f339)
2025-04-09 12:21:45 +07:00
AntsyLich
5da873cac1
Update non-library manga data when browsing (mihonapp/mihon#1967)
(cherry picked from commit a594ad392d4793f3a5cb2b709d29b2feab6120d3)
2025-04-09 12:04:22 +07:00
NarwhalHorns
c2341cf3cd
Display all similarly named duplicates in duplicate manga dialogue (mihonapp/mihon#1861)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 0d35b6fdafbf5451a2743ea9bcfc735bf49374a7)
2025-04-06 01:49:35 +07:00
AntsyLich
50d31978b2
Deduplicate entries when browsing (mihonapp/mihon#1957)
(cherry picked from commit f81da3dcce9afba883b6a3accdd3bf4ea21cfa81)
2025-04-05 23:20:42 +07:00
AntsyLich
712a1f2bdb
Significantly improve browsing speed (near instantaneous) (mihonapp/mihon#1946)
(cherry picked from commit c8ffabc84a096207c1997ab69fc86176f3b53f00)
2025-04-05 23:20:37 +07:00
AntsyLich
3b13f4411a
Fix user notes not restoring when manga doesn't exist in DB (mihonapp/mihon#1945)
(cherry picked from commit e91db86faef8d6b17961a1b73fbf07f0d2c8975d)
2025-04-03 00:37:14 +07:00
kunet
0ef230f3dd
Add user manga notes (mihonapp/mihon#428)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 8fbe630308b962043c7b59422878c94f80156e9f)
2025-04-03 00:36:31 +07:00
Mend Renovate
dd9f9a3447
Update kotlin monorepo to v2.1.20 (mihonapp/mihon#1883)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 556290f2d35f739bb4bddc012739acf10b92708d)
2025-04-01 23:49:20 +07:00
Cuong-Tran
48eb78ec0c
Improve in case source is null (#801)
related to commit 343cd372
2025-03-27 23:47:12 +07:00
Cuong-Tran
0828057650
Support GH download badge in releases note 2025-03-25 03:17:42 +07:00
Cuong-Tran
e73622c033
Fix update check 2025-03-25 03:04:20 +07:00
AntsyLich
cde9a34238
Tweak the app updater logic and add FOSS build support (mihonapp/mihon#1843)
(cherry picked from commit 28093935d867e5d1a95944e67c6d1eb46cab4a37)
2025-03-23 23:43:06 +07:00
AntsyLich
3623b4efb6
Change foss variant application id suffix to '.foss' and more (mihonapp/mihon#1831)
- Remove `BuildConfig.PREVIEW`
- Rename `BuildConfig.INCLUDE_ANALYTICS` -> `BuildConfig.ANALYTICS_INCLUDED`
- Rename `BuildConfig.INCLUDE_UPDATER` -> `BuildConfig.UPDATER_ENABLED`
- Rename build property `with-analytics` -> `include-analytics`
- Rename build property `with-updater` -> `enable-updater`
- Add build property to disable code shrink
- Add build property to include dependency info in apk/app bundle

(cherry picked from commit 0893609ad2c4791dc404d72a5e69a2e0373517ae)
2025-03-23 23:43:06 +07:00
Cuong-Tran
84f3826fe8
Hide excluded scanlators from Update view (#742)
* Hide excluded translators from update view

* also migrate database
2025-03-03 14:34:09 +07:00
Cuong-Tran
d4c4686ad1
Merge query for UpdateView & LibraryView (#741)
Remove the inline-code and move it to database

* merge queries for Updates view

* merge queries for Library view

* add comment

* fix spotless

* also migrate database
2025-03-03 14:33:41 +07:00
NarwhalHorns
8fe598d33e
Support for private tracking with AniList and Bangumi (mihonapp/mihon#1736)
Co-authored-by: MajorTanya <39014446+MajorTanya@users.noreply.github.com>
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 49b2b346b65c2631a8369c8f6643e945720770de)
2025-02-26 23:38:53 +07:00
Cuong-Tran
235dec019d Fix (EXH): Migrate old source to new source for merge references 2025-02-14 12:21:26 +07:00
Cuong-Tran
2e744ed5e9
built-in EH compatible with extension (#613)
* switch off integrated H to show E-H source & extension

* More languages for E-H/ExH, also more popular with rate 5

* Don't hide Multi source when toggle Integrated H

* Avoid crash trying to load ehentaiBrowseDisplayMode

* change source ID to matching general extension

* migration old source ID to new source ID

* Allow importing of EHentai extension backups

* limit library update & metadata source to only Multi lang

* update app version

* fix spotless

* also migrate saved search/feed & pinned EH/EXH source ID when restore from backup or update app
2025-01-26 02:20:06 +07:00
Cuong-Tran
343cd3727c
Fix: crash upon open RecommendsScreen if source is removed 2025-01-24 14:58:30 +07:00
Cuong-Tran
a8c587829c
Auto install app update (#561)
* migrating

* - Fix Broadcaster
- Include Updater for Debug
- json to emulate Github call

* - resetup AppUpdateJob when changing settings
- Fix ACTION_MY_PACKAGE_REPLACED

* improve notification

* update icon

* app update to high important

* - Run auto install on AppUpdateJob
- Add release link to job

* idle state & network aware

* fix duplicated job start

* don't show notification & start job for peek-into-preview

* allow cancel auto update job when set to NEVER

* always notify on install complete

* rearm AppUpdateJob each time MainActivity already checked for update

* MainActivity checks every 2 days, rearm AutoUpdateJob in 3 days

* - fix install error notification ID
- add timeout for manual installation if package manager crash

* settings & spotless

* restriction settings & auto run download-install if not in restrictions

* clean up
2024-12-05 15:41:50 +07:00