Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Word Hunter logo

Word Hunter

Read real texts. Save words with context. Review them on your terms.

Website · Download · First 5 minutes · Feature tour · Sync and backups

Word Hunter is a local-first reader and vocabulary trainer for Windows, macOS, Linux, and Android. The Android app is called Word Hunter Pocket.

The project is built around one idea: read real texts, click words you want to learn, keep the context, and review them later without losing control of your data.

Tip

New here? Install the current stable release, open a text, and click an unfamiliar word. No account or cloud setup is required.

Download and install

The recommended version for new users is Word Hunter 1.0.8. Choose your platform below. All direct downloads come from the official GitHub Release.

Version 1.0.8 makes vocabulary synchronization reliable across devices and starts the Android app substantially faster.

Platform Recommended download Other supported option
Windows Installer (.exe) Portable ZIP
Android Word Hunter Pocket APK Android may ask you to allow installation from your browser or file manager.
macOS Apple Silicon DMG Intel Macs and iOS are not supported.
Linux Flatpak bundle AppImage · DEB · Homebrew tap
Command-line installation
# Windows — Scoop
scoop bucket add wordhunter https://github.com/Ironship/scoop-wordhunter
scoop install wordhunter/wordhunter
# Linux x86_64 — project-maintained Homebrew tap
brew install --cask Ironship/wordhunter/wordhunter

# Linux — install a downloaded Flatpak bundle
flatpak install --user ./WordHunter.flatpak

# Linux — run a downloaded AppImage
chmod +x WordHunter-1.0.8-x86_64.AppImage
./WordHunter-1.0.8-x86_64.AppImage

# Debian/Ubuntu — install the downloaded DEB
sudo apt install ./word-hunter_1.0.8_amd64.deb
First launch on macOS

The DMG is signed ad hoc and is not notarized with an Apple Developer ID:

  1. Open the DMG and drag Word Hunter to Applications.
  2. Try to open Word Hunter once.
  3. Open System Settings → Privacy & Security.
  4. In Security, choose Open Anyway and confirm the launch.

First 5 minutes

  1. Choose the language you are learning. Each language gets its own library and vocabulary profile.
  2. Add something to read: paste text, import a file, open a public-domain book, or add a supported URL.
  3. Click or tap an unfamiliar word. Save its status, translation, note, or example sentence in the word panel.
  4. Continue reading. Your saved words remain highlighted in context.
  5. Open Word Base to manage vocabulary or Flashcards to review due words.

You can start locally and configure sync later. Before testing sync or moving data between devices, create a JSON backup from the app.

Why Word Hunter

  • Read pasted text, PDFs, EPUB files, subtitles, URLs, and built-in books.
  • Keep vocabulary status, translation, notes, examples, and source context in one record.
  • Review with spaced repetition, pronunciation, keyboard shortcuts, and TTS.
  • Use OCR and PDF text layers locally in desktop packages.
  • Read and review on Android with the Pocket interface.
  • Optionally synchronize books, vocabulary, settings, and progress through a folder you choose.

Your data stays yours

  • No account is required.
  • Books, vocabulary, progress, and settings are stored locally.
  • Sync is optional and uses a folder selected by you.
  • Online requests happen only when you use an online feature such as catalog discovery, dictionary links, translation, or online speech.

Release status

Upgrading an older installation
  • Versions older than 1.0.0 predate the current storage and sync compatibility baseline. Export a JSON backup before upgrading.
  • If Android reports an incompatible signature when moving from an early 1.0.7 test APK, export a backup before uninstalling. Uninstalling an Android app clears its local app data.

Supported learning languages

Word Hunter keeps a separate library and vocabulary profile for each learning language:

English flag English German flag German Spanish flag Spanish
Italian flag Italian French flag French Polish flag Polish
Ukrainian flag Ukrainian Russian flag Russian Japanese flag Japanese
Chinese flag Chinese (Simplified) Latin flag artwork Latin Ancient Greek flag artwork Ancient Greek
Neutral globe icon Other A custom-language profile with configurable source and target translation codes.

Translation, TTS, catalog, and offline-model availability can vary by language and provider. The named languages include built-in original stories and A1-B2 course books; the Other profile has none. Set its source and target language codes under Translator & Dictionary settings before using automatic translation.

Feature tour

Themes

Settings offers Familiar, Alternative familiar, and Word Hunter Classic themes. Familiar is the default and uses a cool blue palette. Alternative familiar uses aubergine and orange. Both follow the system light/dark preference; Classic preserves the previous Word Hunter appearance and also provides explicit light and dark variants. Existing theme preferences are migrated without changing books, vocabulary, or reading progress.

Library, Import, and OCR

The library collects imported texts, public-domain books, OCR/PDF entries, and reading progress in one place. Desktop keeps the full import workflow visible, including pasted text, ebooks, subtitles, and scanned PDF/OCR imports. Desktop packages use the bundled local OCR runtime and models; users do not need to install an OCR engine or language pack. Pocket uses Android's application and PDF capabilities locally. Documents are not sent to a new remote OCR service. OCR can be cancelled, and recognized page text can be corrected while reading without replacing the original PDF or page overlay.

Encrypted, corrupt, unsupported, or empty PDFs can still be rejected. A damaged desktop package with a missing OCR runner or model reports that packaging/runtime problem instead of silently returning an incomplete OCR result.

Word Hunter desktop library with import panel

Word Hunter Pocket shows the same kind of library in a phone layout. Pocket is optimized for reading and review on Android, with a compact card list, large touch targets, collapsible search filters, and a side import drawer for lighter mobile imports.

"{953014A0-B7A5-4189-9D98-CF6A9BB5C940}

Reader, Highlighting, and Word Panel

The reader highlights vocabulary by status directly in the text. Clicking a word opens the word panel with status buttons, translation, notes, context, dictionary actions, TTS, image hints, and in-text review controls.

Word Hunter desktop reader with highlighted words and word panel

Pocket keeps the same reading model, but changes the shape for mobile: bottom navigation, touch selection, a compact toolbar, and a bottom sheet-style word panel.

Word Hunter Pocket reader with word panel

Word Base

Every saved word keeps its status, translation, example sentence, review data, and source context. The word base is the maintenance view for searching, filtering, editing, exporting, and cleaning vocabulary.

Word Hunter vocabulary list with statuses, translations, examples, and actions

Flashcards and SRS

Flashcards use the same vocabulary records as the reader. Word Hunter supports spaced repetition, due queues, review history, pronunciation, dictionary actions, reverse cards, and rating buttons.

Word Hunter desktop flashcard review with SRS queue

Pocket keeps flashcard review usable on a phone, with the card, answer controls, review heatmap, and queue adapted to the narrow screen.

Word Hunter Pocket flashcard review

Graphs and Progress

The graphs view turns vocabulary history into visible progress: total cards, due reviews, mature cards, active review cards, heatmap activity, and vocabulary growth levels.

Word Hunter desktop graphs with vocabulary progress and heatmap

The same progress view is available in Pocket, so review activity and vocabulary growth remain visible away from the desktop.

Word Hunter Pocket graphs with vocabulary progress and heatmap

Desktop and Pocket Sync

Word Hunter is local-first. Desktop and Android can share custom texts, user books, vocabulary, settings, progress, and imported reading materials through a user-selected sync folder. The screenshots below show a shared demo library with vocabulary progress rendered on desktop and Pocket.

Desktop Pocket
Word Hunter desktop library with synchronized learning data Word Hunter Pocket library with synchronized learning data

Pocket intentionally keeps heavy import work lighter than desktop. Larger conversion and OCR work is best done on desktop, then moved to Pocket through sync.

Sync and backups

Word Hunter does not require an account or a central server. The app stores data locally and can copy changes through a folder chosen by the user. Windows, Flatpak, and AppImage builds bundle Syncthing 2.1.0 as a separate MPL-2.0 executable. The Debian package uses the distribution-provided syncthing dependency and deliberately leaves /usr/bin/syncthing untouched. Android shares a folder with a separately installed Syncthing client.

  • Desktop can use a local data folder and an optional sync folder.
  • Android keeps local data inside the app and lets the user pick a separate sync folder.
  • Sync transfers books, vocabulary, settings, progress, and imported reading materials.
  • Deleted books and words stay deleted after sync instead of returning from an older device copy.
  • Concurrent changes to the same record are retained as visible conflicts rather than being silently discarded; the Settings sync panel allows the retained version to be reviewed and resolved.
  • Cloud folders can be delayed. When using Google Drive or similar providers, use a dedicated Word Hunter folder and wait until cloud upload/download is complete before opening another device.
  • Full backup export is useful before testing new sync setups.

For contributors

End users do not need any of the tools below. This section is for contributors who want to validate or package the application from source.

Requirements

  • Rust 1.88 or newer with Cargo.
  • Node.js 22 or newer for frontend and packaging validation tests.
  • npm dependencies installed with npm ci for CSS checks and the TypeScript build.
  • Tauri 2 native prerequisites for the desktop platform being built.
  • PowerShell when using the bundled scripts\build.bat helper on Windows.
  • Android SDK, NDK, and JDK for Android Pocket builds.
  • Apple Silicon macOS for the DMG build.
  • Python 3 and curl when refreshing or checking Flatpak Cargo sources.
  • OCR runtime/model assets only when preparing desktop OCR support.

Common commands

Install the pinned validation dependencies after checkout:

npm ci --ignore-scripts --no-audit --no-fund

Then run the full repository gate:

./scripts/validate.sh

It runs git diff --check, JSON/i18n parsing, Stylelint, a deterministic TypeScript frontend build and type check, frontend tests against dist/web, Flatpak cargo-sources.json drift detection, Rust formatting, Rust tests for the main Tauri crate and OCR runner, and blocking cargo clippy checks by default.

.\scripts\build.bat test         # run shared, desktop, and Android frontend tests
.\scripts\build.bat installer    # build outputs\Word.Hunter.Setup.exe
.\scripts\build.bat portable     # build outputs\Word.Hunter.portable.zip
.\scripts\build.bat apk          # build APK; WH_ANDROID_* signs an update-compatible package
.\scripts\build.bat aab          # build outputs\Word.Hunter.Pocket.release.aab
.\scripts\build.bat play         # build signed Google Play AAB
.\scripts\build.bat ocr-runtime  # prepare bundled native PaddleOCR runtime

On Apple Silicon macOS, build and validate the DMG with:

./scripts/build-macos.sh

It writes outputs/WordHunter-<version>-aarch64.dmg. The current recipe uses an ad-hoc signature, so macOS may require approval in Privacy & Security after download. A Developer ID certificate and notarization are still required for a warning-free public install.

Rust backend tests can also be run directly:

npm run build:frontend
cargo test --manifest-path src-tauri\Cargo.toml

Android Pocket release builds derive versionName and monotonic versionCode from stable or -rc.N SemVer values in src-tauri/tauri.conf.json. Stable builds sort after every release candidate for the same version; see docs/release-validation.md before changing the release version scheme.

Flatpak

Linux Flatpak packaging is available through flatpak-builder:

./scripts/build-flatpak.sh
./scripts/install-flatpak-local.sh

The script installs missing Flatpak SDK dependencies from Flathub when needed, builds the manifest in com.wordhunter.app.yml, and writes outputs/WordHunter.flatpak. Install from the generated local repo for desktop testing so software stores can read the local AppStream metadata and icons. Word Hunter uses the GNOME Flatpak runtime because Tauri depends on GTK/WebKitGTK; on KDE Plasma the script also installs the Breeze GTK theme extension when needed so the GTK/WebKit window follows KDE styling. The Flatpak disables WebKitGTK's DMABUF renderer to avoid known Wayland renderer crashes on some KDE/Mesa setups while still keeping Wayland enabled. After changing src-tauri/Cargo.lock, refresh the vendored Cargo source list with:

./scripts/update-flatpak-cargo-sources.sh

To check for drift without rewriting the file, run:

./scripts/update-flatpak-cargo-sources.sh --check

The build script writes distributable files to outputs/. That directory is generated output, not source.

Repository layout

  • src/web/ - shared frontend application code.
  • dist/web/ - generated, untracked browser JavaScript and copied web assets.
  • src/web/js/reader/ - focused reader session, rendering, word navigation, PDF page text, and OCR correction modules.
  • src/web/platforms/ - platform-specific frontend styling and behavior.
  • src-tauri/ - Tauri 2 Rust backend, commands, OCR/import logic, and platform config.
  • src-tauri/platforms/android/ - Android-specific backend boundary.
  • frontend-tests/ - Node-based frontend and platform tests.
  • docs/ - public documentation and screenshots.
  • .cargo/ - Cargo configuration used by the workspace.
  • scripts/build.bat - Windows convenience entrypoint for tests and release artifacts.

Technology and third-party licenses

Word Hunter uses a Rust backend and a shared HTML/CSS/TypeScript interface in a Tauri 2 shell. Windows uses WebView2, Linux uses WebKitGTK/GTK, and Pocket uses Android System WebView. Desktop translation and OCR can use CTranslate2, SentencePiece, PaddleOCR through ONNX Runtime, PDFium, and platform execution providers. OCR uses DirectML on Windows and WebGPU/Vulkan on Linux, with a safe CPU fallback. Windows, Flatpak, and AppImage sync use the separately bundled Syncthing executable, while the Debian package uses the distribution-provided syncthing dependency. The Flatpak routes file dialogs through XDG Desktop Portal and can use the active GTK theme extension, so KDE sessions receive their portal dialogs and the matching Breeze GTK styling when that extension is installed.

Word Hunter data is stored as local record files and JSON snapshots; the current application does not use SQLite. The built-in scheduler is Word Hunter's own implementation inspired by published SM-2 and FSRS concepts, not the official FSRS library or the proprietary SuperMemo application.

The shared WebView UI is an explicit architecture choice for feature and accessibility parity across desktop and Pocket. TypeScript owns DOM rendering and latency-sensitive interaction state. Rust owns storage merge/recovery, parsing, local HTTP validation, and desktop OCR, while the Android adapter owns SAF and platform PDF boundaries. CPU-heavy frontend statistics use workers and explicit caches instead of moving DOM work across the bridge.

The project license is in LICENSE. Principal native components, model sources, service integrations, exact source links, and redistribution terms are listed in THIRD-PARTY-NOTICES.md. Full license texts for the locked Rust dependency graphs are generated into THIRD-PARTY-LICENSES.html and OCR-THIRD-PARTY-LICENSES.html; all four files are included in release packages. After changing either Rust lockfile, install cargo-about and refresh the reports with ./scripts/update-third-party-licenses.sh.

License

Word Hunter is licensed under AGPL-3.0-or-later.

Closed-source commercial derivative use requires a separate written commercial license. See COMMERCIAL-LICENSE.md for details.

Development note

Much of the frontend was developed with AI assistance. I am not a frontend developer; Word Hunter grew from scripts I had used for years into an app I use every day. The goal is to keep it free, useful, and independent of mandatory cloud accounts or paid services. Feedback, bug reports, and contributions are welcome.

About

Easy spaced repetition learning tool with books and texts.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages