diff --git a/ostp-gui/src-tauri/src/lib.rs b/ostp-gui/src-tauri/src/lib.rs index 0298fe3..3ecd645 100644 --- a/ostp-gui/src-tauri/src/lib.rs +++ b/ostp-gui/src-tauri/src/lib.rs @@ -762,6 +762,7 @@ fn launch_as_admin(exe: &std::path::PathBuf, token: &str, port: u16) -> anyhow:: let params_str = format!("--port {} --token-file \"{}\"", port, token_file.display()); let params_wstr: Vec = OsStr::new(¶ms_str).encode_wide().chain(Some(0)).collect(); #[link(name = "shell32")] extern "system" { fn ShellExecuteW(h: *mut std::ffi::c_void, op: *const u16, f: *const u16, p: *const u16, d: *const u16, s: i32) -> isize; } + #[link(name = "kernel32")] extern "system" { fn GetLastError() -> u32; } // Use the GUI executable's directory as the working directory so dependencies are found let cwd_path = std::env::current_exe().unwrap_or_else(|_| std::path::PathBuf::from(".")); diff --git a/ostp-gui/src/index.html b/ostp-gui/src/index.html index 9c84311..81b223e 100644 --- a/ostp-gui/src/index.html +++ b/ostp-gui/src/index.html @@ -90,18 +90,18 @@ -
-
+
+
RTT --
-
-
+
+
0 B/s
-
-
+
+
0 B/s
@@ -280,6 +280,28 @@
+
+
+ Show RTT + Display live ping on dashboard +
+ +
+ +
+
+ Show Speed + Display traffic speed on dashboard +
+ +
+
OSTP GUI
diff --git a/ostp-gui/src/main.js b/ostp-gui/src/main.js index 3d83cfe..b6cb103 100644 --- a/ostp-gui/src/main.js +++ b/ostp-gui/src/main.js @@ -154,6 +154,8 @@ const inExProcs = $('in-ex-procs'); const inAutoconnect = $('in-autoconnect'); const inLaunchStartup = $('in-launch-startup'); const inDebug = $('in-debug'); +const inShowRtt = $('in-show-rtt'); +const inShowSpeed = $('in-show-speed'); const groupKillSwitch = $('group-kill-switch'); const groupMuxSessions = $('group-mux-sessions'); @@ -664,6 +666,8 @@ function loadSettingsIntoForm() { inAutoconnect.checked = !!s.autoconnect; inLaunchStartup.checked = !!s.launchStartup; inDebug.checked = !!s.debug; + inShowRtt.checked = s.showRtt !== false; + inShowSpeed.checked = s.showSpeed !== false; updateClientVisibility(); } @@ -682,6 +686,8 @@ function collectAndSaveSettings() { autoconnect: inAutoconnect.checked, launchStartup: inLaunchStartup.checked, debug: inDebug.checked, + showRtt: inShowRtt.checked, + showSpeed: inShowSpeed.checked, }; saveClientSettings(s); updateClientVisibility(); @@ -703,6 +709,23 @@ function collectAndSaveSettings() { function updateClientVisibility() { groupKillSwitch.style.display = inTun.checked ? 'flex' : 'none'; groupMuxSessions.style.display = inMux.checked ? 'flex' : 'none'; + + const showRtt = inShowRtt.checked; + const showSpeed = inShowSpeed.checked; + const rttBox = $('stat-rtt-box'); + const downBox = $('stat-down-box'); + const upBox = $('stat-up-box'); + const sep1 = $('stat-sep-1'); + const sep2 = $('stat-sep-2'); + const container = $('live-stats-container'); + + if (rttBox) rttBox.style.display = showRtt ? 'flex' : 'none'; + if (downBox) downBox.style.display = showSpeed ? 'flex' : 'none'; + if (upBox) upBox.style.display = showSpeed ? 'flex' : 'none'; + + if (sep1) sep1.style.display = (showRtt && showSpeed) ? 'block' : 'none'; + if (sep2) sep2.style.display = showSpeed ? 'block' : 'none'; + if (container) container.style.display = (showRtt || showSpeed) ? 'flex' : 'none'; } // ── INIT ────────────────────────────────────────────────────────────── @@ -858,7 +881,7 @@ window.addEventListener('DOMContentLoaded', async () => { wintunModal.addEventListener('click', e => { if (e.target === wintunModal) wintunModal.classList.add('hidden'); }); // Client settings — wire all inputs - [inTun, inKillSwitch, inMux, inAutoconnect, inLaunchStartup, inDebug] + [inTun, inKillSwitch, inMux, inAutoconnect, inLaunchStartup, inDebug, inShowRtt, inShowSpeed] .forEach(el => el.addEventListener('change', collectAndSaveSettings)); [inMuxSessions, inMtu, inDns, inSocks, inExDomains, inExIps, inExProcs] .forEach(el => {