Commit graph

10519 commits

Author SHA1 Message Date
renovate[bot]
612651a076
chore(deps): update github actions (#1512)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-30 18:18:55 +07:00
Cuong-Tran
3b06366fd9
chore(download): disable download URL hash inclusion by default (#1677) 2026-06-11 03:06:27 +07:00
Cuong-Tran
582ea3e60d
chore(agent): Add mandatory rules for AI agents covering Git, i18n, and formatting (#1662)
* chore(agent): Add mandatory rules for AI agents covering Git, i18n, and formatting

* Explicit path for strings resource

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Specify both strings.xml & plurals.xml

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Also exclude non-base local folders from i18n-kmk

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-27 14:42:44 +07:00
Cuong-Tran
99470e8133
Revert "fix(library): notify when sync fails before library update"
This reverts commit 9ccf5ca291.
2026-05-27 14:20:56 +07:00
Cursor Agent
9ccf5ca291
fix(library): notify when sync fails before library update
Report sync failures that previously failed silently (e.g. null remote
backup) and show a library update error notification when a chained sync
blocks the update, including the sync failure reason.

Co-authored-by: Cuong-Tran <cuong-tran@users.noreply.github.com>
2026-05-23 06:42:27 +00:00
Cuong-Tran
30c114c20f
Add Cursor Cloud specific instructions to AGENTS.md (#1659)
Add development environment setup documentation for Cloud Agent VMs,
including Android SDK configuration, key Gradle commands, and gotchas
for headless development without an emulator.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cuong-Tran <cuong-tran@users.noreply.github.com>
2026-05-23 00:31:09 +07:00
Cuong-Tran
c1806e13b3
Agent.md (#1658)
* Generate `AGENTS.md` using CoPilot

* Re-generate by Cursor & manual merge

* Review again with Cursor
2026-05-22 23:49:37 +07:00
Cuong-Tran
266947b0d7
Bump version 2026-05-19 18:41:03 +07:00
Itsmechinmoy
ca26501aef
feat(Anilist): Parse GraphQL error responses for downtime and token expiry (#1591)
* Create ALError.kt

* Update AnilistApi.kt

* Update AnilistApi.kt

* Update AnilistApi.kt

* Add error handling for AniList API responses

* Update AnilistApi.kt

* Update ALError.kt

* Update AnilistApi.kt

* fix: improve error handling and resource management in AniList API calls

* Fix interpolation sign & add comment

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-05-19 18:27:36 +07:00
Cuong-Tran
9a7d1b6143
Fix ANR while installing extensions (#1652)
Update foreground service type for ExtensionInstallService to dataSync
2026-05-19 15:58:12 +07:00
Cuong-Tran
94eac94ce7
ExtensionInstaller: Fix mistakenly canceling unrelated waitingInstall & avoid adding duplicate entry to installing queue (#1649)
* ExtensionInstaller: Fix mistakenly canceling unrelated `waitingInstall` & avoid adding duplicate entry to installing `queue`

- Changes the installer queue from a synchronized list to a synchronized set to prevent duplicate entries.
- Updates queue removal logic to remove specific entries instead of using index-based removal.
- Refines `cancelQueue` logic to ensure the active installation is only cancelled if its download ID matches the requested ID.

* Ensure thread-safe access to the installation queue when canceling downloads
2026-05-19 15:44:58 +07:00
Cuong-Tran
dc7dd8045e Ensure extension installer's download IDs are non-negative (#1648) 2026-05-18 20:44:17 +07:00
AntsyLich
0b285f83b1 Fix occasional crash when mass installing/uninstalling extension using PackageManager
(cherry picked from commit 42daa3f432292be5fdfb3ecae07592cb94324164)
2026-05-18 20:44:17 +07:00
Leodyver Semilla
768c3dcec5 Fix extension actions disappearing after installing and uninstalling in same session (mihonapp/mihon#3049)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 2f9edb551fb2255c11ccd8452a080e87b9c963eb)
2026-05-18 20:44:17 +07:00
Cuong-Tran
19f8fa203d
Add haptic feedback before actions (#1636)
* perform haptic before doing action

* Perform haptic feedback call in UI/main thread instead of IO

* Haptic feedback on both cases of long press action
2026-05-13 14:22:35 +07:00
Cuong-Tran
21cb1921a3
Refactor AppBarActions and clean up code (#1635)
* remove parentheses

* Refactor AppBarActions to improve readability and maintainability

* Refactor callback parameters in AppBar actions for clarity
2026-05-13 13:56:39 +07:00
Cuong-Tran
dc3d034109
Remove HBrowse and Tsumino sources from delegated sources (#1622) 2026-05-13 12:55:15 +07:00
Weblate (bot)
0293507d1a
Translations update from Hosted Weblate (#1567)
* Translated using Weblate (Turkish)

Currently translated at 70.4% (148 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/tr/

* Translated using Weblate (Turkish)

Currently translated at 70.4% (148 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/tr/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 84.2% (177 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/zh_Hans/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 84.2% (177 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/zh_Hans/

* Translated using Weblate (Bengali)

Currently translated at 22.3% (47 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/bn/

* Translated using Weblate (French)

Currently translated at 92.8% (195 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/fr/

* Translated using Weblate (Thai)

Currently translated at 27.1% (57 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/th/

* Translated using Weblate (Thai)

Currently translated at 27.1% (57 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/th/

* Translated using Weblate (Danish)

Currently translated at 79.0% (166 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/da/

* Translated using Weblate (Danish)

Currently translated at 79.0% (166 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/da/

* Translated using Weblate (Czech)

Currently translated at 80.9% (170 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/cs/

* Translated using Weblate (Czech)

Currently translated at 80.9% (170 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/cs/

* Translated using Weblate (Malay)

Currently translated at 20.4% (43 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ms/

* Translated using Weblate (Ukrainian)

Currently translated at 86.1% (181 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 86.1% (181 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/uk/

* Translated using Weblate (Spanish)

Currently translated at 85.7% (180 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/es/

* Translated using Weblate (Spanish)

Currently translated at 85.7% (180 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/es/

* Translated using Weblate (Swedish)

Currently translated at 79.5% (167 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/sv/

* Translated using Weblate (Swedish)

Currently translated at 79.5% (167 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/sv/

* Translated using Weblate (Korean)

Currently translated at 76.1% (160 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ko/

* Translated using Weblate (Korean)

Currently translated at 76.1% (160 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ko/

* Translated using Weblate (Italian)

Currently translated at 97.1% (204 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/it/

* Translated using Weblate (Italian)

Currently translated at 97.1% (204 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/it/

* Translated using Weblate (Assamese)

Currently translated at 82.8% (174 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/as/

* Translated using Weblate (Assamese)

Currently translated at 82.8% (174 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/as/

* Translated using Weblate (Vietnamese)

Currently translated at 75.2% (158 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/vi/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 89.0% (187 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 89.0% (187 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/pt_BR/

* Translated using Weblate (Romanian)

Currently translated at 78.5% (165 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ro/

* Translated using Weblate (Romanian)

Currently translated at 78.5% (165 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ro/

* Translated using Weblate (Filipino)

Currently translated at 95.7% (201 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/fil/

* Translated using Weblate (Filipino)

Currently translated at 95.7% (201 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/fil/

* Translated using Weblate (German)

Currently translated at 92.8% (195 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/de/

* Translated using Weblate (German)

Currently translated at 92.8% (195 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/de/

* Translated using Weblate (Greek)

Currently translated at 79.0% (166 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/el/

* Translated using Weblate (Greek)

Currently translated at 79.0% (166 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/el/

* Translated using Weblate (Croatian)

Currently translated at 30.4% (64 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/hr/

* Translated using Weblate (Croatian)

Currently translated at 30.4% (64 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/hr/

* Translated using Weblate (Arabic)

Currently translated at 92.3% (194 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ar/

* Translated using Weblate (Arabic)

Currently translated at 92.3% (194 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ar/

* Translated using Weblate (Dutch)

Currently translated at 79.5% (167 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/nl/

* Translated using Weblate (Dutch)

Currently translated at 79.5% (167 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/nl/

* Translated using Weblate (Japanese)

Currently translated at 84.7% (178 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ja/

* Translated using Weblate (Japanese)

Currently translated at 84.7% (178 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ja/

* Translated using Weblate (Finnish)

Currently translated at 79.0% (166 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/fi/

* Translated using Weblate (Finnish)

Currently translated at 79.0% (166 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/fi/

* Translated using Weblate (Hindi)

Currently translated at 27.1% (57 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/hi/

* Translated using Weblate (Portuguese)

Currently translated at 87.1% (183 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/pt/

* Translated using Weblate (Indonesian)

Currently translated at 92.8% (195 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/id/

* Translated using Weblate (Tamil)

Currently translated at 35.2% (74 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ta/

* Translated using Weblate (Polish)

Currently translated at 80.9% (170 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/pl/

* Translated using Weblate (Polish)

Currently translated at 80.9% (170 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/pl/

* Translated using Weblate (Catalan)

Currently translated at 74.7% (157 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ca/

* Translated using Weblate (Catalan)

Currently translated at 74.7% (157 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ca/

* Translated using Weblate (Korean)

Currently translated at 76.1% (160 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ko/

* Translated using Weblate (Filipino)

Currently translated at 96.6% (203 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/fil/

* Translated using Weblate (Filipino)

Currently translated at 97.1% (204 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/fil/

* Translated using Weblate (Assamese)

Currently translated at 100.0% (210 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/as/

* Translated using Weblate (Assamese)

Currently translated at 100.0% (210 of 210 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/as/

* [ar] `connections_discord_info`: placeholder for app name

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [ar] `pref_discord_idle`: don't use emoji tag

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [ro] `pref_discord_idle`: don't use emoji tag

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [zh-rCN] `connections_discord_info`: placeholder for app name

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [ro] `connections_discord_info`: placeholder for app name

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [pt-rBR] `discord_status_description`: placeholder

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [bn] `action_scroll_to_top`: remove quote sign

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [ca] `pref_discord_show_download_button`: translate

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

* [da] `connections_discord`: correct Discord name

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [es] `connections_discord`: correct Discord name

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [fi] `connections_discord_info`: placeholder for app name

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [hi] `pref_discord_idle`: correct use of word

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [hi] `pref_theme_cover_based_style_fruitsalad`: type

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [hr] `action_open_folder`: use folder instead of file

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [it] `pref_fetch_manga_chapters_on_add_description`: correct translation

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [ja] `pref_discord_idle`: translate

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [ko] `pref_discord_show_timestamp`: correct use of words

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

* [ms] `download_cache_renew_interval_12hour`: remove AM/PM

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

* [nl] `connections_discord`: correct Discord

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

* [ta] `scale_type_16_9`: remove space

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [tr] `updating`: grammar

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [tr] `pref_auto_sync_progress_from_trackers`: translate

* [uk] `pref_discord_custom_message`: correct translation

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* [zh-rCN] `discord_status_description`: add space

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: 안세훈 <on9686@gmail.com>
Co-authored-by: Infy's Tagalog Translations <ced.paltep10@gmail.com>
Co-authored-by: Itsmechinmoy <167056923+itsmechinmoy@users.noreply.github.com>
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-05-13 10:55:28 +07:00
Jobobby04
3344fd0755 Fix blank page on cloudflare guard
(cherry picked from commit 07599ade3aeb127f643b45e84a6b9ccdb1d0ba6d)

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-05-13 09:30:39 +07:00
Jobobby04
f5e1c1e5ce Copy last page read in migrate
(cherry picked from commit 3a3b719b8bdc3c9ec95120ddca3a87183b40cd4d)
2026-05-12 18:52:35 +07:00
Jobobby04
5c0ca305a9 Add recommended proguard rules
(cherry picked from commit 5c26bb3a52c1f209facfda0b4e99d0a1feba9d76)
2026-05-12 18:52:35 +07:00
Cuong-Tran
1f904815fa Clean up some build warnings 2026-05-12 18:52:35 +07:00
KaiserBh
38acd6f110 feat: Add sync events to SyncYomi (jobobby04/TachiyomiSY#1558)
* feat: Add sync events to SyncYomi

Now it will send the events back to `SyncYomi` server and then forward those to the notifications services that are enabled, such as discord, telegram, and etc.

* chore: fix build error.

(cherry picked from commit 2776e411272499eba2f91acfea3cb40dc0d4c622)

* Improve client management and response handling

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-05-12 18:49:10 +07:00
AntsyLich
bad1dd264d Fix extension install/update stuck at pending (#1630)
* Fix extension install/update stuck at pending (mihonapp/mihon#3000)

Co-authored-by: p
(cherry picked from commit 84265febf3ce24d71994ced2b81215f858430d4e)

* Fix lint

* Throw exception when Shizuku shell interface is unavailable during installation instead of silently doing nothing

* Properly close OkHttp response and streams

* Delete temporary extension file if failed to install

* Use ConcurrentHashMap for active jobs and steps to ensure thread safety when managing extension installation states across multiple coroutines.

* Use SupervisorJob to ensure that a failure in one installation job doesn't cancel the entire scope

* Don't use `:` in package name for safer filename

* Throw exception if asset file descriptor fails to open during extension installation

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-05-12 15:27:49 +07:00
Weblate (bot)
6124efa164 Translations update from Hosted Weblate (mihonapp/mihon#2980)
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/de/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/el/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/eo/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/es/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/hr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ru/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sk/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/tr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/zh_Hans/
Translation: Mihon/Mihon

Co-authored-by: Dexroneum <Rozhenkov69@gmail.com>
Co-authored-by: Frosted <frosted@users.noreply.hosted.weblate.org>
Co-authored-by: Jakub Szafranek13 Fabijan <jakubfabijan@tuta.io>
Co-authored-by: KraXen <dpelech1@gmail.com>
Co-authored-by: Lyfja <45209212+lyfja@users.noreply.github.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: Pitpe11 <giorgos2550@gmail.com>
Co-authored-by: Swyter <swyterzone@gmail.com>
Co-authored-by: ZerOriSama <godarms2010@live.com>
(cherry picked from commit 565379779f82ee7dfdad45e251d82ff73dc3b7b2)
2026-05-12 09:52:53 +07:00
Weblate (bot)
0830cd32b5 Translations update from Hosted Weblate (jobobby04/TachiyomiSY#1536)
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy-plurals/ar/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy-plurals/ko/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/ar/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/es/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/fil/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/fr/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/hr/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/it/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/ko/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/ru/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/tr/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/mihon/tachiyomisy/zh_Hant/
Translation: Mihon/TachiyomiSY
Translation: Mihon/TachiyomiSY Plurals

Co-authored-by: Champ0999 <champ0999@users.noreply.hosted.weblate.org>
Co-authored-by: Dexroneum <Rozhenkov69@gmail.com>
Co-authored-by: Erick Alejandro <erickux@gmail.com>
Co-authored-by: Frosted <frosted@users.noreply.hosted.weblate.org>
Co-authored-by: Infy's Tagalog Translations <ced.paltep10@gmail.com>
Co-authored-by: Luis Antonio <getcyonic+zaorinu@gmail.com>
Co-authored-by: Metin <durmus38metin@gmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: NormalRandomPeople <normal.scribe833@silomails.com>
Co-authored-by: Swyter <swyterzone@gmail.com>
Co-authored-by: ZerOriSama <godarms2010@live.com>
Co-authored-by: momoehab <momoehab@gmail.com>
Co-authored-by: 안세훈 <on9686@gmail.com>
(cherry picked from commit 724a61f51310b297296aab3c5c5d6d3a47b92491)

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-05-11 23:56:02 +07:00
Weblate (bot)
2b4caa9f97 Translations update from Hosted Weblate (mihonapp/mihon#2997)
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/cs/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/vi/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/zh_Hant/
Translation: Mihon/Mihon

Co-authored-by: Filip Jaruška <filip.jaruska@gmail.com>
Co-authored-by: Nguyễn Trung Đức <vaicato16@gmail.com>
Co-authored-by: ɴᴇᴋᴏ <s99095lkjjim@gmail.com>
(cherry picked from commit cc3f640faa7df9f2a64976d2639e6dfd60ebe213)
2026-05-11 23:56:02 +07:00
AntsyLich
0f815ba662 Run automatic library updates even when connected to a VPN (mihonapp/mihon#2996)
Co-authored-by: jeremiejig <3978761+jeremiejig@users.noreply.github.com>
(cherry picked from commit 039471427448347a1c12c39a488a1127a3ea1497)

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-05-11 20:14:28 +07:00
AntsyLich
1c9c35156d Add all pages of adjacent chapters in the UI instead of only the first or last three (mihonapp/mihon#2995)
(cherry picked from commit 0cc724108b4f29a3d1d33ac4666a14873460a657)
2026-05-11 19:53:26 +07:00
AntsyLich
7c5fe16b52 Fix migration dialog not showing for consecutive prompts from the same screen (mihonapp/mihon#2994)
(cherry picked from commit 8b2d35f3068a3f9c5e1bba77ed825ae51531c91c)
2026-05-11 19:23:39 +07:00
AntsyLich
e04565bc46 Fix migration's selected sources order not preserved (mihonapp/mihon#2993)
* Fix migration's selected sources order not preserved

(cherry picked from commit 47816d4b218e6a62ef9fcd3097b6b0b8f2f95b17)

* Use indexed map for improved sorting performance

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-05-11 15:56:01 +07:00
NarwhalHorns
e50767709a Utilize tracker for library duplicate detection (mihonapp/mihon#2978)
* Utilize tracker for library duplicate detection (#2978)

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

* Avoid crash due to duplicate manga ID when there are more than 1 trackers

* Add index for duplicate library manga detection in manga_sync

---------

Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-05-08 19:27:41 +07:00
NarwhalHorns
c290472012 Add option for bookmarked chapters to download dropdown (mihonapp/mihon#2891)
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>

(cherry picked from commit 3c6f0f1697ccab055ee7af47da84b2161d406f0c)

(cherry picked from commit 185cd923c0bf838d55b38ce0ebfb5c010760b880)
2026-05-08 14:52:04 +07:00
NarwhalHorns
aa7198f082 Optimize tracked library filter (mihonapp-mihon#2977)
Co-authored-by: NarwhalHorns <onefailedgamer@gamil.com>
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 ab214526c6f24466a0432b5c5c7d254a244cd958)
2026-05-08 13:24:41 +07:00
Cuong-Tran
a52609b549 Remove redundant userSelected from selection methods (mihonapp-mihon#2976)
(cherry picked from commit 9867c160f781b52cd297f7b1202cc6963b375df0)
2026-05-08 12:52:53 +07:00
Cuong-Tran
4c21f019c0
chore: Refactor selection state management and improve performance across various screens (#1607)
* chore: Refactor selection state management and improve performance across various screens

*   **MigrateMangaScreen**: Refactor state management to use a `Set<Long>` of IDs for selection instead of a list of wrapper items.
*   **LibraryUpdateErrorScreen**: Simplify `onErrorSelected` signature by removing the unused `userSelected` parameter and clean up related UI components.
*   **Performance**: Use `remember(state.selection)` in `MigrateMangaScreen` for efficient selection status lookups.
*   **Code Quality**: Fix minor typos (e.g., `inbetweenItem` to `inBetweenItem`) and optimize imports.

* Refactor selection logic to prevent redundant state updates

* Move early exit checks for item selection status outside or to the beginning of state update blocks to avoid unnecessary recompositions.
* Improve safety and correctness of item selection by returning early from state updates when an item index is not found.
* Standardize selection checks across `HistoryScreenModel`, `LibraryUpdateErrorScreenModel`, `MigrateMangaScreenModel`, `UpdatesScreenModel`, and `MangaScreenModel`.

* update selection when migration list got updated

* Update state management to reset selection and loading status on fetch failure
2026-05-08 12:41:46 +07:00
Cuong-Tran
bdf81596e9
chore: Avoid race conditions and improve bulk selection (#1606)
* avoid race conditions

* Improve Bulk selection

* Consolidate selection mode updates and list clearing into a single state update.
2026-04-23 16:30:55 +07:00
Cuong-Tran
d8eb71e004
chore(UI): Use remember getUiModel (#1605)
* use remember getUiModel

* update headerIndexes to use remember for state management

* Refactor LibraryUpdateErrorScreen to improve state management

*   Move header index calculation from the screen model to the presentation layer.
*   Optimize UI model and header index memoization using `remember(state)`.
*   Remove redundant `LaunchedEffect` and simplify scroll-to-index logic.

* Refactor LibraryUpdateErrorScreen to enhance state management with derivedStateOf
2026-04-23 15:19:54 +07: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
MediocreLegion
80ea323281
fix(delegate): migrate NH to the v2 api (#1582)
* fix(delegate): migrate NH to the v2 api

* bump versionId

* remove versionId requirement

* gemini review suggestions

* remove dead code

* remove unused imports

* linging

* unneeded comment

* fix(delegate): migrate NH to the v2 api (jobobby04/TachiyomiSY#1581)

* fix(delegate): migrate NH to the v2 api

* remove extra comment

* remove redundant data

* linting

* Code cleanup

---------

Co-authored-by: Jobobby04 <jobobby04@users.noreply.github.com>
(cherry picked from commit eec1236b8b5904b46d79bb716e29f073c6fe9b34)

* close `response`

* Avoid empty server list

---------

Co-authored-by: Jobobby04 <jobobby04@users.noreply.github.com>
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
2026-04-22 13:31:05 +07:00
Copilot
ee7fb26790
fix: remove expect/actual for LocalSource in single-target KMP module (#1602)
Agent-Logs-Url: https://github.com/komikku-app/komikku/sessions/5bf2689f-d906-47af-881b-4556f828a3a6

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: cuong-tran <16017808+cuong-tran@users.noreply.github.com>
2026-04-22 12:18:16 +07:00
Cuong-Tran
6f020399d8
chore(ci): Add SSH key setup for Codeberg repository mirroring (#1595) 2026-04-16 16:22:27 +07:00
Cuong-Tran
26d3be95e3
feat(UI): Mask WebDAV password while typing (#1564)
* Refactor

* feat(UI): Mask WebDAV password while typing

* fix: allow space as password

* use coroutines for asynchronous setting
2026-04-16 14:01:49 +07:00
Cuong-Tran
fd60bc7f13
fix(MangaDex): Fix nullability issues in track creation for MangaDex (#1527)
* fix(trackers-mangadex): Handle nullability in `createMdListTrack`

* Return null instead of throwing exception in initial track creation

* Improve error handling in `createMdListTrack`

* Change exception to return null when track not found

* handle nullability in MangaDex tracking
2026-04-16 12:52:51 +07:00
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
Weblate (bot)
edaf975e21
Translations update from Hosted Weblate (#1523)
* Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (208 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/zh_Hant/

* Translated using Weblate (Italian)

Currently translated at 94.7% (197 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/it/

* Translated using Weblate (Italian)

Currently translated at 95.1% (198 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/it/

* Translated using Weblate (Arabic)

Currently translated at 74.5% (155 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ar/

* Translated using Weblate (Korean)

Currently translated at 30.7% (64 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ko/

* Translated using Weblate (Russian)

Currently translated at 100.0% (208 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ru/

* Translated using Weblate (Italian)

Currently translated at 95.1% (198 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/it/

* Translated using Weblate (Arabic)

Currently translated at 74.5% (155 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ar/

* Translated using Weblate (Korean)

Currently translated at 30.7% (64 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ko/

* Translated using Weblate (Italian)

Currently translated at 95.6% (199 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/it/

* Translated using Weblate (Arabic)

Currently translated at 74.5% (155 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ar/

* Translated using Weblate (Arabic)

Currently translated at 74.5% (155 of 208 strings)

Translation: Komikku-App/Komikku
Translate-URL: https://hosted.weblate.org/projects/komikku-app/komikku/ar/

---------

Co-authored-by: ɴᴇᴋᴏ <s99095lkjjim@gmail.com>
Co-authored-by: Giulia <giuliachen6562@gmail.com>
Co-authored-by: pasquale ruotolo <pachiruo@gmail.com>
Co-authored-by: ZiadSenior <Ziadsenior@yahoo.com>
Co-authored-by: 안세훈 <on9686@gmail.com>
Co-authored-by: amigo browser <juniperforest1@proton.me>
Co-authored-by: Cuong Tran <cuongtran.tm@gmail.com>
2026-03-17 08:34:25 +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
renovate[bot]
e7a4a215d5
chore(deps): update github actions (#1507)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-22 18:39:01 +07:00
renovate[bot]
dfc89d4fc3
fix(deps): update dependency org.junit.jupiter:junit-jupiter to v6.0.3 (#1498)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-22 18:38:54 +07:00