diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-01 19:58:59 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-01 19:58:59 +0100 |
| commit | 10ff558853f549d3f3c7c8432488bfad9da6973a (patch) | |
| tree | 271b05fead384e2d91e5c8332fea9d00b540f0cc /AGENTS.md | |
| parent | v4.0.7: finish the Phase 1 boundary with a command shell (diff) | |
| download | zagan-bet-10ff558853f549d3f3c7c8432488bfad9da6973a.tar.gz zagan-bet-10ff558853f549d3f3c7c8432488bfad9da6973a.zip | |
v4.1.0: add the egui workspace member and the roulette style spike
Phase 3 of the GUI plan. gui/ is a separate package that depends on the core with default features off, so egui never enters the TUI or server build graph. It carries the theme tokens and two embedded fonts (Open Sans OFL, Hack MIT), paints the felt, chips, cursor and wheel from RouletteView, and composes the persistent header with the betting sidebar.
The reference screen runs on demo state: arrow keys move the shared Cursor, clicks place chips, and SPIN animates a 2.4 s wheel that settles with the winning pocket under the pointer. No network until Phase 4.
Verified x86_64-pc-windows-gnu cross-compile. Measured on Linux at 1080p with llvmpipe: 6.0 MB binary (4.7 MB on Windows), 52 ms to window, 137 MB idle RSS, 0% idle CPU.
Diffstat (limited to '')
| -rw-r--r-- | AGENTS.md | 13 |
1 files changed, 11 insertions, 2 deletions
| @@ -59,11 +59,20 @@ | |||
| 59 | receives `Command` or a finished line through `submit_line`, never a key. | 59 | receives `Command` or a finished line through `submit_line`, never a key. |
| 60 | - egui lives in the `gui/` workspace member. Its dependencies must never | 60 | - egui lives in the `gui/` workspace member. Its dependencies must never |
| 61 | enter the TUI or server build graph: no GUI crate in the root package's | 61 | enter the TUI or server build graph: no GUI crate in the root package's |
| 62 | `[dependencies]`. | 62 | `[dependencies]`. The GUI may depend on the core, never the reverse. |
| 63 | - Build the GUI with `cargo build -p zagan-bet-gui --profile gui-release`; | ||
| 64 | the profile lives at the workspace root because a member's is ignored. | ||
| 65 | - Colours, spacing and font sizes come from `gui/src/theme.rs`; screens must | ||
| 66 | not hard-code them. The embedded fonts are Open Sans (OFL) and Hack (MIT); | ||
| 67 | ship their licence files with any change. | ||
| 68 | - GUI integration tests live in `gui/tests/`, because the root package cannot | ||
| 69 | depend on the GUI. | ||
| 63 | - First contact shows the fingerprint and waits for a decision before sending | 70 | - First contact shows the fingerprint and waits for a decision before sending |
| 64 | any credentials. A changed key is a hard stop; forgetting it is explicit. | 71 | any credentials. A changed key is a hard stop; forgetting it is explicit. |
| 65 | - The GUI is themed deliberately. Default egui styling is not an acceptable | 72 | - The GUI is themed deliberately. Default egui styling is not an acceptable |
| 66 | look; keep a style module and a reference screen. | 73 | look; keep a style module and a reference screen. The palette is derived |
| 74 | from the terminal's ANSI colours, and felt green is only ever the roulette | ||
| 75 | table. | ||
| 67 | 76 | ||
| 68 | ## Client TUI | 77 | ## Client TUI |
| 69 | - `render_lines()` and `render()` must agree. If `render()` uses `\r\n`, | 78 | - `render_lines()` and `render()` must agree. If `render()` uses `\r\n`, |
