aboutsummaryrefslogtreecommitdiff
path: root/src/remote/attach.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-09-07 19:33:11 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-09-07 19:33:11 +0300
commit702aa1e45527509bec73dad9b8d443f449c0379b (patch)
tree0f017fea62885a964c1aab16d1869979d8569021 /src/remote/attach.rs
parente7d8220788b4fa7c266a1e4457591b694478771c (diff)
fix: require explicit consent for remote server replacement
Diffstat (limited to 'src/remote/attach.rs')
-rw-r--r--src/remote/attach.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/remote/attach.rs b/src/remote/attach.rs
index 81810411..10db88a6 100644
--- a/src/remote/attach.rs
+++ b/src/remote/attach.rs
@@ -91,12 +91,12 @@ pub(crate) fn prepare_saved_ssh(target: &str, session_name: &str) -> io::Result<
manage_ssh_config,
session_name.to_owned(),
);
- let prepared = prepare_remote_herdr(&ssh, true, true)?;
+ let prepared = prepare_remote_herdr(&ssh, false, true)?;
ensure_remote_server_ready(
&ssh,
&prepared.remote_herdr,
prepared.stop_after_install_approved,
- true,
+ false,
true,
)?;
@@ -673,11 +673,13 @@ pub(super) fn prepare_remote_herdr(
require_surface_interest,
)?;
}
- confirm_remote_install(
- &ssh.destination(),
- &remote_herdr,
- &install_source_description(&remote_herdr.platform, override_binary.as_deref()),
- )?;
+ if !stop_after_install_approved {
+ confirm_remote_install(
+ &ssh.destination(),
+ &remote_herdr,
+ &install_source_description(&remote_herdr.platform, override_binary.as_deref()),
+ )?;
+ }
let source = resolve_install_source(&remote_herdr.platform, override_binary)?;
let install_result = ssh.install_herdr(&remote_herdr, &source.path);
source.cleanup();
@@ -1173,7 +1175,7 @@ fn confirm_remote_install_with_running_server(
eprintln!(
"To complete the remote update, Herdr must stop the running remote server after installing."
);
- eprintln!("This stops active remote pane processes, including shells, dev servers, and tests.");
+ eprintln!("This stops active remote pane processes, including shells, agents, dev servers, and tests.");
eprintln!();
eprint!(
"Install {} and stop the remote server now? [y/N] ",
@@ -1396,15 +1398,16 @@ fn confirm_remote_server_stop(
}
}
+ eprintln!("This stops active remote pane processes, including shells, agents, dev servers, and tests.");
let prompt = if required_upgrade {
- "update the remote server and continue attaching? [Y/n] "
+ "stop and update the remote server, then continue attaching? [y/N] "
} else {
"restart the remote server now? [y/N] "
};
eprint!("{prompt}");
io::stderr().flush()?;
- if read_remote_confirmation(&mut io::stdin().lock(), required_upgrade)? {
+ if read_remote_confirmation(&mut io::stdin().lock(), false)? {
return Ok(true);
}
if required_upgrade {