All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- User Preferences: Persistent word count setting (JSON-based storage)
- Command Palette: Quick access to change word count, view statistics, and take screenshots
- Statistics Enhancements: WPM vs accuracy scatter plot
- Simplified internal architecture, removed unnecessary layers and abstractions
- Flattened folder structure
- Statistics accuracy: Improved precision and formatting of displayed statistics
- Statistics UI: Improved layout and added responsive design
- Trend display: Shows total WPM change over trend window (e.g.,
↗ +6.0 WPM (last 10)) - Improved Performance: Optimized data handling for a smoother user experience
- Cleaned up
pyproject.tomllint rules and added multi-version test matrix (Python 3.10–3.14)
- Timer leak: Stats polling timer now reliably stopped on game finish/restart/menu return
- New record logic: 0 WPM games no longer trigger "NEW RECORD!" celebration
- Removed unused code and dead modules
- 61 unit tests, 100% passing, ruff fully clean on source and tests
- Rename
srcdirectory totermtypr
- Complete architectural overhaul: Domain, Application, Infrastructure, and Presentation layers
- Domain Models: Immutable
GameResult,GameState,TypingStatsvalue objects - Repository Pattern: Abstract
HistoryRepositorywith JSON and in-memory implementations - Application Services:
GameController,StatsService,ApplicationRouter - Enhanced UX: Same-content restart
- Type Safety: Pydantic settings, full type hints, immutable dataclasses
- UI Layer: Replaced
MenuSystemwithApplicationRouter, views are pure presentation - Game System: History management moved from
BaseGametoGameController - CLI: Updated
statscommand to use new architecture - Settings: Migrated to Pydantic for validation
- Legacy Code:
MenuSystem, legacyHistoryManager,history_adapter.py
- 136 unit tests, 100% passing
- Trim word list
- WPM Calculation
- fix: cap typo count to prevent negative accuracy calculation
- fix: resolve word panel resizing issues
- refactor: simplify game classes & remove redundant code
- fix: correctly load phrases from package data
- fix: do not display errors in words panel when typing incorrect letters
- fix: allow skipping current word by pressing space on empty input
- Fixed build configuration to correctly include resource files in wheel package
- Fixed data files not being included when installing from PyPI
- Moved history storage to user's data directory using platformdirs
- Added proper package data configuration in pyproject.toml
- New Phrase Typing Game: Complete phrase typing experience with literary quotes and meaningful texts
- Enhanced Statistics System: Comprehensive statistics view with interactive charts and graphs using plotext library
- Visual Data Analytics:
- WPM progress trend charts showing typing improvement over time
- Accuracy tracking charts with performance analysis
- Game comparison bar charts for performance across different typing modes
- Performance distribution histograms showing WPM ranges
- Recent sessions charts with dual-axis WPM and accuracy visualization
- Scrollable Statistics Interface: The statistics view is now scrollable!
- Game Architecture: Improved base game system supproting multiple typing game types with unified interface
- Word Panel Layout Issues: Resolved word panel resizing problems with responsive terminal layout handling
- UI Refresh Logic: Improved layout refresh mechanism ensuring proper display updates during game state changes
- Statistics Display: Better formatting and organization of statistical data with clear visual separation
- New main menu system, allowing users ti navigate and select between different games and views.
- Comprehensive statistics view accessible from the main menu, with detailed stats and trends.
- New
HistoryManagerfor robust run history and statistics (replacingRecordsManager).
- Fixed bug where words could be hidden in the words panel; words now wrap responsively to the terminal/panel size, ensuring all are visible.
- Improved UI state transitions and key handling for the new stats view.
- Terminal-based text user interface
- Real-time typing statistics (WPM, accuracy, time)
- Records system to track typing performance
- Real-time character-by-character feedback as you type
- Dynamic WPM/Accuracy calculation
- Clean, responsive terminal UI
- Support for various terminal themes