From 10ff558853f549d3f3c7c8432488bfad9da6973a Mon Sep 17 00:00:00 2001 From: salmonik Date: Sun, 1 Nov 2026 19:58:59 +0100 Subject: 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. --- tests/version.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'tests') diff --git a/tests/version.rs b/tests/version.rs index ef58601..af244db 100644 --- a/tests/version.rs +++ b/tests/version.rs @@ -69,3 +69,30 @@ fn the_hello_reply_round_trips() { assert!(parse_hello("PONG").is_none()); assert!(parse_hello("HELLO").is_none()); } + +/// The GUI is a client, so it must ship in lockstep with the TUI and server. +/// Keep `gui/Cargo.toml` at the same version as the root package. +#[test] +fn the_gui_member_uses_the_same_version() { + let gui_manifest = include_str!("../gui/Cargo.toml"); + let gui_version = gui_manifest + .lines() + .find_map(|line| line.trim().strip_prefix("version = ")) + .expect("gui/Cargo.toml declares a version") + .trim_matches('"'); + assert_eq!(gui_version, VERSION); +} + +/// egui's dependency tree must never enter the TUI or server build graph. +/// The GUI is a workspace member that depends on this package, never the +/// other way round. +#[test] +fn the_root_package_does_not_depend_on_the_gui() { + let manifest = include_str!("../Cargo.toml"); + for forbidden in ["eframe", "egui"] { + assert!( + !manifest.contains(forbidden), + "the root package must not depend on {forbidden}" + ); + } +} -- cgit v1.2.3