aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/autodetect.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/server/autodetect.rs b/src/server/autodetect.rs
index e6fdaaa4..afd8edfd 100644
--- a/src/server/autodetect.rs
+++ b/src/server/autodetect.rs
@@ -293,6 +293,14 @@ pub fn wait_for_server_socket(socket_path: &Path, timeout: Duration) -> io::Resu
/// 2. If no server → spawn server daemon → wait for socket readiness
/// 3. Run the thin client (which connects to the server)
pub fn auto_detect_launch(saved_federation: bool) -> io::Result<()> {
+ // The client requires terminal geometry before it can attach. Reject an
+ // unusable terminal before socket lookup creates directories or starts a daemon.
+ crate::platform::terminal_grid_size().map_err(|err| {
+ io::Error::new(
+ err.kind(),
+ format!("cannot attach without a usable terminal: {err}; run inside a terminal"),
+ )
+ })?;
let socket_path = client_socket_path();
info!(path = %socket_path.display(), "auto-detect launch starting");