summaryrefslogtreecommitdiff
path: root/src/server/headless.rs
diff options
context:
space:
mode:
authorJJ Liebig <jonathan.liebig@gmail.com>2026-09-22 18:43:12 +0200
committerGitHub <noreply@github.com>2026-09-22 19:43:12 +0300
commitdd33ddf28d693b2c64ed91f75656c61416ee2538 (patch)
tree229769fa9e2535b72dc39ba0f64593ef5fdc93a2 /src/server/headless.rs
parent1c6397b1cddb288099ed212a5979732698bd72c2 (diff)
fix: move worktree lookups async (#4492)
Diffstat (limited to 'src/server/headless.rs')
-rw-r--r--src/server/headless.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/server/headless.rs b/src/server/headless.rs
index 0aed2a37..bba59498 100644
--- a/src/server/headless.rs
+++ b/src/server/headless.rs
@@ -2970,6 +2970,7 @@ impl HeadlessServer {
&mut self,
msg: api::ApiRequestMessage,
skip_default_workspace_for_request: bool,
+ client_local: bool,
) -> bool {
if self.shutting_down {
// During shutdown, respond with server_unavailable.
@@ -3124,12 +3125,18 @@ impl HeadlessServer {
}
if matches!(
&msg.request.method,
- api::schema::Method::WorktreeCreate(_) | api::schema::Method::WorktreeRemove(_)
+ api::schema::Method::WorktreeCreate(_)
+ | api::schema::Method::WorktreeRemove(_)
+ | api::schema::Method::WorktreeList(_)
+ | api::schema::Method::WorktreeOpen(_)
) {
- let deferred_changed = self
- .app
- .handle_deferred_worktree_api_request(msg.request, msg.respond_to);
- return changed | deferred_changed;
+ let read_only = matches!(&msg.request.method, api::schema::Method::WorktreeList(_));
+ let deferred_changed = self.app.handle_deferred_worktree_api_request(
+ msg.request,
+ msg.respond_to,
+ client_local,
+ );
+ return changed | (deferred_changed && !read_only);
}
if self.foreground_client_id.is_some_and(|client_id| {
self.clients