Repository navigation
Releases: mkisontop/MangaLens
Release list
MangaLens 1.1.4
1.1.4
Dark gaps ride the page smoothly while you scroll.
Download: MangaLens.apk below updates 0.9.2 and newer in place. Still on
0.9.1? Use MangaLens-legacy-update.apk once (Android 9+), as described in
the README.
- No more twitching. Every time a detection came back — a score of times a
second while the page moved — the shade restarted its prediction from where
the page had been a few milliseconds earlier, and fell back by the speed
times that delay: up to a dozen rows, again and again. The prediction now
always starts from the frame the page's position was read from. - Timed by the screen, not by the phone's workload. The page's motion is
timed by each captured frame's own timestamp instead of the moment the app
got round to reading it, and the shade is drawn for the exact display refresh
it will appear in instead of whenever the draw happened to run. When the
capture loses a frame or two, the shade rides on instead of stalling and then
lurching to catch up. A frame the browser itself misses — the page shown
where it was for one refresh — is no longer taken for a stop that froze the
shade and sent it jumping after the page on the next. - Steady at 120 Hz. Every frame of a 120 Hz screen is followed, and the
speed is read over time rather than frame by frame, so a row more or less
between two frames no longer shakes the shade. - Edges that hold still. The margin that keeps the shade off the art while
you scroll was rebuilt with every detection, so its edges moved in and out
with each one. It is now held steady, grows at once when needed and gives way
gently. The fast detections used while scrolling look at every pixel and are
lined up with the page, so each finds the same edges as the last, and the
wide margin of a fast scroll is worked out in a fraction of the time. At the
darkest level, a gutter that runs into a site's footer is no longer cut back
and restored, over and over, as the page moves. - Cleaner starts and stops. The margin against the page stopping dead is
kept on the edge the shade moves toward, the only one a stop can push it
past, and a slightly wider margin goes up the moment a finger touches the
screen. A finger that catches a fling holds the shade where the page stopped
instead of letting it run on until the next frame says so. Where a gutter
meets a soft-edged drawing, the shade no longer stops a row short once the
page comes to rest after a scroll. - Long white gutters keep their shade. Scrolling through a gutter that fills
the screen, with almost nothing on it to measure the motion by, no longer makes
the shade give up and blink off. - Tested much harder. A new bench plays every kind of scroll — slow
reading, drags, flings, reversals, stop-and-go — at 60 and 120 Hz, with the
timing as ragged as a phone's, and measures how far the shade wobbles against
the page, how dark the gutters stay and any art it covers. With a phone's
timing, the shade's wobble against the page fell from 7.3 to 3.1 rows on
average, its frame-to-frame flicker by nearly two thirds, and it covers less
art; at 120 Hz the wobble is about a quarter of what it was. 240 randomised
scrolls, from creeping to violent, were played against 1.1.3 as well: the
shade wobbled less in 204 of them. Which white is a gutter at rest is
unchanged.
MangaLens 1.1.3
1.1.3
Dark gaps stay off the browser's and the site's bars while you scroll.
Download: MangaLens.apk below updates 0.9.2 and newer in place. Still on
0.9.1? Use MangaLens-legacy-update.apk once (Android 9+), as described in
the README.
- The shade stops at the bars that stay put. The dark gaps ride the page as
it scrolls, and nothing stopped them riding on under the bars that do not
scroll: the browser's tabs and address bar, a site's own header and its
Prev / Next footer, the navigation bar. With a site's header on screen, a
fast scroll slid slabs of shade over its title and buttons. The rows the page
scrolls in are now found on every detection, between the bars across the top
and the bottom of the screen, and the shade is cut to them. - Steadier while those bars are up. The page's motion is measured from the
page alone; bars that never move no longer argue that nothing moved. - Tested on real pages. Besides the unit tests and the image corpus, the
whole engine was run over two screenshots of a real chapter, scrolling under
a fixed header and footer at reading speed, in a drag, a fling, a reversal
and at 120 Hz: no shade on the bars in any frame, no art covered in steady
motion, and every gutter dark again at rest.
MangaLens 1.1.2
1.1.2
Dark gaps show up again on sites that put their own bars on screen.
Download: MangaLens.apk below updates 0.9.2 and newer in place. Still on
0.9.1? Use MangaLens-legacy-update.apk once (Android 9+), as described in
the README.
- Gutters reach the black bars again. A gutter is only darkened when it runs
out to the edges of the reading strip, and the strip's edges were found from
black bars that had to be unbroken from the top of the screen to the bottom.
The browser's tabs and address bar, a site's own header (Chapter 31, the home
button) and its Prev / Next footer all cross those bars, so with any of them
on screen there were no bars, no gutter could reach them, and nothing was
darkened. The bars are now read where the gutters meet them, past the rows
that cross them at the top and bottom of the screen. - MangaLens's own buttons are not the page. The floating buttons and their
status pill neither break a black bar nor get darkened. - The browser's bars are never darkened. A dark tab strip whose grey happens
to match the shade no longer passes for a gutter.
MangaLens 1.1.1
1.1.1
The page scrolls again with dark gaps on.
Download: MangaLens.apk below updates 0.9.2 and newer in place. Still on
0.9.1? Use MangaLens-legacy-update.apk once (Android 9+), as described in
the README.
- Touches reach the page. 1.1.0 drew the dark gaps in a full-screen window
of their own, on top of the lettering's. Since Android 12 the see-through
windows of one app are added up, and past about 80% opacity Android passes no
touch through them: the page could not be scrolled, and Android said MangaLens
"isn't optimized for the latest version". The shade is now painted in the
lettering's own window, under the lettering, so MangaLens is one see-through
layer again. - The shade's grey is kept exact. It is painted so that the glass shows the
chosen darkness whatever the window is drawn at, and so that under MangaLens's
veil the capture still reads the shade as its own: the detector keeps finding
its gaps while lettering is up. Without Solid lettering, Android holds the
window to its cap and Dark and Black come out at about 75%.
MangaLens 1.1.0
1.1.0
Dark gaps — manhwa night mode. The white gutters between a manhwa's panels
can now be painted dark, without touching the art, and kept dark while you scroll.
Download: MangaLens.apk below updates 0.9.2 and newer in place. Still on
0.9.1? Use MangaLens-legacy-update.apk once (Android 9+), as described in
the README.
Built on 1.0.7: everything in the 1.0.x releases below is included.
- Long-press the floating button → 🌙 Dark gaps between panels (or
Tweaks → Reading → Dark gaps; Dim / Dark / Black). Works on any site or app and
independently of translation. - Only real paper is darkened. Pixels must be white (every channel ≥ 240) and
part of a region that spans the strip; balloons stay as drawn, lettering on the
white keeps a margin of white, and a hairline break in a balloon's outline can
no longer let the dark in. - Rides the scroll. The page's motion is measured to the pixel from the
capture itself and the overlay is drawn where the page will be when it reaches
the glass; the lead time is calibrated on the fly from the shade's own edges,
so it follows each device's capture and display delay. A speed-dependent margin
keeps it off the art while moving; a touch raises the margin before the page
moves; when the page stops, an exact full-resolution pass lands the edges on
the pixel. - Self-checking. The overlay is translucent so the capture can see the page
through it: the detector reads its own output as paper (no flicker), spots art
the shade has strayed onto, and learns the real grey on a device whose
compositor blends differently. Probes of the deep inside of every gap drop the
shade if it ever stands over something that is not paper; a page turn drops it
within a few frames. - Invisible to translation. OCR and the change detectors are given the page
with the shade taken back off, so nothing about translating changes. - Hardened on a corpus of harder pages. Generated scenes with ground truth —
slanted and rounded panels, side-by-side panels, hairline seams, JPEG, soft and
off-white paper, thin and dashed balloons, sound effects, screentones, bars and
margins, plus 200 random pages and the two real screenshots degraded twelve ways —
judged on one rule: the shade covers paper and only paper. Slanted gutters, gutters
cut by a balloon, wide balloons in narrow strips, boxed white panels, rounded
panels, cut-off lettering, faint hairlines that flickered between passes and
hairline seams were all fixed this way. The two real screenshots come out with no
art or balloon touched in every degradation. Known limit: a pure-white patch of
art that reaches a gutter with no border between them is darkened with it. - New, Android-free, JVM-tested core in
app/mangalens/gaps/: a bit-parallel
region finder, a row-profile scroll tracker, the shade engine, and a latency
simulation (60/120 Hz, random capture/display/detection delays) that scores the
art pixels the visible overlay covers.
MangaLens 1.0.7
1.0.7
A full review of the app, with every finding checked and fixed.
Download: MangaLens.apk below updates 0.9.2 and newer in place.
Installing still needs Play Protect's scanning switched off for a moment
(auto-scroll's Accessibility switch is what it blocks); see the README.
- Auto-scroll
- Translation no longer starts on a page that is still gliding slowly,
and a stop always waits for its own translation. - MangaLens's own buttons no longer keep it from hurrying through the
gaps between panels, or pass for the end of the page. - It also stops at the end of the page while translating.
- Turning its Accessibility switch off while it runs stops it with a
message instead of leaving it stuck. - It waits while the long-press menu is open, and a speed tap no longer
stops your next touch from pausing it.
- Translation no longer starts on a page that is still gliding slowly,
- Translation
- Stop can no longer crash the app while a frame is being copied.
- A page with an animated banner or a video no longer translates over
and over. - The last page's cards no longer come back over a new page after a
failed pass. - Each series keeps its own names and story from the first page on, is
recognised again when you come back to it after a long read, and a
read still running when you tap New series no longer teaches the next
one. A few failed reads in a row (offline, rate-limited) no longer
make it forget the series. - A reply with no lines no longer beats one with lines; the other
requests keep going. - Small scroll nudges no longer leave rows unread, and a remembered
answer is reused only where the same words are found again.
- Cleaning the page
- On screentone, panel borders and outlines beside the lettering are no
longer cut through and filled with dots. - Art text is no longer wiped flat because a line once drifted into it.
- The AI clean-up sends at most eight regions and paints none of its
lettering back, and skips the request when no image model is left. - Two balloons drawn joined each get their own line of English again,
instead of one block running across the outline between them.
- On screentone, panel borders and outlines beside the lettering are no
- Reading the page on the phone
- Two joined balloons cut by the screen's edge are treated as cut.
- Korean lines ending in 야 or 라 are no longer run into the next
speaker's. - The on-device reading models are released when you stop.
- The app
- A leftover 1.0.1 Solid lettering switch no longer hides No ghosts.
- Allow it no longer crashes on phones without Android's overlay
permission page. - The first Tweaks or scroll-button request after turning the phone is
no longer lost. - OpenRouter and OpenAI refusals (HTTP 403) are no longer reported as a
bad key.
- The release build signs the APK in a separate job that never runs build
code.
MangaLens 1.0.6
1.0.6
Faster auto-scroll.
Download: MangaLens.apk below updates 0.9.2 and newer in place.
- Auto-scroll goes much faster now. The speed runs from 1 to 15 instead
of 1 to 10: levels 1–10 are as they were, and each new level is about a
third faster than the one before, so 15 moves about three times as fast
as 10 did. The finger also drags a longer stretch of the screen before it
lifts, so fast speeds run more smoothly. - Installing still needs Play Protect's scanning switched off for a moment
(auto-scroll's Accessibility switch is what it blocks); see the README.
MangaLens 1.0.5
1.0.5
Auto-scroll: MangaLens scrolls the page for you, in any app, and slows down
for the big balloons.
Download: MangaLens.apk below updates 0.9.2 and newer in place.
- Auto-scroll. Tap the new ▼ beside the 文A bubble and the page moves
on by itself — in Brave, a reader app, anything that scrolls. − and
+ change the speed as it goes, ❚❚ stops it, and touching the
screen pauses it until you let go. It stops by itself at the end of the
page. It is also in the long-press menu, and Tweaks → Auto-scroll sets
the speed it starts at. - It slows down for big balloons. MangaLens watches the page on your
phone as it moves and slows right down while a big balloon goes by, the
more the bigger it is, then hurries through the empty gaps between
panels. No AI or connection is involved, so it works the same with
translation napping. - With translation or without. Napping (tap 文A), the page glides
without stopping. Awake, it glides half a screen, waits for that stop's
translation, gives you time to read it, and glides on. - One switch in Accessibility. Only an accessibility service can move
another app's page, so auto-scroll comes with one, "MangaLens auto-scroll":
Tweaks → Auto-scroll → Turn on takes you there. It can only drag the
page — it can't read the screen, see what you type or tap anything. On
Android 13 and later, if the switch is greyed out, allow restricted
settings in App info first (the link is right under the button). - Installing: where Play Protect's enhanced fraud protection is on,
Android refuses a downloaded app with an accessibility service ("App
blocked to protect your device"). Switch that protection off for the
install and back on afterwards; see the README. - Fewer slow stops while you scroll yourself. Lines read at the last
stop are found again more reliably, thin ones like a lone "……" included,
so a small scroll reads only the new strip instead of the whole screen
again (about 1 stop in 10 used to). - A line the screen's edge cut in half is read whole at the next stop,
instead of keeping the half-sentence it was first read as. - Cleaner balloons. A panel whose boxes all slid off their balloons,
a box that slid down out of its balloon, and a face under a drifted box
are all handled: the balloon is cleaned whole and the art is left alone. - Words that fit no centred block are set in the balloon's largest clear
area instead of spilling over its edge.
MangaLens 1.0.4
1.0.4
Faster, above all when you scroll.
Download: MangaLens.apk below updates 0.9.2 and newer in place.
- A scroll reads only what's new. After a scroll, only the strip the
scroll revealed goes to the AI, and the lines you had already read come
back the moment you stop, moved with the page, instead of the whole screen
being read again. On real pages, the first new line after a small scroll
arrived in 1.7 s instead of 4.2 s, and the whole screen was done in 2.7 s
instead of 5.7 s. These times were measured from a server; your phone adds
the time it takes to upload the page. - A new page's first line comes sooner. The AI's first line is painted as
soon as it arrives, without waiting for the phone's own text recognition,
and the page is sent the moment it settles: about 1.7–1.9 s to the first
line instead of 2.4 s, measured the same way. - Lines cut by the screen's edge stay translated after a scroll.
- When Google is overloaded, MangaLens switches to a stand-in model at
once instead of waiting it out, and gives up on a connection that has gone
silent. - Cleaner balloons. A balloon the AI only partly boxed is cleaned whole,
and white lettering edged in black on dark art, and the white halo around
lettering, are erased with it. - Better typesetting. Names and short words stay whole whenever they fit,
words break where a dictionary would break them, free lettering keeps off
its neighbours' lines, and sounds the AI wraps in asterisks are lettered
without them. - The reading code is compiled ahead of time, so the first page after
starting MangaLens is quicker too. - With diagnostics on, the pill says how long each stop took from the
moment you stopped: to the first line, how many lines came back straight
away, and the upload apart.
MangaLens 1.0.3
1.0.3
No more grey ghost, and nothing extra to allow for it.
Download: MangaLens.apk below updates 0.9.2 and newer in place.
- Clean balloons on Android 12 and later. Android draws an overlay that
lets your taps through at no more than 80% strength, so a fifth of the page
showed through every cleaned balloon: a grey ghost of the original lettering
under the English. MangaLens now dims the whole page by that fifth while it
is awake, and paints each cleaned balloon, card and erased patch with the
page's share already taken off, so the two meet at exactly the same level
and nothing of the original shows through. No accessibility service or any
other permission is involved. - The page is a little darker while MangaLens is awake, and back to full
brightness while it naps. Tweaks → No ghosts switches the veil off if
you would rather have full brightness and the faint ghost. - Floating cards hide the art under them completely now, too.