diff --git a/crates/agent_ui/src/acp/thread_view.rs b/crates/agent_ui/src/acp/thread_view.rs index f56b19954a25db8dd204a1a8d0a6c4b12de7c2fd..7910059f4e300d27d9910a7b1a0827ab55dec616 100644 --- a/crates/agent_ui/src/acp/thread_view.rs +++ b/crates/agent_ui/src/acp/thread_view.rs @@ -5600,13 +5600,21 @@ impl AcpThreadView { ) -> impl IntoElement { let editor_bg_color = cx.theme().colors().editor_background; + // Sort edited files alphabetically for consistency with Git diff view + let mut sorted_buffers: Vec<_> = changed_buffers.iter().collect(); + sorted_buffers.sort_by(|(buffer_a, _), (buffer_b, _)| { + let path_a = buffer_a.read(cx).file().map(|f| f.path().clone()); + let path_b = buffer_b.read(cx).file().map(|f| f.path().clone()); + path_a.cmp(&path_b) + }); + v_flex() .id("edited_files_list") .max_h_40() .overflow_y_scroll() .children( - changed_buffers - .iter() + sorted_buffers + .into_iter() .enumerate() .flat_map(|(index, (buffer, diff))| { let file = buffer.read(cx).file()?; diff --git a/crates/agent_ui/src/agent_diff.rs b/crates/agent_ui/src/agent_diff.rs index 058933d14ade268c86a6158f851a1aaf3bcb69ef..5149a99cd8ca3d536c28885761893b30640916f4 100644 --- a/crates/agent_ui/src/agent_diff.rs +++ b/crates/agent_ui/src/agent_diff.rs @@ -131,6 +131,15 @@ impl AgentDiffPane { .action_log() .read(cx) .changed_buffers(cx); + + // Sort edited files alphabetically for consistency with Git diff view + let mut sorted_buffers: Vec<_> = changed_buffers.iter().collect(); + sorted_buffers.sort_by(|(buffer_a, _), (buffer_b, _)| { + let path_a = buffer_a.read(cx).file().map(|f| f.path().clone()); + let path_b = buffer_b.read(cx).file().map(|f| f.path().clone()); + path_a.cmp(&path_b) + }); + let mut paths_to_delete = self .multibuffer .read(cx) @@ -138,7 +147,7 @@ impl AgentDiffPane { .cloned() .collect::>(); - for (buffer, diff_handle) in changed_buffers { + for (buffer, diff_handle) in sorted_buffers { if buffer.read(cx).file().is_none() { continue; } @@ -168,7 +177,7 @@ impl AgentDiffPane { multibuffer_context_lines(cx), cx, ); - multibuffer.add_diff(diff_handle, cx); + multibuffer.add_diff(diff_handle.clone(), cx); (was_empty, is_excerpt_newly_added) });