A local-first manga reader with a polished dark UI, manga/book selection, chapter cards, vertical list reading, single-page reading, settings, generated source templates, and browser-based chapter image downloading.
npm install
npm startOpen http://localhost:4173.
npm run buildThe compiled static app is written to dist/ and can be hosted on any static web server.
The app now includes generated chapter lists for the two URL formats provided in the prompt:
- Mushoku Tensei, generated from the Lowee pattern
0001-001.pngthrough chapter 81. - UQ Holder, generated from the MangaHere CDN pattern
001.0/compressed/f001.jpgthrough chapter 192.
Because these hosts do not expose a stable public chapter API from a single image URL, the app creates chapter entries from the discovered URL pattern and auto-detects page counts in the browser when a chapter is opened or downloaded. The first page URL is also used as each manga cover in the menu.
Sources are JSON objects. Page URLs are generated by replacing {page} with a padded page number. Generated sources may also use {chapter} internally before being expanded into chapter entries.
{
"id": "mushoku-tensei",
"title": "Mushoku Tensei",
"cover": "https://official.lowee.us/manga/Mushoku-Tensei-Isekai-Ittara-Honki-Dasu/0001-001.png",
"firstChapter": 1,
"lastChapter": 81,
"chapterPadding": 4,
"pagePadding": 3,
"extension": "png",
"urlTemplate": "https://official.lowee.us/manga/Mushoku-Tensei-Isekai-Ittara-Honki-Dasu/{chapter}-{page}.png"
}You can also paste a single page URL into the Add Source dialog. The app will infer the page-number token, use that page as the menu cover, and create an editable JSON source.
The current web build triggers browser downloads for generated page URLs. Some remote hosts may block browser reads or automatic downloading with CORS, referrer checks, hotlink protection, or browser download protections. A future desktop wrapper, such as Tauri or Electron, can save directly to folders and avoid most browser download limitations.
.github/workflows/compile.yml installs Node.js, checks syntax, builds the static app, and uploads the dist/ folder as an artifact.
To avoid Microsoft SmartScreen warnings for a packaged Windows version, sign the installer or executable with a trusted code-signing certificate. This project does not fake-sign binaries; development builds should be run only from trusted source checkouts.
This repository includes a Windows desktop wrapper at windows/NeonMangaReader. It hosts the same static reader in a WebView2 WinForms shell and is published by the GitHub Actions workflow as a win-x64 ZIP.
Release signing supports two modes:
- Preferred: add
WINDOWS_CERTIFICATE_BASE64andWINDOWS_CERTIFICATE_PASSWORDrepository secrets for a real.pfxcode-signing certificate. - Free fallback: if those secrets are missing, release builds generate a temporary self-signed code-signing certificate that is valid for one year in PowerShell and sign
NeonMangaReader.exewith Microsoft SignTool.
Tagged builds such as v0.2.0, or manual workflow runs with create_release=true, sign the executable, package the Windows app, and publish it to a GitHub Release. Pull requests and normal branch pushes still publish an unsigned Windows artifact for testing only. Self-signed releases are technically signed but are not trusted by default; users must import/trust the certificate manually, and SmartScreen reputation will not be established like it would with a trusted commercial certificate.
Release runs also upload NeonMangaReader-signing-cert.cer next to the Windows ZIP. This is the public certificate that matches the executable signature. A .cer file is safer to distribute than a .pfx because it does not contain the private signing key.
To trust a self-signed release locally on Windows:
- Download
NeonMangaReader-signing-cert.cerfrom the GitHub Release. - Open
certmgr.msc. - Import the
.cerintoTrusted Root Certification Authorities -> Certificatesfor your user or machine. - Run the signed
NeonMangaReader.exefrom the release ZIP.
Do not publish the generated .pfx private-key file. The workflow only uses the .pfx internally during signing and publishes the public .cer for trust/import.
A .pfx contains the private signing key. For safety, the workflow does not publish it to GitHub Releases. If you need the generated self-signed .pfx for your own private use:
- Add a repository secret named
SELF_SIGNED_PFX_PASSWORDwith the password you want on the exported PFX. - Run the workflow manually with
create_release=trueandinclude_private_pfx=true. - Download the
neon-manga-reader-private-pfxworkflow artifact immediately.
The private PFX artifact is retained for only 1 day and is not attached to the public release. Keep it private; anyone with that .pfx and password can sign files as that self-signed publisher.
In the Windows app, chapter downloads are saved directly by the app instead of opening each image in the reader. Files are written under:
%LOCALAPPDATA%\Neon Manga Reader\Downloads\<Manga Title>\<Chapter Title>\
The reader shows an in-app progress bar while pages are saved. Existing files are skipped so repeated downloads do not re-download pages that are already present.
The Add Source dialog can now build a whole book from a single page URL. Paste a page URL and click Scan chapters online. The app identifies the chapter token and page token, probes first-page images online, and fills the source JSON with every chapter it can find from that pattern. Page counts are still detected when each chapter is opened or downloaded.