# Fanqie-novel-Downloader: a Rust reader whose updater refuses to cross package formats

> Fanqie-novel-Downloader is a Rust and Tauri v2 client for the Fanqie free novel catalogue that reads online, caches chapters offline and exports TXT or EPUB on Windows, Linux, macOS, Android and iOS. Its updater will not switch a portable install into an installer, and the three newest published tags are unsigned builds.

**POf-L/Fanqie-novel-Downloader** — Fanqie Novel downloader, supporting Windows, macOS, Linux and Android.

- Repository: https://github.com/POf-L/Fanqie-novel-Downloader
- Stars: 2,610 · Forks: 403
- Language: Python
- License: not declared
- Published: 2026-10-13 · Updated: 2026-10-13 · Language: en
- Canonical page: https://hysenlabs.com/projects/pof-l-fanqie-novel-downloader

## The repository index says Python, the code is Rust and Tauri

GitHub's language breakdown puts Python first for this repository, yet the README builds the client on Rust with Tauri v2 and states that no Go sidecar is involved. Contributors who arrive expecting a pip install line will not find one. Top-level entries include `.editorconfig`, `.github/`, `CONTRIBUTING.md`, `SECURITY.md`, `docs/`, `scripts/` and `tests/`, which reads like a compiled project carrying its own test suite rather than a folder of scripts.

The tool itself is a reader with an exporter attached. Search by keyword, a Fanqie link or a book ID, read online, keep a shelf, then export TXT or EPUB. Desktop and mobile share one reader interface over one Rust backend. The interface images come from a Windows x64 test build made against an isolated application data directory, so no shelf, account, cookie or local path appears in them. The last push landed on 2026-09-28, and the interface ships in Chinese, English and Russian.

## Installer, portable and unsigned builds update on separate channels

Windows ships two forms that never convert into each other. The installer runs an NSIS package and keeps an install directory plus uninstall entry, while the portable build overwrites its own exe on exit and restarts from the same path, creating no install directory, no shortcut and no uninstall item. Detection is deliberately narrow: a normal install directory matches only `-nsis`, and a bare portable exe, or a copy dropped into some other folder, matches only `-portable`. No exact attachment or signature means the client shows the download page rather than guessing.

Linux repeats the pattern with DEB and AppImage, taking the entry that matches both the running format and the CPU architecture, and degrading to a manual download instead of crossing types. macOS accepts only the same-architecture `-app` entry. Android and iOS receive no automatic update at all, so the app reports that a newer version exists and you fetch it yourself. Unsigned macOS packages without `latest.json` metadata still need a manual overwrite.

One detail a quick read misses: the three newest published tags are all unsigned builds, `unsigned-v2026.9.28-544-r712`, `unsigned-v2026.9.28-1707-r715` and `unsigned-v2026.9.27-216-r711`, two of them on the same calendar day. The unsigned channel is the ordinary path here rather than an exception. Older portable Windows builds need one migration step too: fetch the current `windows-*-portable.exe` for your architecture, close the program and overwrite the old file. Covering a portable install with `setup.exe` is not a valid shortcut.

## Gatekeeper, WebKitGTK 4.1 and the macOS packages with no signature seal

A damaged-app warning on macOS comes from Gatekeeper reacting to a quarantined build without Apple notarisation, not from a bad download. Confirm the architecture, check the SHA-256 list, then open Privacy and Security in System Settings and choose Open Anyway. Turning Gatekeeper off globally is not required, and only builds whose notes ask for it need the quarantine attribute dropped:

```bash
xattr -dr com.apple.quarantine "/Applications/Fanqie Novel Downloader.app"
```

That manual step exists for packages dated `2026.8.18` and earlier, which carry no signature seal at all, so the system never offers the Open Anyway button. Builds after that one use an ad-hoc signature and the button works.

Linux carries its own precondition: the desktop shell needs WebKitGTK 4.1, package names differ between distributions, and an AppImage will not start until it has the execute bit.

```bash
chmod +x FanqieNovelDownloader-tauri-*.AppImage
```

Windows installers ship without an Authenticode publisher certificate, so an unknown publisher notice or a SmartScreen prompt is expected behaviour. The Minisign signatures attached to updater packages prove that an update came from this project and was not altered along the way, which is a different guarantee from the verified publisher badge Windows displays.

## Picking the asset for your CPU, then running the first download

Take the attachment that matches the processor, not the one that matches habit. Most Windows machines want `windows-*-setup.exe` for a normal install or `windows-*-portable.exe` for none, and Windows on ARM has its own ARM64 build. Debian and Ubuntu take the DEB, other distributions can run the AppImage. Android users on version 7.0 and up, API 24 and above, should prefer `arm64-v8a.apk`, or `universal.apk` when the architecture is unclear, while an AAB is a store upload artefact and cannot be opened like an APK. Apple Silicon takes arm64, Intel takes x64, usually from a DMG. iOS ships an unsigned IPA that needs AltStore or Sideloadly plus a trust step under device management settings.

```bash
windows-*-setup.exe
windows-*-portable.exe
.deb
.AppImage
arm64-v8a.apk
universal.apk
```

The first run takes minutes. Open Settings, choose the save directory and the TXT or EPUB format, and both apply without a manual save. Search by keyword, paste a Fanqie link or type a book ID. The detail page offers online reading, offline caching, adding to the shelf, a whole-book download or a chapter range, and every card in a shelf list can continue reading, start a download or run a clean up for that book. The task panel accepts pause, resume, cancel and a retry aimed at failed or missing chapters, and a finished cache stays readable with the network off.

Batch import is the part with hard edges. A list holds up to 10,000 books once duplicates are removed, and a single task walks it in order rather than starting thousands of fetches at once; an earlier build turned away anything past 500 books in the background while the interface reported nothing. A limit breach, an invalid folder or a task clash appears in the import dialog and the input survives, and unfinished work can be carried on from History after you quit.

## Cache clearing, offline deletion and export history touch different data

Four clean-up actions exist and none of them overlaps. Clearing temporary cache drops only the detail, catalog and chapter data cached for the running session, which lasts about 10 minutes and disappears when the app closes; it frees no offline library space. Deleting offline text removes `<app-data>/offline-books/<book-id>` for that book and invalidates its temporary cache, while the shelf entry, reading progress, reading time and any exported TXT or EPUB survive. Cancel the caching task first, because deleting while a write is in flight is a race the interface does not arbitrate.

The history page mirrors that split. Delete selected documents removes the chosen TXT or EPUB files and then the matching rows, cleans up rows whose files have already vanished, and refuses to touch directories, symbolic links or anything that is not TXT or EPUB. Clear records empties the in-app list and leaves every file on disk alone, which makes it the safe choice when you want the rows gone and the exports kept. Signing out of an official account draws the same line: local credentials and the official shelf cache go, local progress, local reading time, the shelf and cached text stay.

## Settings save themselves and diagnostics redact cookies and signatures

Settings carries no manual save step. Toggles, options and directory pickers write immediately, and a filename format is committed once you stop typing for 0.5 seconds or leave the field. The header shows waiting, saving, saved or failed. Invalid filename formats are not submitted at all, so the current text stays where it is and a retry button appears when a save fails. Where the local WebView or browser store is available, a draft pending at a fast close or refresh is recovered and saved again on the next attempt. Startup pages take effect on the following launch, and rapid edits plus a background refresh do not overwrite a change that has not landed yet.

Diagnostic logging is off by default. Switching it on in Settings records interface parameters, signatures, cookies and book identifiers in redacted form, which matters because bug reports ask for the complete redacted text. Anything posted in public should still have tokens, signatures, cookies, device identifiers and personal data stripped by hand.

## Auto-reading scrolls across the chapter boundary and holds position

The auto-reading panel exposes a speed and a start button, then collapses out of the way; while it runs, the bottom bar entry shows the active state and a tap there pauses for good. Slow, standard and fast are the three speeds. When a chapter runs out, the text scrolls straight into the next one with no page break and no reset of the scroll position. Press and hold the text to pause, let go of the finger or the mouse button, and it resumes on its own after 3 seconds.

Long catalogs behave as well. Collapsing or expanding the table of contents keeps the position and focus of the node you were working with instead of snapping back to the current chapter, which is what makes a several-thousand-entry list usable. Chapter switching, reading theme, font size and progress recording sit beside an immersive mode that is off by default. Android and iOS surface export, share and system file access only where the platform allows it, and the Android top bar keeps clear of the status bar and the safe area.

## Filing a bug requires a public star and a structured form

The issue tracker has a gate that catches newcomers out. You must star the project publicly before opening an issue or reopening a closed one, and an automated check verifies it. A failed check sends a polite reminder and keeps the issue open through a 10-minute grace period; a star that goes up inside that window removes the reminder and the issue stays open, and past the window the issue closes as `not planned`. Blank issues are refused outright, and the structured form collects version, platform, architecture and reproduction steps.

On persistent timeouts, confirm you run the latest stable build and rule out a proxy, private DNS, a firewall or a flaky connection before reporting. When a request times out or the upstream interface is briefly unavailable, wait before retrying instead of firing many requests in a short window. If an import loses its connection and no confirmation ever appears, open the task list first, then decide whether to retry.

## Conclusion

A judgement: this is a reader with an exporter attached, and it fits people who already read Fanqie's free catalogue and want one book as TXT or EPUB on their own machine. It does not fit an unattended archive, because the README documents no command line or headless mode and every download is driven from a task list inside a window. Check the unsigned update channel against your platform signing rules, verify the SHA-256 list, match your CPU to the asset, and remember that an older portable Windows build needs one manual overwrite before in-place updates work.

## FAQ

### Does Fanqie-novel-Downloader update across package formats automatically?

No. The updater only selects an entry matching both the running package type and the CPU architecture, so a Windows portable install stays portable, a DEB install stays a DEB and an AppImage never converts. When no exact attachment or signature matches, it falls back to the download page rather than offering another format. Android and iOS receive no automatic update at all and only report that a newer version exists.

### What is the difference between clearing temporary cache and deleting offline text in Fanqie-novel-Downloader?

Temporary cache covers detail pages, catalogs and chapter text for the running session, is kept for about 10 minutes and frees no offline library space. Deleting offline text removes `<app-data>/offline-books/<book-id>`, releases that book's space and invalidates its temporary cache, while keeping the shelf record, reading progress, reading time and exported TXT or EPUB.

### How many books can a Fanqie-novel-Downloader batch import handle?

The documented ceiling is 10,000 books per import once duplicates are removed, and each list runs as one task worked in order. Over-limit input, an invalid folder or a clashing task is reported inside the import dialog instead of failing quietly, and a list left part finished can be picked up again from the task list or from History.

### Why does macOS report the Fanqie-novel-Downloader app as damaged?

That is Gatekeeper reacting to a quarantined build without Apple notarisation rather than a corrupt file. Check the SHA-256 first and then use Open Anyway under Privacy and Security. Packages dated 2026.8.18 or earlier carry no signature seal, so those builds need the quarantine attribute removed for this one application only, never with Gatekeeper disabled globally.

### Can I submit a bug report to Fanqie-novel-Downloader without starring it?

No. Public stars are verified by an automated check before an issue is accepted, and an issue that is created or reopened closes as `not planned` if the star does not appear within a 10-minute grace period. Blank issues are refused, and the structured form collects version, platform, architecture and reproduction steps.

## Sources

- [Issues](https://github.com/POf-L/Fanqie-novel-Downloader/issues)
- [POf-L/Fanqie-novel-Downloader on GitHub](https://github.com/POf-L/Fanqie-novel-Downloader)
- [README](https://github.com/POf-L/Fanqie-novel-Downloader/blob/main/README.md)
- [Releases](https://github.com/POf-L/Fanqie-novel-Downloader/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/pof-l-fanqie-novel-downloader
