Repository navigation
Releases: HELIX-Origin/NH-Reader
Release list
NH Reader v0.7.5
NH Reader v0.7.5
Release date: 2026-10-07
✨ Highlights
NH Reader v0.7.5 is a tooling and installer-polish release. The Windows installer now drops the cramped header banner — NSIS lays header art out as a small left-aligned graphic that never fit the wide header.bmp — so the Welcome and Finish pages present the sidebar branding art cleanly. The installer also runs on the stock NSIS/MUI palette, which is the real fix for the dark-on-dark finish-page text that shipped broken in v0.7.4: the v0.7.4 color hooks were never invoked by MUI2 at all.
For maintainers, signing is now one command: npm run sign detects the host OS, discovers that platform's built artifacts, signs with native tooling, and verifies the result — with automatic Apple notarization and stapling when credentials are set. The npm scripts were also consolidated under the tauri:* and check:* families, and every live document, rule, and template follows the new names. As always, this is a source-only release; build and sign locally with your own credentials.
🚀 Key Improvements & Features
-
One sign command for every platform —
npm run signreplaces the fivesign:*scripts. It discovers artifacts (nh-reader.exe/bundles on Windows,.appbundles on macOS, packages on Linux, any.apk), signs withsigntool,codesign,gpg,apksigner, orxcodebuild, and verifies every signature it produced. Credentials pass as options or environment variables; signing stays opt-in and never runs during a build. -
Cleaner installer pages — The
headerImagesetting andheader.bmpare gone; the NSIS generator script now produces only the sidebar graphic. Welcome and Finish pages show the sidebar branding on the stock light palette. -
Release announcements posted by CI —
.github/workflows/discussions.yml(renamed fromseed-discussions.yml) now seeds every release announcement file under.github/discussions/announcements/with duplicate protection, and the missing v0.7.3/v0.7.4 announcements were backfilled with it.
✅ Changed
-
Bumped project version to
0.7.5acrosspackage.json,src-tauri/Cargo.toml,src-tauri/tauri.conf.json,src-tauri/Cargo.lock, and documentation. -
Script renames —
dev:app→tauri:dev,build:app→tauri:build:release,build:app:debug→tauri:build:debug,mobile:android:*→tauri:android:*,mobile:ios:*→tauri:ios:*,i18n:check→check:i18n;scripts/sign.ps1retired in favor of the cross-platformscripts/sign.mjs. All documentation, rules, and templates use the new names.
🐛 Fixed
- Dark-on-dark finish-page text (root cause) — The custom installer palette is removed entirely, so finish/welcome page titles, body text, and checkbox labels render in readable system colors instead of black-on-dark; the failed v0.7.4 per-page hooks are gone.
🛠️ Manual Build & Signing
There are no prebuilt release assets. Build on each target platform and sign locally with your own certificate or key before distributing. Signing is a separate, opt-in step — nothing is signed during the build.
Windows
npm run tauri:build:release
npm run signPlace your PFX at certificates/nh-reader-codesign.pfx; the script can generate a local self-signed certificate if none exists, but self-signed certificates are not trusted publisher identities.
macOS
npm run tauri:build:release
npm run signThe identity comes from --identity or APPLE_SIGNING_IDENTITY (auto-selected when the keychain holds exactly one codesigning identity). Notarization and stapling run automatically when APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD and APPLE_TEAM_ID are set.
Linux
npm run tauri:build:release
npm run sign
gpg --verify path/to/package.asc path/to/packageAndroid
npm run tauri:android:init
npm run tauri:android:build
npm run sign -- path/to/app.apkThe default keystore is src-tauri/gen/android/release.keystore (alias nh-reader); pass --ks and --ks-alias for a custom one.
iOS
From macOS with Xcode and a valid Apple signing identity/provisioning profile:
npm run tauri:ios:init
npm run sign -- --ios CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=<team-id> CODE_SIGN_IDENTITY="Apple Distribution" PROVISIONING_PROFILE_SPECIFIER=<profile-name>Signing credentials and provisioning profiles are user-managed and must not be committed. The project does not publish release assets.
Verification
cargo check+cargo test(src-tauri) — passed (7/7 tests, 0 failed)npm run check(svelte-check) — 0 errors, 0 warningsnpm run check:i18n— 279/279 keys validated across all 17 community packsnpm run check:agents— 13 rules, 6 skills, 12 templates, 4 primaries; all gates passednpm run tauri:build:release— vite clean; NSIS + MSI 0.7.5 bundles built (verification build for the changed packaging configuration)
📄 Changes & Commits
297fb23chore(release): prepare v0.7.5 with unified sign command, script renames, and installer polish- Release source: annotated tag
v0.7.5(source only; no application assets)
Full commit history: git log --oneline v0.7.4..v0.7.5
NH Reader v0.7.4
NH Reader v0.7.4
Release date: 2026-10-06
✨ Highlights
NH Reader v0.7.4 is a stability and installer polish release. Browsing with the blacklist set to "Hide" now always produces full grids: unblocked galleries are backfilled from upstream pages so filtered pages never render empty slots, and edits to your blacklist instantly re-fill the view.
Windows users get a cleaner setup experience too — the installer's finish page is readable again in dark mode, upgrading now fully removes the previous version before installing (no more leftover-file races), and the Korean installer language no longer emits build warnings. This is a source-only release; build and sign locally as always.
🚀 Key Improvements & Features
- Full grids with blacklist Hide mode —
streamBackfilledListkeeps pulling upstream pages until every 28-item server page is filled with non-blacklisted galleries, with surplus buffered for seamless forward/backward navigation. Changing blacklist tags or modes re-streams the grid immediately. - Readable installer finish page — Finish and welcome page titles, body text, and checkboxes are explicitly colored light-on-dark instead of Windows default black-on-dark.
- Clean upgrades — The installer now terminates lingering processes and runs the previous uninstaller synchronously (
NSIS_HOOK_PREINSTALL) so old files are fully purged before the new version writes. - Korean installer localization — Full
MULTIUSER_INSTALLMODEPAGEKorean strings eliminate NSIS build warnings duringnpm run build:app.
✅ Changed
- Bumped project version to
0.7.4acrosspackage.json,src-tauri/Cargo.toml,src-tauri/tauri.conf.json, andsrc-tauri/Cargo.lock. .github/workflows/pages.ymlnow authenticates withsecrets.PAT_TOKENfor GitHub Pages deployments.- Root tracking files (
ROADMAP.md,TODO.md,BUGS.md) realigned to their canonical templates, with a newPLAN.mdsprint ledger; release notes moved out of version control into a local-only scratch area.
🐛 Fixed
- Partially empty grids in blacklist Hide mode — Blacklisting many tags/languages/artists/categories no longer leaves pages with only a handful of cards; pages stay full (28 items) as you paginate.
- Illegible NSIS finish page text — Dark installer backgrounds no longer render black text on dark surfaces.
- Leftover files after upgrading — The previous version's uninstaller now runs to completion before the new install begins, instead of racing it from
%TEMP%. - Korean NSIS build warnings — Missing
MULTIUSER_INSTALLMODEPAGEstrings are now translated.
🛠️ Manual Build & Signing
There are no prebuilt release assets. Build on the target platform and sign using credentials you control:
- Windows:
npm run build:app, thennpm run sign:windows. Place your PFX atcertificates/nh-reader-codesign.pfx; the script can generate a local self-signed certificate if none exists, but self-signed certificates are not trusted publisher identities. - macOS:
npm run build:app, thennpm run sign:macos -- "<Developer ID Application identity>" "src-tauri/target/release/bundle/macos/NH Reader.app". Notarization is a separate Apple distribution step. - Linux:
npm run build:app, thennpm run sign:linux -- path/to/package; verify withgpg --verify path/to/package.asc path/to/package. - Android:
npm run mobile:android:init,npm run mobile:android:build, thennpm run sign:android -- path/to/release.keystore --ks-key-alias <alias> path/to/app.apk. - iOS: On macOS with Xcode and a valid Apple signing identity/provisioning profile, run
npm run mobile:ios:init, thennpm run sign:ios -- CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=<team-id> CODE_SIGN_IDENTITY="Apple Distribution" PROVISIONING_PROFILE_SPECIFIER=<profile-name>.
Do not commit private keys, keystores, certificates, or provisioning profiles.
Verification
cargo check+cargo test(src-tauri) — passed (7/7 tests, 0 failed)npm run check(svelte-check) — 0 errors, 0 warningsnpm run i18n:check— 279/279 keys validated across all 17 community packsnpm run check:agents— 13 rules, 6 skills, 12 templates, 4 primaries; all gates passednpm run build:app— not run for this tag; under the manual distribution model every user builds and signs from source on their own platform (no prebuilt bundles are attached to this source-only release)
📄 Changes & Commits
3874d2edocs: set status legend emoji and standardize severity indicators in BUGS.md171a480fix: backfill unblocked galleries, fix NSIS finish page text & uninstaller, add Korean strings, and bump to v0.7.4894939ddocs: track blacklist page filling and dynamic scaling issue in BUGS.md405c7e4fix(docs): add mermaid diagram rendering, rouge syntax highlighting, and responsive table and list typography1841dfachore(distribution): remove WinGet manifests- Release source: annotated tag
v0.7.4(source only; no application assets)
Full commit history: git log --oneline v0.7.3..v0.7.4
NH Reader v0.7.3
NH Reader v0.7.3
Release date: 2026-10-01
✨ Highlights
NH Reader v0.7.3 removes automated package builds and release-asset publishing. This project will not distribute unsigned binaries. Build and sign packages locally with your platform's tools and signing credentials; this source release contains no prebuilt application assets.
The release also adds local signing commands for macOS, Linux, Android, and iOS, and corrects project documentation to reflect restored iOS support.
🚀 Key Improvements & Features
- Manual signed distribution — Local builds and signatures are now the only supported path for creating distributable packages.
- Platform signing commands —
package.jsonprovidessign:windows,sign:macos,sign:linux,sign:android, andsign:ios. - Accurate iOS support information — Documentation now describes the existing Tauri iOS build path, which requires macOS, Xcode, and Apple signing credentials.
✅ Changed
- Bumped project version to
0.7.3acrosspackage.json,src-tauri/Cargo.toml,src-tauri/tauri.conf.json, andsrc-tauri/Cargo.lock. - Removed
.github/workflows/package.yml; no CI workflow builds or publishes package assets. - Removed the WinGet manifests; NH Reader is no longer offered through WinGet.
- Updated release and user documentation with manual build/signing instructions and the no-unsigned-assets policy.
🐛 Fixed
- Outdated iOS support documentation — Removed statements that iOS was unsupported and documented the current Tauri iOS build requirements.
🛠️ Manual Build & Signing
There are no prebuilt release assets. Build on the target platform and sign using credentials you control:
- Windows:
npm run build:app, thennpm run sign:windows. Place your PFX atcertificates/nh-reader-codesign.pfx; the script can generate a local self-signed certificate if none exists, but self-signed certificates are not trusted publisher identities. - macOS:
npm run build:app, thennpm run sign:macos -- "<Developer ID Application identity>" "src-tauri/target/release/bundle/macos/NH Reader.app". Notarization is a separate Apple distribution step. - Linux:
npm run build:app, thennpm run sign:linux -- path/to/package; verify withgpg --verify path/to/package.asc path/to/package. - Android:
npm run mobile:android:init,npm run mobile:android:build, thennpm run sign:android -- path/to/release.keystore --ks-key-alias <alias> path/to/app.apk. - iOS: On macOS with Xcode and a valid Apple signing identity/provisioning profile, run
npm run mobile:ios:init, thennpm run sign:ios -- CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=<team-id> CODE_SIGN_IDENTITY="Apple Distribution" PROVISIONING_PROFILE_SPECIFIER=<profile-name>.
Do not commit private keys, keystores, certificates, or provisioning profiles.
Verification
- Build and test checks were not run at the maintainer's request because this release changes release metadata, documentation, and distribution workflow only; no application logic was changed.
📄 Changes & Commits
182ec73chore(release): prepare v0.7.3 source-only release- Release source: annotated tag
v0.7.3(source only; no application assets)
Full commit history: git log --oneline v0.7.2..v0.7.3
NH Reader v0.7.2
NH Reader v0.7.2
Release date: 2026-10-01
✨ Highlights
v0.7.2 brings automated code signing across Windows and Android releases using official HELIX Origin certificates, fixes packaging workflow artifact structure to ensure all desktop installers are properly attached to GitHub releases, adds official Windows Package Manager (WinGet) distribution support, and aligns the documentation website's color palette with the official HELIX Origin portal.
🚀 Key Improvements & Features
- Official Code Signing Integration — Injected official HELIX Origin code-signing certificates into GitHub Actions. Windows
.exeand.msiinstallers are signed viasigntool.exewith timestamping, and Android split APKs are signed viaapksigner. - Windows Package Manager (WinGet) Support — Submitted official package manifests for
HELIXOrigin.NHReadercompliant with repository schema 1.12.0 (PR #445305). Users can install and upgrade effortlessly viawinget installonce merged. - Desktop Installers Restored — Fixed the release packaging workflow directory structure so Windows (
.exe,.msi), macOS (.dmg), and Linux (.deb,.AppImage) installers are properly uploaded as individual standalone release assets. - Pre-Release Workflow Suppression — Configured
package.ymlto ignore pre-release tags (!v*-*), preventing heavy multi-platform packaging runs on documentation, tooling, or CI-only updates. - Documentation Website Palette — Updated
docs/assets/site.cssto match the official HELIX Origin organization portal (https://helix-origin.github.io) with deep navy, vibrant cyan (#80d0f5), and teal styling.
📦 Install & Upgrading
Via Windows Package Manager (WinGet):
To install this specific release (v0.7.2):
winget install --id HELIXOrigin.NHReader --name "NH Reader" --version 0.7.2 --exact --accept-source-agreements --accept-package-agreements
To install or upgrade to the latest available release:
winget install --id HELIXOrigin.NHReader --exact --accept-source-agreements --accept-package-agreements
Note: The
winget installmethod will become active as soon as PR #445305 is merged intomicrosoft/winget-pkgs. In the meantime, please use the standalone installers below.
Standalone Downloads:
Download the installer or package for your platform from the Assets section below:
- Windows (NSIS Setup):
NH.Reader_0.7.2_x64-setup.exe - Windows (WiX MSI):
NH.Reader_0.7.2_x64_en-US.msi - Windows (Portable ZIP):
NHReaderPortable_Windows_x64.zip - macOS (DMG):
NH.Reader_0.7.2_aarch64.dmg/NH.Reader_0.7.2_x64.dmg - Linux (Debian):
NH.Reader_0.7.2_amd64.deb - Linux (AppImage):
NH.Reader_0.7.2_amd64.AppImage - Linux (Portable tar.gz):
nh-reader_portable_linux_x86_64.tar.gz - Android (APK):
app-arm-release-unsigned.apk,app-arm64-release-unsigned.apk,app-x86_64-release-unsigned.apk(community-supported)
Upgrade in place: run the new installer over your existing installation. Your database, favorites, history, downloads, and settings carry over automatically.
Verification
cargo check+cargo test(src-tauri) — passed (7/7)npm run check(svelte-check) — 0 errors, 0 warningsnpm run i18n:check— 279/279 keys validated across 18 packsnpm run check:agents— compliant, 0 violations- CI packaging workflow — all builders verified
NH Reader v0.7.1
NH Reader v0.7.1
Release date: 2026-10-01
✨ Highlights
v0.7.1 is a CI infrastructure patch fixing the Android packaging job that was broken in v0.7.0. No app code or user-facing behaviour has changed. Desktop releases (Windows, macOS, Linux) are unaffected and continue to build and publish correctly.
🐛 Fixed
- Android
--targetflag syntax —tauri android buildrequires repeated--targetflags, not a comma-separated list. The v0.7.0 workflow used--target aarch64,armv7,x86_64(invalid), causing exit code 2 and blocking the entire release pipeline. Fixed to--target aarch64 --target armv7 --target x86_64. - Unused variable warnings on Android — The
on_window_eventclosure parameterswindowandeventproducedunused_variableswarnings on Android targets where the#[cfg(desktop)]block compiles away. Renamed to_windowand_eventto suppress warnings while keeping full desktop functionality.
✅ Changed
- Bumped project version to
0.7.1acrosspackage.json,Cargo.toml,tauri.conf.json, andCargo.lock. - Migrated
actions/setup-java@v4→actions/setup-java@v5in the Android packaging job (deprecation fix). - Added
release_tagworkflow_dispatchinput: manually re-attach build assets to any existing release tag without pushing a new tag (useful for publish-step recovery). - Hardened agent verification rules:
AGENTS.md §2.4,verification.md, andgit-workflow.mdnow explicitly forbid pushing unverified or broken code to remote and require dry-run validation for CI workflow changes.
📦 Install & Upgrading
Download the installer or package for your platform from the Assets section below:
- Windows (NSIS Setup):
NH Reader_0.7.1_x64-setup.exe - Windows (WiX MSI):
NH Reader_0.7.1_x64_en-US.msi - Windows (Portable ZIP):
NHReaderPortable_Windows_x64.zip - macOS (DMG):
NH Reader_0.7.1_x64.dmg/NH Reader_0.7.1_aarch64.dmg - Linux (Debian):
nh-reader_0.7.1_amd64.deb - Linux (AppImage):
nh-reader_0.7.1_amd64.AppImage - Android (APK):
nh-reader_aarch64.apk,nh-reader_armv7.apk,nh-reader_x86_64.apk(community-supported)
Upgrade in place: run the new installer over your existing installation. Your database, favorites, history, downloads, and settings carry over automatically.
Verification
cargo check+cargo test(src-tauri) — passed (7/7)npm run check(svelte-check) — 0 errors, 0 warningsnpm run i18n:check— 279/279 keys validated across 18 packsnpm run check:agents— compliant, 0 violations- CI dry-run (
dry_run: true) — all builders passed, artifacts verified
📄 Changes & Commits
418a10cfix(android): suppress unused variable warnings in on_window_event on non-desktop targets50ba38bfix(ci): fix YAML parse error in release_tag expression895676afix(ci): fix android split-abi build, add manual release_tag input, harden verification rules
Full commit history: git log --oneline v0.7.0..v0.7.1
NH Reader v0.7.0
NH Reader v0.7.0
Release date: 2026-10-01
✨ Highlights
NH Reader v0.7.0 is our largest multi-platform and ergonomics release to date! This release introduces an integrated custom title bar with per-OS tailored window controls (native traffic lights on macOS and compact squircle-framed controls on Windows and Linux), restores system tray integration with minimize-to-tray on close, adds configurable reader preload buffering, an image quality selector, and a direct CBZ export button directly in the reader toolbar.
Furthermore, v0.7.0 ships all 17 community language packs with 100% key parity (279/279 keys) and full Arabic RTL layout polish, standalone portable archives for Windows, macOS, and Linux with universal launcher scripts, in-repo documentation with in-page live translation, and a hardened CI release pipeline featuring dedicated Android split APKs and true dry-run verification.
🚀 Key Improvements & Features
- Custom Title Bar & Per-OS Window Controls — Integrated title bar across all desktop platforms with native macOS traffic lights and framed squircle controls (24×22px, 5px radius) for Windows and Linux. Highlight colors respect custom Linux desktop themes.
- Configurable Window Controls Positioning — Added
windowControlsPositionsetting (Auto,Left,Right) under Appearance settings in Settings, allowing full customization for Linux desktop environments. - Restored System Tray & Minimize-to-Tray on Close — Closing the main window cleanly hides the app into the system tray without interrupting background services, while preserving complete termination via the tray menu.
- Reader Preload Buffer (1–5 Pages) — Configurable reader slice buffering ahead and behind for instant, zero-latency page transitions.
- Image Quality Selector — Quick toggle between
Original (High)(full-resolution streaming) andData Saver (Fast)(compressed preview thumbnails) withQhotkey in reader. - Direct CBZ Export from Reader Toolbar — One-click CBZ export button in reader toolbar (
Ehotkey) with background worker queue integration and live progress tracking. - All 17 Language Packs at 100% Parity — Complete hand-rolled translations for
ar,de,es,fr,id,it,ja,ko,nl,pl,pt,ru,th,tr,vi,zh-CN, andzh-TW(279/279 keys each). - Arabic RTL Layout Polish (M9.2 RTL Phase) — Reactive
dir="rtl"support, native Arabic font typography fallbacks (Segoe UI Arabic,Noto Sans Arabic,Tahoma), mirrored slide-in drawer animations, mirrored switch toggles, and RTL form alignments. - Standalone Multi-Platform Portable Packages — Platform-native portable archives (
NHReaderPortable_Windows_x64.zip,nh-reader_portable_linux_x86_64.tar.gz,NHReaderPortable_macOS.zip) sharing.portablemarkers and isolated./data/folders with universal launcher scripts. - CI Workflow Stabilization & Dedicated Android Split APKs — Decoupled release publishing into an atomic downstream
publish-releasejob, dedicatedpackage-androidjob building separate split APKs per architecture (aarch64,armv7,x86_64), pre-installed NDK auto-discovery, true dry-run mode, and optional test pre-release support. - In-Repo Documentation with Live Translation — Migrated documentation into repository
docs/folder with interactive in-page Google Translate widget supporting all 18 languages.
✅ Changed
- Bumped project version to
0.7.0acrosspackage.json,Cargo.toml,tauri.conf.json,Cargo.lock, and documentation. - Upgraded CI packaging workflow to Node.js 26 (
actions/setup-node@v4), matching local development runtime. - Pinned per-platform Tauri configuration overlays (
tauri.<platform>.conf.json). - Consolidated all post-v0.6.0 developments directly into
v0.7.0(skipping unreleased0.6.1).
🐛 Fixed
- Window Close Lifecycle — Restored minimize-to-tray on close so background downloads and services continue uninterrupted.
- CI Release Race Conditions — Decoupled asset publishing from parallel matrix runners into a single atomic downstream job, preventing concurrent release creation failures.
- NSIS Dark Contrast — Coordinated text and background colors in NSIS installer hooks to prevent unreadable dark text on dark installer pages.
- Android Runner NDK Resolution — Dynamically resolved pre-installed NDK paths in GitHub Actions runners, eliminating brittle manual sdkmanager re-downloads.
📦 Install & Upgrading
Download the installer or package for your platform from the Assets section below:
- Windows (NSIS Setup):
NH Reader_0.7.0_x64-setup.exe - Windows (WiX MSI):
NH Reader_0.7.0_x64_en-US.msi - Windows (Portable ZIP):
NHReaderPortable_Windows_x64.zip - macOS (DMG):
NH Reader_0.7.0_x64.dmg - macOS (Portable ZIP):
NHReaderPortable_macOS.zip - Linux (Debian):
nh-reader_0.7.0_amd64.deb - Linux (AppImage):
nh-reader_0.7.0_amd64.AppImage - Linux (Portable Tarball):
nh-reader_portable_linux_x86_64.tar.gz - Android (Split APK - ARM64):
nh-reader_0.7.0_arm64-v8a.apk(community-supported / untested) - Android (Split APK - ARMv7):
nh-reader_0.7.0_armeabi-v7a.apk(community-supported / untested) - Android (Split APK - x86_64):
nh-reader_0.7.0_x86_64.apk(community-supported / untested)
Upgrade in place: run the new installer over your existing installation. Your SQLite database (database.sqlite), favorites, reading history, downloaded archives, and settings carry over automatically.
Verification
cargo check+cargo test(src-tauri) — passed (7/7)npm run check(svelte-check) — 0 errors, 0 warningsnpm run i18n:check— 279/279 keys validated across all 18 packsnpm run check:agents— passed, 0 violations
NH Reader v0.6.0
NH Reader v0.6.0
Release date: 2026-10-01
✨ Highlights
NH Reader v0.6.0 is a major milestone delivering a completely rebuilt native installer engine, an all-new Library tab with offline archive reading, official API archive downloads, an account authentication modal, Mihon-style floating navigation, squircle design, and seamless process lifecycle handling. This release rebrands the client to NH Reader and decouples runtime persistence into an isolated SQLite database (database.sqlite).
🚀 Key Improvements & Features
- Rebuilt native installer engine — Replaced custom webview installer routes and bespoke build scripts with Tauri 2's native packaging toolchain (
tauri build) augmented with a custom NSIS template (src-tauri/windows/hooks.nsh). Provides:- Both per-user (
%LOCALAPPDATA%) and per-machine (Program Files) installation scopes. - Enterprise-ready WiX MSI installer (
.msi). - Standard Windows Uninstaller registered cleanly in "Installed apps" / "Add or remove programs" with clean binary and shortcut removal.
- Self-contained portable mode via
.portablemarker or localdata/directory. - Free code-signing pipeline (
scripts/sign.ps1/npm run sign:windows).
- Both per-user (
- Dedicated Library & offline archive reading — Added a dedicated
/librarybottom navigation tab organizing downloaded doujins, downloaded favorites, and reading history:- Interactive downloaded doujins shelf (
DownloadedView.svelte) displaying covers, metadata, page counts, file formats (ZIP/CBZ), and direct reading actions. - Native zip/cbz archive parser and extractor commands streaming page bytes directly from local disk.
- 100% offline reading support in
ReaderImage.sveltewithout requiring an internet connection. - Decoupled Library favorites view that isolates downloaded favorites from global online favorites.
- Interactive downloaded doujins shelf (
- Official API archive downloads — Updated the background download engine to utilize nhentai API v2's dedicated archive endpoint (
POST /api/v2/galleries/{id}/download), downloading complete pre-packaged.zipand.cbzarchives directly with smooth real-time byte progress. - Dedicated Account Login modal — Added a modern dual-mode authentication modal (
LoginModal.svelte):- Official API Key sign-in (recommended, bypasses Cloudflare CAPTCHAs).
- Direct credentials authentication (
POST /api/v2/auth/login). - Reactive profile status rendering username and avatar immediately upon connecting.
- Strict account profile and blacklist tag isolation.
- Mihon-style floating bottom navigation & squircle styling — Elevated bottom navigation into a floating pill with backdrop blur (
rgba(31,31,31,0.92)), elevation shadow, and safe bottom content padding. Softened overly sharp corner radiuses across cards, navigation pills, and tabs to small squircle corners (8px - 10px). - Native OS window titlebar & in-app top bar — Restored native system window decorations (
decorations: true), paired with a non-interactive dragging header in the in-app top bar. - Clean window exit & process shutdown — Eliminated premature Win32
window.destroy()calls and removed close event cancellation, allowing WebView2 to gracefully unregisterChrome_WidgetWin_0without Error 1411 and terminating cleanly without hanging processes. - Dynamic UI scaling — Configurable row-fitting grid layout that dynamically calculates container columns and visible cards, eliminating trailing gaps or orphaned empty card spaces.
✅ Changed
- Rebranded product name to NH Reader (
NH Reader.exe, window title "NH Reader", packagenh-reader, identifiernet.nh-reader.client). - Decoupled persistence to ambiguous
database.sqlitewith automatic schema and key prefix migration. - Bumped project version to
0.6.0acrosspackage.json,Cargo.toml,tauri.conf.json,Cargo.lock, and documentation. - Documented across documentation and wiki that because the maintainer lacks a physical Android device, Android (as well as macOS) builds are currently community-supported and untested by the maintainer. iOS is not supported and has been dropped.
- Synchronized all tracking ledgers and documentation (
ROADMAP.md,TODO.md,BUGS.md,README.md,CHANGELOG.md, and allwiki/pages).
🐛 Fixed
- Window exit hang & WebView2 unregister error (1411) — Fixed process shutdown sequence to exit gracefully via
app.exit(0), resolving WebView2 unregister class failures and preventing SIGINT (0xc000013a) terminations. - Avatar URL resolution — Fixed parsing for protocol-relative (
//static.nhentai.net/...) avatar paths and added fallback to user initial placeholder. - Download file lock collision — Flushed and closed file handles before renaming temporary files to final archives on Windows.
- Account blacklist sync — Resolved numeric tag IDs for
POST /api/v2/blacklist, preventing corrupt profile orfavorite_tagsoverwrites. - Dialog transparency & clipping — Established solid opaque dark-surface backgrounds (
#1f1f1f/#252525) for account modal dialogs.
📦 Install & Upgrading
Download the installer or package for your platform from the Assets section below:
- Windows (NSIS Setup):
NH Reader_0.6.0_x64-setup.exe - Windows (WiX MSI):
NH Reader_0.6.0_x64_en-US.msi - Windows (Portable ZIP):
NHReaderPortable_0.6.0.zip - macOS (DMG):
NH Reader_0.6.0_x64.dmg(oraarch64for Apple Silicon) - Linux (Debian):
nh-reader_0.6.0_amd64.deb - Linux (AppImage):
nh-reader_0.6.0_amd64.AppImage - Android (APK):
nh-reader_0.6.0_universal.apk(community-supported / untested)
Upgrade in place: run the new installer over your existing installation. Your SQLite database (database.sqlite), favorites, reading history, downloaded archives, and settings carry over automatically.
Verification
cargo check+cargo test(src-tauri) — passed (7/7)npm run check(svelte-check) — 0 errors, 0 warningsnpm run i18n:check— 258/258 keys validatednpm run check:agents— 51/51 files compliant, 0 violations
📄 Changes & Commits
09c7b71ci(workflow): drop iOS runner from matrix and retain Android and desktop packaginge5be71aci(workflow): add automated signing for Windows, Android, and macOS packages5ac1541ci(workflow): isolate matrix runner build commands and package pathsc827d15ci(workflow): separate packaging into dedicated desktop and android jobse86642fci(workflow): add Android runner to packaging matrix7e13faddocs(templates): restore canonical release notes template formate384975docs(release): format release notes to standard454a8ddchore(release): bump version to 0.6.01fb18c0docs(plan): add research for native installer visual customization to BUGS.md and TODO.md791e641docs(plan): record decision to revert to native tauri packaging in BUGS.md and TODO.md90f1106fix(installer): address production CSP, prerendered installer.html, and working directory; record native packaging fallback855d462docs(bugs): clarify restoring default packaging is a potential starting point71da891docs(bugs): note restoration of default tauri nsis/msi packaging as fix in issue #42260f6bfix(installer): do not emit loose uninstaller into release assets; docs(bugs): record breaking blank screen bug06ff66cdocs(release): link v0.5.0 release and mark M8 release tasks completed in ROADMAP and TODO
Full commit history: git log --oneline v0.5.0..v0.6.0
NH Desktop v0.5.0
NH Desktop v0.5.0
Release date: 2026-09-30
✨ Highlights
NH Desktop v0.5.0 introduces flexible installation options tailored dynamically across Windows, Linux, and macOS. Users can now choose between per-user installation, system-wide installation, or a custom target folder using a native OS folder dialog. This release also debuts an optional Portable Mode for complete zero-footprint self-contained operation, and adds official PortableApps.com Format (PAF) packaging (NHDesktopPortable_0.5.0.paf.exe).
🚀 Key Improvements & Features
- Installation destination scope selection — The installer's destination step now presents distinct options tailored per platform:
- Install for current user (per-user directory:
%LOCALAPPDATA%\Programs\NH Desktopon Windows,~/.local/share/NH Desktopon Linux,~/Applicationson macOS). - Install for all users (system-wide directory:
%ProgramFiles%\NH Desktopon Windows,/opt/NH Desktopon Linux,/Applicationson macOS). - Custom install directory with text input and native folder dialog.
- Install for current user (per-user directory:
- Native OS folder picker — Added the
installer_pick_directoryTauri command invoking native directory dialogs across all supported operating systems (FolderBrowserDialogon Windows,zenity/kdialogon Linux,osascripton macOS). - Portable mode toggle — An optional toggle during installation configures NH Desktop as a completely portable application:
- Stores all runtime data (SQLite database
nh-desktop.db, disk cachecache/images, settings, and downloads) inside<install_dir>/data. - Creates a
.portablemarker file inside the application directory. - Zero system footprint: skips deploying
uninstall.exe, creating desktop or Start Menu shortcuts, and writing Windows Add/Remove Programs registry keys.
- Stores all runtime data (SQLite database
- Dynamic disk space verification — Replaced static space indicators with reactive
installer_disk_spacequeries reporting exact available storage for the selected directory. - PortableApps.com Format (PAF) installer packaging — Integrated official PortableApps layout generation (
App/AppInfo/appinfo.ini, standard multi-resolution icons,App/NHDesktop,Data/) and NSIS compilation forNHDesktopPortable_0.5.0.paf.exeinscripts/build-installer.mjsand GitHub Actions CI workflow. - Portable zip distribution — Added
NHDesktopPortable_0.5.0.zipgeneration for immediate portable extraction.
✅ Changed
- Bumped project version to
0.5.0acrosspackage.json,Cargo.toml,tauri.conf.json,Cargo.lock, and documentation. - Registered
installer_pick_directoryincommands.rsandlib.rs(bringing total Tauri commands to 45). - Runtime data directory resolution checks for
.portableor localdata/folder before falling back to system application data. - Default downloads directory resolves to
<install_dir>/data/downloadsin portable mode. - Synchronized all documentation (
ROADMAP.md,TODO.md,BUGS.md,README.md,CONTRIBUTING.md, and allwiki/pages).
🐛 Fixed
- Installation Options (Closed #3) — Replaced the single text input in the installer with platform-accurate scope selections, native directory browsing, and portable installation options.
📦 Install & Upgrading
Download the installer for your platform from the Assets section below:
- Windows:
NH Desktop-Setup-0.5.0-win-x64.exe - Windows (PortableApps PAF):
NHDesktopPortable_0.5.0.paf.exe - Windows (Portable ZIP):
NHDesktopPortable_0.5.0.zip - macOS:
NH Desktop-Setup-0.5.0-macos-arm64(ormacos-x64if available) - Linux:
NH Desktop-Setup-0.5.0-linux-x64
Upgrade in place: run the new installer over your existing installation.
Verification
cargo check+cargo test(src-tauri) — passed (10/10)npm run check(svelte-check) — 0 errors, 0 warningsnpm run build— adapter-static site generated successfullynpm run i18n:check— 87/87 keys validatednpm run check:agents— whole tree compliant, 0 violations
📄 Changes & Commits
feat(installer): add installation scopes, portable mode, and PAF packaging (v0.5.0)docs: document download engine and favorites button fixes in v0.4.0
Full commit history: git log --oneline v0.4.0..v0.5.0
NH Desktop v0.4.0
NH Desktop v0.4.0
Release date: 2026-09-30
✨ Highlights
NH Desktop v0.4.0 introduces a dedicated uninstaller executable (uninstall.exe on Windows) that eliminates file-locking issues during uninstallation, aligns publisher attribution to HELIX Origin in system settings, and debuts a streamlined 100% drop-in hand-rolled localization architecture. This release also resolves gallery download failures with a direct in-app archive pipeline and fixes favorite button state synchronization so gallery detail views update immediately.
🚀 Key Improvements & Features
- Dedicated uninstaller executable — Deploys an independent
uninstall.exe(Windows) anduninstall(Linux) alongsideNH Desktop.exe. When launched, the uninstaller relocates to a temporary directory before execution so neither binary holds a file lock on the installation directory, allowingremove_dir_allto cleanly remove all application files without permission or sharing errors. - Reliable in-app gallery downloads — Replaced the external API-key download requirement with a direct in-app pipeline that streams gallery pages and packages them locally into clean
.zipor.cbzarchives with live per-page progress reporting. - Instant favorites synchronization — Fixed the favorites button on gallery detail pages to reactively reflect and update its state ("Favorite" vs "Saved") immediately upon clicking.
- Publisher attribution to HELIX Origin — Windows Add/Remove Programs (installed apps) now displays the correct publisher,
HELIX Origin, matching the GitHub organization owning the repository. - 100% drop-in localization architecture — Replaced the fluent dependency tree with a zero-dependency, high-performance
LocaleCatalogclass using Vite dynamic glob imports. Hand-rolled English (en.json) is the default source of truth, with automatic fallback to your operating system locale. - Effortless community translations — Adding a language requires no code modifications or registry edits. Simply drop
<locale>.jsonintosrc/lib/i18n/and validate withnpm run i18n:check. - Comprehensive translation contribution guide — Added full documentation and complete 78-key JSON schema reference with field explanations in
CONTRIBUTING.md. - Hardened SQLite concurrency — Added mutex poison recovery to database connection handling in
db.rs(lock_conn()), preventing application panics if a mutex lock is poisoned.
✅ Changed
- Bumped project version to
0.4.0acrosspackage.json,Cargo.toml,tauri.conf.json,Cargo.lock, and sidebar UI. - Updated Windows registry uninstaller registration to point
UninstallStringdirectly touninstall.exewith publisherHELIX Origin. - Aligned documentation across
README.md,CONTRIBUTING.md,ROADMAP.md,TODO.md, and allwiki/pages.
🐛 Fixed
- Uninstaller file locking on Windows — Previously, running the uninstaller from
NH Desktop.exe --installer --maintenancecaused Windows to lock the running executable, preventingstd::fs::remove_dir_allfrom deleting program files. The new dedicateduninstall.exeexecutes from temp and cleanly removes the install directory. - Gallery download failures — Fixed background download failures by fetching pages directly from image hosts and compiling
.zip/.cbzarchives locally without requiring an API key. - Favorites button state desync — Fixed the favorite button so toggling immediately updates its visual state and label between "Favorite" and "Saved".
📦 Install & Upgrading
Download the installer for your platform from the Assets section below:
- Windows:
NH Desktop-Setup-0.4.0-win-x64.exe - macOS:
NH Desktop-Setup-0.4.0-macos-arm64(ormacos-x64if available) - Linux:
NH Desktop-Setup-0.4.0-linux-x64
Upgrade in place: run the new installer over your existing installation. The unified installer will replace files, place the dedicated uninstall.exe, and update shortcuts and registry entries.
Verification
cargo check+cargo test(src-tauri) — passed (10/10)npm run check(svelte-check) — 0 errors, 0 warningsnpm run build— adapter-static site generated successfullynpm run i18n:check— 78/78 keys validatednode scripts/check-agents.mjs --all— whole tree compliant (61 source files)npm run build:installer— producesNH Desktop-Setup-0.4.0-win-x64.exeanduninstall.exe
📄 Changes & Commits
chore(release): bump version to 0.3.0 and prepare release notesfeat(i18n): add localization, language packs, and system-locale default (M9)fix(installer): defer launch until Finish click; feat(ui): context-aware titlebar searchdocs: remove Status column from CHANGELOG.md summary tabledocs: expand CHANGELOG.md with detailed sub-bulletsdocs: update CHANGELOG.md bullet format to match templatedocs: update CHANGELOG.md to latest template formatdocs: update CHANGELOG.md commit-link format to match templatedocs(templates): update changelog template to match actual CHANGELOG.md formatdocs: add CHANGELOG.md following project templatedocs(templates): fix changelog template to custom format
Full commit history: git log --oneline v0.2.1..v0.3.0
NH Desktop v0.3.0
NH Desktop v0.3.0
Release date: 2026-09-25
✨ Highlights
NH Desktop now speaks your language. The interface follows your operating system locale on first launch and ships complete translations for English, Japanese, and Chinese (Simplified and Traditional), switchable from the installer's Options step or from Settings with no restart. This release also fixes the installer launching the app before you clicked Finish, and makes the titlebar search act on the page you are currently viewing.
🚀 Key Improvements & Features
- Interface localization (M9) — System-locale detection plus complete language packs for Japanese (
ja), Chinese Simplified (zh-Hans), and Chinese Traditional (zh-Hant), 78 keys each. Fourteen further nhentai content languages are registered and selectable, falling back to English key-by-key. - Language picker in the installer — The setup wizard's Options step now offers a Language dropdown. The installer renders in your system language first, so the options are readable before you choose.
- Language picker in Settings —
Settings → Appearance → Languageswitches the interface immediately. The choice is shared with the installer, so the two never disagree. - Context-aware titlebar search — The quick-search box now acts on the active page: it updates the query on Search, filters the local list by title on Favorites and History, and falls back to a global search elsewhere.
- Refined titlebar layout — The search box is centred and the account chip sits adjacent to the window controls, left of them on Windows and Linux and right of them on macOS.
- Free offline translation tooling —
npm run i18n:checkvalidates every pack for missing keys, untranslated leftovers, and unknown keys, with no network access and no cost.
✅ Changed
ROADMAP.mdgained M9 — Localization & language packs with a three-phase plan, andTODO.mdwas split into M9.1 (shipped core) and M9.2 (the 14 remaining packs, itemised but not started).- New
wiki/Localization.mdcontributor guide documents both improving an existing pack and adding a new language, with free terminology cross-reference resources. - Bumped version metadata to
0.3.0acrosspackage.json,Cargo.toml,tauri.conf.json, andCargo.lock. - Corrected the sidebar version readout, which still displayed the stale
v0.2.0.
🐛 Fixed
- Installer launched the app before you finished — The setup wizard started NH Desktop while installation was still running, so the app appeared on top of the installer. Launching is now an explicit step driven by the new
installer_launch_appcommand, which fires only when you click Finish with "Launch after finish" checked, and a launch failure is non-fatal.
📦 Install & Upgrading
Download the installer for your platform from the Assets section below:
- Windows:
NH.Desktop-Setup-0.3.0-win-x64.exe - macOS:
NH.Desktop-Setup-0.3.0-macos-arm64(ormacos-x64if available) - Linux:
NH.Desktop-Setup-0.3.0-linux-x64
Upgrade in place: run the new installer over your existing installation. The unified installer will repair/replace files and update shortcuts.
Verification
cargo check+cargo test(src-tauri) — passed (9/9)npm run check(svelte-check) — 0 errors, 0 warningsnpm run build— adapter-static site generated successfullynpm run i18n:check— 3/3 language packs OKnpm run build:installer— producedNH Desktop-Setup-0.3.0-win-x64.exe
📄 Changes & Commits
chore(release): bump version to 0.3.0 and prepare release notesfeat(i18n): add localization, language packs, and system-locale default (M9)fix(installer): defer launch until Finish click; feat(ui): context-aware titlebar searchdocs: remove Status column from CHANGELOG.md summary tabledocs: expand CHANGELOG.md with detailed sub-bulletsdocs: update CHANGELOG.md bullet format to match templatedocs: update CHANGELOG.md to latest template formatdocs: update CHANGELOG.md commit-link format to match templatedocs(templates): update changelog template to match actual CHANGELOG.md formatdocs: add CHANGELOG.md following project templatedocs(templates): fix changelog template to custom format
Full commit history: git log --oneline v0.2.1..v0.3.0