Skip to main content

Terminal-first WaniKani client

Project description

wkler

Terminal-first WaniKani client focused on real review sessions that submit to the official API.

Features

  • wkler reviews Textual session flow
  • Meaning + reading question handling by subject type
  • Romaji-to-hiragana reading normalization (wanakana-python)
  • WaniKani API client with pagination and rate-limit retry handling
  • Local cache and review log with sqler (SQLite)
  • Failed review submission queue backed by qler (persistent across restarts)
  • Queue management commands: wkler retry, wkler queue list, wkler queue retry
  • Lessons command for dogfooding: wkler lessons (--start N / --all)
  • Appearance themes: default, retro, colorful with in-session F2 cycle
  • Logler-compatible JSONL logs + dogfood feedback loop (wkler feedback)
  • Interactive onboarding + settings page (wkler setup, wkler settings)
  • Default home launcher TUI (wkler) with tabs/buttons for common actions
  • Dedicated crash JSONL logging (WKLER_CRASH_LOG_PATH / crash_log_path)
  • Rotating loguru-backed JSONL logs for runtime and crash events

Quickstart

  1. Install dependencies:
uv sync --group dev
  1. Run the interactive setup guide:
uv run wkler setup

This writes ~/.config/wkler/config.toml (or WKLER_CONFIG_PATH) and lets you set:

  • API token
  • Theme
  • Reading mode
  • Default lesson count
  • DB/log/crash paths
  1. Optional settings:
export WKLER_THEME="retro"           # default|retro|colorful
export WKLER_DB_PATH="~/.local/share/wkler/wkler.db"
export WKLER_LOG_PATH="~/.local/state/wkler/wkler.log"
export WKLER_CRASH_LOG_PATH="~/.local/state/wkler/wkler-crash.log"
export WKLER_READING_INPUT_MODE="always"  # always|auto
export WKLER_LESSON_BATCH_SIZE="5"        # 1-100
  1. Launch the app home screen:
uv run wkler

Then pick actions from tabs/buttons (Study, Config, Maintenance).

Useful commands:

uv run wkler sync
uv run wkler settings
uv run wkler lessons --list-limit 20
uv run wkler lessons --start 5
uv run wkler lessons --start-default
uv run wkler reviews
uv run wkler doctor
uv run wkler feedback --note "reading mode label is confusing" --area ux --level warning
uv run wkler feedback --tail 20
uv run wkler retry --limit 50
uv run wkler queue list --status pending --limit 20
uv run wkler queue retry --all

Notes

  • This client uses POST /reviews to register reviews that count.
  • WaniKani GET /reviews is deprecated and intentionally not used.
  • qler is currently consumed as a local editable dependency (../qler) for dogfooding.
  • Current focus is dogfooding real review and lesson workflows before PyPI readiness.
  • Logs are JSONL and logler-friendly; example:
    • logler llm search ~/.local/state/wkler/wkler.log --query "dogfood feedback" --tail 20
    • logler llm search ~/.local/state/wkler/wkler.log --level ERROR --tail 50
  • Runtime failures show concise actionable errors in terminal instead of full Python tracebacks.
  • Inside wkler settings, use radio/button controls for choices and click Save / Discard + Back / Back.
  • Settings page is scrollable and keeps section content visible on smaller terminal heights.
  • wkler defaults to a stealth-black visual style for lower-visibility terminal use.
  • Inside wkler settings, use F8 to jump to feedback input and press Enter to log a dogfood note.
  • When launched from wkler home, returning from settings/setup takes you back to home instead of exiting the app.
  • Home launcher keyboard shortcuts: 1/2/3 switch tabs, r reviews, u setup, g settings, d doctor, arrows switch tabs, q quits.

Development

uv run pytest

Status

Alpha — daily dogfooding in progress.

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.3.1.tar.gz (50.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.3.1-py3-none-any.whl (60.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for wkler-1.2026.3.1.tar.gz
Algorithm Hash digest
SHA256 9721e27653de2e03609319f3512f3ac5c27d4f10954829381f969820ad72e4f2
MD5 187014ca82c1bbfc9f36905d9c59a9ab
BLAKE2b-256 8609ab18cb09f6800c17b8f33ed953cd3dedb2b4287ffd468cc2fe4d0d4e5302

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkler-1.2026.3.1.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.3.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for wkler-1.2026.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f366b0134e1f512154e872e7d4fe3ef5178475679a2aeb7ba3d8b9d49f664735
MD5 99b1a2e7514ae88158f56e149577ec26
BLAKE2b-256 3e5be2b64cdd77033386503486dad2a1bce352be5f7591f1d9f1e48aa3404e64

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkler-1.2026.3.1-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