3.3 KiB
3.3 KiB
DEVLOG
2026-02-10 - Rust CLI/TUI rebuild (strict dependencies)
Scope completed
- Initialized a Rust project with strict dependency policy:
ratatui,crossterm,claponly. - Added global
--seedsupport 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.rswith 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 instancel: create 4-Team League instanceo: create 4-Team Knockout instances: start selected instancec: clone selected instanced: delete selected instancee: export selected instance to CSVvorEnter: toggle dashboard/detail1,2,4,0: speed control (1x/2x/4x/instant)j/kor arrow keys: select instanceq: 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.
2026-02-10 - Team selection controls (manual + CPU auto-fill)
Scope completed
- Added interactive create modal in TUI for team slot configuration.
- Added per-slot selection mode:
Manualteam selectionCPU auto-fill
- Kept deterministic behavior by resolving CPU team picks with the instance seed.
- Added keyboard controls for modal flow:
mset manual,pset CPU[/]or left/right to cycle manual teams- up/down to switch slot
- Enter to create, Esc to cancel
- Updated
quickcommand to support optional--home/--away:- If missing, CPU auto-fills from remaining teams.
- Same seed yields the same auto-filled teams and outcomes.
2026-02-10 - Live standings/bracket updates + possession surfacing
Scope completed
- Added explicit possession fields to match results and surfaced them in quick mode output.
- Added possession row to single-match CSV export output.
- Implemented live detail updates driven by simulation frames:
- per-frame stats updates
- per-frame competition panel updates
- incremental history updates
- Added live league standings snapshots after each fixture.
- Added ASCII knockout tree bracket snapshots and updates after each semifinal/final.
- Tuned detail view layout to allocate more space to stats/competition/history panels.
2026-02-10 - Fullscreen info modals for readability
Scope completed
- Added dedicated fullscreen overlay modals for:
- Stats (
t) - Standings/Bracket (
g) - History (
h)
- Stats (
- Added modal scrolling controls (
j/kor up/down) and close controls (Escorq). - Simplified detail view to focus on scoreboard, logs, and instance info.
- Added detail-panel hint bar to direct users to the new dedicated modals.