From d01559f9bc1e8c8c0429a6afef9b70c17d009181 Mon Sep 17 00:00:00 2001 From: Tristan Hume Date: Wed, 14 May 2025 09:10:31 -0400 Subject: [PATCH] Add setting for enabling/disabling feedback (#30448) This is useful for enterprises, especially in combination with #30444, to ensure code never gets sent to Zed. Release Notes: - N/A --- assets/settings/default.json | 2 ++ crates/agent/src/active_thread.rs | 6 +++++- crates/assistant_settings/src/assistant_settings.rs | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/assets/settings/default.json b/assets/settings/default.json index c241da9a96..6b743402f3 100644 --- a/assets/settings/default.json +++ b/assets/settings/default.json @@ -756,6 +756,8 @@ "stream_edits": false, // When enabled, agent edits will be displayed in single-file editors for review "single_file_review": true, + // When enabled, show voting thumbs for feedback on agent edits. + "enable_feedback": true, "default_profile": "write", "profiles": { "write": { diff --git a/crates/agent/src/active_thread.rs b/crates/agent/src/active_thread.rs index 95cc09fa20..e654f230bd 100644 --- a/crates/agent/src/active_thread.rs +++ b/crates/agent/src/active_thread.rs @@ -1850,7 +1850,8 @@ impl ActiveThread { .child(open_as_markdown), ) .into_any_element(), - None => feedback_container + None if AssistantSettings::get_global(cx).enable_feedback => + feedback_container .child( div().visible_on_hover("feedback_container").child( Label::new( @@ -1893,6 +1894,9 @@ impl ActiveThread { .child(open_as_markdown), ) .into_any_element(), + None => feedback_container + .child(h_flex().child(open_as_markdown)) + .into_any_element(), }; let message_is_empty = message.should_display_content(); diff --git a/crates/assistant_settings/src/assistant_settings.rs b/crates/assistant_settings/src/assistant_settings.rs index 6333439b47..91fbd46578 100644 --- a/crates/assistant_settings/src/assistant_settings.rs +++ b/crates/assistant_settings/src/assistant_settings.rs @@ -94,6 +94,7 @@ pub struct AssistantSettings { pub single_file_review: bool, pub model_parameters: Vec, pub preferred_completion_mode: CompletionMode, + pub enable_feedback: bool, } impl AssistantSettings { @@ -261,6 +262,7 @@ impl AssistantSettingsContent { single_file_review: None, model_parameters: Vec::new(), preferred_completion_mode: None, + enable_feedback: None, }, VersionedAssistantSettingsContent::V2(ref settings) => settings.clone(), }, @@ -291,6 +293,7 @@ impl AssistantSettingsContent { single_file_review: None, model_parameters: Vec::new(), preferred_completion_mode: None, + enable_feedback: None, }, None => AssistantSettingsContentV2::default(), } @@ -573,6 +576,7 @@ impl Default for VersionedAssistantSettingsContent { single_file_review: None, model_parameters: Vec::new(), preferred_completion_mode: None, + enable_feedback: None, }) } } @@ -647,6 +651,10 @@ pub struct AssistantSettingsContentV2 { /// /// Default: normal preferred_completion_mode: Option, + /// Whether to show thumb buttons for feedback in the agent panel. + /// + /// Default: true + enable_feedback: Option, } #[derive(Clone, Copy, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Default)] @@ -853,6 +861,7 @@ impl Settings for AssistantSettings { &mut settings.preferred_completion_mode, value.preferred_completion_mode, ); + merge(&mut settings.enable_feedback, value.enable_feedback); settings .model_parameters @@ -989,6 +998,7 @@ mod tests { notify_when_agent_waiting: None, stream_edits: None, single_file_review: None, + enable_feedback: None, model_parameters: Vec::new(), preferred_completion_mode: None, },