Metadata-Version: 2.5
Name: ttyping
Version: 1.1.16
Summary: A minimal terminal typing test — English & Korean, monkeytype-inspired
License: Apache-2.0
License-File: LICENSE
Keywords: monkeytype,terminal,textual,tui,typing
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Games/Entertainment
Requires-Python: >=3.10
Requires-Dist: textual>=0.63.0
Description-Content-Type: text/markdown

# ttyping ⌨️

![](./screenshot.png)

A minimal, monkeytype-inspired terminal typing test for English and Korean, built with Python and [Textual](https://github.com/Textualize/textual).

`ttyping` provides a clean and focused typing practice environment directly in your terminal. It tracks speed (WPM) and accuracy, saving results locally for history viewing.

## ✨ Features

- **Multi-language Support**: Practice English (Qwerty, Dvorak, Colemak) and Korean (2-set, 3-set).
- **Finger Practice**: Target specific finger groups to improve muscle memory.
- **Accuracy Focused**: Optional target accuracy mode that restarts on mistakes.
- **Local History**: Keep track of your speed (WPM) and accuracy over time.

## 🚀 Installation

Install using `uv` (recommended):

```bash
uv tool install ttyping
```

## 🎮 Usage

Run the app without arguments to start English practice:

```bash
uvx ttyping
```

## ⌨️ Keybindings

| Key | Action |
|-----|--------|
| **e, k, w, h, o, q** | Main Menu shortcuts (English, Korean, Weak, History, Options, Quit) |
| **Tab** | Restart the test |
| **Esc** | Go back to previous menu |
| **Ctrl+C** | Quit the application |
| **Space** | Proceed to the next word |
| **Enter** | Select menu option or complete word |

## 🗺️ Changelog Highlights (v1.1.2 – v1.1.16)

All planned roadmap features have shipped:

### Practice Modes
- ✅ **Quote Mode**: Full English/Korean quotes with real punctuation and capitalization.
- ✅ **Zen Mode**: Unlimited free typing — words stream in; end with `Ctrl+D`.
- ✅ **Time Presets**: Quick-select 15s / 30s / 60s / 120s from the Options menu.
- ✅ **Daily Challenge**: A date-seeded word set that changes once a day (`d`).

### Feedback & Statistics
- ✅ **Live WPM Graph**: Real-time speed curve rendered while typing.
- ✅ **Consistency Score**: Keystroke rhythm stability shown on results & history.
- ✅ **Personal Bests**: Record WPM per language with a "new personal best!" badge.
- ✅ **Keyboard Heatmap**: Layout map of cumulative error stats in Weakness Analysis.

### UX & Customization
- ✅ **Custom Themes**: Five accent color presets persisted in config.
- ✅ **Keypress Sound**: Optional terminal bell on typing errors.
- ✅ **History Export**: Export results to CSV (`x`) or JSON (`j`).
- ✅ **Configurable Keybindings**: Alternative restart (F2) / back (F4) shortcuts.

### Content
- ✅ **More Code Languages**: Go, C, TypeScript snippets.
- ✅ **Remote Word Lists**: Load practice text from an HTTP(S) URL (`--url`).
- ✅ **Additional Languages**: Japanese (romaji) word lists.

## 🛠️ Tech Stack

- **Language**: Python 3.10+
- **TUI Framework**: [Textual](https://github.com/Textualize/textual)
- **Styling**: [Rich](https://github.com/Textualize/rich)
- **Data storage**: `~/.ttyping/results.json`

## 📄 License

Apache-2.0
