Skip to content

Releases: mkisontop/MangaLens

MangaLens 1.1.4

Choose a tag to compare

@github-actions github-actions released this 08 Oct 04:29
239dee6

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

Choose a tag to compare

@github-actions github-actions released this 07 Oct 11:58
73b0482

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

Choose a tag to compare

@github-actions github-actions released this 07 Oct 09:44
243abec

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

Choose a tag to compare

@github-actions github-actions released this 07 Oct 00:24
6fe92f2

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

Choose a tag to compare

@github-actions github-actions released this 02 Oct 15:43
f29769a

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 22:13
cd3a39d

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
    • 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.
  • 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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 16:16
0181f28

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 15:34
f06472c

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

Choose a tag to compare

@github-actions github-actions released this 24 Sep 22:12
0392985

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

Choose a tag to compare

@github-actions github-actions released this 24 Sep 12:48
3dfc5c0

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.