Warn on client server version mismatch
ci / test (push) Has been cancelled
ci / fuzz-smoke (push) Has been cancelled
ci / windows-client (push) Has been cancelled
ci / package-release (linux-x86_64, ubuntu-latest) (push) Has been cancelled
ci / package-release (macos-aarch64, macos-14) (push) Has been cancelled
ci / package-release (macos-x86_64, macos-13) (push) Has been cancelled
ci / package-release (windows-x86_64, windows-latest) (push) Has been cancelled
ci / remote-bench (push) Has been cancelled

This commit is contained in:
DuProcess
2026-06-22 01:52:34 -04:00
parent c0d83c9133
commit fb6cf4e7c2
+21 -3
View File
@@ -925,6 +925,13 @@ async fn run_doctor_for_host(
&check.server_version
}
);
if server_version_mismatch(&check.server_version) {
println!(
"[warn] version mismatch: client={} server={}",
env!("CARGO_PKG_VERSION"),
check.server_version
);
}
println!("[ok] known host: trusted");
println!("[ok] native auth: authorized as {}", check.requested_user);
println!(
@@ -942,6 +949,10 @@ async fn run_doctor_for_host(
}
}
fn server_version_mismatch(server_version: &str) -> bool {
!server_version.is_empty() && server_version != env!("CARGO_PKG_VERSION")
}
fn ensure_tui_safe_status_overlay(bytes: &[u8]) -> Result<()> {
anyhow::ensure!(
bytes.starts_with(b"\x1b7"),
@@ -5101,9 +5112,9 @@ mod tests {
parse_escape_key, parse_local_forward, parse_remote_forward, parse_ssh_config,
queue_pending_user_input, raw_contains_host_table, recv_response_until,
render_status_clear, render_status_overlay, requested_env, resolved_startup_command,
rewrite_forward_command, selected_predict_mode, selected_udp_host, ssh_destination_host,
ssh_username, ssh_with_user, startup_command, status_ssh_target, toml_bare_key_or_quoted,
update_check_requested, valid_forward_host,
rewrite_forward_command, selected_predict_mode, selected_udp_host, server_version_mismatch,
ssh_destination_host, ssh_username, ssh_with_user, startup_command, status_ssh_target,
toml_bare_key_or_quoted, update_check_requested, valid_forward_host,
};
use dosh::config::{ClientConfig, CommandExtension, HostConfig};
use dosh::native::EnvVar;
@@ -5792,6 +5803,13 @@ mod tests {
assert!(RESTART_STATUS_SCRIPT.contains("dosh-server"));
}
#[test]
fn doctor_detects_server_version_mismatch() {
assert!(!server_version_mismatch(""));
assert!(!server_version_mismatch(env!("CARGO_PKG_VERSION")));
assert!(server_version_mismatch("0.0.0-old"));
}
#[test]
fn release_download_url_uses_latest_release_asset() {
assert_eq!(