A fork of Mihon, the open-source Android manga reader, in Kotlin. I forked it to add what the reader I use every day was missing. It installs next to the stock app, updates itself, and has shipped 21 releases. The newest feature shows where readers quit a series, measured honestly.
Kotlin
Jetpack Compose
Android
CI/CD
Statistics
API integration
21
releases shipped, latest 10-29
6 min 17 s
from push to a signed test APK
342
titles with a measured drop map
5
recommendation sources, ranked by agreement
Drop rate
Where readers quit, measured honestly
In one line: the series page shows how many readers
dropped a title, whether that is low or high for its kind, and the chapters
where they quit.
Popularity counts who started. It says nothing about who stayed. A small
service on my homelab reads AniList's public reading-status counts and the
latest 400 public "Dropped" lists for each title, then corrects three things
a plain count gets wrong (below the chart). Pick a title, then drag to your
chapter.
makimono · drop mapreal data · 10-31
Solo Leveling finished, 201 chapters
3.2%low for finished manhwa
of 243,957 readers who started it dropped it (interval 3.1-3.3%).
Median for finished manhwa: 9.4%. This title is at the 1st percentile of 117.
quit in this range
cliff (passed the test)
not counted as quitting
Latest 400 droppers: 289 quit at a chapter (median 87) and 110 dropped before chapter 1. A finished series has no newest chapter to catch up to.
The Divine Twilight's Return ongoing
8.3%typical for ongoing manhwa
of 11,893 readers who started it dropped it (interval 7.9-8.9%).
Median for ongoing manhwa: 6.2%. This title is at the 70th percentile of 116.
quit in this range
cliff (passed the test)
not counted as quitting
Latest 400 droppers: 265 quit at a chapter (median 57), 76 dropped before chapter 1, and 59 had caught up with the newest release (18.2% of those checked), so they are not counted as quits.
The Legendary Moonlight Sculptor ongoing
10.0%high for ongoing manhwa
of 14,241 readers who started it dropped it (interval 9.5-10.5%).
Median for ongoing manhwa: 6.2%. This title is at the 87th percentile of 116.
quit in this range
cliff (passed the test)
not counted as quitting
Latest 400 droppers: 165 quit at a chapter (median 40), 125 dropped before chapter 1, and 110 had caught up with the newest release (40% of those checked), so they are not counted as quits.
01 · caught up
Catching up is not quitting
On an ongoing series, readers who reach the newest chapter often mark it Dropped.
Counted as quits, they pile up at the newest chapter and fake a cliff.
The service checks each dropper's last chapter against the series'
release history on the day they dropped. Within one chapter of the newest
release means caught up, not quit. Median share across
138 ongoing titles: 11.4%.
02 · peers
Compared with its own kind
A 10% drop rate is below the median for finished manhua and in the top 13% for ongoing manhwa.
Median drop rate, four largest groups
Group
Titles
Median
finished manhua
45
11.9%
finished manhwa
117
9.4%
ongoing manhua
45
8.6%
ongoing manhwa
116
6.2%
Labels are shrunk toward the group median (empirical Bayes,
K = 100), so a small title cannot earn an extreme label. Under
100 readers: no label (12 of 342).
03 · cliffs
A cliff has to pass a test
A busy chapter range is not automatically a cliff.
A range is marked only when it is a local peak and a Poisson test says
the excess over its neighbours is unlikely to be noise. That cut titles
with a "cliff" from 268 of 340 to
127. Today: 157 cliffs across
127 of 342 titles.
In the app, the drops server is optional, set by the user, used only on home
Wi-Fi, and its address stays on the device. Readers' notes from past your
chapter stay hidden until you ask. This page shows counts only: no reader
names, no notes.
Release engineering
Shipped, then checked on a real phone
In one line: a push becomes a signed test build in about
six minutes, and nothing ships until it passes on a real phone.
21 stable releases (v0.19.10 to v0.19.30,
latest 10-29) plus 22 public dev
builds. Signed APKs; the app updates itself and installs next to stock Mihon.
Quick lane CI: push to signed test APK in
6 min 17 s (measured 10-21).
Tested on a Galaxy Z Fold over adb, folded and unfolded,
with a written PASS or FAIL against what a user should see:
Tag search: 14 correct results became 121 after switching from tag names to tag ids with subtag families.
For You took about 20 s on every open. The first fix failed the check (the cache was not used on reopen) and went back. The second held: 2.2 s on reopen, still cached after a force-stop.
Library migration: 673 titles, 134,056 chapters and 50,816 read marks identical before and after.
Upstream kept current: Mihon 0.21.0 to 0.21.2 merged in v0.19.26.
Fails soft: when AniList's API is down, Discover, Similar
and For You fall back to other sources (v0.19.28).
Privacy
Other people install it, so defaults are strict
Found and fixed: with verbose logging on, tracker login
tokens were written to the app log. Fixed in v0.19.26.
AniList is opt-in. Features that use it run on the user's
own login, off by default. Adult titles stay hidden in Discover, For You and
Similar unless turned on (v0.19.27).
Bulk AniList linking never lowers progress, leaves out
matches under 90% confidence by default, and shows a preview before it
writes. My own run: 399 list entries became 708, with 0 downgrades.
The reader
The auto-scroll engine
In one line: webtoons are one long vertical strip, so the
reader scrolls itself at a speed you set and stops at the end of a chapter.
makimono · readerpress play
end of chapter 12
1.2×
or tap the screen
press play, or tap the screen.
Placeholder panels. The engine is the real one: speed changes apply
mid-scroll, a tap pauses, and it stops at the chapter seam instead of
sliding through. In the app the same controller also binds to the
volume keys.
Recommendations
Similar titles, ranked by agreement
In one line: a title that several independent services
recommend outranks one that a single service pushes.
makimono · recommendationssample data
Turn sources off and watch the ranking move.
Sample titles; the ranking rule is the app's. Each independent source
that recommends a title adds one point, popularity only breaks ties.
Hidden gems drops the most popular titles to surface what big lists bury.
Scope
What else ships in it
Discover: AniList and MangaBaka tags in one search, include and exclude, with tag families.
For You: weekly picks from your own library, cached on the device.
Similar: five sources ranked by agreement, plus a weekly Best matches row.
Comments and reviews from three platforms, read-only.
AniList tracking: bulk linking with preview, and automatic progress updates (off by default).
Fold-aware margins, an opt-in high-quality renderer, and six icon variants.
The app source is private; the releases are public.
what it demonstrates
Kotlin and Jetpack Compose at feature scale; release engineering (signed APKs, CI, in-app updates); statistics applied with care (peer baselines, empirical Bayes shrinkage, a Poisson test for cliffs, intervals on every rate); rate-limited integration with five APIs; testing on a real phone against written expectations; and keeping a fork current with an active upstream.