diff --git a/.gitignore b/.gitignore
index 3736e04..fa83e0e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,3 @@ profile.json
bot/models
client_web/dist
var
-
-deploy
-clients/**/dist
diff --git a/Cargo.lock b/Cargo.lock
index 8ce19af..2141f27 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -23,7 +23,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
dependencies = [
- "crypto-common 0.1.7",
+ "crypto-common",
"generic-array",
]
@@ -191,18 +191,6 @@ dependencies = [
"syn 2.0.117",
]
-[[package]]
-name = "argon2"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072"
-dependencies = [
- "base64ct",
- "blake2",
- "cpufeatures 0.2.17",
- "password-hash 0.5.0",
-]
-
[[package]]
name = "arimaa_engine_step"
version = "1.0.1"
@@ -390,7 +378,7 @@ dependencies = [
"bytes",
"form_urlencoded",
"futures-util",
- "http 1.4.0",
+ "http",
"http-body",
"http-body-util",
"hyper",
@@ -423,7 +411,7 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1"
dependencies = [
"bytes",
"futures-core",
- "http 1.4.0",
+ "http",
"http-body",
"http-body-util",
"mime",
@@ -434,25 +422,6 @@ dependencies = [
"tracing",
]
-[[package]]
-name = "axum-login"
-version = "0.18.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "964ea6eb764a227baa8c3368e45c94d23b6863cc7b880c6c9e341c143c5a5ff7"
-dependencies = [
- "axum",
- "form_urlencoded",
- "serde",
- "subtle",
- "thiserror 2.0.18",
- "tower-cookies",
- "tower-layer",
- "tower-service",
- "tower-sessions",
- "tracing",
- "urlencoding",
-]
-
[[package]]
name = "backbone-lib"
version = "0.1.0"
@@ -585,15 +554,6 @@ dependencies = [
"core2",
]
-[[package]]
-name = "blake2"
-version = "0.10.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
-dependencies = [
- "digest 0.10.7",
-]
-
[[package]]
name = "block"
version = "0.1.6"
@@ -609,15 +569,6 @@ dependencies = [
"generic-array",
]
-[[package]]
-name = "block-buffer"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be"
-dependencies = [
- "hybrid-array",
-]
-
[[package]]
name = "board-game"
version = "0.8.2"
@@ -1408,7 +1359,7 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
dependencies = [
- "crypto-common 0.1.7",
+ "crypto-common",
"inout",
"zeroize",
]
@@ -1456,7 +1407,6 @@ dependencies = [
"backbone-lib",
"futures",
"getrandom 0.3.4",
- "gloo-net 0.5.0",
"gloo-storage",
"gloo-timers",
"leptos",
@@ -1478,12 +1428,6 @@ dependencies = [
"cc",
]
-[[package]]
-name = "cmov"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746"
-
[[package]]
name = "cobs"
version = "0.3.0"
@@ -1604,12 +1548,6 @@ dependencies = [
"toml 0.8.23",
]
-[[package]]
-name = "const-oid"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
-
[[package]]
name = "const-random"
version = "0.1.18"
@@ -1905,15 +1843,6 @@ dependencies = [
"typenum",
]
-[[package]]
-name = "crypto-common"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710"
-dependencies = [
- "hybrid-array",
-]
-
[[package]]
name = "csv"
version = "1.4.0"
@@ -1935,15 +1864,6 @@ dependencies = [
"memchr",
]
-[[package]]
-name = "ctutils"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e"
-dependencies = [
- "cmov",
-]
-
[[package]]
name = "cubecl"
version = "0.9.0"
@@ -2492,41 +2412,6 @@ version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
-[[package]]
-name = "deadpool"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b"
-dependencies = [
- "deadpool-runtime",
- "lazy_static",
- "num_cpus",
- "tokio",
-]
-
-[[package]]
-name = "deadpool-postgres"
-version = "0.14.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d697d376cbfa018c23eb4caab1fd1883dd9c906a8c034e8d9a3cb06a7e0bef9"
-dependencies = [
- "async-trait",
- "deadpool",
- "getrandom 0.2.17",
- "tokio",
- "tokio-postgres",
- "tracing",
-]
-
-[[package]]
-name = "deadpool-runtime"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b"
-dependencies = [
- "tokio",
-]
-
[[package]]
name = "decorum"
version = "0.3.1"
@@ -2555,7 +2440,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
dependencies = [
"powerfmt",
- "serde_core",
]
[[package]]
@@ -2632,23 +2516,11 @@ version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
- "block-buffer 0.10.4",
- "crypto-common 0.1.7",
+ "block-buffer",
+ "crypto-common",
"subtle",
]
-[[package]]
-name = "digest"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c"
-dependencies = [
- "block-buffer 0.12.0",
- "const-oid",
- "crypto-common 0.2.1",
- "ctutils",
-]
-
[[package]]
name = "directories"
version = "6.0.0"
@@ -2996,12 +2868,6 @@ dependencies = [
"synstructure 0.12.6",
]
-[[package]]
-name = "fallible-iterator"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
-
[[package]]
name = "fallible-iterator"
version = "0.3.0"
@@ -3426,7 +3292,7 @@ dependencies = [
"cfg-if",
"js-sys",
"libc",
- "wasi 0.11.1+wasi-snapshot-preview1",
+ "wasi",
"wasm-bindgen",
]
@@ -3569,27 +3435,6 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
-[[package]]
-name = "gloo-net"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-sink",
- "gloo-utils",
- "http 0.2.12",
- "js-sys",
- "pin-project",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
[[package]]
name = "gloo-net"
version = "0.6.0"
@@ -3600,7 +3445,7 @@ dependencies = [
"futures-core",
"futures-sink",
"gloo-utils",
- "http 1.4.0",
+ "http",
"js-sys",
"pin-project",
"serde",
@@ -3757,7 +3602,7 @@ dependencies = [
"fnv",
"futures-core",
"futures-sink",
- "http 1.4.0",
+ "http",
"indexmap",
"slab",
"tokio",
@@ -3883,16 +3728,7 @@ version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
dependencies = [
- "digest 0.10.7",
-]
-
-[[package]]
-name = "hmac"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f"
-dependencies = [
- "digest 0.11.2",
+ "digest",
]
[[package]]
@@ -3904,17 +3740,6 @@ dependencies = [
"utf8-width",
]
-[[package]]
-name = "http"
-version = "0.2.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
-dependencies = [
- "bytes",
- "fnv",
- "itoa",
-]
-
[[package]]
name = "http"
version = "1.4.0"
@@ -3932,7 +3757,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
- "http 1.4.0",
+ "http",
]
[[package]]
@@ -3943,17 +3768,11 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
dependencies = [
"bytes",
"futures-core",
- "http 1.4.0",
+ "http",
"http-body",
"pin-project-lite",
]
-[[package]]
-name = "http-range-header"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c"
-
[[package]]
name = "httparse"
version = "1.10.1"
@@ -3972,15 +3791,6 @@ version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424"
-[[package]]
-name = "hybrid-array"
-version = "0.4.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214"
-dependencies = [
- "typenum",
-]
-
[[package]]
name = "hydration_context"
version = "0.2.1"
@@ -4006,7 +3816,7 @@ dependencies = [
"futures-channel",
"futures-core",
"h2",
- "http 1.4.0",
+ "http",
"http-body",
"httparse",
"httpdate",
@@ -4023,7 +3833,7 @@ version = "0.27.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
dependencies = [
- "http 1.4.0",
+ "http",
"hyper",
"hyper-util",
"rustls",
@@ -4044,7 +3854,7 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
- "http 1.4.0",
+ "http",
"http-body",
"hyper",
"ipnet",
@@ -4968,42 +4778,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "leptos_router"
-version = "0.7.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4168ead6a9715daba953aa842795cb2ad81b6e011a15745bd3d1baf86f76de95"
-dependencies = [
- "any_spawner",
- "either_of",
- "futures",
- "gloo-net 0.6.0",
- "js-sys",
- "leptos",
- "leptos_router_macro",
- "once_cell",
- "or_poisoned",
- "reactive_graph",
- "send_wrapper",
- "tachys",
- "thiserror 2.0.18",
- "url",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "leptos_router_macro"
-version = "0.7.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e31197af38d209ffc5d9f89715381c415a1570176f8d23455fbe00d148e79640"
-dependencies = [
- "proc-macro-error2",
- "proc-macro2",
- "quote",
- "syn 2.0.117",
-]
-
[[package]]
name = "leptos_server"
version = "0.7.8"
@@ -5143,7 +4917,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
dependencies = [
"scopeguard",
- "serde",
]
[[package]]
@@ -5274,16 +5047,6 @@ dependencies = [
"rayon",
]
-[[package]]
-name = "md-5"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98"
-dependencies = [
- "cfg-if",
- "digest 0.11.2",
-]
-
[[package]]
name = "md5"
version = "0.8.0"
@@ -5349,16 +5112,6 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-[[package]]
-name = "mime_guess"
-version = "2.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
-dependencies = [
- "mime",
- "unicase",
-]
-
[[package]]
name = "minimal-lexical"
version = "0.2.1"
@@ -5383,7 +5136,7 @@ checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
dependencies = [
"libc",
"log",
- "wasi 0.11.1+wasi-snapshot-preview1",
+ "wasi",
"windows-sys 0.61.2",
]
@@ -5740,15 +5493,6 @@ dependencies = [
"objc2-core-foundation",
]
-[[package]]
-name = "objc2-system-configuration"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7216bd11cbda54ccabcab84d523dc93b858ec75ecfb3a7d89513fa22464da396"
-dependencies = [
- "objc2-core-foundation",
-]
-
[[package]]
name = "object"
version = "0.37.3"
@@ -5870,17 +5614,6 @@ dependencies = [
"subtle",
]
-[[package]]
-name = "password-hash"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166"
-dependencies = [
- "base64ct",
- "rand_core 0.6.4",
- "subtle",
-]
-
[[package]]
name = "paste"
version = "1.0.15"
@@ -5905,10 +5638,10 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
dependencies = [
- "digest 0.10.7",
- "hmac 0.12.1",
- "password-hash 0.4.2",
- "sha2 0.10.9",
+ "digest",
+ "hmac",
+ "password-hash",
+ "sha2",
]
[[package]]
@@ -5957,7 +5690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220"
dependencies = [
"pest",
- "sha2 0.10.9",
+ "sha2",
]
[[package]]
@@ -5970,25 +5703,6 @@ dependencies = [
"indexmap",
]
-[[package]]
-name = "phf"
-version = "0.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
-dependencies = [
- "phf_shared",
- "serde",
-]
-
-[[package]]
-name = "phf_shared"
-version = "0.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
-dependencies = [
- "siphasher",
-]
-
[[package]]
name = "pico-args"
version = "0.5.0"
@@ -6116,35 +5830,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "postgres-protocol"
-version = "0.6.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56201207dac53e2f38e848e31b4b91616a6bb6e0c7205b77718994a7f49e70fc"
-dependencies = [
- "base64 0.22.1",
- "byteorder",
- "bytes",
- "fallible-iterator 0.2.0",
- "hmac 0.13.0",
- "md-5",
- "memchr",
- "rand 0.10.1",
- "sha2 0.11.0",
- "stringprep",
-]
-
-[[package]]
-name = "postgres-types"
-version = "0.2.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8dc729a129e682e8d24170cd30ae1aa01b336b096cbb56df6d534ffec133d186"
-dependencies = [
- "bytes",
- "fallible-iterator 0.2.0",
- "postgres-protocol",
-]
-
[[package]]
name = "potential_utf"
version = "0.1.5"
@@ -6872,31 +6557,6 @@ version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2"
-[[package]]
-name = "relay-server"
-version = "0.1.0"
-dependencies = [
- "argon2",
- "axum",
- "axum-login",
- "bytes",
- "deadpool-postgres",
- "futures-util",
- "postcard",
- "protocol",
- "rand 0.8.5",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
- "time",
- "tokio",
- "tokio-postgres",
- "tower-http",
- "tower-sessions",
- "tracing",
- "tracing-subscriber",
-]
-
[[package]]
name = "renderdoc-sys"
version = "1.1.0"
@@ -6937,7 +6597,7 @@ dependencies = [
"futures-core",
"futures-util",
"h2",
- "http 1.4.0",
+ "http",
"http-body",
"http-body-util",
"hyper",
@@ -7062,7 +6722,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f"
dependencies = [
"bitflags 2.11.0",
- "fallible-iterator 0.3.0",
+ "fallible-iterator",
"fallible-streaming-iterator",
"hashlink",
"libsqlite3-sys",
@@ -7417,8 +7077,8 @@ dependencies = [
"const_format",
"dashmap",
"futures",
- "gloo-net 0.6.0",
- "http 1.4.0",
+ "gloo-net",
+ "http",
"js-sys",
"once_cell",
"pin-project-lite",
@@ -7469,7 +7129,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
dependencies = [
"cfg-if",
"cpufeatures 0.2.17",
- "digest 0.10.7",
+ "digest",
]
[[package]]
@@ -7480,18 +7140,7 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
dependencies = [
"cfg-if",
"cpufeatures 0.2.17",
- "digest 0.10.7",
-]
-
-[[package]]
-name = "sha2"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
-dependencies = [
- "cfg-if",
- "cpufeatures 0.3.0",
- "digest 0.11.2",
+ "digest",
]
[[package]]
@@ -7578,12 +7227,6 @@ dependencies = [
"quote",
]
-[[package]]
-name = "siphasher"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e"
-
[[package]]
name = "slab"
version = "0.4.12"
@@ -7690,17 +7333,6 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82"
-[[package]]
-name = "stringprep"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1"
-dependencies = [
- "unicode-bidi",
- "unicode-normalization",
- "unicode-properties",
-]
-
[[package]]
name = "strsim"
version = "0.11.1"
@@ -8156,7 +7788,6 @@ dependencies = [
"bytes",
"libc",
"mio",
- "parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2",
@@ -8176,32 +7807,6 @@ dependencies = [
"syn 2.0.117",
]
-[[package]]
-name = "tokio-postgres"
-version = "0.7.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dd8df5ef180f6364759a6f00f7aadda4fbbac86cdee37480826a6ff9f3574ce"
-dependencies = [
- "async-trait",
- "byteorder",
- "bytes",
- "fallible-iterator 0.2.0",
- "futures-channel",
- "futures-util",
- "log",
- "parking_lot",
- "percent-encoding",
- "phf",
- "pin-project-lite",
- "postgres-protocol",
- "postgres-types",
- "rand 0.10.1",
- "socket2",
- "tokio",
- "tokio-util",
- "whoami",
-]
-
[[package]]
name = "tokio-rustls"
version = "0.26.4"
@@ -8382,22 +7987,6 @@ dependencies = [
"tracing",
]
-[[package]]
-name = "tower-cookies"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "151b5a3e3c45df17466454bb74e9ecedecc955269bdedbf4d150dfa393b55a36"
-dependencies = [
- "axum-core",
- "cookie",
- "futures-util",
- "http 1.4.0",
- "parking_lot",
- "pin-project-lite",
- "tower-layer",
- "tower-service",
-]
-
[[package]]
name = "tower-http"
version = "0.6.8"
@@ -8406,24 +7995,14 @@ checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
dependencies = [
"bitflags 2.11.0",
"bytes",
- "futures-core",
"futures-util",
- "http 1.4.0",
+ "http",
"http-body",
- "http-body-util",
- "http-range-header",
- "httpdate",
"iri-string",
- "mime",
- "mime_guess",
- "percent-encoding",
"pin-project-lite",
- "tokio",
- "tokio-util",
"tower",
"tower-layer",
"tower-service",
- "tracing",
]
[[package]]
@@ -8438,57 +8017,6 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
-[[package]]
-name = "tower-sessions"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a05911f23e8fae446005fe9b7b97e66d95b6db589dc1c4d59f6a2d4d4927d3"
-dependencies = [
- "async-trait",
- "http 1.4.0",
- "time",
- "tokio",
- "tower-cookies",
- "tower-layer",
- "tower-service",
- "tower-sessions-core",
- "tower-sessions-memory-store",
- "tracing",
-]
-
-[[package]]
-name = "tower-sessions-core"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce8cce604865576b7751b7a6bc3058f754569a60d689328bb74c52b1d87e355b"
-dependencies = [
- "async-trait",
- "axum-core",
- "base64 0.22.1",
- "futures",
- "http 1.4.0",
- "parking_lot",
- "rand 0.8.5",
- "serde",
- "serde_json",
- "thiserror 2.0.18",
- "time",
- "tokio",
- "tracing",
-]
-
-[[package]]
-name = "tower-sessions-memory-store"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb05909f2e1420135a831dd5df9f5596d69196d0a64c3499ca474c4bd3d33242"
-dependencies = [
- "async-trait",
- "time",
- "tokio",
- "tower-sessions-core",
-]
-
[[package]]
name = "tracel-llvm"
version = "20.1.4-7"
@@ -8514,7 +8042,7 @@ dependencies = [
"reqwest",
"serde",
"serde_json",
- "sha2 0.10.9",
+ "sha2",
"tar",
"walkdir",
]
@@ -8700,29 +8228,6 @@ dependencies = [
"transpose",
]
-[[package]]
-name = "trictrac-web"
-version = "0.1.0"
-dependencies = [
- "backbone-lib",
- "futures",
- "getrandom 0.3.4",
- "gloo-net 0.5.0",
- "gloo-storage",
- "gloo-timers",
- "js-sys",
- "leptos",
- "leptos_i18n",
- "leptos_router",
- "rand 0.9.3",
- "serde",
- "serde_json",
- "trictrac-store",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
[[package]]
name = "try-lock"
version = "0.2.5"
@@ -8738,7 +8243,7 @@ dependencies = [
"byteorder",
"bytes",
"data-encoding",
- "http 1.4.0",
+ "http",
"httparse",
"log",
"rand 0.8.5",
@@ -8755,7 +8260,7 @@ checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442"
dependencies = [
"bytes",
"data-encoding",
- "http 1.4.0",
+ "http",
"httparse",
"log",
"rand 0.9.3",
@@ -8817,18 +8322,6 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
-[[package]]
-name = "unicase"
-version = "2.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
-
-[[package]]
-name = "unicode-bidi"
-version = "0.3.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
-
[[package]]
name = "unicode-ident"
version = "1.0.24"
@@ -8844,12 +8337,6 @@ dependencies = [
"tinyvec",
]
-[[package]]
-name = "unicode-properties"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d"
-
[[package]]
name = "unicode-segmentation"
version = "1.13.2"
@@ -8903,7 +8390,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
dependencies = [
- "crypto-common 0.1.7",
+ "crypto-common",
"subtle",
]
@@ -8955,12 +8442,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "urlencoding"
-version = "2.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
-
[[package]]
name = "utf-8"
version = "0.7.6"
@@ -9080,15 +8561,6 @@ version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
-[[package]]
-name = "wasi"
-version = "0.14.7+wasi-0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c"
-dependencies = [
- "wasip2",
-]
-
[[package]]
name = "wasip2"
version = "1.0.2+wasi-0.2.9"
@@ -9107,15 +8579,6 @@ dependencies = [
"wit-bindgen",
]
-[[package]]
-name = "wasite"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "66fe902b4a6b8028a753d5424909b764ccf79b7a209eac9bf97e59cda9f71a42"
-dependencies = [
- "wasi 0.14.7+wasi-0.2.4",
-]
-
[[package]]
name = "wasm-bindgen"
version = "0.2.118"
@@ -9238,21 +8701,6 @@ dependencies = [
"wasm-bindgen",
]
-[[package]]
-name = "web-user-portal"
-version = "0.1.0"
-dependencies = [
- "gloo-net 0.5.0",
- "js-sys",
- "leptos",
- "leptos_router",
- "serde",
- "serde_json",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
[[package]]
name = "webpki-roots"
version = "0.26.11"
@@ -9426,19 +8874,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "whoami"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6a5b12f9df4f978d2cfdb1bd3bac52433f44393342d7ee9c25f5a1c14c0f45d"
-dependencies = [
- "libc",
- "libredox",
- "objc2-system-configuration",
- "wasite",
- "web-sys",
-]
-
[[package]]
name = "wide"
version = "0.7.33"
@@ -10172,7 +9607,7 @@ dependencies = [
"crc32fast",
"crossbeam-utils",
"flate2",
- "hmac 0.12.1",
+ "hmac",
"pbkdf2",
"sha1",
"time",
diff --git a/Cargo.toml b/Cargo.toml
index 94a1c6b..72e3f08 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,31 +1,4 @@
[workspace]
resolver = "2"
-members = [
- "store",
- "clients/cli",
- "clients/backbone-lib",
- "clients/web",
- "clients/web-game",
- "clients/web-user-portal",
- "server/protocol",
- "server/relay-server",
- "bot",
- "spiel_bot",
-]
-
-default-members = [
- "store",
- "clients/cli",
- "clients/backbone-lib",
- "server/protocol",
- "server/relay-server",
- "bot",
- "spiel_bot",
-]
-
-# For the server we will need opt-level='3'
-[profile.release]
-opt-level = 'z' # Minimum space
-lto = "fat" # Aggressive Link Time Optimization
-codegen-units = 1
+members = ["client_cli", "bot", "store", "spiel_bot", "client_web"]
diff --git a/README.md b/README.md
index 4e7789f..e74fb69 100644
--- a/README.md
+++ b/README.md
@@ -2,133 +2,40 @@
This is a game of [Trictrac](https://en.wikipedia.org/wiki/Trictrac) rust implementation.
-The project is still on its early stages.
+The project is on its early stages.
+Rules (without "schools") are implemented, as well as a rudimentary terminal interface which allow you to play against a bot which plays randomly.
+
+Training of AI bots is the work in progress.
## Usage
-Install [devenv](https://devenv.sh/getting-started/), start a devenv shell `devenv shell`, and run the following commands.
-
-```bash
-# Run the relay server
-just build-relay
-just run-relay # listens on :8080
-
-# Run the game (separate terminal)
-just dev-game
-```
-
-Open two browser windows at `http://127.0.0.1:9091`. In one, create a room; in the other, join with the same room name.
-
-Playing with the cli against the 'random' bot: `cargo run --bin=client_cli -- --bot random`
+`cargo run --bin=client_cli -- --bot random`
## Roadmap
- [x] rules
- [x] command line interface
- [x] basic bot (random play)
-- [ ] web client (in progress)
-- [ ] network game (in progress)
- [ ] AI bot
+- [ ] network game
+- [ ] web client
## Code structure
- game rules and game state are implemented in the _store/_ folder.
-- the command-line application is implemented in _clients/cli/_; it allows you to play against a bot, or to have two bots play against each other
+- the command-line application is implemented in _client_cli/_; it allows you to play against a bot, or to have two bots play against each other
- the bots algorithms and the training of their models are implemented in the _bot/_ and _spiel_bot_ folders.
### _store_ package
The game state is defined by the `GameState` struct in _store/src/game.rs_. The `to_string_id()` method allows this state to be encoded compactly in a string (without the played moves history). For a more readable textual representation, the `fmt::Display` trait is implemented.
-### _clients/cli_ package
+### _client_cli_ package
-`clients/cli/src/game_runner.rs` contains the logic to make two bots play against each other.
+`client_cli/src/game_runner.rs` contains the logic to make two bots play against each other.
### _bot_ package
- `bot/src/strategy/default.rs` contains the code for a basic bot strategy: it determines the list of valid moves (using the `get_possible_moves_sequences` method of `store::MoveRules`) and simply executes the first move in the list.
- `bot/src/strategy/dqnburn.rs` is another bot strategy that uses a reinforcement learning trained model with the DQN algorithm via the burn library (
"Loading…"
}.into_any(), - Some(Err(e)) => view! {{ e }
}.into_any(), - Some(Ok(g)) => view! {- "Started: " { started.clone() } " · Ended: " { ended } -
- -| "Player" | -"Username" | -"Outcome" | -
|---|
- { r.clone() }
-
- "Loading…"
}.into_any(), - Some(Err(e)) => view! {{ e }
}.into_any(), - Some(Ok(p)) => view! {"Joined: " { joined }
- -"Loading…"
}.into_any(), - Some(Err(e)) => view! {{ e }
}.into_any(), - Some(Ok(r)) => { - if r.games.is_empty() { - view! {"No games recorded yet."
}.into_any() - } else { - view! {| "Room" | -"Started" | -"Ended" | -"Outcome" | -"Detail" | -
|---|---|---|---|---|
| { g.room_code.clone() } | -{ started } | -{ ended } | -{ outcome_text } | -- "View" - | -
{t!(i18n, connecting)}
} -} diff --git a/clients/web/src/game/components/die.rs b/clients/web/src/game/components/die.rs deleted file mode 100644 index 7576280..0000000 --- a/clients/web/src/game/components/die.rs +++ /dev/null @@ -1,53 +0,0 @@ -use leptos::prelude::*; - -/// (cx, cy) positions for dots on a 48×48 die face. -fn dot_positions(value: u8) -> &'static [(&'static str, &'static str)] { - match value { - 1 => &[("24", "24")], - 2 => &[("35", "13"), ("13", "35")], - 3 => &[("35", "13"), ("24", "24"), ("13", "35")], - 4 => &[("13", "13"), ("35", "13"), ("13", "35"), ("35", "35")], - 5 => &[("13", "13"), ("35", "13"), ("24", "24"), ("13", "35"), ("35", "35")], - 6 => &[("13", "13"), ("35", "13"), ("13", "24"), ("35", "24"), ("13", "35"), ("35", "35")], - _ => &[], - } -} - -/// A single die face rendered as SVG. -/// `value` 1–6 shows dots; 0 shows an empty face (not-yet-rolled). -/// `used` dims the die. -/// `is_double` applies a golden glow (both dice same value). -#[component] -pub fn Die( - value: u8, - used: bool, - #[prop(default = false)] is_double: bool, -) -> AnyView { - let mut cls = if used { - "die-face die-used".to_string() - } else { - "die-face".to_string() - }; - if is_double && !used { - cls.push_str(" die-double"); - } - if value == 0 { - return view! { - - }.into_any(); - } - let dots: Vec{hint}
}) - }} - - // ── Board + side panel ─────────────────────────────────────────── -{t!(i18n, loading)}
}.into_any(), - Some(Err(e)) => view! {{ e }
}.into_any(), - Some(Ok(g)) => view! {| {t!(i18n, col_player)} | -{t!(i18n, label_username)} | -{t!(i18n, col_outcome)} | -
|---|
- { r.clone() } -
-- "Une interprétation numérique" -
- -{err}
})} - - - -{t!(i18n, loading)}
}.into_any(), - Some(Err(e)) => view! {{ e }
}.into_any(), - Some(Ok(p)) => view! {{t!(i18n, loading)}
}.into_any(), - Some(Err(e)) => view! {{ e }
}.into_any(), - Some(Ok(r)) => { - if r.games.is_empty() { - view! {{t!(i18n, no_games)}
}.into_any() - } else { - view! {| {t!(i18n, col_room)} | -{t!(i18n, col_started)} | -{t!(i18n, col_ended)} | -{t!(i18n, col_outcome)} | -{t!(i18n, col_detail)} | -
|---|---|---|---|---|
| { g.room_code.clone() } | -{ started } | -{ ended } | -{ outcome_text } | -- {t!(i18n, view_link)} - | -