Skip to main content

Terminal-first WaniKani client

Project description

wkler

Terminal-first WaniKani client built with Textual. Focused on real review and lesson sessions that submit to the official WaniKani API.

Install

pip install wkler

Or with uv:

uv tool install wkler

Features

Review sessions — Full meaning + reading flow with subject-type-aware answer checking, romaji-to-hiragana live conversion, and immediate API submission.

Compact mode — Minimal single-screen TUI for quick sessions (wkler --compact). Reviews and lessons without leaving the app. Inline cache sync (y hotkey).

Unified mode — Full-featured home launcher with tabbed navigation, in-app review/lesson flows, and lesson center for batch management.

Review wrap-up — Press Ctrl+W mid-session to limit remaining items. Prioritizes items with only one question left, then alternates with fresh items.

Rolling shuffle — Configurable item scheduling: rolling (windowed, default), full (classic shuffle), or none (API order). Window size is adjustable (1-500, default 20).

Lesson safety — Confirmation prompt before starting lessons. Shows item preview with characters, level, type, and meanings. Use --yes to bypass for scripted use.

Offline queue — Failed review submissions are persisted via qler and automatically retried next session.

Study visuals — Color-coded subject type badges (vocabulary green, kanji orange, radical purple, kana-vocabulary yellow). Inline miss/correct feedback.

Themesdefault (stealth black), retro (green terminal), colorful. Cycle with F2 in-session.

Structured logging — Loguru-backed JSONL logs with rotation. Dedicated crash log. Dogfood feedback loop (wkler feedback).

Quickstart

wkler setup          # interactive onboarding — sets API token, theme, paths
wkler doctor         # verify config, API, and queue connectivity
wkler                # launch unified home TUI
wkler --compact      # launch compact mode

Commands

wkler                       # home launcher (unified mode)
wkler --compact             # compact mode
wkler reviews               # start review session
wkler lessons               # list available lessons
wkler lessons --start 5     # start 5 lessons (with confirmation)
wkler lessons --start-default  # start configured batch size
wkler lessons --all --yes   # start all (skip confirmation)
wkler sync                  # prefetch assignments and subjects
wkler setup                 # first-time onboarding
wkler settings              # edit settings interactively
wkler doctor                # diagnostics
wkler retry                 # retry failed submissions
wkler queue list             # inspect submission queue
wkler feedback --note "..."  # log dogfood feedback
wkler feedback --tail 20    # view recent feedback

Review options

wkler reviews --shuffle-mode rolling   # rolling window (default)
wkler reviews --shuffle-mode full      # classic full shuffle
wkler reviews --shuffle-mode none      # API order
wkler reviews --shuffle-window 40      # window size for rolling mode
wkler reviews --seed abc               # deterministic shuffle

Configuration

Config file: ~/.config/wkler/config.toml (or WKLER_CONFIG_PATH).

Created by wkler setup, editable via wkler settings.

Environment variable overrides:

WKLER_API_TOKEN                  # WaniKani API token
WKLER_THEME="retro"              # default|retro|colorful
WKLER_READING_INPUT_MODE="always"  # always|auto
WKLER_LESSON_BATCH_SIZE="5"     # 1-100
WKLER_REVIEW_SHUFFLE_MODE="rolling"  # rolling|full|none
WKLER_REVIEW_SHUFFLE_WINDOW="20"     # 1-500
WKLER_DB_PATH="~/.local/share/wkler/wkler.db"
WKLER_LOG_PATH="~/.local/state/wkler/wkler.log"
WKLER_CRASH_LOG_PATH="~/.local/state/wkler/wkler-crash.log"

Keyboard shortcuts

Home (unified mode)

1/2/3 switch tabs, r reviews, l default lessons, u setup, g settings, d doctor, q quit.

Compact mode

r reviews, l lessons, y sync cache, q quit. In review: Ctrl+W wrap-up, Ctrl+R reveal, Esc back. In lesson: r reveal, 1-5 score, Esc back.

Review session

F2 cycle theme, Ctrl+W wrap-up, Esc abort.

Development

uv sync --group dev
uv run pytest
uv run ruff check src/ tests/

Status

Alpha — daily dogfooding in progress. Published on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wkler-1.2026.5.2.tar.gz (52.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wkler-1.2026.5.2-py3-none-any.whl (62.3 kB view details)

Uploaded Python 3

File details

Details for the file wkler-1.2026.5.2.tar.gz.

File metadata

  • Download URL: wkler-1.2026.5.2.tar.gz
  • Upload date:
  • Size: 52.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wkler-1.2026.5.2.tar.gz
Algorithm Hash digest
SHA256 4c391e23197df118643ce29e72dad4b01c9420a7fd632a86c0b228ed2279f8f9
MD5 d332e24a185765c0c38cb4c4ea8f3419
BLAKE2b-256 6993c3b6a784d0c7482e5ef65a8a66a3211b0d7111af8d5072af62dba0a24bd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkler-1.2026.5.2.tar.gz:

Publisher: pypi.yml on gabu-quest/wkler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkler-1.2026.5.2-py3-none-any.whl.

File metadata

  • Download URL: wkler-1.2026.5.2-py3-none-any.whl
  • Upload date:
  • Size: 62.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wkler-1.2026.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bc80444f47ac76949a22e6d23e7e556744eeaeae5289e5cbadde3f4e658bb52d
MD5 c58c0540c626a34f1c101ff9400b88c3
BLAKE2b-256 e335e23588b45c1c8bb5b14213df3adc14e452f012db8f9f2d973eb8e99737a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkler-1.2026.5.2-py3-none-any.whl:

Publisher: pypi.yml on gabu-quest/wkler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page