hajisensai/hibiki

Immersion language-learning suite: EPUB reader, video subtitle lookup, audiobook sync, and one-tap Anki mining. Android / Windows / macOS / iOS.

Dart

423

14,827 commits

updated Oct 13, 2026

See the code

README

Maintainer

Fushi is maintained by hajisensai. Contact: hajisensai@gmail.com.

Platform Support

PlatformStatusRendering / UI
Android✅Material Design 3
Windows✅Material Design 3
macOS✅Material Design 3
Linux🔧 (build from source)Material Design 3
iOS✅ (TestFlight)Material Design 3

Minimum Android 7.0 (API 24). Galgame voice mining is Windows-only. The languages available for dictionary lookup are determined by the imported dictionaries and Yomitan transformation tables, independently of the interface language. The iOS build is distributed through TestFlight: it omits the discovery and download features that the App Store guidelines do not allow, and its updates arrive 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 are available; iOS is installed through TestFlight. Linux has no prebuilt release yet; build it from source.

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

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.44.0 (Dart SDK >=3.5.0 <4.0.0); some upstream dependencies are vendored under third_party/ or patched by ci/apply-patches.sh — see docs/agent/build.md for details.

Tech Stack
LayerTechnology
FrameworkFlutter 3.44.0 (Dart SDK >=3.5.0 <4.0.0)
PlatformsAndroid / Windows / macOS / iOS (Material Design 3)
ReaderWebView paging engine (derived from the Hoshi Reader family)
Videomedia_kit (libmpv core)
StorageDrift (SQLite, WAL) + fushidicts (C++ FFI dictionary engine)
NLPYomitan transformation tables (multilingual lemmatization) + kana_kit (kana conversion); tokenization via fushidicts FFI
Downloadslibtorrent 2.x via a C-ABI FFI bridge
Card CreationAnkiDroid API + AnkiConnect
i18nSlang (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 (bookshelf, reader, dictionary, settings, etc.)
│   │   │   ├── reader/      # Reader WebView JS/CSS scripts
│   │   │   ├── media/       # Audiobook, subtitle parsing, reader source
│   │   │   └── models/      # Data models and state management (AppModel)
│   │   └── main.dart
│   └── android/             # Android project (manifest, native fushidicts)
├── packages/                # Internal packages + flutter_inappwebview_windows (fork) + gamepads_android_stub
├── native/                  # C++ sources: fushidicts (dictionary engine), fushi_torrent, galgame_hook
├── third_party/             # Vendored patched packages (dependency_overrides)
├── ci/                      # Build patches and integration test scripts
├── tool/                    # bootstrap / i18n_sync and other 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.

Cloud sync (Google Drive / OneDrive / Dropbox) uses user-configured OAuth credentials; WebDAV / FTP / SFTP uses user-provided server addresses and credentials; Fushi Interconnect connects directly to a user-configured address on your own network. Anki card creation communicates with AnkiDroid or a configured AnkiConnect address.

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.

LaneWhat it countsHow you get it
Debug (rolling)Successful push builds of release.ymlRolling prerelease, republished on every push
Betav<version>-beta.<seq> prereleasesManually dispatched test build
Stablev<version> releasesLatest 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

ProjectDescription
jidoujishoJapanese immersive learning tool
Hoshi ReaderiOS Japanese reader; reader paging engine reference
Hoshi Reader AndroidAndroid native Japanese reader
hoshidictsC++ dictionary engine
SasayakiAudiobook sync solution
TsubasaSubtitle-to-reference timing alignment algorithm (GPL-3.0); basis for auto-aligning downloaded subtitles to embedded tracks
YomitanDictionary format, transformation tables, and lookup experience reference
LapisAnki note type
AnkiDroidAndroid card creation integration
Ankiconnect AndroidLocal audio and AnkiDroid interaction reference
ッツ Ebook ReaderReader, statistics, and sync compatibility reference
media_kitFlutter video playback framework (libmpv core)
NiratanImmersion language learning suite for macOS

Engines and native components

ProjectDescription
LunaHookGalgame text hooking engine (vendored DLLs loaded by the injector)
MinHookInline hooking library used by the galgame injector
libtorrentBuilt-in torrent download engine
mpvlibmpv playback core behind media_kit
FFmpegMedia probing, clipping, and audio extraction
libplaceboGPU video shaders and HDR tone mapping
flutter_inappwebviewWebView engine that renders the EPUB reader
ONNX RuntimeOn-device inference for speech recognition and OCR
zstd · xxHash · libdeflate · glaze · unordered_dense · utf8proc · utfcppDictionary engine dependencies

On-device models

ProjectDescription
sherpa-onnxZipformer speech recognition model packages and VAD builds
ReazonSpeech k2-v2Japanese speech recognition model
Omnilingual ASRMultilingual CTC speech recognition model
Silero VADVoice activity detection model
manga-ocr / manga-ocr-onnxManga OCR model, trained with Manga109-s; the KV-cache decoder of the OCR speed-up pack is re-exported from the same weights (tool/manga_ocr_kv/)
comic-text-and-bubble-detectorManga text and speech bubble detection model
manga-panel-detector-yolo26nManga panel detection model, trained on Manga109-s
PP-OCRv6 small det / rec · PP-OCRv6_mangaText 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, manga-ocr 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

ProjectDescription
MihonManga source extension ecosystem
AniyomiAnime source extension ecosystem (extensions-lib 14–16 hosted by the same runtime)
M-Extension-ServerManga extension runtime for desktop
aidoku-rsManga source runtime ABI
asbplayerStreaming subtitle bridge reference for the browser extension
Shoko ServerAnime identification and scraping architecture reference
ReinaManagerGalgame library information architecture reference
AniDBAnime, episode, and file identity
TMDBSupplementary metadata and artwork
JimakuJapanese subtitle source
OpenSubtitlesSubtitle 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.

hajisensai/hibiki

Immersion language-learning suite: EPUB reader, video subtitle lookup, audiobook sync, and one-tap Anki mining. Android / Windows / macOS / iOS.

Dart

423

14,827 commits

updated Oct 13, 2026

See the code

README

Maintainer

Fushi is maintained by hajisensai. Contact: hajisensai@gmail.com.

Platform Support

PlatformStatusRendering / UI
Android✅Material Design 3
Windows✅Material Design 3
macOS✅Material Design 3
Linux🔧 (build from source)Material Design 3
iOS✅ (TestFlight)Material Design 3

Minimum Android 7.0 (API 24). Galgame voice mining is Windows-only. The languages available for dictionary lookup are determined by the imported dictionaries and Yomitan transformation tables, independently of the interface language. The iOS build is distributed through TestFlight: it omits the discovery and download features that the App Store guidelines do not allow, and its updates arrive 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 are available; iOS is installed through TestFlight. Linux has no prebuilt release yet; build it from source.

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

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.44.0 (Dart SDK >=3.5.0 <4.0.0); some upstream dependencies are vendored under third_party/ or patched by ci/apply-patches.sh — see docs/agent/build.md for details.

Tech Stack
LayerTechnology
FrameworkFlutter 3.44.0 (Dart SDK >=3.5.0 <4.0.0)
PlatformsAndroid / Windows / macOS / iOS (Material Design 3)
ReaderWebView paging engine (derived from the Hoshi Reader family)
Videomedia_kit (libmpv core)
StorageDrift (SQLite, WAL) + fushidicts (C++ FFI dictionary engine)
NLPYomitan transformation tables (multilingual lemmatization) + kana_kit (kana conversion); tokenization via fushidicts FFI
Downloadslibtorrent 2.x via a C-ABI FFI bridge
Card CreationAnkiDroid API + AnkiConnect
i18nSlang (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 (bookshelf, reader, dictionary, settings, etc.)
│   │   │   ├── reader/      # Reader WebView JS/CSS scripts
│   │   │   ├── media/       # Audiobook, subtitle parsing, reader source
│   │   │   └── models/      # Data models and state management (AppModel)
│   │   └── main.dart
│   └── android/             # Android project (manifest, native fushidicts)
├── packages/                # Internal packages + flutter_inappwebview_windows (fork) + gamepads_android_stub
├── native/                  # C++ sources: fushidicts (dictionary engine), fushi_torrent, galgame_hook
├── third_party/             # Vendored patched packages (dependency_overrides)
├── ci/                      # Build patches and integration test scripts
├── tool/                    # bootstrap / i18n_sync and other 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.

Cloud sync (Google Drive / OneDrive / Dropbox) uses user-configured OAuth credentials; WebDAV / FTP / SFTP uses user-provided server addresses and credentials; Fushi Interconnect connects directly to a user-configured address on your own network. Anki card creation communicates with AnkiDroid or a configured AnkiConnect address.

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.

LaneWhat it countsHow you get it
Debug (rolling)Successful push builds of release.ymlRolling prerelease, republished on every push
Betav<version>-beta.<seq> prereleasesManually dispatched test build
Stablev<version> releasesLatest 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

ProjectDescription
jidoujishoJapanese immersive learning tool
Hoshi ReaderiOS Japanese reader; reader paging engine reference
Hoshi Reader AndroidAndroid native Japanese reader
hoshidictsC++ dictionary engine
SasayakiAudiobook sync solution
TsubasaSubtitle-to-reference timing alignment algorithm (GPL-3.0); basis for auto-aligning downloaded subtitles to embedded tracks
YomitanDictionary format, transformation tables, and lookup experience reference
LapisAnki note type
AnkiDroidAndroid card creation integration
Ankiconnect AndroidLocal audio and AnkiDroid interaction reference
ッツ Ebook ReaderReader, statistics, and sync compatibility reference
media_kitFlutter video playback framework (libmpv core)
NiratanImmersion language learning suite for macOS

Engines and native components

ProjectDescription
LunaHookGalgame text hooking engine (vendored DLLs loaded by the injector)
MinHookInline hooking library used by the galgame injector
libtorrentBuilt-in torrent download engine
mpvlibmpv playback core behind media_kit
FFmpegMedia probing, clipping, and audio extraction
libplaceboGPU video shaders and HDR tone mapping
flutter_inappwebviewWebView engine that renders the EPUB reader
ONNX RuntimeOn-device inference for speech recognition and OCR
zstd · xxHash · libdeflate · glaze · unordered_dense · utf8proc · utfcppDictionary engine dependencies

On-device models

ProjectDescription
sherpa-onnxZipformer speech recognition model packages and VAD builds
ReazonSpeech k2-v2Japanese speech recognition model
Omnilingual ASRMultilingual CTC speech recognition model
Silero VADVoice activity detection model
manga-ocr / manga-ocr-onnxManga OCR model, trained with Manga109-s; the KV-cache decoder of the OCR speed-up pack is re-exported from the same weights (tool/manga_ocr_kv/)
comic-text-and-bubble-detectorManga text and speech bubble detection model
manga-panel-detector-yolo26nManga panel detection model, trained on Manga109-s
PP-OCRv6 small det / rec · PP-OCRv6_mangaText 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, manga-ocr 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

ProjectDescription
MihonManga source extension ecosystem
AniyomiAnime source extension ecosystem (extensions-lib 14–16 hosted by the same runtime)
M-Extension-ServerManga extension runtime for desktop
aidoku-rsManga source runtime ABI
asbplayerStreaming subtitle bridge reference for the browser extension
Shoko ServerAnime identification and scraping architecture reference
ReinaManagerGalgame library information architecture reference
AniDBAnime, episode, and file identity
TMDBSupplementary metadata and artwork
JimakuJapanese subtitle source
OpenSubtitlesSubtitle 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.