aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-05 00:40:18 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-05 00:40:18 +0300
commitb4b69b3539fc02d855c9b626cb205074e1541c78 (patch)
tree71f61897e2847f4627b8cdb38b80cd036de49deb /src/server
parent6b3f6462810e400fbbfbc21240b677732b0549ec (diff)
fix: open a default workspace when sessions are empty
refs #366
Diffstat (limited to 'src/server')
-rw-r--r--src/server/headless.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/server/headless.rs b/src/server/headless.rs
index 596c55df..11e5f6b8 100644
--- a/src/server/headless.rs
+++ b/src/server/headless.rs
@@ -499,6 +499,12 @@ impl HeadlessServer {
crate::render_prof::event("full_render_cause.config_reload");
}
+ if latest_app_client(&self.clients).is_some() && self.app.ensure_default_workspace() {
+ needs_render = true;
+ needs_full_render = true;
+ crate::render_prof::event("full_render_cause.default_workspace");
+ }
+
self.drain_client_config_reload_request();
self.stream_host_mouse_capture_mode();
@@ -2146,8 +2152,12 @@ impl HeadlessServer {
return true;
}
- let changed = api::request_changes_ui(&msg.request);
- let changed = self.drain_all_internal_events_with_forwarding() || changed;
+ let mut changed = api::request_changes_ui(&msg.request);
+ let skip_default_workspace = matches!(
+ &msg.request.method,
+ api::schema::Method::ServerStop(_) | api::schema::Method::ServerLiveHandoff(_)
+ );
+ changed |= self.drain_all_internal_events_with_forwarding();
// Capture toast and effective pane states before the API call so we can
// forward resulting client-local notifications. API requests like
@@ -2337,6 +2347,10 @@ impl HeadlessServer {
}
}
+ if !skip_default_workspace && latest_app_client(&self.clients).is_some() {
+ changed |= self.app.ensure_default_workspace();
+ }
+
changed
}