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
This commit is contained in:
Tristan Hume 2025-05-14 09:10:31 -04:00 committed by GitHub
parent 645f662853
commit d01559f9bc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 1 deletions

View file

@ -756,6 +756,8 @@
"stream_edits": false, "stream_edits": false,
// When enabled, agent edits will be displayed in single-file editors for review // When enabled, agent edits will be displayed in single-file editors for review
"single_file_review": true, "single_file_review": true,
// When enabled, show voting thumbs for feedback on agent edits.
"enable_feedback": true,
"default_profile": "write", "default_profile": "write",
"profiles": { "profiles": {
"write": { "write": {

View file

@ -1850,7 +1850,8 @@ impl ActiveThread {
.child(open_as_markdown), .child(open_as_markdown),
) )
.into_any_element(), .into_any_element(),
None => feedback_container None if AssistantSettings::get_global(cx).enable_feedback =>
feedback_container
.child( .child(
div().visible_on_hover("feedback_container").child( div().visible_on_hover("feedback_container").child(
Label::new( Label::new(
@ -1893,6 +1894,9 @@ impl ActiveThread {
.child(open_as_markdown), .child(open_as_markdown),
) )
.into_any_element(), .into_any_element(),
None => feedback_container
.child(h_flex().child(open_as_markdown))
.into_any_element(),
}; };
let message_is_empty = message.should_display_content(); let message_is_empty = message.should_display_content();

View file

@ -94,6 +94,7 @@ pub struct AssistantSettings {
pub single_file_review: bool, pub single_file_review: bool,
pub model_parameters: Vec<LanguageModelParameters>, pub model_parameters: Vec<LanguageModelParameters>,
pub preferred_completion_mode: CompletionMode, pub preferred_completion_mode: CompletionMode,
pub enable_feedback: bool,
} }
impl AssistantSettings { impl AssistantSettings {
@ -261,6 +262,7 @@ impl AssistantSettingsContent {
single_file_review: None, single_file_review: None,
model_parameters: Vec::new(), model_parameters: Vec::new(),
preferred_completion_mode: None, preferred_completion_mode: None,
enable_feedback: None,
}, },
VersionedAssistantSettingsContent::V2(ref settings) => settings.clone(), VersionedAssistantSettingsContent::V2(ref settings) => settings.clone(),
}, },
@ -291,6 +293,7 @@ impl AssistantSettingsContent {
single_file_review: None, single_file_review: None,
model_parameters: Vec::new(), model_parameters: Vec::new(),
preferred_completion_mode: None, preferred_completion_mode: None,
enable_feedback: None,
}, },
None => AssistantSettingsContentV2::default(), None => AssistantSettingsContentV2::default(),
} }
@ -573,6 +576,7 @@ impl Default for VersionedAssistantSettingsContent {
single_file_review: None, single_file_review: None,
model_parameters: Vec::new(), model_parameters: Vec::new(),
preferred_completion_mode: None, preferred_completion_mode: None,
enable_feedback: None,
}) })
} }
} }
@ -647,6 +651,10 @@ pub struct AssistantSettingsContentV2 {
/// ///
/// Default: normal /// Default: normal
preferred_completion_mode: Option<CompletionMode>, preferred_completion_mode: Option<CompletionMode>,
/// Whether to show thumb buttons for feedback in the agent panel.
///
/// Default: true
enable_feedback: Option<bool>,
} }
#[derive(Clone, Copy, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Default)] #[derive(Clone, Copy, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Default)]
@ -853,6 +861,7 @@ impl Settings for AssistantSettings {
&mut settings.preferred_completion_mode, &mut settings.preferred_completion_mode,
value.preferred_completion_mode, value.preferred_completion_mode,
); );
merge(&mut settings.enable_feedback, value.enable_feedback);
settings settings
.model_parameters .model_parameters
@ -989,6 +998,7 @@ mod tests {
notify_when_agent_waiting: None, notify_when_agent_waiting: None,
stream_edits: None, stream_edits: None,
single_file_review: None, single_file_review: None,
enable_feedback: None,
model_parameters: Vec::new(), model_parameters: Vec::new(),
preferred_completion_mode: None, preferred_completion_mode: None,
}, },