Refresh mentions list after plugin install/uninstall (#15598)

Refresh mentions list after plugin install/uninstall to that $mentions
are updated without requiring exiting/launching the client.
This commit is contained in:
canvrno-oai
2026-03-24 09:36:26 -07:00
committed by GitHub
Unverified
parent 2d5a3bfe76
commit 0f90a34676
4 changed files with 18 additions and 2 deletions
+3
View File
@@ -1033,6 +1033,7 @@ impl App {
.await?;
self.apply_runtime_policy_overrides(&mut config);
self.config = config;
self.chat_widget.sync_plugin_mentions_config(&self.config);
Ok(())
}
@@ -3181,6 +3182,7 @@ impl App {
if let Err(err) = self.refresh_in_memory_config_from_disk().await {
tracing::warn!(error = %err, "failed to refresh config after plugin install");
}
self.chat_widget.refresh_plugin_mentions();
self.chat_widget.submit_op(Op::ReloadUserConfig);
}
let should_refresh_plugin_detail = self.chat_widget.on_plugin_install_loaded(
@@ -3634,6 +3636,7 @@ impl App {
"failed to refresh config after plugin uninstall"
);
}
self.chat_widget.refresh_plugin_mentions();
self.chat_widget.submit_op(Op::ReloadUserConfig);
}
self.chat_widget.on_plugin_uninstall_loaded(
+6 -1
View File
@@ -9124,7 +9124,7 @@ impl ChatWidget {
self.bottom_pane.set_connectors_snapshot(Some(snapshot));
}
fn refresh_plugin_mentions(&mut self) {
pub(crate) fn refresh_plugin_mentions(&mut self) {
if !self.config.features.enabled(Feature::Plugins) {
self.bottom_pane.set_plugin_mentions(/*plugins*/ None);
return;
@@ -9137,6 +9137,11 @@ impl ChatWidget {
self.bottom_pane.set_plugin_mentions(Some(plugins));
}
pub(crate) fn sync_plugin_mentions_config(&mut self, config: &Config) {
self.config.features = config.features.clone();
self.config.config_layer_stack = config.config_layer_stack.clone();
}
pub(crate) fn open_review_popup(&mut self) {
let mut items: Vec<SelectionItem> = Vec::new();
+3
View File
@@ -1032,6 +1032,7 @@ impl App {
.await?;
self.apply_runtime_policy_overrides(&mut config);
self.config = config;
self.chat_widget.sync_plugin_mentions_config(&self.config);
Ok(())
}
@@ -3684,6 +3685,7 @@ impl App {
if let Err(err) = self.refresh_in_memory_config_from_disk().await {
tracing::warn!(error = %err, "failed to refresh config after plugin install");
}
self.chat_widget.refresh_plugin_mentions();
self.chat_widget.submit_op(AppCommand::reload_user_config());
}
let should_refresh_plugin_detail = self.chat_widget.on_plugin_install_loaded(
@@ -4160,6 +4162,7 @@ impl App {
"failed to refresh config after plugin uninstall"
);
}
self.chat_widget.refresh_plugin_mentions();
self.chat_widget.submit_op(AppCommand::reload_user_config());
}
self.chat_widget.on_plugin_uninstall_loaded(
+6 -1
View File
@@ -10302,7 +10302,7 @@ impl ChatWidget {
self.bottom_pane.set_connectors_snapshot(Some(snapshot));
}
fn refresh_plugin_mentions(&mut self) {
pub(crate) fn refresh_plugin_mentions(&mut self) {
if !self.config.features.enabled(Feature::Plugins) {
self.bottom_pane.set_plugin_mentions(/*plugins*/ None);
return;
@@ -10315,6 +10315,11 @@ impl ChatWidget {
self.bottom_pane.set_plugin_mentions(Some(plugins));
}
pub(crate) fn sync_plugin_mentions_config(&mut self, config: &Config) {
self.config.features = config.features.clone();
self.config.config_layer_stack = config.config_layer_stack.clone();
}
pub(crate) fn open_review_popup(&mut self) {
let mut items: Vec<SelectionItem> = Vec::new();