From 79e2e520128e4d08f159e1cec9d01d5c387aafad Mon Sep 17 00:00:00 2001 From: Mayank Verma Date: Wed, 17 Dec 2025 14:29:29 +0530 Subject: [PATCH] project: Clear stale settings when switching remote projects (#45021) Closes #44898 Release Notes: - Fixed stale settings persisting when switching remote projects --- crates/project/src/project.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index bbf91eb3c18a53f32f48f1a044c991bf5cfd9fdf..9152096508b76d34fe3b2209cba94b4755b6ac67 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -2483,13 +2483,11 @@ impl Project { cx: &mut Context, ) -> Result<()> { cx.update_global::(|store, cx| { - self.worktree_store.update(cx, |worktree_store, cx| { - for worktree in worktree_store.worktrees() { - store - .clear_local_settings(worktree.read(cx).id(), cx) - .log_err(); - } - }); + for worktree_metadata in &message.worktrees { + store + .clear_local_settings(WorktreeId::from_proto(worktree_metadata.id), cx) + .log_err(); + } }); self.join_project_response_message_id = message_id; @@ -4729,6 +4727,14 @@ impl Project { this.update(&mut cx, |this, cx| { // Don't handle messages that were sent before the response to us joining the project if envelope.message_id > this.join_project_response_message_id { + cx.update_global::(|store, cx| { + for worktree_metadata in &envelope.payload.worktrees { + store + .clear_local_settings(WorktreeId::from_proto(worktree_metadata.id), cx) + .log_err(); + } + }); + this.set_worktrees_from_proto(envelope.payload.worktrees, cx)?; } Ok(())