GitType
unhappychoice·unhappychoice.gittype
A typing practice tool using your own code repositories
GitType is a Rust CLI typing game that turns source code from real repositories into typing challenges. It parses code with tree-sitter, renders a terminal UI, tracks real-time WPM/accuracy/consistency metrics, and unlocks developer titles through a ranking system. Multi-language support includes Rust, TypeScript, JavaScript, Python, Go, Ruby, Swift, Kotlin, Java, PHP, C#, C, C++, Haskell, Dart, Scala, Clojure, Elixir, Erlang, and Zig.
winget install --id unhappychoice.gittype --exact --source wingetLatest 0.10.1·July 25, 2026
Release Notes
✨ Features
- feat: add winget package distribution (e202bd9) 🐛 Bug Fixes
- fix(clippy): remove useless borrow in println! argument (aff9611)
- fix(nix): use rust-overlay's latest stable for unstable package (6b54544)
- fix: update Dart parser queries for tree-sitter-dart 0.2.0 (dbc6aaa)
- fix: guard run_screen entrypoints against non-tty environments (3d77af5) 📝 Other Changes
- chore: bump version to v0.10.1 (b05843b)
- chore(deps): bump glob from 0.3.3 to 0.3.4 (8179e1e)
- chore(deps): bump clap from 4.6.3 to 4.6.4 (5c7dc7f)
- chore(deps): bump clap from 4.6.2 to 4.6.3 (70990ce)
- chore(deps): bump ignore from 0.4.30 to 0.4.31 (ab5555b)
- chore(deps): bump anyhow from 1.0.103 to 1.0.104 (b6e1c8d)
- chore(deps): bump serde_json from 1.0.150 to 1.0.151 (b43f537)
- chore(deps): bump async-trait from 0.1.89 to 0.1.91 (e082137)
- chore(deps): bump thiserror from 2.0.18 to 2.0.19 (eb839bc)
- chore(deps): bump serde from 1.0.228 to 1.0.229 (aed2298)
- chore(deps): bump ignore from 0.4.29 to 0.4.30 (cd0c127)
- chore(deps): bump uuid from 1.23.5 to 1.24.0 (0f5164f)
- chore(deps): bump clap from 4.6.1 to 4.6.2 (f6e835e)
- chore(deps): bump ignore from 0.4.28 to 0.4.29 (10fdcf5)
- chore(deps): bump open from 5.3.6 to 5.4.0 (f3489bf)
- chore(deps): bump uuid from 1.23.4 to 1.23.5 (6e2c8d4)
- chore(deps): bump ignore from 0.4.27 to 0.4.28 (7afa878)
- chore(deps): bump rand from 0.10.1 to 0.10.2 (cab3a52)
- chore(deps): bump ignore from 0.4.26 to 0.4.27 (225abf4)
- chore(deps): bump open from 5.3.5 to 5.3.6 (4fb6d24)
- chore(deps): bump anyhow from 1.0.102 to 1.0.103 (6845c6a)
- chore(deps): bump env_logger from 0.11.10 to 0.11.11 (87f3a94)
- chore(deps): bump uuid from 1.23.3 to 1.23.4 (9865500)
- chore(deps): bump log from 0.4.32 to 0.4.33 (880a8a3)
- chore(deps): bump ratatui from 0.30.1 to 0.30.2 (f0bd102)
- chore(deps): bump insta from 1.47.2 to 1.48.0 (d811d53)
- chore(deps): bump rusqlite from 0.40.0 to 0.40.1 (0cbfad9)
- chore(deps): bump uuid from 1.23.2 to 1.23.3 (03a67cb)
- chore(deps): bump ratatui from 0.30.0 to 0.30.1 (00f54d4)
- chore(deps): bump tree-sitter-erlang from 0.18.0 to 0.19.0 (da73532)
- chore(deps): bump ignore from 0.4.25 to 0.4.26 (79f8d3a)
- chore(deps): bump chrono from 0.4.44 to 0.4.45 (d9326d6)
- chore(deps): bump log from 0.4.31 to 0.4.32 (349f44b)
- chore(deps): bump tree-sitter-swift from 0.7.2 to 0.7.3 (35fd7fc)
- chore(deps): bump log from 0.4.30 to 0.4.31 (662f472)
- chore(deps): bump rusqlite from 0.39.0 to 0.40.0 (ba4b7c7)
- chore(nix): update flake.lock to refresh rust-overlay/nixpkgs (fcf7408)
- chore(deps): bump git2 from 0.20 to 0.21 (d24b88d)
- chore(deps): bump uuid from 1.23.1 to 1.23.2 (9193c72)
- chore(deps): bump log from 0.4.29 to 0.4.30 (ad283ac)
- chore(deps): bump reqwest from 0.13.3 to 0.13.4 (c35a39a)
- chore(deps): bump serde_json from 1.0.149 to 1.0.150 (7d286a4)
- chore(deps): bump tree-sitter-erlang from 0.17.0 to 0.18.0 (7ebcd01)
- test: cover animation screen downcast behavior (6435d9e)
- test: cover session summary screen provider (e3abc8c)
- test: cover typing screen session manager fallbacks (f99ea3a)
- test: cover stage repository title and difficulty fallbacks (0eb5c80)
- test: cover JavaScript JSX leaf capture fallback (18f7204)
- test: cover export command missing output failure (93423cc)
- test: cover default typing content view render (9b14825)
- test: cover Ruby extractor chunk and attr fallbacks (6c4b636)
- test: cover repo play and Java extractor fallbacks (64aa7bc)
- test: cover loading and repository list fallbacks (e4d32cc)
- test: cover TypeScript and analytics view fallbacks (f2bfc4d)
- test: cover TUI stage completion fallbacks (de653f3)
- test: cover stage builder challenge selection fallbacks (0ce9663)
- test: cover source code parser progress reporting (a58a620)
- test: cover generating step cache save skip (2c5a1d0)
- test: cover local git repository invalid directory error (2b43f29)
- test: cover Go extractor block name fallbacks (fe68a4f)
- test: cover trending repository list fallbacks (cbce243)
- test: cover repository list language fallbacks (5fa0566)
- test: cover TUI view fallback rendering (16220b7)
- test: cover C# extractor leaf name fallbacks (6fb7649)
- test: cover domain service fallback paths (27eae3f)
- test: cover PHP extractor leaf name fallback (f9b7e34)
- test: cover gradation text color segments (83ecf82)
- test: cover typing view session metrics fallback (5a61600)
- test: cover typing dialog disabled skip option (1a4b82c)
- test: cover repository DAO row type errors (5ffbe68)
- test: cover loading step git repository fallbacks (e969c37)
- test: cover performance metrics view fallbacks (2de8c26)
- test: cover stage details view rendering (db960ad)
- test: cover session recording missing repository error (665ebc4)
- test: cover rank and typing header view fallbacks (119225d)
- test: cover loading view fallback rendering (f0542eb)
- test: cover challenge analytics and comment fallbacks (a447116)
- test: cover zero-width comment range truncation (e2f7f13)
- test: cover cpp extractor missing variable fallback (941d7eb)
- test: cover challenge DAO rowid type errors (94c159c)
- test: cover scala extractor fallback behavior (0d26b1a)
- test: cover ruby and typescript extractor name fallbacks (5ff97c8)
- docs: add Discord and blog mentions to Support section (d46cca6)
- docs: add general hashtags to share links (4a43bc1)
- test: cover haskell extractor capture fallbacks (bcea73f)
- docs: add Support section with star and share links to README (322183d)
- test: cover parser cache bounds and challenge DAO schema errors (e9d260c)
- test: cover c extractor leaf capture fallbacks (186e4bf)
- test: cover rust extractor unknown capture fallback (549820b)
- test: cover whitespace before newline skip behavior (9420b56)
- test: cover typing animation line advance delay (1933c12)
- test: cover screen runner context drop cleanup (8932b53)
- test: cover erlang function name extraction fallbacks (01a490e)
- test: cover compressed file storage serialization failure (f846610)
- test: cover CLI runner repo list, play, and default command without tty (a310fac)
- test: cover score view fallback without best status (e1fcb6b)
- chore(deps): bump tree-sitter-erlang from 0.16.0 to 0.17.0 (7b5bb32)
- test: cover analytics screen language details render fallback when detailed stats missing (70a8e9e)
- test: cover total summary share screen provider, escape/ctrl-c navigation, and share platform key pop events (66dc552)
- test: cover initial schema migration tables/indexes, idempotency, trait dispatch, and migrations registry (7f378e3)
- test: cover cpp extractor constructor/operator/type/function extract_name fallback branches (1c5fcad)
- test: cover session manager skip and finalize current stage session challenge recording (8883f4e)
- test: cover trending language selection screen space selection, key navigation clamps, unhandled keys, and downcast (0455a36)
- test: cover csharp namespace/field fallback, javascript destructuring/jsx fallback, and compressed file storage type mismatch error (a9131bc)
- test: cover database trait dispatch, oss insight client default, and file storage mock read_dir/remove_dir_all (be12ab1)
- test: cover trending repository selection screen init fallback, key navigation clamps, space selection, and downcast (43f5b74)
- test: cover ascii theme language color lookup and session result tier name mapping across score tiers (55ade2f)
- test: cover dart extract_name recursion into function_signature and initialized_variable_definition children (9a3698a)
- test: cover c extractor variable/function/struct/macro extract_name fallback branches (9a75294)
- test: cover elixir extract_name dot-target call argument identifier and no-identifier fallback (d12886f)
- test: cover records screen init fallback, key handling, sort/filter cycles, and rendering branches (46a71d9)
- test: cover title screen builder setters, init fallback, unhandled keys, and downcast (34a829f)
- test: cover repo play screen selection accessors, navigation clamps, key release, and downcast (646b979)
- test: cover panic screen location-line render, provider, downcast, and timestamp fallback (1854628)
- test: cover screen transition manager non-concrete session manager handlers and in-progress skip-start branch (75d6fee)
- test: cover records screen filter state defaults, sort/date variants, and selection guards (623544b)
- test: cover session detail screen init guards, scroll bounds, and render after scroll (a96d3f0)
- test: cover best records view rendering with status flags, score fallback, and missing records (72d1f1f)
- test: cover session summary share screen init fallback, render, and share key paths (26f82f5)
- test: cover local git client remote parsing, dirty tree, and interface dispatch (948391e)
- test: cover stage summary screen render, key handling, and trait methods (60c1561)
- test: cover help screen section navigation, scrolling, and trait methods (c0b0ae7)
- test: cover repo clear command short-circuit and screen runner non-tty error (9f4e2cd)
- test: cover session details dialog and failure screen fallback init and trait methods (aac0abf)
- test: cover total summary share screen provider, key handling, and share URLs (e7f17e9)
- test: cover animation screen init fallback, key handling, and trait methods (a1644c6)
- test: cover total summary screen data provider and screen trait methods (2ccf0bb)
- test: cover logging fallback paths and sharing URL encoding (43e8b43)
- test: cover analytics screen navigation keys and view mode helpers (1a95d2f)
- test: cover session dao filtered queries and missing repository_id errors (4ad5024)
- test: cover clojure extractor capture name and extract_name branches (ffca957)
- test: cover session summary screen key actions and lifecycle (26cbca7)
- test: cover loading screen update, completion, and trait methods (274c49b)
- test: cover repository dao language aggregation and lookup branches (6a4ed9c)
Installer type: zip
Details
- Homepage
- https://github.com/unhappychoice/gittype
- License
- MIT
- Publisher
- unhappychoice
- Support
- https://github.com/unhappychoice/gittype/issues
- Copyright
- Copyright (c) unhappychoice
- Moniker
gittype
Tags
clicodedevelopergitpracticeterminaltuityping