Skip to content

Releases: HELIX-Origin/NH-Reader

NH Reader v0.7.5

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 07 Oct 07:48

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 sign replaces the five sign:* scripts. It discovers artifacts (nh-reader.exe/bundles on Windows, .app bundles on macOS, packages on Linux, any .apk), signs with signtool, codesign, gpg, apksigner, or xcodebuild, 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 headerImage setting and header.bmp are 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 from seed-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.5 across package.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.ps1 retired in favor of the cross-platform scripts/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 sign

Place 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 sign

The 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/package

Android

npm run tauri:android:init
npm run tauri:android:build
npm run sign -- path/to/app.apk

The 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 warnings
  • npm run check:i18n — 279/279 keys validated across all 17 community packs
  • npm run check:agents — 13 rules, 6 skills, 12 templates, 4 primaries; all gates passed
  • npm run tauri:build:release — vite clean; NSIS + MSI 0.7.5 bundles built (verification build for the changed packaging configuration)

📄 Changes & Commits

  • 297fb23 chore(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

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 06 Oct 22:04

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 — streamBackfilledList keeps 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_INSTALLMODEPAGE Korean strings eliminate NSIS build warnings during npm run build:app.

✅ Changed

  • Bumped project version to 0.7.4 across package.json, src-tauri/Cargo.toml, src-tauri/tauri.conf.json, and src-tauri/Cargo.lock.
  • .github/workflows/pages.yml now authenticates with secrets.PAT_TOKEN for GitHub Pages deployments.
  • Root tracking files (ROADMAP.md, TODO.md, BUGS.md) realigned to their canonical templates, with a new PLAN.md sprint 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_INSTALLMODEPAGE strings 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, then npm run sign:windows. Place 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 build:app, then npm 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, then npm run sign:linux -- path/to/package; verify with gpg --verify path/to/package.asc path/to/package.
  • Android: npm run mobile:android:init, npm run mobile:android:build, then npm 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, then npm 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 warnings
  • npm run i18n:check — 279/279 keys validated across all 17 community packs
  • npm run check:agents — 13 rules, 6 skills, 12 templates, 4 primaries; all gates passed
  • npm 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

  • 3874d2e docs: set status legend emoji and standardize severity indicators in BUGS.md
  • 171a480 fix: backfill unblocked galleries, fix NSIS finish page text & uninstaller, add Korean strings, and bump to v0.7.4
  • 894939d docs: track blacklist page filling and dynamic scaling issue in BUGS.md
  • 405c7e4 fix(docs): add mermaid diagram rendering, rouge syntax highlighting, and responsive table and list typography
  • 1841dfa chore(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

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 02 Oct 01:49

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.json provides sign:windows, sign:macos, sign:linux, sign:android, and sign: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.3 across package.json, src-tauri/Cargo.toml, src-tauri/tauri.conf.json, and src-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, then npm run sign:windows. Place 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 build:app, then npm 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, then npm run sign:linux -- path/to/package; verify with gpg --verify path/to/package.asc path/to/package.
  • Android: npm run mobile:android:init, npm run mobile:android:build, then npm 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, then npm 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

  • 182ec73 chore(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

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 01 Oct 21:27

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 .exe and .msi installers are signed via signtool.exe with timestamping, and Android split APKs are signed via apksigner.
  • Windows Package Manager (WinGet) Support — Submitted official package manifests for HELIXOrigin.NHReader compliant with repository schema 1.12.0 (PR #445305). Users can install and upgrade effortlessly via winget install once 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.yml to 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.css to 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 install method will become active as soon as PR #445305 is merged into microsoft/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 warnings
  • npm run i18n:check — 279/279 keys validated across 18 packs
  • npm run check:agents — compliant, 0 violations
  • CI packaging workflow — all builders verified

NH Reader v0.7.1

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 01 Oct 18:18

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 --target flag syntax — tauri android build requires repeated --target flags, 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_event closure parameters window and event produced unused_variables warnings on Android targets where the #[cfg(desktop)] block compiles away. Renamed to _window and _event to suppress warnings while keeping full desktop functionality.

✅ Changed

  • Bumped project version to 0.7.1 across package.json, Cargo.toml, tauri.conf.json, and Cargo.lock.
  • Migrated actions/setup-java@v4 → actions/setup-java@v5 in the Android packaging job (deprecation fix).
  • Added release_tag workflow_dispatch input: 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, and git-workflow.md now 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 warnings
  • npm run i18n:check — 279/279 keys validated across 18 packs
  • npm run check:agents — compliant, 0 violations
  • CI dry-run (dry_run: true) — all builders passed, artifacts verified

📄 Changes & Commits

  • 418a10c fix(android): suppress unused variable warnings in on_window_event on non-desktop targets
  • 50ba38b fix(ci): fix YAML parse error in release_tag expression
  • 895676a fix(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

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 01 Oct 17:46

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 windowControlsPosition setting (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) and Data Saver (Fast) (compressed preview thumbnails) with Q hotkey in reader.
  • Direct CBZ Export from Reader Toolbar — One-click CBZ export button in reader toolbar (E hotkey) 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, and zh-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 .portable markers and isolated ./data/ folders with universal launcher scripts.
  • CI Workflow Stabilization & Dedicated Android Split APKs — Decoupled release publishing into an atomic downstream publish-release job, dedicated package-android job 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.0 across package.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 unreleased 0.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 warnings
  • npm run i18n:check — 279/279 keys validated across all 18 packs
  • npm run check:agents — passed, 0 violations

NH Reader v0.6.0

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 01 Oct 08:11

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 .portable marker or local data/ directory.
    • Free code-signing pipeline (scripts/sign.ps1 / npm run sign:windows).
  • Dedicated Library & offline archive reading — Added a dedicated /library bottom 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.svelte without requiring an internet connection.
    • Decoupled Library favorites view that isolates downloaded favorites from global online favorites.
  • 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 .zip and .cbz archives 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 unregister Chrome_WidgetWin_0 without 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", package nh-reader, identifier net.nh-reader.client).
  • Decoupled persistence to ambiguous database.sqlite with automatic schema and key prefix migration.
  • Bumped project version to 0.6.0 across package.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 all wiki/ 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 or favorite_tags overwrites.
  • 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 (or aarch64 for 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 warnings
  • npm run i18n:check — 258/258 keys validated
  • npm run check:agents — 51/51 files compliant, 0 violations

📄 Changes & Commits

  • 09c7b71 ci(workflow): drop iOS runner from matrix and retain Android and desktop packaging
  • e5be71a ci(workflow): add automated signing for Windows, Android, and macOS packages
  • 5ac1541 ci(workflow): isolate matrix runner build commands and package paths
  • c827d15 ci(workflow): separate packaging into dedicated desktop and android jobs
  • e86642f ci(workflow): add Android runner to packaging matrix
  • 7e13fad docs(templates): restore canonical release notes template format
  • e384975 docs(release): format release notes to standard
  • 454a8dd chore(release): bump version to 0.6.0
  • 1fb18c0 docs(plan): add research for native installer visual customization to BUGS.md and TODO.md
  • 791e641 docs(plan): record decision to revert to native tauri packaging in BUGS.md and TODO.md
  • 90f1106 fix(installer): address production CSP, prerendered installer.html, and working directory; record native packaging fallback
  • 855d462 docs(bugs): clarify restoring default packaging is a potential starting point
  • 71da891 docs(bugs): note restoration of default tauri nsis/msi packaging as fix in issue #4
  • 2260f6b fix(installer): do not emit loose uninstaller into release assets; docs(bugs): record breaking blank screen bug
  • 06ff66c docs(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

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 30 Sep 11:52

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 Desktop on Windows, ~/.local/share/NH Desktop on Linux, ~/Applications on macOS).
    • Install for all users (system-wide directory: %ProgramFiles%\NH Desktop on Windows, /opt/NH Desktop on Linux, /Applications on macOS).
    • Custom install directory with text input and native folder dialog.
  • Native OS folder picker — Added the installer_pick_directory Tauri command invoking native directory dialogs across all supported operating systems (FolderBrowserDialog on Windows, zenity/kdialog on Linux, osascript on 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 cache cache/images, settings, and downloads) inside <install_dir>/data.
    • Creates a .portable marker 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.
  • Dynamic disk space verification — Replaced static space indicators with reactive installer_disk_space queries 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 for NHDesktopPortable_0.5.0.paf.exe in scripts/build-installer.mjs and GitHub Actions CI workflow.
  • Portable zip distribution — Added NHDesktopPortable_0.5.0.zip generation for immediate portable extraction.

✅ Changed

  • Bumped project version to 0.5.0 across package.json, Cargo.toml, tauri.conf.json, Cargo.lock, and documentation.
  • Registered installer_pick_directory in commands.rs and lib.rs (bringing total Tauri commands to 45).
  • Runtime data directory resolution checks for .portable or local data/ folder before falling back to system application data.
  • Default downloads directory resolves to <install_dir>/data/downloads in portable mode.
  • Synchronized all documentation (ROADMAP.md, TODO.md, BUGS.md, README.md, CONTRIBUTING.md, and all wiki/ 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 (or macos-x64 if 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 warnings
  • npm run build — adapter-static site generated successfully
  • npm run i18n:check — 87/87 keys validated
  • npm 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

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 30 Sep 10:58

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) and uninstall (Linux) alongside NH Desktop.exe. When launched, the uninstaller relocates to a temporary directory before execution so neither binary holds a file lock on the installation directory, allowing remove_dir_all to 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 .zip or .cbz archives 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 LocaleCatalog class 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>.json into src/lib/i18n/ and validate with npm 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.0 across package.json, Cargo.toml, tauri.conf.json, Cargo.lock, and sidebar UI.
  • Updated Windows registry uninstaller registration to point UninstallString directly to uninstall.exe with publisher HELIX Origin.
  • Aligned documentation across README.md, CONTRIBUTING.md, ROADMAP.md, TODO.md, and all wiki/ pages.

🐛 Fixed

  • Uninstaller file locking on Windows — Previously, running the uninstaller from NH Desktop.exe --installer --maintenance caused Windows to lock the running executable, preventing std::fs::remove_dir_all from deleting program files. The new dedicated uninstall.exe executes 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/.cbz archives 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 (or macos-x64 if 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 warnings
  • npm run build — adapter-static site generated successfully
  • npm run i18n:check — 78/78 keys validated
  • node scripts/check-agents.mjs --all — whole tree compliant (61 source files)
  • npm run build:installer — produces NH Desktop-Setup-0.4.0-win-x64.exe and uninstall.exe

📄 Changes & Commits

  • chore(release): bump version to 0.3.0 and prepare release notes
  • feat(i18n): add localization, language packs, and system-locale default (M9)
  • fix(installer): defer launch until Finish click; feat(ui): context-aware titlebar search
  • docs: remove Status column from CHANGELOG.md summary table
  • docs: expand CHANGELOG.md with detailed sub-bullets
  • docs: update CHANGELOG.md bullet format to match template
  • docs: update CHANGELOG.md to latest template format
  • docs: update CHANGELOG.md commit-link format to match template
  • docs(templates): update changelog template to match actual CHANGELOG.md format
  • docs: add CHANGELOG.md following project template
  • docs(templates): fix changelog template to custom format

Full commit history: git log --oneline v0.2.1..v0.3.0

NH Desktop v0.3.0

Choose a tag to compare

@PhantomNimbi PhantomNimbi released this 26 Sep 01:44

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 → Language switches 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:check validates every pack for missing keys, untranslated leftovers, and unknown keys, with no network access and no cost.

✅ Changed

  • ROADMAP.md gained M9 — Localization & language packs with a three-phase plan, and TODO.md was split into M9.1 (shipped core) and M9.2 (the 14 remaining packs, itemised but not started).
  • New wiki/Localization.md contributor guide documents both improving an existing pack and adding a new language, with free terminology cross-reference resources.
  • Bumped version metadata to 0.3.0 across package.json, Cargo.toml, tauri.conf.json, and Cargo.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_app command, 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 (or macos-x64 if 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 warnings
  • npm run build — adapter-static site generated successfully
  • npm run i18n:check — 3/3 language packs OK
  • npm run build:installer — produced NH Desktop-Setup-0.3.0-win-x64.exe

📄 Changes & Commits

  • chore(release): bump version to 0.3.0 and prepare release notes
  • feat(i18n): add localization, language packs, and system-locale default (M9)
  • fix(installer): defer launch until Finish click; feat(ui): context-aware titlebar search
  • docs: remove Status column from CHANGELOG.md summary table
  • docs: expand CHANGELOG.md with detailed sub-bullets
  • docs: update CHANGELOG.md bullet format to match template
  • docs: update CHANGELOG.md to latest template format
  • docs: update CHANGELOG.md commit-link format to match template
  • docs(templates): update changelog template to match actual CHANGELOG.md format
  • docs: add CHANGELOG.md following project template
  • docs(templates): fix changelog template to custom format

Full commit history: git log --oneline v0.2.1..v0.3.0