diff --git a/rust-port/wifi-densepose-rs/Cargo.lock b/rust-port/wifi-densepose-rs/Cargo.lock index dbff8d76..994f3f6e 100644 --- a/rust-port/wifi-densepose-rs/Cargo.lock +++ b/rust-port/wifi-densepose-rs/Cargo.lock @@ -2357,20 +2357,19 @@ dependencies = [ ] [[package]] -name = "hyper-rustls" -version = "0.27.7" +name = "hyper-tls" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ - "http", + "bytes", + "http-body-util", "hyper", "hyper-util", - "rustls 0.23.37", - "rustls-pki-types", + "native-tls", "tokio", - "tokio-rustls", + "tokio-native-tls", "tower-service", - "webpki-roots", ] [[package]] @@ -4758,22 +4757,21 @@ dependencies = [ "http-body", "http-body-util", "hyper", - "hyper-rustls", + "hyper-tls", "hyper-util", "js-sys", "log", "mime_guess", + "native-tls", "percent-encoding", "pin-project-lite", - "quinn", - "rustls 0.23.37", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", "tokio", - "tokio-rustls", + "tokio-native-tls", "tower", "tower-http 0.6.8", "tower-service", @@ -4781,7 +4779,6 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", ] [[package]] @@ -6569,12 +6566,12 @@ dependencies = [ ] [[package]] -name = "tokio-rustls" -version = "0.26.4" +name = "tokio-native-tls" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ - "rustls 0.23.37", + "native-tls", "tokio", ] @@ -7523,15 +7520,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "webpki-roots" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "webview2-com" version = "0.38.2" diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/tauri.conf.json b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/tauri.conf.json index 62a6cf88..653ae2bb 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/tauri.conf.json +++ b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json", "productName": "RuView Desktop", - "version": "0.4.0", + "version": "0.4.1", "identifier": "net.ruv.ruview", "build": { "frontendDist": "ui/dist", diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/package.json b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/package.json index 38084382..75684c76 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/package.json +++ b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/package.json @@ -1,7 +1,7 @@ { "name": "ruview-desktop-ui", "private": true, - "version": "0.4.0", + "version": "0.4.1", "type": "module", "scripts": { "dev": "vite", diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/App.tsx b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/App.tsx index c0069a31..16dce57b 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/App.tsx +++ b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/App.tsx @@ -1,4 +1,5 @@ import { useState, useEffect, useCallback } from "react"; +import { APP_VERSION } from "./version"; import Dashboard from "./pages/Dashboard"; import { Nodes } from "./pages/Nodes"; import NetworkDiscovery from "./pages/NetworkDiscovery"; @@ -90,7 +91,7 @@ const App: React.FC = () => { const renderPage = () => { switch (activePage) { - case "dashboard": return ; + case "dashboard": return ; case "discovery": return ; case "nodes": return ; case "flash": return ; @@ -167,7 +168,7 @@ const App: React.FC = () => { letterSpacing: "0.02em", }} > - v0.4.0 + v{APP_VERSION} diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx index a7ee40e0..e3608616 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx +++ b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx @@ -19,19 +19,31 @@ interface ServerStatus { ws_port: number | null; } -const Dashboard: React.FC = () => { +type Page = "dashboard" | "discovery" | "nodes" | "flash" | "ota" | "wasm" | "sensing" | "mesh" | "settings"; + +interface DashboardProps { + onNavigate?: (page: Page) => void; +} + +const Dashboard: React.FC = ({ onNavigate }) => { const [nodes, setNodes] = useState([]); const [serverStatus, setServerStatus] = useState(null); const [scanning, setScanning] = useState(false); + const [scanError, setScanError] = useState(null); const handleScan = async () => { setScanning(true); + setScanError(null); try { const { invoke } = await import("@tauri-apps/api/core"); const found = await invoke("discover_nodes", { timeoutMs: 3000 }); setNodes(found); + if (found.length === 0) { + setScanError("No nodes found. Ensure ESP32 devices are powered on and connected to the network."); + } } catch (err) { console.error("Discovery failed:", err); + setScanError(`Scan failed: ${err instanceof Error ? err.message : String(err)}`); } finally { setScanning(false); } @@ -133,9 +145,9 @@ const Dashboard: React.FC = () => { Quick Actions - - - + onNavigate?.("flash")} /> + onNavigate?.("ota")} /> + onNavigate?.("wasm")} /> @@ -145,7 +157,23 @@ const Dashboard: React.FC = () => { Discovered Nodes ({nodes.length}) - {nodes.length === 0 ? ( + {scanError && ( + + {scanError} + + )} + + {nodes.length === 0 && !scanError ? ( {"\u25C9"} @@ -155,7 +183,7 @@ const Dashboard: React.FC = () => { Click "Scan Network" to discover ESP32 devices on your local network. - ) : ( + ) : nodes.length === 0 ? null : ( void }) { return (