diff --git a/v2/crates/wifi-densepose-sensing-server/src/cli.rs b/v2/crates/wifi-densepose-sensing-server/src/cli.rs index 5fdad82bd..c857f35c0 100644 --- a/v2/crates/wifi-densepose-sensing-server/src/cli.rs +++ b/v2/crates/wifi-densepose-sensing-server/src/cli.rs @@ -19,8 +19,8 @@ pub struct Args { #[arg(long, default_value = "5005")] pub udp_port: u16, - /// Path to UI static files - #[arg(long, default_value = "../../ui")] + /// Path to UI static files (from `v2/` cwd use `../ui`) + #[arg(long, default_value = "../ui")] pub ui_path: PathBuf, /// Tick interval in milliseconds (default 100 ms = 10 fps for smooth pose animation) diff --git a/v2/crates/wifi-densepose-sensing-server/src/main.rs b/v2/crates/wifi-densepose-sensing-server/src/main.rs index a8b207e47..14409f9e1 100644 --- a/v2/crates/wifi-densepose-sensing-server/src/main.rs +++ b/v2/crates/wifi-densepose-sensing-server/src/main.rs @@ -83,8 +83,8 @@ struct Args { #[arg(long, default_value = "5005")] udp_port: u16, - /// Path to UI static files - #[arg(long, default_value = "../../ui")] + /// Path to UI static files (repo `ui/`; from `v2/` use `../ui` or rely on auto-detect) + #[arg(long, default_value = "../ui")] ui_path: PathBuf, /// Tick interval in milliseconds (default 100 ms = 10 fps for smooth pose animation) @@ -4223,6 +4223,25 @@ async fn broadcast_tick_task(state: SharedState, tick_ms: u64) { // ── Main ───────────────────────────────────────────────────────────────────── +/// If `--ui-path` points nowhere (wrong cwd), try common repo layouts relative to cwd. +fn coalesce_ui_path(initial: std::path::PathBuf) -> std::path::PathBuf { + if initial.is_dir() { + return initial; + } + for rel in &["../ui", "./ui", "../../ui"] { + let p = std::path::PathBuf::from(rel); + if p.is_dir() { + warn!( + "UI path {} not found; using {} (set --ui-path explicitly if wrong)", + initial.display(), + p.display() + ); + return p; + } + } + initial +} + #[tokio::main] async fn main() { // Initialize tracing @@ -4233,7 +4252,8 @@ async fn main() { ) .init(); - let args = Args::parse(); + let mut args = Args::parse(); + args.ui_path = coalesce_ui_path(args.ui_path); // Handle --benchmark mode: run vital sign benchmark and exit if args.benchmark { diff --git a/v2/rust-toolchain.toml b/v2/rust-toolchain.toml new file mode 100644 index 000000000..ffd55e091 --- /dev/null +++ b/v2/rust-toolchain.toml @@ -0,0 +1,7 @@ +# wifi-densepose-sensing-server (ruvector-mincut -> ruvector-core / hnsw_rs / mmap-rs): +# - mmap-rs 0.7: Cargo must accept edition 2024 in a dependency manifest (1.85+). +# - hnsw_rs 0.3.4: u*.is_multiple_of (1.86+). +# - ruvector-core 2.0.5 x86_64: #[target_feature(enable = "avx512f")] (1.89+ stable). +[toolchain] +channel = "1.89" +profile = "minimal"