MajorTanya
b2cda03e3a
Use modern OpenDocument for backup file selection ( #3948 )
...
This might also fix the underlying problem of #3947 .
I don't have any nonstandard devices available, but this works fine
in an A17 Pixel emulator & on my A14 Xiaomi device.
Looks like the GetContent approach was merely carried over from older
code without being updated to the more modern OpenDocument contract.
2026-09-15 02:20:09 +06:00
AntsyLich
fdc2d40a1d
Reload extensions when relevant settings are updated ( #3954 )
2026-09-14 22:41:53 +06:00
AntsyLich
e6d8efe6f8
Expose installed extensions that failed to load ( #3953 )
2026-09-14 21:34:55 +06:00
AntsyLich
0e0bc6972a
Allow user to load installed extensions regardless of content warning ( #3952 )
2026-09-14 21:22:32 +06:00
w
a5cd541bdf
webgpuviewer: Fix menu hiding when navigating in long strip ( #3956 )
2026-09-14 21:01:27 +06:00
AntsyLich
0fbaa1ecec
Replace extension NSFW flag with content warning app-wide ( #3951 )
2026-09-14 15:00:06 +00:00
hosted-weblate[bot]
cbafe9bf3f
Translations update from Hosted Weblate ( #3938 )
...
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/am/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/be/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/bg/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/bn/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/ca/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/ceb/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/cs/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/cv/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/da/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/eo/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/eu/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/fa/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/fi/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/fr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/gl/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/he/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/hi/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/hu/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/it/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/jv/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/ka/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/kk/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/km/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/kn/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/lt/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/lv/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/ml/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/mr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/ne/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/nn/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/pl/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/pt/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/sa/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/sah/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/sc/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/sdh/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/sk/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/sq/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/sr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/te/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/th/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/uk/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/uz/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/am/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ar/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/as/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/az/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/be/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/bg/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/bn/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ca/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ceb/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/cs/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/cv/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/da/
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/eu/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/fa/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/fi/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/fil/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/fr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/gl/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/he/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/hi/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/hr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/hu/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/id/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/it/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ja/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/jv/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ka/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/kk/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/km/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/kmr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/kn/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ko/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/lt/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/lv/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ml/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/mr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ms/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/my/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ne/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/nl/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/nn/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/pl/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/pt/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ro/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ru/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sa/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sah/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sc/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sdh/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sk/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sq/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/sv/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/ta/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/te/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/th/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/tr/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/tt/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/uk/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/uz/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/vi/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/zh_Hant/
Translation: Mihon/Mihon
Translation: Mihon/Mihon Plurals
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Co-authored-by: A <ogloppi@mailbox.org >
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it >
Co-authored-by: Akhil Raj <89210430+akhi07rx@users.noreply.github.com >
Co-authored-by: Anonymous <noreply@weblate.org >
Co-authored-by: Arash <ara.khoram95@gmail.com >
Co-authored-by: B4LiN7 <87660017+B4LiN7@users.noreply.github.com >
Co-authored-by: Crazyom <naxom@laposte.net >
Co-authored-by: David Katrinka <davidkatrinka1995@gmail.com >
Co-authored-by: Dexroneum <Rozhenkov69@gmail.com >
Co-authored-by: FateXBlood <fatexblood@gmail.com >
Co-authored-by: Federico Pierantoni <federico.pieranton@gmail.com >
Co-authored-by: Frosted <frosted@users.noreply.hosted.weblate.org >
Co-authored-by: Horace Johnson <horacejohnson99@gmail.com >
Co-authored-by: Infy Milliaria <ced.paltep10@gmail.com >
Co-authored-by: KraXen <dpelech1@gmail.com >
Co-authored-by: Lucas Correia <anicetoclucas@gmail.com >
Co-authored-by: Lyfja <45209212+lyfja@users.noreply.github.com >
Co-authored-by: Matyáš Caras <matyas@caras.wtf >
Co-authored-by: Paweł Waresiak <pwaresia@redhat.com >
Co-authored-by: Romb38 <r.barbier38@gmail.com >
Co-authored-by: Saft Octavian <saftoctavian@gmail.com >
Co-authored-by: Throw Away <throwawayacc4gulshan@gmail.com >
Co-authored-by: ZerOriSama <godarms2010@live.com >
Co-authored-by: abc0922001 <abc0922001@hotmail.com >
Co-authored-by: icarus suraci <mhmtylmz112000@gmail.com >
Co-authored-by: kevans <albapazpi@gmail.com >
Co-authored-by: nadevko <me@nadevko.cc >
Co-authored-by: ssantos <ssantos@web.de >
Co-authored-by: stevenlele <stevenlele@outlook.com >
2026-09-14 03:39:36 +06:00
w
7418f4e7bc
Bump webgpuviewer ( #3949 )
...
* Continuous background color
* Use ImageDecoder instead of Kim
* Only get tag when in dual mode
* Update libs.versions.toml
* Make progress circle smaller and animate progress
* Fix long strip showing the menu at ends
2026-09-14 03:38:00 +06:00
MajorTanya
2d1a8bbeff
Tighten AniList rate limit ( #3942 )
...
https://docs.anilist.co/guide/rate-limiting
2026-09-12 19:54:10 +00:00
AntsyLich
60e74b8d8f
Don't try to create slider state when slider can't or won't be rendered ( #3941 )
2026-09-12 22:34:39 +06:00
Mend Renovate
6ef6e81814
Update dependency com.google.android.material:material to v1.14.0 ( #3226 )
...
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com >
2026-09-12 18:23:14 +06:00
Mend Renovate
855918bbf4
Update dependency androidx.compose:compose-bom-alpha to v2026.09.00 ( #3752 )
...
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com >
2026-09-12 18:21:37 +06:00
Mend Renovate
6c6eff3ab8
Update markdown to v0.45.0 ( #3806 )
...
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com >
2026-09-12 18:21:24 +06:00
AntsyLich
d435dd9217
Switch to upstream Injekt
...
The patch is redundant given we switched to Metro DI and don't use `Injekt.addSingletonFactory` anymore
2026-09-12 16:04:58 +06:00
AntsyLich
f7da5c856a
Switch to upstream sqldelight-androidx-driver
...
The deadlock issue should be fixed upstream
2026-09-12 16:03:50 +06:00
AntsyLich
737fdbfbf0
Switch to upstream FlexibleAdapter
...
Closes #3932
Upstream published to Maven Central
2026-09-12 16:03:50 +06:00
AntsyLich
802958b1ea
Bump compileSdk to 37.1
2026-09-12 15:28:40 +06:00
Mend Renovate
2292554d97
Update dependency de.stefan-oltmann:kim to v0.40.0 ( #3937 )
2026-09-12 08:22:15 +00:00
Mend Renovate
918cfb3dda
Update dependency androidx.benchmark:benchmark-macro-junit4 to v1.5.0 ( #3936 )
2026-09-12 08:20:37 +00:00
Mend Renovate
5de262675a
Update dependency io.kotest:kotest-assertions-core to v6.2.5 ( #3935 )
2026-09-12 14:11:48 +06:00
Mend Renovate
9f480564c2
Update dependency androidx.baselineprofile to v1.5.0 ( #3934 )
2026-09-12 14:10:54 +06:00
w
d17ad1e002
Bump webgpuviewer ( #3933 )
...
* add disable zoom out
* add hdr
* Fix dual mode page progress and cleanup
* webgpu viewer add page gap setting
* Update libs.versions.toml
2026-09-12 11:57:02 +06:00
MajorTanya
1e054ea14d
Fix inverted MAL OAuth expiry check logic ( #3927 )
2026-09-10 16:28:53 +00:00
Mend Renovate
5f87f7e054
Update dependency androidx.sqlite:sqlite-bundled to v2.7.1 ( #3916 )
2026-09-10 14:38:45 +06:00
Mend Renovate
a5260487d3
Update metro to v1.4.3 ( #3918 )
...
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com >
2026-09-09 22:38:45 +00:00
Mend Renovate
0ce6f22cf5
Update kotlin monorepo to v2.4.20 ( #3917 )
2026-09-09 22:36:04 +00:00
Darkphoenix
35bb84705e
Fix GPU texture leak when a decoded page is no longer usable ( #3872 )
2026-09-09 22:22:36 +00:00
Mend Renovate
e32231eeaa
Update dependency com.google.firebase:firebase-bom to v34.19.0 ( #3915 )
2026-09-09 21:55:02 +00:00
Mend Renovate
d0ee514044
Update GitHub Actions ( #3892 )
2026-09-09 21:54:27 +00:00
Mend Renovate
44a9d96e90
Update dependency de.stefan-oltmann:kim to v0.39.1 ( #3890 )
2026-09-09 21:51:24 +00:00
Mend Renovate
3f845c12c8
Update android.gradle to v9.4.0 ( #3893 )
2026-09-10 03:44:43 +06:00
Mend Renovate
6c0fa3a043
Update spotless to v8.10.2 ( #3895 )
2026-09-10 03:43:19 +06:00
Mend Renovate
2810dd14c4
Update dependency com.mohamedrejeb.richeditor:richeditor-compose to v1.2.0 ( #3896 )
2026-09-10 03:41:54 +06:00
MajorTanya
aebf11a749
Make tracker utils package-internal ( #3908 )
...
It gets really annoying to use any of them when they have name
collisions. Especially extensions on Track or basic public functions.
Also make some same-file extension function in the MangaUpdates
package method on the class they extended.
I would have done the same for the DTOs themselves but any that are
used on method signatures have to be public and then all their members
also have to be public. We'd end up with a confusing mess of some
internal and some public DTOs, even at the top level (since generics
can be internal to the `dto` package (e.g. with parseAs<...>) but
return annotations cannot be).
2026-09-08 11:26:21 +06:00
Mend Renovate
3a64c8d65c
Update dependency com.squareup.okio:okio to v3.18.2 ( #3894 )
2026-09-06 21:38:09 +06:00
Mend Renovate
f7cd820f2f
Update dependency org.conscrypt:conscrypt-android to v2.7.0 ( #3897 )
2026-09-06 21:33:17 +06:00
Secozzi
5b69dbad81
Fix default category and manga sometimes not having their category restored ( #3891 )
2026-09-06 21:32:38 +06:00
Secozzi
a82baac3ef
Fixed crash caused by incorrect handling of kitsu score type from login ( #3887 )
...
* track/kitsu: Fixed crash caused by incorrect handling of score type from login
* revert changelog
* turn into lowercase when accessing map
2026-09-06 21:30:38 +06:00
MajorTanya
5e99306e5f
Minor tracking refactors ( #3900 )
...
* Make tracker Api classes take their tracker's ID
Also made the name consistently `trackerId` since `trackId` can be
confusing in the context of Tracks that also carry several IDs.
Also made the public constants in TrackerManager entirely redundant,
so trackers are all equally getting their ID defined in their
constructor call now.
* Explicitly mark unused Exceptions as such
* Make isExpired method of BGMOAuth data class
As opposed to an extension defined in the same file
* Kavita: thumbnail_url -> thumbnailUrl
With a SerialName annotation of course
* Suwayomi: Remove redundant with(json)
Both of these requests don't use parseAs so this not required.
* Bangumi: Don't recreate OAuth object for storing
* Remove unused attribute from tracker OAuth classes
Mostly `token_type`.
Also removed `user_id` from BGMOAuth and `scope` & `expiresIn` from
MangaBakaOAuth (which already provides `expiresAt`).
* Use kotlin.time durations for token expiry math
Something like `Clock.System.now().plus(1.hours)` is much easier to
read than `System.getEpochMillis() + 3600`.
Also lets us use the `epochSeconds` attribute where the given
timestamps are seconds-resolution.
* Bangumi: Remove redundant apply block
* Kavita: Misc simplifications
* Use parseAs in tracker interceptors
* MAL: Use existing setAuth to store refresh token
2026-09-06 21:26:33 +06:00
Mend Renovate
3acd7eaca9
Update coil to v3.6.2 ( #3889 )
2026-09-04 15:18:23 +00:00
w
f3125ab897
Bump webgpuviewer ( #3886 )
...
* Add continuous min width
* Add dual page flip transition, separate some dual config
* Fix progress on sides for dual
* re-organize and minor fixes
* Reverse pan when vertical and zoom start right
* add flip to single
* Simple page size heuristics for dual selection
* zoom minimum wideness
* Fix continuous page progress
* continuous dynamic cache size
* Update libs.versions.toml
2026-09-04 21:18:18 +06:00
MajorTanya
21af65b100
Fix unhelpful generic 401 error on AniList expiry ( #3888 )
...
A leftover of what I assume was the v1 API behaviour handling manually
multiplied the `expires` values by 1,000, supposedly to make it a
millisecond value. However, AL tokens have been saved as milliseconds
since at least the v2 API implementation in 2018, so this has made
every expiry comparison ludicrously impossible.
Example:
millisecond timestamp:
1788529931115 (2026-09-04T13:52:11.115Z)
*1,000
1788529931115000 (+58646-04-04T21:45:15Z)
So any expiry comparisons would say "yes this token is still totally
valid", causing Mihon to send expired credentials and AL to respond
with a 401.
With these changes (which include some loosely associated clean-up),
we now correctly identify expired credentials before we attempt any AL
requests & actually show a toast with the "Token expired." error
message for the first time in 8 years or so?
I was able to keep the new ALOAuth shape compatible with
already-serialized data, though whenever a user (re-)links AL from now
on, both the `token_type` and `expiresIn` fields won't exist any more.
Since they had no use in the current code anyway, I don't consider
this a problem.
I took the liberty of adding basic instructions to the error message
but these can't be i18n'd properly so I kept it short and sweet.
---
Side effect of expired credentials is Mihon erasing the token in
storage, meaning AL disappears from the tracker sheet until re-linked.
I would say this is acceptable, but we might see panicked users in
support saying "Mihon deleted my AL links" or something.
2026-09-04 21:07:05 +06:00
천재웅
056d9baeeb
Migrate composeGrid to new group ID ( #3877 )
2026-08-30 17:45:42 +00:00
MajorTanya
baad5c59bb
Clean up some missed unused imports ( #3876 )
2026-08-30 23:43:36 +06:00
AntsyLich
34a33ed4f8
Use filled icon for library continue reading button
2026-08-30 23:30:28 +06:00
AntsyLich
7f342ca076
Use built-in DelegateLastClassLoader for extensions ( #3874 )
...
Assisted-by: Claude:claude-opus-5
2026-08-29 16:07:51 +00:00
AntsyLich
b695940114
Switch to Material Symbols and use Valkyrie for ImageVector generation ( #3873 )
...
* Add material symbols icon module
Assisted-by: Claude:claude-opus-5
* Replace material icons with material symbols
Assisted-by: Claude:claude-opus-5
* Add simple icons module and migrate CustomIcons
Assisted-by: Claude:claude-opus-5
2026-08-29 21:39:55 +06:00
w
bb24e904a9
Bump webgpuviewer, fix navigation directions and long strip bounds ( #3870 )
...
* Keep previous page when jumping pages
* Fix navigation directions
* fix continuous jump after navigate
* webgpuviewer config
* Fade in loaded pages
* async onPageChange
* Update libs.versions.toml
2026-08-28 17:42:37 +00:00
AntsyLich
5fadea61e7
Make the source manager surface suspend ( #3869 )
...
Assisted-by: Claude:claude-opus-5
2026-08-28 23:36:28 +06:00
Mend Renovate
c1d1f6b161
Update aboutLibraries to v15.2.0 ( #3866 )
2026-08-28 13:17:32 +00:00