Mekuru
Changelog
What changed in each version, newest first. Android, iPhone and iPad share version numbers; the App Store skips some of them.
1.65.0
New
- library Import several Mokuro volumes from one folder
- reader Fill the screen with cover and illustration pages
- manga Every manga keeps its own reading direction
- manga Show wide and double pages on their own in Spread view
- manga Shift Spread view pairs by one page
- manga Converted EPUBs keep their two-page spreads
- reader Long-press an image to zoom in
- manga Read ComicInfo.xml from comic archives
- manga Add ComicInfo.xml to exported CBZ files
Fixed
- manga Keep chapter folders in order in manga archives
- manga Load mokuro volumes whose pages sit in chapter folders
- manga Pair an archive's mokuro text with the right chapter pages
- manga Mark a book finished when Spread view ends on two pages
1.64.0
New
- library Import CBR, RAR and ZIP manga archives
1.63.3
Fixed
- reader Size chapter names in book search with the results
1.63.2
Fixed
- reader Show book search results at your dictionary text size
1.63.1
Fixed
- reader Fit the reader's top bar on narrow phones
1.63.0
New
- reader Search inside a book
Fixed
- dictionary Wrap long pitch accent diagrams instead of overflowing
1.62.1
Fixed
- settings Show only the credits that apply on iPhone and iPad
- dictionary Keep large lookup text from covering the frequency badge
1.62.0
New
- reader Bigger text, and set the dictionary popup's text size from the reader
- reader Read EPUBs in fonts you add yourself
- backup Full backups keep the fonts you added
Fixed
- reader Keep the page whole after changing the text size or margins
1.61.0
New
- settings Add Low RAM mode for e-ink readers and 4 GB devices
- settings Low RAM mode turns off animations and uses less memory
- settings Let the Low RAM mode suggestion be turned off for good
Faster
- reader Open books faster by keeping their page locations
- dictionary Decode pictures in definitions at the size they are shown
- Use much less memory for word taps and furigana
Fixed
- Tap outside any search bar to close the keyboard
- reader Reopen at your page instead of closing when memory runs low
- reader Reopen your book after the system closes Mekuru in the background
- reader Open the book even when the page misses its ready signal
1.60.1
Fixed
- library Refuse an EPUB with no container or package document
- sync Word a failed server download once, in the app language
- translations Word OCR and server download errors in the app language
- translations Word Pro, OCR server test and download errors in the app language
- dictionary Tap outside the search bar to close the keyboard
1.60.0
New
- OCR Read every imported PDF with the NDL text model
Fixed
- reader Keep furigana out of highlight excerpts
- translations Translate the highlights sheet's title and empty text
- OCR Let the custom OCR server dialog remove a server
- OCR Offer the model download before the Pro screen's speed test
- backup Check iOS free space for the full backup zip
- translations Name the downloaded models the full backup leaves out
- settings Ask before KanjiVG and furigana downloads use mobile data
- free-books Show a failed download in the book's sheet
- sync Translate server URL checks and connection errors
- manga Compute auto-crop bounds for a book opened with it on
- library Let Export as CBZ share on iPad
- library Say why each import failed, in the user's language
- library Show the no-OCR hint only for a CBZ without OCR data
- dictionary Show no frequency badge without frequency data
- vocabulary Show a saved word's whole definition, not "〔"
- vocabulary Confirm the CSV export and report its errors
- anki Say a card was sent to AnkiMobile, not added
- reader Open a library bookmark or highlight at its position
- reader Name a bookmark after the chapter it is in
- reader Stop a book's furigana mode leaking into the next book
- reader Open a lookup only for taps on the text itself
1.59.2
Fixed
- translations Tell iOS users to keep Mekuru open during a full backup
1.59.1
Fixed
- privacy Describe what Mekuru actually sends
- translations Say iOS scans keep going after you leave Mekuru
1.59.0
New
- reader Copy the sentence on the Sentence tab
- reader Give High quality 45 seconds, then use or offer Standard
- reader Say High quality is starting while its model loads
- core Say when a VPN is why Mekuru asks about mobile data
- reader Notify when the High quality download fails
- Drop an unused High quality string
- OCR Scan free books on this device only, with the scanned-book reader
Faster
- reader Skip a High quality translation its caller gave up on
- reader Let a Standard translation's stop signal go when it ends
- about Ship the Apache licence once and load notices uncached
Fixed
- reader Cancel a Standard translation when its models are removed
- reader Never queue the High quality download on mobile data unasked
- OCR Leave a long line blank when NDL reads nothing
- about List the licences of libavif and the translation engine
- reader Start the High quality download without waiting on the notification prompt
1.58.0
New
- reader Warn phones low on memory before sentence translation
- reader Download and drive the Gemma 4 translation model
- android Run Gemma 4 through LiteRT-LM for sentence translation
- settings Remember the sentence translation model
- reader Translate with Gemma when chosen, Standard otherwise
- reader Keep the Gemma download's progress in one place
- reader Let the Gemma download be cancelled
- settings Choose a high-quality translation model on Android
- reader Sentence tab uses the chosen translation model
- settings Download, remove and credit the Gemma translation model
- reader Download the Gemma model as a background job
Fixed
- reader Let High quality replace a Standard fallback once it's ready
- reader Close Gemma after a failed translation so it reloads
- reader Keep the Gemma download state honest under delete, cancel and refresh
- settings Reuse an installed Gemma model and honour Use Standard
- settings Clearer Gemma download row and translation mobile-data copy
- android Fall back to CPU when Gemma's GPU engine can't run
- reader Keep the Gemma model out of Standard's folder
- settings Check space before the Gemma download and let partial files go
- reader Say when High quality couldn't load, and free Standard first
- reader Close Gemma during a first load; locale-aware Standard size
- reader Verify the Gemma download without sending the notifier to an isolate
- settings High quality can be chosen only once its model is downloaded
- settings Clearer Gemma download state in Settings
- reader Never hang a Standard translation when switching to Gemma
- reader Honour an early Gemma cancel and redraw Settings per percent
- core Don't call Android's background network block a lost Wi-Fi
- reader Gemma background download on metered Wi-Fi, re-attach and restarts
- translations Say mobile data or a hotspot, not 'Wi-Fi is not connected'
- reader Keep a bracketed word in the sentence around it
- free-books Give a graded reader its source when it is imported
- reader Open one Anki card while the sentence translation loads
- OCR Join a model download that is already running
- settings Offer High quality translation only where it can run
- reader Take over a Gemma download that finished while Mekuru was closed
- android Leave room for long sentences in High quality replies
- android Decode AVIF images two at a time on Android 7-11
- dictionary Show AVIF glossary pictures on Android 7-11
- OCR Say a model download stopped in the background
- reader Download the Standard models through the shared downloader
- reader Load the translation engine once when sentences overlap
1.57.0
New
- reader Translate the sentence around a looked-up word
Fixed
- reader Keep quotes whole in the sentence around a tapped word
1.56.0
New
- manga Import and read AVIF manga on iOS and Android
Fixed
- OCR Download model files uncompressed
1.55.0
New
- OCR Add the NDL text-line recognizer's pre/post-processing and model download
- android Read long OCR lines with the NDL recognizer when a job asks for it
- iOS Read long OCR lines with the NDL recognizer when a scan asks for it
- OCR Offer the scanned-book reader for free-book PDFs
Fixed
- iOS Keep Vision's text for blocks with lines too long for manga-ocr
1.54.1
New
- Translate the accessibility and volume-button strings
Fixed
- manga Page keys scroll one screen in the scroll view
- manga Count real pages in the scroll view
- manga Reopen the scroll view where you left off
- android Give the app's view input focus so hardware keys reach it
- reader Let next and previous leave an empty chapter in scroll view
- free-books Fill the title page when Aozora puts it outside a metadata div
- iOS Keep OCR word boxes on the right characters in long columns
1.54.0
New
- reader Turn pages with the volume buttons, keyboards and page turners
Fixed
- manga Keep swipes responsive while a page settles
- manga Halve the tap page-turn animation to 150ms
- accessibility Label the 16 icon buttons screen readers read as unlabeled
- accessibility Stop cover tilt and manga page slides under reduce motion
- accessibility Make library book tiles real buttons for screen readers
- accessibility Raise low-contrast text to 4.5:1
- accessibility Name the highlight color buttons and give them 48dp targets
- accessibility Let screen readers show reader controls and turn pages
- accessibility Give book pages a language for screen readers
- accessibility Announce import and OCR results to screen readers
1.53.0
New
- manga Pinch-zoom never turns the page; swipe past a zoomed edge turns it
1.52.0
New
- iOS Liquid Glass bottom tab bar
1.51.0
New
- settings Add a Rate Mekuru tile that opens the store listing
Fixed
- sync Keep the iOS Live Activity through a server book's import
1.50.1
New
- free-books Translate free books, PDF import and the You hub to es, id and zh
Faster
- manga Decode page caches off the UI thread
- manga Merge and decode re-segmented page caches off the UI thread
- free-books Download the covers on screen first
- free-books Fold catalog search keys as fast as before
- library Back up a PDF's text when OCR first runs, off the UI thread
Fixed
- free-books Show download progress in the iOS Live Activity
- manga Import an iOS mokuro folder that is missing a page
- free-books Tell same-title books apart in the library
- free-books Search one field at a time
- free-books List a converted book's title once in its contents
- free-books Decode every Shift_JIS character Windows writes
- free-books Give up on stalled downloads; count TLS errors as network
- free-books Show a free book's whole download in the Live Activity
- free-books Fetch graded-reader covers politely and keep them
- free-books Estimate reading times at a typical learner's pace
- library Keep a PDF's own text when OCR is deleted
- PDF Give each phrase of a graded reader's line its own box
- PDF Decide a PDF is scanned the way the catalog does
- sync Import a finished server download without holding up the rest
- iOS Declare the file timestamp API PDFium uses
- library Keep book titles out of the empty-book error
- core Time a response body out without Stream.timeout
- sync Keep importing finished downloads after one import fails
- sync Give up on a stalled server book download and retry it
1.50.0
New
- stats Reading pace from EPUB sessions
- free-books Aozora Bunko catalog and EPUB converter
- you You hub and Aozora Bunko browser
- library Import PDFs, with words tappable from their text layer
- sync Download PDFs from Komga and Kavita
- free-books Graded readers from NPO Tadoku Supporters
Fixed
- reader Keep ruby brackets out of lookups, let taps through page anchors
- free-books Mention graded readers in the empty-library tip
1.49.2
Fixed
- iOS End the background Live Activity at its final progress
1.49.1
Fixed
- library Read the picked mokuro folder on iOS
1.49.0
New
- reader Pin each word's header in the lookup sheet
1.48.0
New
- dictionary Delete a downloaded dictionary from its tile
- settings Move JMdict English to More Dictionaries
- dictionary Ask before installing Jitendex next to JMdict
- anki Preview what each mapping option fills in
- reader Choose Mincho or Gothic for EPUB text
Faster
- dictionary Convert a dictionary's images side by side again
Fixed
- dictionary Keep image-heavy dictionary imports from filling memory
- dictionary Keep same-named dictionaries apart in results
- dictionary Stop a dictionary download when Wi-Fi drops
- dictionary Keep raw JSON out of plain-text definitions
- dictionary Ask before JMdict, KANJIDIC and word frequency use mobile data
- dictionary Drop each deleted dictionary as soon as its delete ends
- dictionary Count a hand-imported JMdict (Legacy) as JMdict English
- dictionary Save a Jitendex redirect with the definitions it points to
- dictionary Show that a big dictionary import is still finishing
- dictionary Stop storing definitions with every quote escaped
- dictionary Import a Yomitan backup's definitions next to redirects
- dictionary Show JMnedict and JMdict edition sizes in MB
1.47.0
New
- dictionary Keep dictionary versions and images on import
- dictionary Display structured-content definitions
- dictionary Catalog of downloadable dictionaries
- dictionary Friendlier dictionary names
- dictionary Starter pack installs Jitendex
- dictionary Translate the dictionary catalog and import messages to es, id and zh
Faster
- dictionary Build search results as they scroll into view
- dictionary Stop reading every glossary at launch
Fixed
- OCR Ask before the iOS model pack uses mobile data
- OCR Stop the iOS model download when Wi-Fi drops
- dictionary Skip inflection-redirect glossary items on import
- downloads Keep other-language JMdict/KANJIDIC editions apart
- dictionary Parse a queued import only once it holds the database
- dictionary Stop re-reading unreadable glossaries at every launch
- dictionary Translate the dictionary import banner and messages
- dictionary Keep dictionary downloads going on iOS after leaving the app
- dictionary Keep big dictionary imports from running out of memory
- dictionary Show definitions whose attributes have the wrong type
- dictionary Open a section titled in Japanese when its title is tapped
- dictionary Delete dictionary downloads a closed app left behind
- dictionary Keep the full-screen image working when results change
1.46.1
New
- reader Offer dictionaries when a lookup has none to search
- library Point new users to free Japanese EPUBs
- dictionary Ask before the starter pack uses mobile data
Fixed
- vocabulary Let the empty states scroll on small screens
1.46.0
New
- sync Download from self-signed servers in the background on Android
- sync Download server books in the background on Android and iOS
- OCR Keep iOS scans running in the background
- dictionary Install the starter pack in one tap
Fixed
- sync Say "keep Mekuru open" under the self-signed switch only on iOS
- OCR Stop two iOS scans from swapping their manga-ocr text
- sync Resume a server download only while the file is unchanged
1.45.0
New
- OCR Accept a self-signed certificate from a custom OCR server
- sync Accept a self-signed certificate from a Komga or Kavita server
1.44.0
New
- sync Keep server downloads running in the background
Fixed
- manga Refuse a manga import that has no pages
1.43.10
Fixed
- OCR Run on-device scans with WorkManager instead of a foreground service
1.43.9
Fixed
- reader Make word taps and furigana work with UniDic-lite
1.43.8
Fixed
- pro Stop crashing when the Pro screen's opener closed first
1.43.7
Fixed
- dictionary Finish a search quietly when its screen is gone
1.43.6
Fixed
- dictionary Keep an import when its screen closes mid-pick
- library Pick the mokuro folder on iOS without file_picker
1.43.5
Fixed
- reader Show bookmarks saved with generated furigana on their page
1.43.4
Fixed
- stats Count scroll view characters and screens as pages
- reader Keep highlights and bookmarks saved with generated furigana
1.43.3
Fixed
- reader Leave space after a chapter's last line in scroll view
- reader Keep the reading position with generated furigana
1.43.2
Fixed
- reader Taps don't turn the page in scroll view
1.43.1
New
- reader Tap the top or bottom margin to show the controls
Fixed
- reader Let swipe down show the controls on Android
- reader Make epub.js scrolled flow lay out and place text exactly
- reader Steadier scroll view gestures, margins and chapter changes
1.43.0
New
- sync Translate the unlinked-book notice to es, id and zh
- reader Add scroll view for EPUBs
- reader Translate the scroll view setting to es, id and zh
1.42.1
Fixed
- sync Reject server URLs whose host can't be connected to
- sync Stop pushing on every page turn while the server is unreachable
- sync Unlink a book its server no longer has
1.42.0
New
- iOS Pass an explicit App Check provider on Apple platforms
- iOS Keep re-downloadable dictionaries out of iCloud backups
- iOS Copy a folder-imported manga's pages into the app
- iOS Keep the books folder out of iCloud backups
- iOS Buy and restore the Pro unlock through StoreKit
- iOS Send cards to Anki on a computer through AnkiConnect
- iOS Group Apple Vision text lines into manga text blocks
- iOS On-device manga OCR with Apple Vision
- iOS Port manga-ocr's pre- and post-processing to Dart
- iOS Read manga text with manga-ocr on ONNX Runtime
- iOS Offer the manga-ocr model pack on the Downloads screen
- iOS Run every OCR scan inside the app and keep the phone awake for it
- iOS Document-picker bridge for full backup
- iOS A Dart full-backup job for platforms without the native service
- iOS Full backup and restore
- iOS Send cards to AnkiMobile on the device
- iOS Finish a full restore by reloading in place instead of exiting
- iOS Read a double-page spread as two Vision passes
Fixed
- library Re-anchor stored book paths when the app's data root moves
- iOS Keep the EPUB page clear of the Dynamic Island and hide system bars in the readers
- iOS Stop WebKit text autosizing from overriding the reader font size
- reader Stop image-only sections from measuring as two pages
- reader Keep the reading position when a re-layout follows a furigana mode change
- iOS Hide full backup on platforms that cannot run it
- iOS Report App Store and TestFlight installs and warn on low-RAM iPhones
- iOS Stop listing on-device OCR as a Pro feature where it does not exist
- iOS Hide the OCR model download where no model is needed
- iOS Cut Android folder links when a full backup is restored elsewhere
- iOS Pausing an OCR scan no longer throws, and the sheet names the backend
- iOS Keep furigana inside a Vision block's bounds
- manga OCR sheet counts, an honest ETA and scan progress in the iOS reader
- iOS Stop the ruby test eating text, split chained bubbles
- iOS The in-place restore closes the database after the unmount, not before
- iOS No Apple Account prompt after a backup restore, iOS wording for full backups
- iOS Leave the tap handler before the in-place restart mounts its spinner
1.41.7
Fixed
- reader Pick the furigana mode from a list instead of a squished segmented row
1.41.6
Fixed
- manga Show remote OCR progress in the reader and make OCR options discoverable
1.41.5
Fixed
- dictionary Keep partial romaji readings and side glosses out of the top results
1.41.4
Fixed
- dictionary List the preferred dictionary first within each word
- dictionary Start a new search at the top of the results
- dictionary Fold half-width, full-width and combining input before searching
- dictionary Read Hepburn shimbun/matcha and stop guessing romaji for English words
- dictionary Discard search results that land after the field changed
- dictionary Report search failures and keep results when pitch accents fail
- dictionary Unwind stacked conjugations to the dictionary form
1.41.3
Fixed
- OCR Acknowledge a requested stop in the OCR notification
- OCR Show only the last scan in the Recognize text sheet
- OCR Dismiss the OCR summary without waiting for the poll
1.41.2
Fixed
- OCR Keep the time estimate visible on the library badge
- OCR Explain the model download before opening Downloads from the reader
1.41.1
New
- OCR Gate on-device OCR behind Pro and share the start path
- OCR Tap the reader's OCR button to scan the visible page
- OCR Show the time remaining on the library's on-device OCR badge
- OCR Native device speed test on a bundled sample page
- OCR Offer a device speed test on the Pro screen and Downloads tile
- OCR Dedicated message when the speed test is cancelled
- OCR Translate the Pro gate and speed test strings
- pro Name the on-device OCR models on the Pro card and link their repositories
- OCR Translate the on-device OCR strings to es, id and zh
Fixed
- OCR Request the notification permission through the app bridge
- OCR Keep ONNX Runtime and OpenCV classes from R8 in release builds
- OCR Report a cancelled speed test as interrupted
- OCR Let the speed test cancel while the models are still loading
- OCR Drop timing claims from the Pro card and say the downloaded models need Pro to use
- OCR Remove the progress notification when the OCR job finishes
1.41.0
New
- OCR Add the local_manga_ocr Android plugin
- OCR Job lease, cache store and mokuro metadata for local OCR
- OCR On-device OCR in the manga reader and library
- settings On-device OCR download tile and attributions
- OCR Recognize with manga-ocr-base instead of Baberu
1.40.1
Fixed
- wanikani Spell the known-kanji threshold out as a range
- wanikani Terser threshold wording
1.40.0
New
- settings Merge the reader animation toggles into one global switch
- reader Known-kanji furigana predicate and WaniKani mode setting
- reader WaniKani furigana mode in the EPUB bridge
- wanikani API client and storage
- wanikani Account linking, startup refresh and settings screen
- reader WaniKani furigana controls in the reader sheet
- library WaniKani coverage in the furigana EPUB export
Fixed
- translations Translate the EPUB lookup animation toggle
1.39.0
New
- reader Add an EPUB lookup sheet animation toggle
1.38.2
Fixed
- translations Localize the full backup notification strings
- manga Open the lookup sheet without animation when page turn animation is off
1.38.1
New
- backup Stream full-backup zips with a pure-JVM archiver
- backup Add the full-backup service and staged restore core
- backup Expose a document picker and streaming zip on the SAF channel
- backup Relabel reading data backup strings and add full backup copy
- backup Full backup screen, two-step restore confirmation and boot hooks
- backup Run full backup and restore as a resumable native job
- backup Carry linked-manga pages and UniDic-lite in the full backup
Fixed
- backup Return from commitJob only once the service owns the job
- translations Localize the full backup and reading data backup strings
1.38.0
Behind-the-scenes improvements.
1.37.2
Behind-the-scenes improvements.
1.37.1
New
- library Offer configured book servers in the import sheet
Fixed
- database Heal schema 23 databases that missed the server sync DDL
- sync Keep the client provider alive while linking existing books
- sync Reconcile progress by pulling first and share client transport
- translations Localize the Komga/Kavita server screens
1.37.0
New
- sync Add server connections table and book link columns (schema v23)
- manga Embed and import .mokuro OCR data in CBZ archives
- sync Add Komga and Kavita API clients behind a common interface
- sync Server connection management, settings UI, and browse/download flow
- sync Bidirectional progress sync engine with EPUB locator bridge
- sync Bulk book linking and server links in backups
- sync Server sync integration tests and version bump to 1.37.0
1.36.2
Fixed
- library Treat file_picker unknown_activity as a cancelled pick
1.36.1
Fixed
- ankidroid Derive duplicate-check first field from cached Anki field order
1.36.0
New
- ankidroid Detect stale Anki state and surface send failures clearly
1.35.3
Fixed
- manga Guard pro access refresh against disposed ref
1.35.2
Fixed
- library Link mokuro in the convert dialog and translate new strings
1.35.1
Fixed
- library Clarify that manga conversion alone does not enable tap lookup
1.35.0
New
- library Sweep orphaned import directories on startup
1.34.4
Fixed
- ui Harden remaining dialog and sheet callbacks against unmount
1.34.3
Fixed
- ui Stop confirm dialogs touching unmounted widgets' ref and context
1.34.2
Fixed
- manga Tolerate malformed percent-escapes in mokuro image URLs
1.34.1
Fixed
- library Skip malformed EPUB hrefs in furigana export instead of throwing
1.34.0
New
- library Add EPUB-to-manga conversion and CBZ export services
- library Add convert-to-manga and CBZ export to the book menu
Fixed
- Await futures returned inside try blocks so their errors hit the handlers
1.33.3
Fixed
- library Delete the import directory when an import fails
1.33.2
Fixed
- library Make EPUB import memory size-independent and raise cap to 400 MB
1.33.1
Fixed
- billing Harden purchase delivery and cover the flow with regression tests
1.33.0
New
- billing Remove Google sign-in requirement from Pro purchase and restore
1.32.5
Fixed
- database Wait out transient sqlite locks instead of failing the open
1.32.4
Fixed
- manga Release parsed manga pages when the reader closes
- dictionary Stop retaining the whole decompressed dictionary on ZIP import
1.32.3
Fixed
- manga Stream CBZ import from disk instead of inflating the whole archive
1.32.2
Fixed
- reader Stream EPUB from disk to WebView instead of holding bytes resident
1.32.1
Fixed
- reader Transfer EPUB bytes to WebView in bounded base64 chunks
1.32.0
Behind-the-scenes improvements.
1.31.4
Fixed
- library Stop furigana export corrupting container.xml and the OPF
1.31.3
Fixed
- reader Apply the JLPT furigana level to publisher-authored ruby
1.31.2
Fixed
- library Roll back optimistic folder order when the reorder write fails
1.31.1
New
- library Folder faces follow the gyroscopic tilt like covers
Fixed
- translations Translate the folder batch-remove confirmation strings
- library Guard disposed book-tile pointer handlers during reorder drags
1.31.0
New
- library Confirm before removing multiple books from a folder
1.30.1
Faster
- library Stop covered tiles listening to the tilt sensors
Fixed
- library Keep the library painted under the folder route
- library Fly the source cover so folder opens stop flashing
- library Retire optimistic drag order on the stream echo
- library Stop the folder-open cover flash from the grid fade-in
1.30.0
New
- library Collections as iOS-style folder tiles
- library Hero flight from folder tile to folder screen
- library Open folders with a container transform
- library Fly each cover when a folder opens
- library Per-collection book position (schema v22)
- library Position-aware membership writes (diff set, reorder, add, remove)
- library Folder grids and faces follow membership position order
- library Stagger non-hero folder tiles in on the route animation
- library Folder edit mode — tap-select, mass remove, drag-to-reorder
- library Root multi-select with batch add-to-collection sheet
- backup Carry membership positions through backup and restore
Fixed
- reader Sensible JLPT levels for 2010 joyo additions
- backup Include per-book furigana mode in backup and restore
- library IOS-style folder open instead of a shrink-to-appbar hero
- library Keep folder covers visible through the hero flight
- library Stop covers re-decoding every frame of a resize
- library Retire the folder face before the screen fades in
- settings Close the KanjiVG zip handle synchronously
1.29.0
New
- library Add collections tables (schema v21)
- library Collection repository and providers
- library Collection chips, assignment sheet, and management UI
- backup Carry collections through backup and restore
- reader Bundle JLPT kanji-level data with whole-word threshold helper
- reader SkipToken coverage hook on FuriganaGenerator
- reader JLPT-level furigana mode (aboveLevel) with in-reader level picker
- library EPUB furigana export engine (annotate, strip, rebuild zip)
- library Export-as-EPUB action with furigana coverage dialog and SAF save
1.28.2
Behind-the-scenes improvements.
1.28.1
Fixed
- reader Keep EPUB progress across reading-direction changes
1.28.0
New
- reader Live seek bar and dwell-gated reading stats
1.27.0
New
- reader Default horizontal for EPUBs without vertical writing-mode CSS
1.26.0
New
- reader Show book-authored furigana by default via new Book mode
1.25.2
Fixed
- reader Stop caching EPUB furigana from an uninitialized MeCab
1.25.1
Fixed
- settings Stream unidic-lite verification and extraction
1.25.0
Fixed
- backup Upgrade file_picker to 12.0.0-beta.7 to unbreak Android saveFile
- dictionary Fetch Yomitan dictionaries via releases/latest/download
- dictionary Surface the original cause from import parse isolates
- billing Treat billing channel errors as billing-unavailable at startup
1.24.3
Fixed
- manga Normalize e-reader swipe gestures to screen fractions
- reader Count EPUB page characters only on real navigation
- stats Record the reader source on Anki word events
- stats Reset the period and format filters between visits
- backup Merge restored word events past the v19 backfill
- translations Match the restore copy to the word-event merge behavior
- manga Eliminate black flash on instant page turns
1.24.2
Fixed
- translations Document stats restore behavior and fill translation gaps
1.24.1
New
- settings Manga e-reader page-turn toggle, EPUB-only grouping, Reader Settings title
- reader Hide the Android system bars with the EPUB reader controls
- reader Open EPUBs immersive with controls and system bars hidden
Fixed
- reader Defer viewer rebuilds while the settings screen covers the reader
- manga Disable swipe drag entirely in e-reader mode, turning pages instantly
- translations Localize manga reader error and empty states
1.24.0
New
- stats Center the hero figures and chart legend, condense large counts
- reader Persist reader brightness across sessions
- manga Persist view mode, direction, auto-crop and lookup transparency
- reader Regroup the EPUB quick settings into sections
- manga Bring the manga settings sheet to parity with the EPUB reader
- settings Move reading defaults to a dedicated Reading screen
Fixed
- stats Align the You page on one ink line and fit chart gutters to their labels
- android Scope MeCab native-asset bundling to the ABIs being built
- backup Derive backed-up preference keys from the storage classes
- reader Stop global settings changes writing to the last-read book
1.23.0
New
- stats Localize duration formatting through ARB keys
- stats Keep the stats entry visible before any reading
- nav Replace the settings tab with a You tab housing reading stats
Fixed
- stats Never let a stats write failure break the word-save flow
- stats Resolve page ranges against the rendered document for character counts
- stats Drop the coaching clause from the lookup rate subtitle
1.22.0
New
- stats Add ReadingSessions and WordEvents tables at schema v19
- stats Add StatsRepository
- stats Track characters read in ReaderSessionTracker
- stats Persist reading sessions from both readers
- stats Report page character counts from the EPUB bridge
- stats Count manga characters read per displayed page
- stats Record word events for saves and Anki cards
- stats Add pure-Dart stats aggregator
- stats Add stats screen scaffold with hero tiles and filters
- stats Add GitHub-style activity heatmap
- stats Add animated chart cards
- stats Add library stats strip entry point
- stats Include stats tables in backup and restore
Fixed
- stats Exclude furigana ruby text from page character counts
- stats Don't count characters for pages swept past during seek
- stats Keep stats page children alive so entrance animations run once
- stats Border chart tooltips so they read as popovers in dark mode
1.21.8
Fixed
- backup Refresh backup history from the notifier, not the screen
1.21.7
Faster
- manga Encode the manga page cache off the UI isolate
1.21.6
Faster
- manga Run word segmentation in a background isolate
1.21.5
Faster
- manga Segment mokuro lines with one MeCab parse per line
1.21.4
Fixed
- manga Re-segment cached word boxes when the MeCab dictionary changes
1.21.3
Fixed
- manga Stop caching word segmentation from an uninitialized MeCab
1.21.2
Fixed
- dictionary Restore missing FTS sync triggers on open
- manga Highlight the resolved word on the tapped page
1.21.1
Faster
- dictionary Count zip rows without parsing them
- dictionary Bulk-build the glossary FTS index on import
1.21.0
New
- dictionary Boost verb-framed glosses, wapuro-wa greetings, fast single-letter search
Faster
- dictionary Smaller search-text backfill pages to bound search stalls
1.20.2
Fixed
- dictionary Index extracted gloss text so English search surfaces primary words
1.20.1
Fixed
- dictionary Gate trailing-vowel completions and keep them out of prefix scans
1.20.0
New
- dictionary Search all readings of ambiguous romaji input
1.19.1
Fixed
- billing Upgrade to Play Billing Library 8.0.0
1.19.0
Faster
- saf Cache tree resolution and match names across NFC/NFD
1.18.2
New
- saf Report why a storage read failed instead of a bare null
1.18.1
Fixed
- saf Resolve tree paths via child lookup, not ID concatenation
1.18.0
New
- library Report failed book imports to telemetry
Faster
- manga Read CBZ page dimensions from headers during extraction
Fixed
- settings Use canonical Mekuru site links
1.17.0
Fixed
- OCR Stop retrying billing errors and parse structured error details
- OCR Raise request timeout to survive built-in server cold starts
1.16.0
Fixed
- reader Stop justification stretching kana on ruby lines
1.15.0
New
- reader Full-height vertical lines by default, split setting for two blocks
Fixed
- reader Paginate InDesign-style vertical EPUBs correctly
- reader Force horizontal writing mode on descendants when vertical text is off
1.14.0
Behind-the-scenes improvements.
1.13.1
Fixed
- manga Tolerate malformed blocks in mokuro OCR JSON
- ankidroid Run AnkiDroid provider queries off the main thread
1.13.0
New
- dictionary Replace glossary LIKE scan with FTS5 index
1.12.0
New
- dictionary Find katakana loanwords from romaji and kana input
Faster
- dictionary Use indexed range scans for prefix candidate queries
Fixed
- dictionary Relevance-order candidate pools before LIMIT caps
1.11.0
New
- reader Load IPADIC first and upgrade to UniDic-lite in the background
1.10.0
New
- library Add continue-reading card above the book grid
- library Support multi-file EPUB/CBZ import with progress and failure summary
- ankidroid Warn when the note already exists in the selected deck
Fixed
- manga Write OCR pages cache atomically in background worker
- reader Make MeCab dictionary install atomic and self-healing, init re-entrant
- reader Surface EPUB display errors in the reader error UI
- reader Cache failed furigana lookups to stop re-requesting over the bridge
- dictionary Show placeholder instead of raw JSON for unreadable glossaries
- library Make import directory names collision-proof
- library Fall back to EPUB filename instead of "Unknown Title"
- manga Write pages cache atomically at all foreground call sites
1.9.0
Fixed
- android Backfill libc++_shared.so across NDK sysroots for mecab_for_dart hook
1.8.3
New
- library Make book covers follow device tilt continuously (flutter_tilt 4)
1.8.2
Fixed
- android Bundle libc++_shared.so via AGP jniLibs source set (#25)
- reader Add load timeout and reopen regression coverage
1.8.1
Fixed
- dictionary Migrate to onReorderItem to fix CI analyze failure (#24)
1.8.0
New
- reader Load gikun user-dictionary alongside IPADIC
- settings Add enhanced-furigana-dict preference
- settings Add UniDic-lite downloader service
- settings Expose enhanced furigana dictionary download in UI
- reader Pick UniDic-lite at init when downloaded and enabled
1.7.0
New
- reader Add FuriganaMode setting with per-book override
- reader Add MeCab tokenizeForFurigana and FuriganaGenerator service
- reader Wire furigana generation into the EPUB WebView bridge
- reader Expose furigana mode in the reader settings sheet
1.6.3
New
- reader Add brightness notifier and update lifecycle management
- dictionary Show spinner during dictionary deletion
- dictionary Enhance error handling in importer and add tests for robustness
Faster
- dictionary Batch lookup queries when many dicts are enabled
Fixed
- Resolve three production crashes reported in Sentry
- reader Address five critical/high bugs found in code review
- dictionary Auto-save search history on debounce and screen leave
1.6.2
Behind-the-scenes improvements.
1.6.1
Faster
- epub Stream zip parsing to avoid loading full file
1.6.0
New
- lookup Added tiered search with deinflection fallback
- android Added ARM library aliases for mecab
- dictionary Track kanji metadata on entries Added entryKind, kanjiOnyomi, and kanjiKunyomi columns with a schema version bump/migration and regenerated table mapping; introduced the kanji reading parser plus UI blocks and their tests so dictionary entries can surface the new metadata.
- billing Decouple functions and add coverage
- app Smooth startup, reader, and billing flows
- dict Implemented tiered lookup prioritization
- ankidroid Check if word exists before adding to deck
- android Add system ui channel for toggling system bars
- OCR Add pause/delete actions and server health checks
1.5.0
New
- library Report progress during cbz import
- settings Replace inline OCR server prompt with dialog
- cloud-ocr Integrate Firebase OCR backend and CI verification
- cloud-ocr Guard epub imports and capture errors
- manga Gate remote OCR behind Pro access flow
- billing Handle Play RTDN revocations
Fixed
- manga Return linking result from ocr account service
- dictionary Return non-null frequency label
- ui Account for system gesture padding
- manga Fix issues with auto-crop and allow re-running auto-crop
- manga Keep shared margins when cropping spreads
- billing Migrate restored purchases to new user
- manga Compute reader scroll offset from current page
1.2.0
New
- Add support for building and deploying App Bundle to Google Play Console
- Update database schema and add new indexes for dictionary entries
- manga Added manga reader with word lookup
- android Integrated Storage Access Framework
- dictionary Prioritize exact matches and frequency badges Introduce a missing-frequency rank constant so the UI tags and grouping logic treat null ranks as least frequent, add exact-match prioritization helpers used by search/fuzzy queries, and extend the tests to cover the tighter ordering and label behavior.
- manga Add OCR background worker and UI
- manga Allow clearing cached manga OCR data
- manga Integrate Firebase OCR backend Added Firebase config and functions along with new OCR services, purchases UI, settings data providers, and updated google-services credentials to wire up the cloud OCR infrastructure.
Fixed
- library Fixed manga import with directory picker
- Add Android adaptive icon so launcher icon matches Play Store appearance
1.1.0
New
- Implement bookmark and highlight repositories with CRUD operations
1.0.3
Behind-the-scenes improvements.
1.0.2
New
- Implement preloaded app settings for initial theme mode and color theme
1.0.1
New
- dictionary Enhance dictionary import functionality and add collection support
- Add app settings management and UI components
- Replace dictionary tab with fuzzy search, move management to settings
- Implement search history management and kanji stroke order display
- Add KanjiVG stroke order download and attribution
- Add English definition search to dictionary query service
- Use fuzzy_bolt for dictionary fuzzy search ranking
- Add JPDB frequency dictionary with search ranking and pitch accent in search
- Implement Roman letter filter in dictionary search and settings
- Integrate Sentry for error tracking and user feedback
- Update JPDB frequency dictionary management
- Enhance EPUB reader settings and language support
- Enhance book tile interaction with tilt gesture support and improved long-press handling
- Improve fuzzy search results ordering by frequency rank within tiers
- Implement startup screen preference and auto-focus search settings
- Update iOS project configuration and improve gesture handling in EPUB viewer
- Add Yomitan dictionary download service and providers for JMdict and KANJIDIC
- Add color theme selection and persistence to app settings
- Replace IconButton with FloatingActionButton for dictionary and EPUB import actions
- Enhance settings and reader features with new options and UI updates
- Group dictionary entries by (expression, reading) into unified cards
- Add primary writing mode support for vertical text handling
- Enhance release signing configuration and error handling
- Update export functionality to use file picker and change share icon to save icon
- Add message clearing on screen dispose and improve vocabulary export file naming
Fixed
- Update KanjiVG download URL to r20250816 release
- Load KanjiVG stroke order SVGs from downloaded files instead of assets
- Add deinflection to find alternative verb forms when MeCab picks wrong base
- Group dictionary results by (expression, reading) with frequency ordering
- Add deinflection to both reader lookup and dictionary search
- Render furigana only above kanji, not above entire expression
- Add suru verb deinflection to resolve noun-stem dictionary lookups
- Update EDRDG attribution to improve clarity and formatting
- Implement deinflection for compound word resolution and add corresponding tests
- Group dictionary entries by name and number them for clarity
1.0.0
The first release.