Download
The latest stable version of Mihon was released and the latest beta version was released .
Beta releases are intended for testing upcoming changes and may not be a stable experience.
Requires Android 8.0 or higher.
Changelog
Added
- Option to disable reader zoom out (@Splintorien) (#302)
- Source name and tracker urls to app generated
ComicInfo.xml
file (@Shamicen) (#459) - Option to migrate in Duplicate entry dialog (@sirlag) (#492)
- Upcoming screen to visualize expected update dates (@sirlag) (#420)
- Only show upcoming updates in the future (@sirlag) (#606)
- Add Quantity Badge to Upcoming Screen (@Animeboynz, @AntsyLich) (#1250)
- Crash screen error message to the top of the crash log generated from that screen (@FooIbar) (#742)
- Support for 7Zip and RAR5 archives (@FooIbar) (#949)
- Extra configuration options to e-ink page flashes (@sirlag) (#625)
- 8-bit+ AVIF image support (@WerctFourth) (#971)
- Smart update dialog message when no predicted released date exists (@Animeboynz) (#977)
- Option to copy reader panel to clipboard (@Animeboynz) (#1003)
- Copy Tracker URL option to tracker sheet (@mm12) (#1101)
- A button to exclude all scanlators in exclude scanlators dialog (@AntsyLich) (84b2164)
- Open in browser option to reader menu (@mm12) (#1110)
- Reorder reader menu overflow items (@AntsyLich) (788235f)
- Option to skip downloading duplicate read chapters (@shabnix) (#1125)
- Add confirmation dialog when adding repo via URI (@Animeboynz) (#1158)
- Add "show entry" action to download notifications (@mm12, @AntsyLich) (#1159)
- Option to update trackers when chapter marked as read (@Animeboynz, @AntsyLich) (#1177, #1365, #1374)
- Toast to restart app when User-Agent is changed (@NGB-Was-Taken) (#1204)
- Added more profile compilation status (p) (c8bb78d)
- Add option to opt out of Analytics and Crashlytics (@Animeboynz) (#1237)
- Rework Firebase setup (@AntsyLich) (15e3f28)
- Added random library sort (@jackhamilton) (#1317)
- Make sure random library sort is at the bottom (@AntsyLich) (2e2c8d3)
- Confirmation dialog when removing privately installed extensions (@Animeboynz, @AntsyLich) (#1320)
- Option to backup non-library read entries (@Animeboynz, @jobobby04, @AntsyLich) (#1324)
Changed
- Read archive files from memory instead of temporarily extracting to internal storage (@FooIbar) (#326)
- Fix dual page split (@FooIbar) (#485)
- Bump default user agent (@AntsyLich) (8160b47)
- Wait for sources to be initialized before performing source related tasks (@jobobby04) (a08e03f)
- Duplicate entry dialog UI (@sirlag) (#492)
- Extension trust system
- Store extension repo details from
repo.json
in database (@sirlag) (#506)- Fix extension repo migration not triggering (@AntsyLich) (9672ea8)
- Refactor the ExtensionRepoService to use DTOs (@MajorTanya) (#573)
- Fix extension repo name is used to construct URL instead of baseUrl (@MajorTanya) (#572)
- Fix crash with
TypeReference
issue when creating extension repo (@AntsyLich) (#574, e020ae5)- Fix mishap in (e020ae5) (@AntsyLich) (6965e59)
- Backup and Restore (@Animeboynz) (#1057)
- Trust extension by repo (@AntsyLich) (#570)
- Store extension repo details from
- From M2 ripple to M3 (@FooIbar) (#675)
- Increased continue reading button size (@AntsyLich, @Animeboynz) (e17f70f)
- Global search "Has result" choice is now sticky (@AntsyLich) (5a61ca5)
- Make category backup/restore not dependant on library backup (@AntsyLich) (56fb4f6)
- Rename backup restore error log file (@AntsyLich) (2858ef8)
- Keyboard type in add extension repo dialog (@xbjfk) (#764)
- Adjust collapse/open animation on manga description (@AntsyLich, @ivaniskandar) (1c16fc7)
- Kitsu domain to
kitsu.app
(@MajorTanya) (#1106) - Respect privacy settings in extension update notification (@Animeboynz) (#1156)
- Hide keyboard when a Tracker SearchResultItem is clicked (@Animeboynz) (#1168)
- Enable 'Split Tall Images' by default (@Smol-Ame) (#1185)
- Ignore "intent://" urls on webview (@bapeey) (#1193)
- Make reader chapter navigator slightly wider on small screens (p) (#1202)
- Re-enable fetching chapters list for entries with licenced status (@Animeboynz) (#1230)
- Change casing for Extention Repos String (@Animeboynz) (#1248)
- Retain remote last chapter read if it's higher than the local one for EnhancedTracker (@brewkunz) (#1301)
- Adjust expandable fab animation (p) (eb6092b)
- "Invalidate downloads index" to "Reindex downloads" (@AntsyLich) (d2afbfe)
Improved
- Reader performance
- Avoid unnecessary copying when processing reader image (@FooIbar) (#691)
- Significantly improve performance when loading extremely long images in long strip mode (@FooIbar) (#692)
- Use
Bitmap.Config.HARDWARE
if possible to improve image loading speed (@wwww-wwww) (#687) - Improve preloading in long strip mode (@FooIbar) (#1076)
- Performance when looking up specific files (@raxod502) (#728)
- Chapter number parsing (@Naputt1) (6a80305)
- Error message on restoring if backup decoding fails (@vetleledaal) (#1056)
Removed
- Legacy download folder names no longer supported (@AntsyLich) (e55e5f6)
- Remove legacy broken source and history backup (@AntsyLich) (518abf0)
- Remove more unnecessary permissions from Firebase dependency (@AntsyLich) (02af9b1)
- Fix mishap in 02af9b1 (@AntsyLich) (f22767d)
Fixed
- Extracting
ComicInfo.xml
from local source archives (@FooIbar) (#325) - Chapter download indicator (@ivaniskandar) (d8b9a9f)
- Issues with shizuku in a multi user setup (@Redjard) (#494)
- Fix reader page image not being decoded until it's visible (@FooIbar) (#563)
- Reader chapter progress slider visuals (@FooIbar) (#674)
- Extension being marked as not installed instead of untrusted after updating with private installer (@AntsyLich) (2114514)
- Extension update counter not updating due to extension being marked as untrusted (@AntsyLich) (2114514)
Key "extension-XXX-YYY" was already used
crash (@AntsyLich) (2114514)- Navigation layout tap zones shifting after zooming out in webtoon readers (@FooIbar) (#767)
- Some extension not loading due to missing classes (@AwkwardPeak7) (#783)
- Theme colors in accordance to upstream changes (@CrepeTF, @AntsyLich) (#766, #963, #976, 9a34ace)
- Crash when requesting folder access on non-conforming devices (@mainrs) (#726)
- Fix unexpected skips in strong skipping mode (@FooIbar) (#940)
- Bugged color for Date/Scanlator in chapter list for read chapters (@ivaniskandar) (15d9992)
- Categories having same
order
after restoring backup (@Cologler) (119bcbf) - Filter by "Tracking" temporarily stuck after signing out of tracker (@AntsyLich) (#987)
- Fix login prompts despite being logged in to trackers in Manga screen (@AntsyLich) (cbcd8bd)
- JXL image downloading and loading (@FooIbar) (#993)
- Crash when using
%
in category name (@Animeboynz, @FooIbar) (#1030) - Fix item disappearing when fast scrolling (@cuong-tran) (#1035)
- Library is backed up while being disabled (@AntsyLich) (56fb4f6)
- Crash on list with only sticky header (@cuong-tran) (#1083)
- Crash when trying to clear cookies of some source (@FooIbar) (#1084)
- MAL search results not showing start dates (@MajorTanya) (#1098)
- Android SDK 35 API collision (@AntsyLich) (fdb9617)
- Manga next update calculation when considering custom fetch interval (@cuong-tran) (#1206)
- WheelPicker Manual Input (@Animeboynz) (#1209)
- EnhancedTracker not auto binding when adding manga to library (@brewkunz) (#1298)
- Step count in settings slider (@abdurisaq) (#1356)
- Freezing in some screens due to blocking call (@cuong-tran) (#1364)
- Crash when removing non-existent tracked entry from tracker (@cuong-tran) (#1380)
Other
- Code cleanup
- Minor refactor of theming when expressions (@MajorTanya) (#396)
- Inside
WorkerInfoScreen
(@AntsyLich) (5aec8f8) - Inside
ChapterDownloadIndicator
,MangaChapterListItem
(@AntsyLich) (b7e091d) - MangaCoverFetcher (@ivaniskandar) (1365695)
- Cleanup
LibraryScreenModel
LibraryMap.applySort
and some more (@AntsyLich) (2beb89d) - Address
overridePendingTransition
deprecation (@MajorTanya) (#410) - Prioritize extension classes and files over app (@beer-psi) (#433)
- Use compose pager implementation (@ivaniskandar) (84984ef)
- Switch to coil3 from coil2 (@ivaniskandar) (f72b6e4)
- Fix GIF not playing (@jobobby04) (59bedb3)
- Accommodate db for sync support (@kaiserbh) (#450)
- Fix webtoon last visible item position calculation (@FooIbar) (#562)
- Migrate from
com.google.accompanist:accompanist-webview
toio.github.kevinnzou:compose-webview
(@sirlag) (#569) - Rewrite migrations (@ghostbear) (#577)
- Further improve migration (@ghostbear) (#588)
- Fix migrations not running (@ghostbear) (#604)
- Fix MigratorTest after updating to Kotlin 2 (@cuong-tran) (#896)
- Add MigratorTest to build script (@cuong-tran) (#896)
- Fix UI freeze after migration (@AntsyLich) (3f1d28c)
- Fix some migrations never running (@MajorTanya, @AntsyLich) (#1030)
- Add ProGuard rule to keep
mihon
namespace classes (@MajorTanya) (#605) - Use gradle plugins to share build configuration instead of subprojects (@AntsyLich) (e448e40)
- Remove dependency on compose material 2 components (@AntsyLich) (fb94230)
- Upload PR build artifacts to GitHub (@FooIbar) (#941)
- Refactor archive support with libarchive (@FooIbar) (#949)
- Add safeguard to prevent ArchiveInputStream from being closed twice (@null2264) (#967)
- Move archive related code to :core:archive (@AntsyLich) (bd7b354)
- Replace detekt with ktlint via spotless (@AntsyLich) (#1130, #1136, #1138)
- Refrain from running spotless on weblate files (@AntsyLich) (32d2c2a)
- Use feature flags in compose compiler plugin (@AntsyLich) (8f9a325)- PagerPageHolder: lazy init loading indicator (@AntsyLich, @ivaniskandar) (a45eb5e)
- Collect MangaScreen state with lifecycle (@AntsyLich, @ivaniskandar) (03eb756)
- Add stable marker to Manga data class (@AntsyLich, @ivaniskandar) (03eb756)
- Use DTOs to parse tracking API responses (@MajorTanya) (#1103)
- Fix Kitsu ratingTwenty being typed as String (@MajorTanya) (#1191)
- Fix Kitsu
synopsis
nullability (@MajorTanya) (#1233) - Fix AniList
ALSearchItem.status
nullibility (@Secozzi) (#1297)
- Migrate some classpaths to gradle plugins (@AntsyLich) (fc1c804)
- Add crashlytics to standard builds (@AntsyLich) (3c611b9)
- Switch to stable compose (@AntsyLich) (2baffa6)
- Switch from inorichi injekt to kohesive Injekt (@AntsyLich) (#1205)
- Use custom injekt register with inorichi patch (@AntsyLich) (83fd474)
- Use TextFieldState in BasicTextField where applicable (p) (#1201)
- Bump NDK version (@AntsyLich) (#1203)
- Move firebase permission removal to standard flavor (@AntsyLich) (be671b4)
- Adjust distinct checker in WidgetManager and run on default dispatcher (p) (9b8ab6a)
- Update resources exclusion rules (p) (481cfed)
- Bump compile sdk to 35 (p) (37419cd)
- ChapterNavigator: dispatch page change only when needed (p) (f84d9a0)
- Remove usage of deprecated accompanist SystemUiController (@AntsyLich) (2ba3f06)
- Run PR check when base strings are changed (@AntsyLich) (4051f18)
- Fix PR build check (@AntsyLich) (9503082)
- Cleanup .gitignore files (@AntsyLich) (afa5002)
- Pass uncaught exception to default handler in GlobalExceptionHandler (so it's reported to crashlytics) (@AntsyLich) (f3a2f56)
Checksums
Variant | SHA-256 |
---|---|
Universal | dc0770673982236eb572a2f801705b2f719ef9147e3abeeff10b0b29f7557f80 |
arm64-v8a | 45899c41516daf34b710ee9d523bf07f56d9fa714c576677b7108229858c7acb |
armeabi-v7a | a3a4917e9677c63e59ac8ccfa04163810ea00406bbfa24a1c386785e71ddf5e3 |
x86 | 18c6b31d126f9bcd258ebe4a9362c0046293ec9405f77beac7a9828099ea4d78 |
x86_64 | 7fc299a3165c8782603c44f41c7ce5301cab3336ecbbe07d765e42c4dd1871b3 |
If you are unsure which version to choose then go with mihon-v0.17.0.apk
View the full release here