diff --git a/rust/CLAUDE.md b/rust/CLAUDE.md index b349ca1..f14a262 100644 --- a/rust/CLAUDE.md +++ b/rust/CLAUDE.md @@ -34,7 +34,7 @@ src/ ├── api/ # reqwest HTTP client, sync pipeline, CSV importers ├── calc/ # league stats, matchup scoring, score cache, weights ├── db/ # sqlx models, queries, schema -├── screens/ # ratatui screen states (dashboard, gameday, stubs) +├── screens/ # ratatui screen states (all 6 screens complete) └── widgets/ # reusable UI components (selector) ``` @@ -45,16 +45,16 @@ src/ - **No global state**: Settings and SqlitePool passed by reference, no singletons - **TOML config** (not YAML): `data/settings.toml` with `SBA_SCOUT_` env var overrides -### Current Screen Status +### Screens (all complete) -- `dashboard.rs` — Done (roster summary, sync) -- `gameday.rs` — Done (matchup table + lineup builder) -- `roster.rs` — Stub -- `matchup.rs` — Stub -- `lineup.rs` — Stub -- `settings.rs` — Stub +- `dashboard.rs` — Roster summary, sync trigger +- `gameday.rs` — Matchup table + lineup builder (opponent/pitcher context) +- `roster.rs` — Tabbed roster view (Majors/Minors/IL), batter/pitcher sub-tables +- `matchup.rs` — Standalone matchup analysis with sort modes, state cached on nav-away +- `lineup.rs` — Standalone lineup builder, save/load/delete with confirmation +- `settings.rs` — Config form with TOML save, live team validation, per-field change indicators ## Code Style - Run `cargo fmt` and `cargo clippy` before committing -- Follow existing patterns in `gameday.rs` for new screens (state struct + handle_key + handle_message + render) +- Screen pattern: state struct → `new()` → `mount()` → `handle_key()` → `handle_message()` → `render()`