Initial Rust CLI/TUI Rebuild (Seeded Sim + CSV Export)
This commit is contained in:
parent
faf0929bb6
commit
dae34cce41
16 changed files with 2739 additions and 0 deletions
39
DEVLOG.md
Normal file
39
DEVLOG.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# DEVLOG
|
||||
|
||||
## 2026-02-10 - Rust CLI/TUI rebuild (strict dependencies)
|
||||
|
||||
### Scope completed
|
||||
- Initialized a Rust project with strict dependency policy: `ratatui`, `crossterm`, `clap` only.
|
||||
- Added global `--seed` support for reproducible runs across TUI and headless commands.
|
||||
- Ported team/tactic/profile data from JavaScript into `src/data.rs`.
|
||||
- Implemented a std-only deterministic RNG in `src/utils.rs`.
|
||||
- Ported core simulation logic to Rust in `src/sim.rs`:
|
||||
- Single match minute loop with xG, tactics, fouls/cards, corners, offsides, saves.
|
||||
- 4-team league mode with fixtures and standings tie-breakers.
|
||||
- 4-team knockout mode with penalties and edge-case loop guard.
|
||||
- Implemented lifecycle state machine and bounded logs in `src/instance.rs`.
|
||||
- Built a ratatui dashboard/detail UI with keyboard controls in `src/app.rs` + `src/ui/*`.
|
||||
- Implemented CSV export in `src/export.rs` with manual escaping and CSV injection sanitization.
|
||||
- Added CLI commands:
|
||||
- `quick` (single match)
|
||||
- `list` (team listing)
|
||||
- `export` (CSV generation)
|
||||
|
||||
### Key controls in TUI
|
||||
- `n`: create Single Match instance
|
||||
- `l`: create 4-Team League instance
|
||||
- `o`: create 4-Team Knockout instance
|
||||
- `s`: start selected instance
|
||||
- `c`: clone selected instance
|
||||
- `d`: delete selected instance
|
||||
- `e`: export selected instance to CSV
|
||||
- `v` or `Enter`: toggle dashboard/detail
|
||||
- `1`, `2`, `4`, `0`: speed control (1x/2x/4x/instant)
|
||||
- `j`/`k` or arrow keys: select instance
|
||||
- `q`: quit
|
||||
|
||||
### Notes
|
||||
- No async runtime is used.
|
||||
- No external data files are required at runtime.
|
||||
- Team data is fully embedded in the binary.
|
||||
- CSV export format is mode-specific and generated with std I/O.
|
||||
Loading…
Add table
Add a link
Reference in a new issue