Repository navigation
Releases: PatchScratch/NovelNotifier
Release list
v2.2 — Reading position sync, faster translation
Reading positions sync both ways, and a faster, hardier translation engine.
New:
- Syosetu しおり (reading position) sync: opening or advancing through a bookmarked serial moves your しおり on the site automatically, and the reader's ⋮ menu sets it anywhere manually — the same write the site itself performs, verified live.
- Kakuyomu reading history: opening an episode records your position on the site (続きから読む), with a manual "set reading position here" in the reader menu. Auto + manual, both verified.
- Parallel chapter translation: chunks now fly two at a time — long chapters translate in roughly half the time (a 287-paragraph chapter: 169s, measured).
Fixed:
- Rapid tab switching can no longer paint one tab's rows under another tab's heading (fetch results are generation-guarded on both Discover screens).
- Ranking-title translations show a "Translating titles… (N queued)" progress line while the on-device engine chews through a new list, instead of rows looking silently blank; the queue counter can no longer strand.
- Detail-screen titles translate (dimmed English under the Japanese, Syosetu + Kakuyomu).
- ScribbleHub suggestion rows confirmed gone from the reading list.
v2.1 — AI translation, Japanese dictionary, AI covers
AI translation suite and the long-press Japanese dictionary headline this release.
New:
- Chapter translation through your own OpenAI-compatible key (OpenRouter, OpenAI, local servers). English renders under each Japanese paragraph and is stored inside the offline ePub. Translate one chapter or the whole book at once; switch the reader between JP+EN, Japanese only, or English only from the reader menu.
- novel-mill-style lock files (prompt / glossary / voices), editable per series, automatically refined after every translated chapter so names and voices stay consistent.
- Long-press any word in the reader for an offline dictionary lookup: reading, part of speech, and JMdict senses (Kuromoji + a 499k-entry dictionary bundled in the app).
- AI cover art for series without one — your own prompt, title and author rendered as cover typography. Covers travel in backups and a new covers-only zip moves them between devices.
- Syosetu bookmarks grew up: renamed categories appear in the drawer, and you can move series between categories or remove them right from the app (written back to the site, like NU's change-list).
- Update notifications for bookmarked Syosetu series via the authors' public Atom feeds.
- Machine-translated titles and synopses across rankings, search and detail pages (free, on-device).
Fixed:
- Ranking translations no longer blank after switching tabs or scrolling fast.
- Cover prefetch resumes instead of restarting; volume-aware chapter ordering and ScribbleHub suggestion rows stay out of your library.
- Series pages cache locally — re-entering a series is instant.
NovelNotifier v2.0 — Three-site webnovel app
Major revision: NovelNotifier is now a three-site webnovel app. Japanese sites join Novel Updates as first-class workspaces, each with its own drawer and settings — all sharing one in-app reader and one offline ePub library.
New sites
- Syosetu (なろう) — discovery through Syosetu's official JSON API (rankings + advanced search parity with よもがたり検索), in-app WebView login, bookmark library sync, and the R18 sister sites (Nocturne / Moonlight / Moonlight Ladies) behind an 18+ gate with per-site toggles.
- Kakuyomu (カクヨム) — discovery through the site's own open GraphQL endpoint (daily/weekly/monthly/all-time rankings × 12 genres × serial/short, paged word search), full ordered table of contents from one work-page fetch, no account needed. R18 works hidden behind an 18+ gate with an R18-only browse chip; device-local bookmarks (⚑ on a work) that travel in backups.
For all sites
- One reader (browser + extracted views, anti-scrape font-substitution decoding) and one offline ePub library: volume/100-chapter split books, NU-metadata title pages, bulk download that survives screen-off, per-series translation-group filter on NU.
- English/Japanese app-language toggle — display follows your choice; anything stored or sent to a site stays in the site's native terms.
- Japanese README (README.ja.md) alongside the English one.
Existing NU features are unchanged: reading lists with unread badges, chapter notifications, cross-device read sync, backups, themes.
APK: NovelNotifier-v2.0.apk — install over any 1.x (same signing key, updates in place).
NovelNotifier 1.3
The headline: your library, offline, as real ePubs
- Offline library — opt in per series from the reader's ⋮ menu. Chapters are saved into standard ePub 3 books (EPUB-2 compatible): your cover as page one, a full title page with Novel Updates metadata (associated names, type, genre, tags, author, artist, year, completely-translated, original publisher, description), and a proper table of contents. Books split per volume (
— Vol N) or into 100-chapter parts when unnumbered. Export via the file picker, or share to any e-reader app. - Background bulk download — runs as a foreground service: lock the phone, use other apps, it keeps going. ToC-first: it resolves chapter links from the translator site's own chapter list (anchors, dropdowns, series pages) so Novel Updates sees at most one visit per host; whatever can't resolve falls back to NU links at a gentle 10-second pacing. Multi-host series, JS-rendered lists, and scrambled chapter labels are all handled.
- Translation-group filter — per series, multi-select which groups appear in RELEASES and participate in reading order and bulk download. Hide a dead or stalled translator, keep the successor.
Reader (from 1.2.x)
- Decodes font-substitution anti-scraping (renders English while the underlying text is exotic-codepoint gibberish), including unknown fonts cracked at runtime from the page's own glyphs — rotation-proof, Private-Use ladders, partial (vowels-only) substitution. Copy/paste from the web view yields real text too.
- Image-slice chapters detected and routed to the web view; comments-proof chapter extraction; hidden decoy text filtered by computed styles.
Fixes
- "Back up library" crash on devices with a theme set (v1.1–v1.2)
- Deep links now work from cold start
- Backup restores carry theme + notification + custom-theme settings
Full changelog: v1.2.2...v1.3
NovelNotifier 1.2.2
Fixed
- "Back up library" crashed (0-byte zip) for anyone who had chosen a theme — the backup snapshot mis-read the newer theme/notification prefs as string-sets. Regression-tested now.
From 1.2.1 (still applies to upgraders from ≤1.2)
- The app is now signed with a proper release key. Installs from v1.2 or earlier need a one-time uninstall/reinstall: back up library → uninstall → install → restore from backup → log in.
Full changelog: v1.2.1...v1.2.2
NovelNotifier 1.2.1
No feature changes — this release re-signs the app with a proper release key (v1.2 and earlier were signed with a debug key from the project's earliest days).
If you installed v1.2 or earlier: this update will not install over it — please:
- In the app: Settings → Back up library (save the zip somewhere safe)
- Uninstall the old app
- Install this APK
- Settings → Restore from backup, then log in again
Your lists, chapter caches, covers, and settings all come back from the backup; only the login session needs redoing. New installs: ignore all of the above.
Full changelog: v1.2...v1.2.1
NovelNotifier 1.2
What's new since 1.1
Reader mode — read chapters as clean, styled text
- Chapters now open in Reader view: the chapter's text extracted and rendered natively, with sepia/dark/light page themes, serif/sans toggle, and adjustable font size (persisted). ⋮ menu switches between Reader view and the full Web view; the choice is remembered.
- Per-page fallback: when a host defeats extraction, the reader shows the website with a note instead of failing silently.
Anti-scrape decoding — the part every other extractor fails on
- Font-substitution hosts decoded: sites that render English through custom fonts while the underlying text is exotic-codepoint gibberish (verified against storyseedling.com) are translated back to real text — both in Reader view and, in Web view, rewritten in the page itself so copy/share/select yields real text.
- Runtime cipher derivation: unknown substitution fonts are cracked on the fly by rendering glyphs in the page's own fonts and matching them — rotation-proof, works for Private-Use ladders and partial (vowels-only) scrambling. Genuine Chinese/Japanese text is never touched.
- Image-chapter detection: chapters rendered as image slices are recognized and routed to the web view with an explanation.
- Comments-proof extraction: known platform content containers are preferred (validated), so pages whose comment sections outweigh the chapter still extract the story.
- Extraction filters hidden decoy/honeypot text by computed styles, strips embedded watermark tokens, and drops copyright footers and teaser spam.
Also verified live on-device: chapter extraction and book navigation (‹ Prev / Next ›) across multiple translator hosts.
The decoding toolkit is also published standalone as font-decipher.
Full changelog: v1.1...v1.2
NovelNotifier 1.1
What's new since 1.0.1
Reading
- In-app reader (browser mode) — chapter rows and READ CHAPTER now open inside the app. Walk the book with ‹ Prev / Next ›, flip JavaScript per series when a host misbehaves, or hand a chapter to your browser. ~40 ad/tracker hosts blocked; pop-ups disabled; Cloudflare checks can be completed in place.
- Site search — live suggestions as you type, then full paged results from the series finder, with infinite scroll.
- Discover — Novel Updates rankings (popular this month / all time / week / month / 6 months) as a browsable grid.
- Infinite scroll everywhere — search, Discover, and series RELEASES all load more as you scroll.
Notifications
- Tapping a chapter alert now opens that series inside the app instead of the browser.
- New setting: stack alerts into one banner (default) or one notification per series.
- Un-read alerts survive reboots and app updates (re-posted silently).
Looks
- Themes: Follow system / Light / Dark / AMOLED black / Wallpaper (Material You), all in a Novel Updates green identity.
- Custom themes from a JSON file — Settings → Display → Save a theme template, edit the colors, import it back. Full format docs in the README.
- New app icon and a shiba-inu "no cover" placeholder, hand-drawn vectors.
Fixes
- Cloudflare pane no longer renders zoomed-in or transparent (true mobile layout when expanded).
- Search results decode correctly (unicode-escape fix that had killed all queries).
- Notification deep links work on cold start.
- Chapter-alert dismissal bookkeeping is exact (swipe = gone for good).
Full changelog: v1.0.1...v1.1
NovelNotifier 1.0.1
Maintenance release.
What's new
- Session-expiry detection — when your Novel Updates login expires, any scrape that lands on the login page now parks the sync queue (instead of silently burning through requests logged-out), the sync notification becomes "Session expired — tap to log in", and tapping it opens the login screen directly. A successful login resumes the download queue exactly where it stopped. List and series screens show a plain "Session expired — log in from Settings" status.
- Crash fix: the app can no longer crash trying to start the sync service while backgrounded (Android 12+ restriction) — it waits and resumes when you next open it.
- Cloudflare challenge pane renders readable (opaque, correctly scaled) instead of zoomed-in and translucent.
- Project roadmap published (ROADMAP.md) with all Phase 2 endpoints verified against the live site.
Install
Installs straight over 1.0.0 — library, login, and download queues are kept. Requires Android 8.0+ and a Novel Updates account.
NovelNotifier 1.0.0
First public release. A clean-room, from-scratch replacement for the abandoned "Notifications for Novel Updates" app — Kotlin + Jetpack Compose, no ads, no analytics, no accounts beyond your own Novel Updates login.
What's in 1.0.0
- Reading lists — all your Novel Updates lists with covers, unread badges, search, grid/list layouts, four sort modes
- First-run onboarding — logs in, reads your lists with a live progress counter, warns how long a large library takes (conservative estimates), and lets you prioritise the lists you actively read
- Background library download — paced against the site (one request every 10 s, cover downloads spaced, cool-down rest every 120 jobs), resumable across reboots, with a counter notification
- Chapter notifications — via your personal NU feed (captured automatically from the reading-list page; nothing to configure) or paced list checks when no feed is configured; per-list and per-series mutes
- Read sync across devices — marks made anywhere appear everywhere via NU's read-activity feed
- Read position on your terms — the RELEASES checkbox moves Novel Updates' read marker forward or backward in a single call
- Series pages — INFO + full RELEASES table cached page-by-page, next-chapter card, mark-as-read and list changes written back to the site
- Backups & device transfer — one zip via the system file picker (Google Drive, OneDrive, USB…); restores lists, chapter caches, covers, and settings. Backups never contain your password, login, or feed tokens
- Debug log —
adb shell run-as com.patchscratch.novelnotifier cat files/debug.log
Install
Download NovelNotifier-v1.0.0.apk below and open it (allow "install unknown apps" for your browser/file manager if asked). Requires Android 8.0+ and a Novel Updates account. On first launch: Settings → Log in on Novel Updates — onboarding takes it from there.
If you were running an earlier build, this installs straight over it — your library and login are kept.
Notes
Novel Updates has no public API, so the app reads it through a logged-in WebView session with deliberate pacing and no Cloudflare bypass. If the site changes its HTML, scrapers in ScrapeJs.kt are the single place to update. MIT licensed — see LICENSE.