Fushi README

The project's README from github.com/hajisensai/Fushi. As one markdown file: README.md.

Fushi

Fushi logo

Platform License Flutter

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español | Français | Deutsch | Português | Русский | Tiếng Việt | ภาษาไทย | Bahasa Indonesia | Italiano | Nederlands | Türkçe | العربية

fushi.moe

Download Latest Join our Discord

Platform Support

Platform Status Notes
Android ✅ Android 7.0 (API 24) or later
Windows ✅ Galgame text and voice hooking is Windows-only
macOS ✅ Apple Silicon only; Intel Macs are not supported
iOS ✅ (TestFlight) No discovery, online sources, or download center (App Store guidelines)
Linux 🔧 Build from source No prebuilt release yet; the EPUB reader needs WPE WebKit
Fushi Server 🧪 Beta (fushi-server) Headless host for Linux / Windows / macOS with a web UI — see packages/fushi_server

Design system — every platform defaults to Material 3 Expressive; a Cupertino (Apple-style) design system can be selected in Settings › Appearance › Design system; with Cupertino, the window background uses Mica on Windows 11 and vibrancy on macOS (unless the system's reduce-transparency or high-contrast setting is on).

The languages available for dictionary lookup are determined by the imported dictionaries and Yomitan transformation tables, independently of the interface language. iOS updates arrive through TestFlight a few days later than on the other platforms.

Interface Languages (17)

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Français · Deutsch · Português (Brasil) · Русский · Tiếng Việt · ภาษาไทย · Bahasa Indonesia · Italiano · Nederlands · Türkçe · العربية

Installation

Download the latest release from the Fushi website — Android APK, Windows installer, and macOS builds (Apple Silicon only; Intel Macs are not supported) are available; iOS is installed through TestFlight. Linux has no prebuilt app release yet; build it from source. The headless Fushi Server is released separately on hajisensai/fushi-server.

Requires Android 7.0 (API 24) or higher.

Building

One-command prep (flutter pub get + apply patches), then build:

# From the repository root
bash tool/bootstrap.sh          # Windows PowerShell: .\tool\bootstrap.ps1

cd fushi
# Android
flutter build apk --release --target-platform android-arm64 --split-per-abi
# Desktop
flutter build windows --release
flutter build macos --release
flutter build linux --release
# iOS
flutter build ipa --release

# Headless server (from packages/fushi_server; use `dart build cli`, not `dart compile exe`)
dart build cli

tool/bootstrap.sh / tool/bootstrap.ps1 collapse flutter pub get and ci/apply-patches.sh into a single command. This project is locked to Flutter 3.47.6 (Dart SDK >=3.8.0 <4.0.0); earlier Flutter versions cannot build it because Material and Cupertino are consumed as the material_ui / cupertino_ui packages. Some upstream dependencies are vendored under third_party/ or patched by ci/apply-patches.sh — see docs/agent/build.md for details, including the Linux desktop build dependencies.

Tech Stack
Layer Technology
Framework Flutter 3.47.6 (Dart SDK >=3.8.0 <4.0.0), Riverpod
Platforms Android / Windows / macOS / iOS / Linux, plus a headless server
UI material_ui (Material 3 Expressive) / cupertino_ui (Cupertino)
Reader WebView paging engine (derived from the Hoshi Reader family)
Video media_kit (libmpv core) + libplacebo
Storage Drift (SQLite, WAL) + fushidicts (C++ FFI dictionary engine)
NLP Yomitan transformation tables (multilingual lemmatization) + kana_kit (kana conversion); tokenization via fushidicts FFI
On-device AI ONNX Runtime for speech recognition (subtitle generation) and manga OCR; algorithms live in fushi-subtitles
Downloads libtorrent 2.x via a C-ABI FFI bridge (external qBittorrent as fallback)
Sync Cloud backends + Fushi Interconnect (LAN, remote addresses, and an iroh P2P tunnel)
Shared engine fushi_engine — pure-Dart core shared by the app and Fushi Server
Card Creation AnkiDroid API + AnkiConnect
i18n Slang (17 languages)
Project Structure
Fushi/                      # Repository root (Melos workspace: fushi_workspace)
├── fushi/                  # Flutter app main directory
│   ├── lib/
│   │   ├── i18n/            # Internationalization (17 languages, Slang)
│   │   ├── src/
│   │   │   ├── pages/       # Pages (library pages, reader, video player, settings, etc.)
│   │   │   ├── reader/      # Reader WebView JS/CSS scripts
│   │   │   ├── media/       # Books, manga, video, audiobooks, online sources
│   │   │   ├── lookup/      # Dictionary lookup popups and overlays
│   │   │   ├── mining/      # Card creation (incl. galgame mining)
│   │   │   ├── sync/        # Cloud sync, Interconnect, media servers
│   │   │   └── models/      # Data models and state management (AppModel)
│   │   └── main.dart
│   └── android/             # Android project
├── packages/                # Dart packages
│   ├── fushi_core/          #   Database schema, preferences
│   ├── fushi_engine/        #   Pure-Dart engine shared with the server
│   ├── fushi_server/        #   Headless server CLI + web UI
│   ├── fushi_cli/           #   Desktop command-line client
│   ├── fushi_dictionary/    #   Dictionary engine bindings and importers
│   ├── fushi_anki/ · fushi_audio/ · fushi_platform/ · fushi_srs/
│   ├── fushi_torrent/ · fushi_p2p/   # libtorrent / iroh FFI bindings
│   └── …                    #   Vendored forks (inappwebview Windows/Linux, gamepads)
├── native/                  # Native sources: fushidicts, fushi_torrent, fushi_p2p (Rust), galgame_hook, …
├── services/                # Log collector and leaderboard backends (deployed separately)
├── tools/browser-extension/ # Browser lookup extension
├── third_party/             # Vendored patched packages (dependency_overrides)
├── ci/                      # Build patches and CI scripts
├── tool/                    # bootstrap / setup_worktree / bug tracker scripts
└── docs/                    # Development documentation (incl. docs/agent/ operations manual)

Video import supports grouping by work or folder. See the video workflow and MAL/TMDB metadata with AniDB file hashing for matching and background tasks.

Optional online service setup explains bundled application identities, personal credentials, and the dismissible video setup reminder.

Privacy & Data

Fushi stores imported books, dictionaries, fonts, audiobook data, videos, reading progress, highlights, statistics, and settings in the app's local storage.

Development Activity

Development Activity

Day-to-day work lands on develop; main only receives release merges. The chart is displayed here on main but is generated from develop, so it reflects actual development rather than merge traffic.

The three lanes are the update channels the app itself offers, and each is scaled to its own peak — debug builds outnumber stable releases by two orders of magnitude, so a shared scale would flatten the other two lanes to nothing.

Lane What it counts How you get it
Debug (rolling) Successful push builds of release.yml Rolling prerelease, republished on every push
Beta v<version>-beta.<seq> prereleases Manually dispatched test build
Stable v<version> releases Latest release

The chart above is generated inside this repository (no third-party service) and refreshed daily by the Update Dev Activity Chart workflow.

Star History

GitHub stars

Star History

The chart above is generated inside this repository (no third-party service) and refreshed daily by the Update Star History workflow.

Acknowledgments

Fushi builds on the following projects and ecosystem:

Learning tools and prior art

Project Description
jidoujisho Japanese immersive learning tool
Hoshi Reader iOS Japanese reader; reader paging engine reference
Hoshi Reader Android Android native Japanese reader
hoshidicts C++ dictionary engine
Sasayaki Audiobook sync solution
Tsubasa Subtitle-to-reference timing alignment algorithm (GPL-3.0); basis for auto-aligning downloaded subtitles to embedded tracks
Yomitan Dictionary format, transformation tables, and lookup experience reference
Lapis Anki note type
AnkiDroid Android card creation integration
Ankiconnect Android Local audio and AnkiDroid interaction reference
ッツ Ebook Reader Reader, statistics, and sync compatibility reference
media_kit Flutter video playback framework (libmpv core)
Niratan Immersion language learning suite for macOS

Engines and native components

Project Description
LunaHook Galgame text hooking engine (vendored DLLs loaded by the injector)
MinHook Inline hooking library used by the galgame injector
libtorrent Built-in torrent download engine
mpv libmpv playback core behind media_kit
FFmpeg Media probing, clipping, and audio extraction
libplacebo GPU video shaders and HDR tone mapping
flutter_inappwebview WebView engine that renders the EPUB reader
ONNX Runtime On-device inference for speech recognition and OCR
iroh P2P tunnel for remote Fushi Interconnect connections
zstd · xxHash · libdeflate · glaze · unordered_dense · utf8proc · utfcpp Dictionary engine dependencies

On-device models

Project Description
sherpa-onnx Zipformer speech recognition model packages and VAD builds
ReazonSpeech k2-v2 Japanese speech recognition model
Parakeet TDT-CTC 0.6B ja Japanese speech recognition model
Kitsune Japanese speech recognition model (CC BY-NC 4.0, downloaded from its Hugging Face repository)
Omnilingual ASR Multilingual CTC speech recognition model
Silero VAD Voice activity detection model
comic-text-and-bubble-detector Manga text and speech bubble detection model
manga-panel-detector-yolo26n Manga panel detection model, trained on Manga109-s
PP-OCRv6 small det / rec · PP-OCRv6_manga Text line detection and recognition; the manga-tuned rec (trained with Manga109-s and AnimeText) powers the per-column CTC local OCR model

The manga panel detection model and PP-OCRv6_manga are trained with the Manga109-s dataset (Matsui et al. 2017; Aizawa et al. 2020), whose terms require this use of the dataset to be clearly indicated. PP-OCRv6_manga (Apache-2.0) is additionally trained with the AnimeText dataset, which is licensed CC BY-NC-SA 4.0; the app downloads that model from its Hugging Face repository and does not redistribute it.

Content sources and integrations

Project Description
Mihon Manga source extension ecosystem
Aniyomi Anime source extension ecosystem (extensions-lib 14–16 hosted by the same runtime)
M-Extension-Server Manga extension runtime for desktop (vendored, MPL-2.0)
Mangayomi Mihon / Aniyomi extension adaptation reference
LNReader Light novel source plugin ecosystem
Jellyfin · Emby · Plex Media servers browsable from the video library
asbplayer Streaming subtitle bridge reference for the browser extension
Shoko Server Anime identification and scraping architecture reference
ReinaManager Galgame library information architecture reference
AniDB Anime, episode, and file identity
MyAnimeList (via Jikan) Anime metadata
TMDB Supplementary metadata and artwork
VNDB Visual novel metadata
Jimaku Japanese subtitle source
OpenSubtitles Subtitle source

This application uses TMDB and the TMDB APIs but is not endorsed, certified, or otherwise approved by TMDB.

License

Distributed under the GNU General Public License v3.0. See LICENSE for details.

Maintainer

Fushi is maintained by hajisensai. Website: fushi.moe. Contact: [email protected].


English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español | Français | Deutsch | Português | Русский | Tiếng Việt | ภาษาไทย | Bahasa Indonesia | Italiano | Nederlands | Türkçe | العربية

Fushi (hajisensai/Fushi)

Searching Database…

555 ·GitHub

Design system — every platform defaults to Material 3 Expressive; a Cupertino (Apple-style) design system can be selected in Settings › Appearance › Design system; with Cupertino, the window background uses Mica on Windows 11 and vibrancy on macOS (unless the system's…

Creator
hajisensai
Size
2.6 GB
Stars
555
Age
6mo
Commits · 90 Days