sensing-server: default UI path for cwd v2/ and coalesce fallbacks

The previous default ../../ui resolves to a non-existent directory when
the binary is run from v2/ (common), so /ui/* returned 404 and the
dashboard appeared broken. Default to ../ui and try ../ui, ./ui,
../../ui when the configured path is missing.

Signed-off-by: Chaitanya Tata <chaitanya@dotstarconsulting.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Chaitanya Tata 2026-05-10 01:41:39 +05:30 committed by Chaitanya Tata
parent 512d06a3e3
commit 2d9e1bcabe
2 changed files with 25 additions and 5 deletions

View file

@ -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)

View file

@ -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 {