### ✨ Features - feat: register missing screens and Database to DI module ([dc4bbb6](https://github.com/unhappychoice/gittype/commit/dc4bbb6)) - feat: add Clojure language support (#311) ([92535ce](https://github.com/unhappychoice/gittype/commit/92535ce)) - feat: add Console abstraction for standard I/O ([87b2ccd](https://github.com/unhappychoice/gittype/commit/87b2ccd)) - feat: add TUI architecture with Screen trait pattern ([af9af9d](https://github.com/unhappychoice/gittype/commit/af9af9d)) - feat: improve parser coverage for C++, C#, and JavaScript ([8995dfe](https://github.com/unhappychoice/gittype/commit/8995dfe)) - feat: add .name pattern mapping to CodeBlock for all language parsers ([6f02c45](https://github.com/unhappychoice/gittype/commit/6f02c45)) - feat: add browser abstraction to infrastructure layer ([960415a](https://github.com/unhappychoice/gittype/commit/960415a)) - feat: add snapshot test for SessionDetailScreen with dependency injection ([23ba36e](https://github.com/unhappychoice/gittype/commit/23ba36e)) - feat: migrate TotalSummaryShareScreen to ratatui ([44f7e1e](https://github.com/unhappychoice/gittype/commit/44f7e1e)) - feat: migrate StageSummaryScreen to ratatui ([e360ecf](https://github.com/unhappychoice/gittype/commit/e360ecf)) - feat: migrate TitleScreen to ratatui ([5c3afaa](https://github.com/unhappychoice/gittype/commit/5c3afaa)) - feat: migrate TotalSummaryScreen to ratatui ([442f543](https://github.com/unhappychoice/gittype/commit/442f543)) - feat: implement smooth color gradation for ASCII rank titles ([2799379](https://github.com/unhappychoice/gittype/commit/2799379)) - feat: add ScreenInitializationError type for better error handling ([2bf79ac](https://github.com/unhappychoice/gittype/commit/2bf79ac)) - feat: add presentation layer events (NavigateTo, ExitRequested) ([b623942](https://github.com/unhappychoice/gittype/commit/b623942)) - feat: add GitRepository::new_local to create repo from local path ([bdfa242](https://github.com/unhappychoice/gittype/commit/bdfa242)) - feat: add event bus infrastructure for layer decoupling ([43f9014](https://github.com/unhappychoice/gittype/commit/43f9014)) - feat: add Zig to CLI help messages ([a05da84](https://github.com/unhappychoice/gittype/commit/a05da84)) - feat: add Zig color scheme support ([2898a9a](https://github.com/unhappychoice/gittype/commit/2898a9a)) - feat: add Zig tree-sitter parser and extractor ([cfc2369](https://github.com/unhappychoice/gittype/commit/cfc2369)) - feat: add Zig language definition ([9de8234](https://github.com/unhappychoice/gittype/commit/9de8234)) - feat: add tree-sitter-zig dependency ([1a9345e](https://github.com/unhappychoice/gittype/commit/1a9345e)) ### 🐛 Bug Fixes - fix: resolve CI clippy warnings ([c41bd5a](https://github.com/unhappychoice/gittype/commit/c41bd5a)) - fix: address CodeRabbit review feedback ([b0c0cb7](https://github.com/unhappychoice/gittype/commit/b0c0cb7)) - fix: prevent deadlock in stage_builder_service by cloning config upfront ([a93bbbd](https://github.com/unhappychoice/gittype/commit/a93bbbd)) - fix: remove duplicate imports in challenge_repository after rebase ([2c84ee5](https://github.com/unhappychoice/gittype/commit/2c84ee5)) - fix: prevent screen reset during trending language to repository transition ([623d5fb](https://github.com/unhappychoice/gittype/commit/623d5fb)) - fix: TotalSummaryShareScreen and cache directory bugs ([e4ef5a4](https://github.com/unhappychoice/gittype/commit/e4ef5a4)) - fix: prevent deadlock in skip_current_stage by releasing state lock early ([0816537](https://github.com/unhappychoice/gittype/commit/0816537)) - fix: register CLI screens in ScreenManagerFactoryImpl ([922b308](https://github.com/unhappychoice/gittype/commit/922b308)) - fix: initialize ConfigService to load settings from config file ([c3178c4](https://github.com/unhappychoice/gittype/commit/c3178c4)) - fix: resolve database deadlock and fix all tests ([b66ea32](https://github.com/unhappychoice/gittype/commit/b66ea32)) - fix: make ScreenManagerImpl generic over Backend type ([24af00a](https://github.com/unhappychoice/gittype/commit/24af00a)) - fix: resolve deadlocks in RecordsScreen, AnalyticsScreen, and InfoDialogScreen ([755cc22](https://github.com/unhappychoice/gittype/commit/755cc22)) - fix: support SSH URLs with port numbers in GitRepositoryRefParser ([5948df3](https://github.com/unhappychoice/gittype/commit/5948df3)) - fix: support non-GitHub repositories and local repos without remote ([412fdb8](https://github.com/unhappychoice/gittype/commit/412fdb8)) - fix: resolve detached HEAD issue in flake hash update workflow ([e8513d5](https://github.com/unhappychoice/gittype/commit/e8513d5)) - fix: resolve NixOS build failure and improve flake configuration ([176ae81](https://github.com/unhappychoice/gittype/commit/176ae81)) - fix: resolve clippy warnings in tests and examples ([fe49ddc](https://github.com/unhappychoice/gittype/commit/fe49ddc)) - fix: add test database initialization for GitRepositoryRepository tests ([43a2c61](https://github.com/unhappychoice/gittype/commit/43a2c61)) - fix: replace deprecated criterion::black_box with std::hint::black_box ([a5e0112](https://github.com/unhappychoice/gittype/commit/a5e0112)) - fix: remove unused imports and MockRecordsScreen ([a2d37c1](https://github.com/unhappychoice/gittype/commit/a2d37c1)) - fix: correct rank tier colors to match UI theme colors ([5174e5b](https://github.com/unhappychoice/gittype/commit/5174e5b)) - fix: set UTC timezone in screen snapshot tests for consistency ([8f8c375](https://github.com/unhappychoice/gittype/commit/8f8c375)) - fix: create GitRepository from repo_path in ScanningStep ([a6d85fb](https://github.com/unhappychoice/gittype/commit/a6d85fb)) - fix: prevent panic when selecting difficulty with no challenges ([f3c95e0](https://github.com/unhappychoice/gittype/commit/f3c95e0)) - fix: correct Kotlin comment node kind and resolve clippy warnings ([7255342](https://github.com/unhappychoice/gittype/commit/7255342)) - fix: resolve clippy warnings and format code ([0fd88e2](https://github.com/unhappychoice/gittype/commit/0fd88e2)) - fix: address clippy warnings ([8eaa4b9](https://github.com/unhappychoice/gittype/commit/8eaa4b9)) - fix: prevent URL duplication in install script ([bb6af4e](https://github.com/unhappychoice/gittype/commit/bb6af4e)) ### 📝 Other Changes - chore: bump version to v0.9.0 ([88bdde2](https://github.com/unhappychoice/gittype/commit/88bdde2)) - test: add comprehensive info_dialog tests ([3bd1aa8](https://github.com/unhappychoice/gittype/commit/3bd1aa8)) - test: cover side-effect handlers in screen_transition_manager ([e5473f5](https://github.com/unhappychoice/gittype/commit/e5473f5)) - test: add infrastructure and integration tests ([0ff3063](https://github.com/unhappychoice/gittype/commit/0ff3063)) - test: add presentation layer tests ([c945e13](https://github.com/unhappychoice/gittype/commit/c945e13)) - test: add comprehensive domain layer tests ([89d4228](https://github.com/unhappychoice/gittype/commit/89d4228)) - refactor: make generate_share_url and create_share_text public for testability ([8f6eb2d](https://github.com/unhappychoice/gittype/commit/8f6eb2d)) - test: add comprehensive tests for SessionManager and ThemeService ([ae9534e](https://github.com/unhappychoice/gittype/commit/ae9534e)) - docs: add manual test checklist ([0ee53c7](https://github.com/unhappychoice/gittype/commit/0ee53c7)) - style: remove blank lines between import sections ([3a4b37e](https://github.com/unhappychoice/gittype/commit/3a4b37e)) - refactor: reorganize import statements across codebase ([6ce073a](https://github.com/unhappychoice/gittype/commit/6ce073a)) - refactor: complete screen DI migration and remove prepare_screen_if_needed ([2c79ab5](https://github.com/unhappychoice/gittype/commit/2c79ab5)) - refactor: migrate GameData to Store pattern and implement DI for SessionManager and StageRepository ([a510af5](https://github.com/unhappychoice/gittype/commit/a510af5)) - refactor: move presentation/game files to proper domain layers ([8cbb2c9](https://github.com/unhappychoice/gittype/commit/8cbb2c9)) - refactor: implement DI for ConfigService and fix AppDataProvider usage ([ce51212](https://github.com/unhappychoice/gittype/commit/ce51212)) - refactor: complete dependency injection for Repository layer ([92f0e25](https://github.com/unhappychoice/gittype/commit/92f0e25)) - refactor: convert DAOs and Repositories to use Arc<dyn DatabaseInterface> ([9aa839d](https://github.com/unhappychoice/gittype/commit/9aa839d)) - chore(deps): bump ratatui from 0.29.0 to 0.30.0 (#345) ([75db1d9](https://github.com/unhappychoice/gittype/commit/75db1d9)) - chore(deps): bump rand from 0.9.2 to 0.10.0 (#369) ([b3f00eb](https://github.com/unhappychoice/gittype/commit/b3f00eb)) - chore(deps): bump ctrlc from 3.5.1 to 3.5.2 ([38d31c8](https://github.com/unhappychoice/gittype/commit/38d31c8)) - chore(deps): bump tempfile from 3.24.0 to 3.25.0 ([e8a17d7](https://github.com/unhappychoice/gittype/commit/e8a17d7)) - chore(deps): bump reqwest from 0.13.1 to 0.13.2 ([eacc9a3](https://github.com/unhappychoice/gittype/commit/eacc9a3)) - chore(deps): bump anyhow from 1.0.100 to 1.0.101 ([b5a1985](https://github.com/unhappychoice/gittype/commit/b5a1985)) - chore(deps): bump criterion from 0.8.1 to 0.8.2 ([f10de6e](https://github.com/unhappychoice/gittype/commit/f10de6e)) - chore(deps): bump clap from 4.5.56 to 4.5.57 ([1dc65f9](https://github.com/unhappychoice/gittype/commit/1dc65f9)) - chore(deps): bump flate2 from 1.1.8 to 1.1.9 ([a67e99d](https://github.com/unhappychoice/gittype/commit/a67e99d)) - chore(deps): bump git2 from 0.20.3 to 0.20.4 ([afead18](https://github.com/unhappychoice/gittype/commit/afead18)) - chore(deps): bump insta from 1.46.1 to 1.46.3 ([69ba44a](https://github.com/unhappychoice/gittype/commit/69ba44a)) - chore(deps): bump clap from 4.5.54 to 4.5.56 ([9913b11](https://github.com/unhappychoice/gittype/commit/9913b11)) - chore(deps): bump uuid from 1.19.0 to 1.20.0 ([9ea80bf](https://github.com/unhappychoice/gittype/commit/9ea80bf)) - chore(deps): bump thiserror from 2.0.17 to 2.0.18 ([a45db16](https://github.com/unhappychoice/gittype/commit/a45db16)) - chore(deps): bump insta from 1.46.0 to 1.46.1 ([7659891](https://github.com/unhappychoice/gittype/commit/7659891)) - chore(deps): bump chrono from 0.4.42 to 0.4.43 ([d0fbdd0](https://github.com/unhappychoice/gittype/commit/d0fbdd0)) - chore(deps): bump flate2 from 1.1.7 to 1.1.8 ([4eb2036](https://github.com/unhappychoice/gittype/commit/4eb2036)) - chore(deps): bump ansi-to-tui from 8.0.0 to 8.0.1 ([ac414e4](https://github.com/unhappychoice/gittype/commit/ac414e4)) - chore(deps): bump serde_json from 1.0.148 to 1.0.149 ([1f1a138](https://github.com/unhappychoice/gittype/commit/1f1a138)) - chore(deps): bump clap from 4.5.53 to 4.5.54 ([1572b5b](https://github.com/unhappychoice/gittype/commit/1572b5b)) - chore(deps): bump tokio from 1.48.0 to 1.49.0 ([142207e](https://github.com/unhappychoice/gittype/commit/142207e)) - chore(deps): bump insta from 1.45.1 to 1.46.0 ([dfd698c](https://github.com/unhappychoice/gittype/commit/dfd698c)) - chore(deps): bump reqwest from 0.12.28 to 0.13.1 ([7ad0c45](https://github.com/unhappychoice/gittype/commit/7ad0c45)) - chore(deps): bump serde_json from 1.0.147 to 1.0.148 ([07e6254](https://github.com/unhappychoice/gittype/commit/07e6254)) - chore(deps): bump insta from 1.45.0 to 1.45.1 ([87a9752](https://github.com/unhappychoice/gittype/commit/87a9752)) - chore(deps): bump ansi-to-tui from 7.0.0 to 8.0.0 ([122ad7f](https://github.com/unhappychoice/gittype/commit/122ad7f)) - chore(deps): bump tempfile from 3.23.0 to 3.24.0 ([6f5bb34](https://github.com/unhappychoice/gittype/commit/6f5bb34)) - chore(deps): bump serde_json from 1.0.146 to 1.0.147 ([2ccc91b](https://github.com/unhappychoice/gittype/commit/2ccc91b)) - chore(deps): bump reqwest from 0.12.26 to 0.12.28 ([2765c76](https://github.com/unhappychoice/gittype/commit/2765c76)) - chore(deps): bump serde_json from 1.0.145 to 1.0.146 ([1239d2f](https://github.com/unhappychoice/gittype/commit/1239d2f)) - chore(deps): bump insta from 1.44.3 to 1.45.0 ([5ff9373](https://github.com/unhappychoice/gittype/commit/5ff9373)) - chore(deps): bump reqwest from 0.12.25 to 0.12.26 ([ff3886d](https://github.com/unhappychoice/gittype/commit/ff3886d)) - chore(deps): bump reqwest from 0.12.24 to 0.12.25 ([a8853e4](https://github.com/unhappychoice/gittype/commit/a8853e4)) - chore(deps): bump git2 from 0.20.2 to 0.20.3 ([c716449](https://github.com/unhappychoice/gittype/commit/c716449)) - chore(deps): bump criterion from 0.8.0 to 0.8.1 ([a19af7d](https://github.com/unhappychoice/gittype/commit/a19af7d)) - chore(deps): bump flate2 from 1.1.5 to 1.1.7 ([79c033a](https://github.com/unhappychoice/gittype/commit/79c033a)) - chore(deps): bump log from 0.4.28 to 0.4.29 ([074668b](https://github.com/unhappychoice/gittype/commit/074668b)) - chore(deps): bump uuid from 1.18.1 to 1.19.0 ([a5172a5](https://github.com/unhappychoice/gittype/commit/a5172a5)) - chore(deps): bump criterion from 0.7.0 to 0.8.0 ([5bef448](https://github.com/unhappychoice/gittype/commit/5bef448)) - chore(deps): bump insta from 1.44.2 to 1.44.3 ([0037128](https://github.com/unhappychoice/gittype/commit/0037128)) - chore(deps): bump insta from 1.44.1 to 1.44.2 ([83387f6](https://github.com/unhappychoice/gittype/commit/83387f6)) - chore(deps): bump insta from 1.44.0 to 1.44.1 ([c553d2a](https://github.com/unhappychoice/gittype/commit/c553d2a)) - chore(deps): bump insta from 1.43.2 to 1.44.0 ([0cde63d](https://github.com/unhappychoice/gittype/commit/0cde63d)) - chore(deps): bump clap from 4.5.52 to 4.5.53 ([dd359cc](https://github.com/unhappychoice/gittype/commit/dd359cc)) - chore(deps): bump open from 5.3.2 to 5.3.3 ([1db6969](https://github.com/unhappychoice/gittype/commit/1db6969)) - chore(deps): bump clap from 4.5.51 to 4.5.52 ([38dc4a6](https://github.com/unhappychoice/gittype/commit/38dc4a6)) - docs: add Gitlogue to Related Projects section ([9b068c3](https://github.com/unhappychoice/gittype/commit/9b068c3)) - test: add comprehensive tests for SSH URLs with port numbers ([ca2069f](https://github.com/unhappychoice/gittype/commit/ca2069f)) - refactor: remove duplicate URL parsing logic in LocalGitRepositoryClient ([00be4c5](https://github.com/unhappychoice/gittype/commit/00be4c5)) - chore(deps): bump ignore from 0.4.24 to 0.4.25 ([055237b](https://github.com/unhappychoice/gittype/commit/055237b)) - chore(deps): bump clap from 4.5.50 to 4.5.51 ([69cc199](https://github.com/unhappychoice/gittype/commit/69cc199)) - chore(deps): bump ctrlc from 3.5.0 to 3.5.1 ([3d64da7](https://github.com/unhappychoice/gittype/commit/3d64da7)) - chore(deps): bump flate2 from 1.1.4 to 1.1.5 ([36fc2fa](https://github.com/unhappychoice/gittype/commit/36fc2fa)) - refactor: use test-mocks feature for browser abstraction ([0f640cd](https://github.com/unhappychoice/gittype/commit/0f640cd)) - refactor: replace dirs::home_dir with AppDataProvider abstraction ([f5b10b4](https://github.com/unhappychoice/gittype/commit/f5b10b4)) - refactor: extend FileStorage to abstract filesystem operations ([172e025](https://github.com/unhappychoice/gittype/commit/172e025)) - refactor: move GitRepository::new_local to LocalGitRepositoryClient ([f354d06](https://github.com/unhappychoice/gittype/commit/f354d06)) - refactor: inject GameData dependency and fix initialization ([096e87f](https://github.com/unhappychoice/gittype/commit/096e87f)) - test: improve coverage for all analytics views ([271ffff](https://github.com/unhappychoice/gittype/commit/271ffff)) - test: improve analytics overview view coverage to 100% ([9f27844](https://github.com/unhappychoice/gittype/commit/9f27844)) - refactor: reorganize typing views and remove unused DialogView ([6024eff](https://github.com/unhappychoice/gittype/commit/6024eff)) - test: add comprehensive TypingScreen tests with dependency injection ([36347c1](https://github.com/unhappychoice/gittype/commit/36347c1)) - test: add unit tests for StageRepository ([62b7be0](https://github.com/unhappychoice/gittype/commit/62b7be0)) - test: add unit tests for Language trait implementations ([d5ec779](https://github.com/unhappychoice/gittype/commit/d5ec779)) - test: add unit tests for GitTypeError variants ([df9da80](https://github.com/unhappychoice/gittype/commit/df9da80)) - test: add unit tests for ScreenManager using TestBackend ([bd10849](https://github.com/unhappychoice/gittype/commit/bd10849)) - chore(deps): bump clap from 4.5.49 to 4.5.50 ([ef42180](https://github.com/unhappychoice/gittype/commit/ef42180)) - refactor: simplify service layer by removing Arc wrappers ([8f895a8](https://github.com/unhappychoice/gittype/commit/8f895a8)) - test: add unit tests for domain services ([8468d2f](https://github.com/unhappychoice/gittype/commit/8468d2f)) - refactor: move services from application to domain layer ([04e7ead](https://github.com/unhappychoice/gittype/commit/04e7ead)) - refactor: remove re-exports, use direct imports from service layer ([9120c7a](https://github.com/unhappychoice/gittype/commit/9120c7a)) - refactor: introduce service layer for business logic ([2f3b5c6](https://github.com/unhappychoice/gittype/commit/2f3b5c6)) - test: add comprehensive basic methods tests for all screens ([3b01b51](https://github.com/unhappychoice/gittype/commit/3b01b51)) - refactor: move cache directory path from view to provider ([ec94cbd](https://github.com/unhappychoice/gittype/commit/ec94cbd)) - style: run cargo fmt ([2645acf](https://github.com/unhappychoice/gittype/commit/2645acf)) - refactor: move RemoteGitRepositoryClient access from views to providers ([2f28651](https://github.com/unhappychoice/gittype/commit/2f28651)) - refactor: remove re-exports from game module to enforce proper separation ([7859f6f](https://github.com/unhappychoice/gittype/commit/7859f6f)) - test: add snapshot tests for CLI screens and update imports ([da5370b](https://github.com/unhappychoice/gittype/commit/da5370b)) - refactor: update imports and references for TUI architecture ([ec8fa8c](https://github.com/unhappychoice/gittype/commit/ec8fa8c)) - refactor: move data fetching to Screen providers in CLI commands ([8062a54](https://github.com/unhappychoice/gittype/commit/8062a54)) - refactor: remove deprecated game views ([457dcc7](https://github.com/unhappychoice/gittype/commit/457dcc7)) - refactor: remove deprecated CLI views ([ce6b4e0](https://github.com/unhappychoice/gittype/commit/ce6b4e0)) - chore(deps): bump ignore from 0.4.23 to 0.4.24 ([ca17fe6](https://github.com/unhappychoice/gittype/commit/ca17fe6)) - style: run cargo fmt ([119aad7](https://github.com/unhappychoice/gittype/commit/119aad7)) - test: add comprehensive unit tests for all DAOs ([f39bedc](https://github.com/unhappychoice/gittype/commit/f39bedc)) - refactor: move database seeders to examples directory ([d8ad1e9](https://github.com/unhappychoice/gittype/commit/d8ad1e9)) - test: add comprehensive unit tests for repository classes ([6f65c6b](https://github.com/unhappychoice/gittype/commit/6f65c6b)) - test: add test cases for C++, C#, and JavaScript to improve coverage ([d0c5fa0](https://github.com/unhappychoice/gittype/commit/d0c5fa0)) - test: add missing test cases for Zig, Go, and Kotlin ([86e9d1b](https://github.com/unhappychoice/gittype/commit/86e9d1b)) - style: run cargo fmt ([6d19822](https://github.com/unhappychoice/gittype/commit/6d19822)) - test: update test expectations for all language extractors ([77787b3](https://github.com/unhappychoice/gittype/commit/77787b3)) - test: add validation for chunk_counts sum in test macro ([18b06e5](https://github.com/unhappychoice/gittype/commit/18b06e5)) - refactor: implement capture_name_to_chunk_type and extract_name in chunk extraction ([737e05b](https://github.com/unhappychoice/gittype/commit/737e05b)) - chore(deps): bump tokio from 1.47.1 to 1.48.0 ([7b35d1d](https://github.com/unhappychoice/gittype/commit/7b35d1d)) - refactor: move database init into Database::new() for test-mocks ([52723f6](https://github.com/unhappychoice/gittype/commit/52723f6)) - refactor: use test-mocks feature to auto-switch implementations ([189ce88](https://github.com/unhappychoice/gittype/commit/189ce88)) - refactor: use FileStorage in TrendingRepository ([c5810b1](https://github.com/unhappychoice/gittype/commit/c5810b1)) - test: mock file storage and HTTP clients for repository tests ([79e10eb](https://github.com/unhappychoice/gittype/commit/79e10eb)) - test: add new_test method to StageRepository for test isolation ([15d8939](https://github.com/unhappychoice/gittype/commit/15d8939)) - test: add comprehensive integration tests for all screens ([8da96a9](https://github.com/unhappychoice/gittype/commit/8da96a9)) - test: add comprehensive tests for presentation layer ([84a85ba](https://github.com/unhappychoice/gittype/commit/84a85ba)) - test: add comprehensive tests for infrastructure layer ([89ca710](https://github.com/unhappychoice/gittype/commit/89ca710)) - test: add comprehensive tests for domain services and repositories ([fa953b2](https://github.com/unhappychoice/gittype/commit/fa953b2)) - test: add comprehensive unit tests for domain models ([07d9699](https://github.com/unhappychoice/gittype/commit/07d9699)) - test: enhance integration test helper macros ([3aceeee](https://github.com/unhappychoice/gittype/commit/3aceeee)) - refactor: extract tests from source files to separate test modules ([e60e11b](https://github.com/unhappychoice/gittype/commit/e60e11b)) - test: add test infrastructure with fixtures and helpers ([12ae77c](https://github.com/unhappychoice/gittype/commit/12ae77c)) - chore(deps): bump clap from 4.5.48 to 4.5.49 ([969a466](https://github.com/unhappychoice/gittype/commit/969a466)) - chore(deps): bump reqwest from 0.12.23 to 0.12.24 ([79b2130](https://github.com/unhappychoice/gittype/commit/79b2130)) - test: add snapshot tests for session screens and refactor global dependencies ([5d9d0ef](https://github.com/unhappychoice/gittype/commit/5d9d0ef)) - refactor: remove crossterm rendering backend and consolidate to ratatui-only ([b778cae](https://github.com/unhappychoice/gittype/commit/b778cae)) - perf: use Lazy static for rank patterns HashMap ([a81c447](https://github.com/unhappychoice/gittype/commit/a81c447)) - refactor: inject theme data via SettingsScreenDataProvider ([ef8f47b](https://github.com/unhappychoice/gittype/commit/ef8f47b)) - refactor: migrate SessionSummaryScreen to ratatui ([0525a3b](https://github.com/unhappychoice/gittype/commit/0525a3b)) - refactor: migrate SessionSummaryShareScreen to ratatui ([f918457](https://github.com/unhappychoice/gittype/commit/f918457)) - refactor: migrate SessionFailureScreen to ratatui ([39bfbdd](https://github.com/unhappychoice/gittype/commit/39bfbdd)) - test: add screen snapshot files ([f904407](https://github.com/unhappychoice/gittype/commit/f904407)) - test: add snapshot tests for screen components ([68cff05](https://github.com/unhappychoice/gittype/commit/68cff05)) - test: add mock data providers for screen tests ([ad20c16](https://github.com/unhappychoice/gittype/commit/ad20c16)) - test: add screen snapshot test infrastructure ([09513fb](https://github.com/unhappychoice/gittype/commit/09513fb)) - refactor: improve RecordsScreen testability ([7a898ba](https://github.com/unhappychoice/gittype/commit/7a898ba)) - refactor: add timestamp injection to PanicScreen for testability ([7edc9ea](https://github.com/unhappychoice/gittype/commit/7edc9ea)) - style: fix clippy warnings and format code ([d1ec5cb](https://github.com/unhappychoice/gittype/commit/d1ec5cb)) - refactor: clean up error handling and remove unused code ([d043654](https://github.com/unhappychoice/gittype/commit/d043654)) - refactor: implement DataProvider pattern for system screens ([2889558](https://github.com/unhappychoice/gittype/commit/2889558)) - refactor: implement DataProvider pattern for dialog and utility screens ([c67127d](https://github.com/unhappychoice/gittype/commit/c67127d)) - refactor: implement DataProvider pattern for data-heavy screens ([7e18e0d](https://github.com/unhappychoice/gittype/commit/7e18e0d)) - refactor: implement DataProvider pattern for failure and animation screens ([e90a1ca](https://github.com/unhappychoice/gittype/commit/e90a1ca)) - refactor: implement DataProvider pattern for sharing screens ([d130f4a](https://github.com/unhappychoice/gittype/commit/d130f4a)) - refactor: implement DataProvider pattern for summary screens ([a966d9a](https://github.com/unhappychoice/gittype/commit/a966d9a)) - refactor: implement DataProvider pattern for main flow screens ([99a92d1](https://github.com/unhappychoice/gittype/commit/99a92d1)) - refactor: centralize screen initialization in ScreenManager ([78c6ce3](https://github.com/unhappychoice/gittype/commit/78c6ce3)) - refactor: add instance methods to GameData and SessionManager ([e100e8a](https://github.com/unhappychoice/gittype/commit/e100e8a)) - refactor: introduce ScreenDataProvider trait and update Screen trait ([8e15fbc](https://github.com/unhappychoice/gittype/commit/8e15fbc)) - refactor: add EventBus to all remaining screens and update navigation ([3edcd70](https://github.com/unhappychoice/gittype/commit/3edcd70)) - refactor: add EventBus to LoadingScreen ([307c2ad](https://github.com/unhappychoice/gittype/commit/307c2ad)) - refactor: convert TypingScreen to use EventBus for domain events ([ee3871f](https://github.com/unhappychoice/gittype/commit/ee3871f)) - refactor: add EventBus to SessionManager and subscribe to domain events ([ba7006c](https://github.com/unhappychoice/gittype/commit/ba7006c)) - refactor: add EventBus to ScreenManager for event-driven navigation ([9f15213](https://github.com/unhappychoice/gittype/commit/9f15213)) - refactor: improve EventBus to prevent deadlocks and remove unused events ([d128e80](https://github.com/unhappychoice/gittype/commit/d128e80)) - chore(deps): bump criterion from 0.5.1 to 0.7.0 ([99b23f4](https://github.com/unhappychoice/gittype/commit/99b23f4)) - chore(deps): bump flate2 from 1.1.2 to 1.1.4 ([d4c9032](https://github.com/unhappychoice/gittype/commit/d4c9032)) - docs: add Zig language documentation ([3009e8b](https://github.com/unhappychoice/gittype/commit/3009e8b)) - test: add Zig language integration tests ([ca39493](https://github.com/unhappychoice/gittype/commit/ca39493)) - style: apply cargo fmt formatting ([03d2572](https://github.com/unhappychoice/gittype/commit/03d2572)) - test: fix clippy warnings in tests and benchmarks ([75b7197](https://github.com/unhappychoice/gittype/commit/75b7197)) - refactor: simplify closure to function reference ([71e303e](https://github.com/unhappychoice/gittype/commit/71e303e)) - refactor: implement Default trait for new() methods ([faa74f2](https://github.com/unhappychoice/gittype/commit/faa74f2)) - refactor: reduce function arguments with context struct ([6675171](https://github.com/unhappychoice/gittype/commit/6675171)) - refactor: simplify complex types with type aliases ([4dc55a1](https://github.com/unhappychoice/gittype/commit/4dc55a1)) - refactor: use unwrap_or_default instead of unwrap_or_else ([cac2bf3](https://github.com/unhappychoice/gittype/commit/cac2bf3)) - refactor: resolve clippy module_inception warnings ([9b193cf](https://github.com/unhappychoice/gittype/commit/9b193cf)) - perf: optimize ChunkExtractor with 85% performance improvement ([6bf24d3](https://github.com/unhappychoice/gittype/commit/6bf24d3)) - refactor: redesign ChallengeGenerator with optimized architecture ([ac9b69f](https://github.com/unhappychoice/gittype/commit/ac9b69f)) - chore(deps): bump serde from 1.0.227 to 1.0.228 ([070ca99](https://github.com/unhappychoice/gittype/commit/070ca99)) - chore(deps): bump thiserror from 2.0.16 to 2.0.17 ([6c3b7e7](https://github.com/unhappychoice/gittype/commit/6c3b7e7)) - refactor: integrate SourceFileExtractor with infrastructure FileStorage ([4919437](https://github.com/unhappychoice/gittype/commit/4919437)) - refactor: move LanguageRegistry functionality to Languages struct ([bd1fa61](https://github.com/unhappychoice/gittype/commit/bd1fa61)) - refactor: restructure domain services extractor into focused modules ([6b9c7d1](https://github.com/unhappychoice/gittype/commit/6b9c7d1)) - refactor: migrate cache infrastructure to domain repositories with test improvements ([a3bf2db](https://github.com/unhappychoice/gittype/commit/a3bf2db)) - refactor: unify storage implementations with AppDataProvider trait ([e01d252](https://github.com/unhappychoice/gittype/commit/e01d252)) - refactor: move ConfigManager to domain/services and integrate with FileStorage ([0cccaa9](https://github.com/unhappychoice/gittype/commit/0cccaa9)) - refactor: clean architecture refactoring of infrastructure/version ([0a79912](https://github.com/unhappychoice/gittype/commit/0a79912)) - refactor: reorganize database infrastructure following Clean Architecture ([cafd485](https://github.com/unhappychoice/gittype/commit/cafd485)) - refactor: optimize git repository processing and fix extraction logic ([eaa9069](https://github.com/unhappychoice/gittype/commit/eaa9069)) - refactor: extract OSS Insight API client to infrastructure/http ([d35d6b5](https://github.com/unhappychoice/gittype/commit/d35d6b5)) - refactor: eliminate long namespace usage outside use statements ([5871b6c](https://github.com/unhappychoice/gittype/commit/5871b6c)) - refactor: complete Clean Architecture reorganization ([9db229c](https://github.com/unhappychoice/gittype/commit/9db229c)) - refactor: migrate src/game to src/presentation/game ([cb31b81](https://github.com/unhappychoice/gittype/commit/cb31b81)) - refactor: migrate src/scoring to domain/services/scoring ([918a691](https://github.com/unhappychoice/gittype/commit/918a691)) - refactor: migrate src/storage to Clean Architecture structure ([e72acb7](https://github.com/unhappychoice/gittype/commit/e72acb7)) - refactor: migrate extractor module to Clean Architecture structure ([c54e65e](https://github.com/unhappychoice/gittype/commit/c54e65e)) - refactor: move language models to domain layer for clean architecture ([98f44d7](https://github.com/unhappychoice/gittype/commit/98f44d7)) - refactor: separate ui module into clean architecture layers ([4819f9c](https://github.com/unhappychoice/gittype/commit/4819f9c)) - refactor: move models module to domain layer for clean architecture ([740e808](https://github.com/unhappychoice/gittype/commit/740e808)) - refactor: move version module to clean architecture layers ([9afe8d5](https://github.com/unhappychoice/gittype/commit/9afe8d5)) - refactor: separate config into domain and infrastructure layers ([ca3728a](https://github.com/unhappychoice/gittype/commit/ca3728a)) - refactor: move cli module to presentation layer for clean architecture ([4e31a24](https://github.com/unhappychoice/gittype/commit/4e31a24)) - refactor: move cache module to infrastructure layer for clean architecture ([5761a43](https://github.com/unhappychoice/gittype/commit/5761a43)) - chore(deps): bump serde from 1.0.226 to 1.0.227 ([f283644](https://github.com/unhappychoice/gittype/commit/f283644)) - docs: fix themes.md to match actual custom theme implementation ([5f442a3](https://github.com/unhappychoice/gittype/commit/5f442a3)) - chore: move social media section ([0e37c57](https://github.com/unhappychoice/gittype/commit/0e37c57)) - chore: switch community link to x.com ([2420c5e](https://github.com/unhappychoice/gittype/commit/2420c5e)) - chore: add community twitter link ([f54d4d0](https://github.com/unhappychoice/gittype/commit/f54d4d0)) - chore: move help community tab before about ([a646b86](https://github.com/unhappychoice/gittype/commit/a646b86)) - chore: add generated third-party licenses ([344c3d2](https://github.com/unhappychoice/gittype/commit/344c3d2))