From eeda02aae04f6af4fd3ba5fd90410696b6bdeed8 Mon Sep 17 00:00:00 2001 From: Leon Fattakhov Date: Tue, 19 May 2026 09:29:30 -0700 Subject: [PATCH 1/2] Fix ask question speedbump dropdown selection Ensure the Ask-User-Question speedbump dropdown initializes and updates its selected item from the active execution profile so the closed header does not render blank. Co-Authored-By: Oz --- app/src/ai/blocklist/block.rs | 6 ++++- .../inline_action/ask_user_question_view.rs | 27 ++++++++++++++----- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/app/src/ai/blocklist/block.rs b/app/src/ai/blocklist/block.rs index 6761dcd8d3..5e1850ad59 100644 --- a/app/src/ai/blocklist/block.rs +++ b/app/src/ai/blocklist/block.rs @@ -3549,9 +3549,13 @@ impl AIBlock { *shown.lock() = true; } let terminal_view_id = self.terminal_view_id; + let permission = AIExecutionProfilesModel::as_ref(ctx) + .active_profile(Some(terminal_view_id), ctx) + .data() + .ask_user_question; view.update(ctx, |view, ctx| { view.set_speedbump_settings_link(Some(settings_link_handle), ctx); - view.init_speedbump_dropdown(ctx); + view.init_speedbump_dropdown(permission, ctx); view.refresh_speedbump_dropdown_selection(terminal_view_id, ctx); }); true diff --git a/app/src/ai/blocklist/inline_action/ask_user_question_view.rs b/app/src/ai/blocklist/inline_action/ask_user_question_view.rs index 7a8bba8464..62d1bb01e1 100644 --- a/app/src/ai/blocklist/inline_action/ask_user_question_view.rs +++ b/app/src/ai/blocklist/inline_action/ask_user_question_view.rs @@ -847,7 +847,11 @@ impl AskUserQuestionView { } /// Creates the dropdown view for the speedbump footer. No-op if already initialized. - pub fn init_speedbump_dropdown(&mut self, ctx: &mut ViewContext) { + pub fn init_speedbump_dropdown( + &mut self, + selected_permission: AskUserQuestionPermission, + ctx: &mut ViewContext, + ) { if self.speedbump_dropdown.is_some() { return; } @@ -880,27 +884,35 @@ impl AskUserQuestionView { .collect(), ctx, ); + dropdown.set_selected_by_name(selected_permission.label(), ctx); dropdown }); self.speedbump_dropdown = Some(view); } - /// Updates the dropdown's selected item to match the active execution profile. - pub fn refresh_speedbump_dropdown_selection( + fn set_speedbump_dropdown_selection( &mut self, - terminal_view_id: EntityId, + permission: AskUserQuestionPermission, ctx: &mut ViewContext, ) { let Some(dropdown) = self.speedbump_dropdown.clone() else { return; }; + dropdown.update(ctx, |dropdown, ctx| { + dropdown.set_selected_by_name(permission.label(), ctx); + }); + } + /// Updates the dropdown's selected item to match the active execution profile. + pub fn refresh_speedbump_dropdown_selection( + &mut self, + terminal_view_id: EntityId, + ctx: &mut ViewContext, + ) { let permission = AIExecutionProfilesModel::as_ref(ctx) .active_profile(Some(terminal_view_id), ctx) .data() .ask_user_question; - dropdown.update(ctx, |dropdown, ctx| { - dropdown.set_selected_by_name(permission.label(), ctx); - }); + self.set_speedbump_dropdown_selection(permission, ctx); } /// Recover completed/cancelled status even if the live action entry is gone, so restored @@ -1704,6 +1716,7 @@ impl TypedActionView for AskUserQuestionView { self.is_expanded = !self.is_expanded; } AskUserQuestionViewAction::SetPermission(permission) => { + self.set_speedbump_dropdown_selection(*permission, ctx); ctx.emit(AskUserQuestionViewEvent::SpeedbumpPermissionChanged( *permission, )); From b073d1abc4cce709d16f045e5d9334b5ccfa8234 Mon Sep 17 00:00:00 2001 From: Leon Fattakhov Date: Tue, 19 May 2026 11:24:06 -0700 Subject: [PATCH 2/2] Fix dropdown selection cache on item select Co-Authored-By: Oz --- .../inline_action/ask_user_question_view.rs | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/app/src/ai/blocklist/inline_action/ask_user_question_view.rs b/app/src/ai/blocklist/inline_action/ask_user_question_view.rs index 62d1bb01e1..979282a3f5 100644 --- a/app/src/ai/blocklist/inline_action/ask_user_question_view.rs +++ b/app/src/ai/blocklist/inline_action/ask_user_question_view.rs @@ -890,29 +890,22 @@ impl AskUserQuestionView { self.speedbump_dropdown = Some(view); } - fn set_speedbump_dropdown_selection( - &mut self, - permission: AskUserQuestionPermission, - ctx: &mut ViewContext, - ) { - let Some(dropdown) = self.speedbump_dropdown.clone() else { - return; - }; - dropdown.update(ctx, |dropdown, ctx| { - dropdown.set_selected_by_name(permission.label(), ctx); - }); - } /// Updates the dropdown's selected item to match the active execution profile. pub fn refresh_speedbump_dropdown_selection( &mut self, terminal_view_id: EntityId, ctx: &mut ViewContext, ) { + let Some(dropdown) = self.speedbump_dropdown.clone() else { + return; + }; let permission = AIExecutionProfilesModel::as_ref(ctx) .active_profile(Some(terminal_view_id), ctx) .data() .ask_user_question; - self.set_speedbump_dropdown_selection(permission, ctx); + dropdown.update(ctx, |dropdown, ctx| { + dropdown.set_selected_by_name(permission.label(), ctx); + }); } /// Recover completed/cancelled status even if the live action entry is gone, so restored @@ -1716,7 +1709,6 @@ impl TypedActionView for AskUserQuestionView { self.is_expanded = !self.is_expanded; } AskUserQuestionViewAction::SetPermission(permission) => { - self.set_speedbump_dropdown_selection(*permission, ctx); ctx.emit(AskUserQuestionViewEvent::SpeedbumpPermissionChanged( *permission, ));