2.2 KiB
2.2 KiB
| id | type | title | tags | importance | confidence | created | updated | relations | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| bc4abc6e-57c1-4d6c-b414-213c1367be9b | decision | SBA Scout Rust Phase 4: Async TUI with Dashboard and Gameday screens |
|
0.8 | 0.8 | 2026-02-28T16:52:43.969652+00:00 | 2026-02-28T16:54:00.365432+00:00 |
|
SBA Scout Rust Phase 4 Complete
Branch: feat/rust-rewrite | Commit: 6d2b11a
What Was Implemented
Phase 4 replaced blocking event::read() with tokio::select! over EventStream + mpsc channel + tick interval, enabling a fully async TUI.
Architecture
- AppMessage enum — typed channel messages for background task results
- ActiveScreen enum — owns screen-specific state (
DashboardState,GamedayState) - SelectorWidget — generic popup list widget for cascading selectors
- Notification system — UI notifications with auto-expiry
Screens
Dashboard
- Roster summary cards
- API sync trigger
Gameday
- Cascading team/pitcher selectors
- Matchup analysis table
- 9-slot lineup management with save/load
Navigation
d= Dashboard,g= Gameday,q= quit (disabled during text input)
Stats
- 1739 lines added across 10 files
- 105 tests passing