summaryrefslogtreecommitdiffstats
path: root/docs/GUI-PLAN.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-01 19:58:59 +0100
committersalmonik <salmonik@tuta.io>2026-11-01 19:58:59 +0100
commit10ff558853f549d3f3c7c8432488bfad9da6973a (patch)
tree271b05fead384e2d91e5c8332fea9d00b540f0cc /docs/GUI-PLAN.md
parentv4.0.7: finish the Phase 1 boundary with a command shell (diff)
downloadzagan-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 'docs/GUI-PLAN.md')
-rw-r--r--docs/GUI-PLAN.md43
1 files changed, 35 insertions, 8 deletions
diff --git a/docs/GUI-PLAN.md b/docs/GUI-PLAN.md
index 2789b81..8c3db0a 100644
--- a/docs/GUI-PLAN.md
+++ b/docs/GUI-PLAN.md
@@ -69,16 +69,43 @@ crash board from its local clock.
69 69
70## Phase 3 — `gui/` skeleton and the style spike 70## Phase 3 — `gui/` skeleton and the style spike
71 71
72- Add the `gui/` workspace member (eframe), no game code yet. 72**Code complete in v4.1.0; awaiting the screenshot sign-off.**
73- Theme module with the agreed tokens, two fonts, spacing scale. 73
74- One reference screen: the roulette felt with chips, cursor, and a spinning 74- `gui/` is a workspace member (`zagan-bet-gui`). It depends on the core with
75 number, plus the persistent header (connection, balance, account). 75 `default-features = false`, so neither egui nor native-tls enters the TUI or
76- Verify the Windows cross-compile with a hello-world before going further. 76 server build graph. The build uses the workspace's `gui-release` profile
77 77 (opt-level `z`, LTO, stripped).
78**Gate:** your approval of the screenshot at 1080p; binary ≤ 40 MB, idle 78- `gui/src/theme.rs` holds the tokens: the terminal-derived dark palette, felt
79≤ 150 MB, cold start ≤ 1 s, 60 fps on integrated graphics. 79 green kept for the table, a 4/8/12/16/24 spacing scale, radii, and the type
80 scale. Two embedded fonts: Open Sans (OFL) for text, Hack (MIT) for numbers,
81 chips and labels. Licences sit next to the files in `gui/assets/fonts/`.
82- `gui/src/roulette.rs` draws the felt, chips, the fine lattice cursor and the
83 wheel from a `RouletteView`; it owns the geometry, not the rules.
84- `gui/src/app.rs` composes the persistent header (connection, account,
85 balance) with the table and the betting sidebar. The demo state animates a
86 2.4 s wheel spin and highlights the winning pocket and cell.
87- `gui/tests/layout.rs` covers the pure maths (money grouping, wheel angle,
88 table aspect, bet names). UI wiring tests arrive with `egui_kittest` in
89 Phase 4.
90
91Measured on Linux at 1080p with llvmpipe software GL:
92
93| Check | Result |
94| --- | --- |
95| Linux binary | 6.0 MB |
96| Windows x86_64 binary | 4.7 MB |
97| Cold start to window | 52 ms |
98| Idle RSS | 137 MB |
99| Idle CPU | 0% |
100
101The approved reference lives at `docs/screenshots/gui-roulette-1080p.png`, with
102the result state at `docs/screenshots/gui-roulette-result-1080p.png`.
103
104**Gate:** the screenshot needs your approval. Frame rate on integrated graphics
105still needs a run on real hardware.
80 106
81## Phase 4 — GUI wiring 107## Phase 4 — GUI wiring
108## Phase 4 — GUI wiring
82 109
83- Network thread with channels, request deadlines in the shared adapter. 110- Network thread with channels, request deadlines in the shared adapter.
84- Trust modal, version-mismatch screen, login/register, lobby, history panel. 111- Trust modal, version-mismatch screen, login/register, lobby, history panel.