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