aboutsummaryrefslogtreecommitdiff
path: root/src/client/shell/settings.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-02 02:45:20 +0300
committerGitHub <noreply@github.com>2026-09-02 02:45:20 +0300
commitcc88b3b8e5bb9f7d9f23ed6ae85a52fd7b5b9ed6 (patch)
tree4d37c760099070f1a1488b61c7b7271875aafef8 /src/client/shell/settings.rs
parent18e69891dca486d669a584facd80644bb51f54a2 (diff)
feat: add stable client endpoint compatibility (#3509)
* feat: add stable client endpoint compatibility * fix: keep portable-pty patch checks composable * ci: run maintenance checks in pull requests * fix: reject endpoint errors from terminal clients * feat: keep compatible servers running across updates
Diffstat (limited to 'src/client/shell/settings.rs')
-rw-r--r--src/client/shell/settings.rs23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/client/shell/settings.rs b/src/client/shell/settings.rs
index 95a437fe..d90d371f 100644
--- a/src/client/shell/settings.rs
+++ b/src/client/shell/settings.rs
@@ -233,11 +233,15 @@ impl ClientShellState {
settings.integration_messages.clear();
}
}
- self.push_endpoint_method_with_kind(
+ if !self.push_endpoint_method_with_kind(
crate::api::schema::Method::IntegrationList(crate::api::schema::EmptyParams::default()),
PendingEndpointKind::IntegrationList,
outcome,
- );
+ ) {
+ if let Some(ClientShellOverlay::Settings(settings)) = self.overlay.as_mut() {
+ settings.loading_integrations = false;
+ }
+ }
}
fn install_recommended_integrations(&mut self, outcome: &mut ClientShellInput) {
@@ -260,15 +264,22 @@ impl ClientShellState {
settings.installing_integrations = true;
settings.integration_messages.clear();
}
- self.pending_integration_installs = targets.len();
+ self.pending_integration_installs = 0;
for target in targets {
- self.push_endpoint_method_with_kind(
+ if self.push_endpoint_method_with_kind(
crate::api::schema::Method::IntegrationInstall(
crate::api::schema::IntegrationInstallParams { target },
),
PendingEndpointKind::IntegrationInstall,
outcome,
- );
+ ) {
+ self.pending_integration_installs += 1;
+ }
+ }
+ if self.pending_integration_installs == 0 {
+ if let Some(ClientShellOverlay::Settings(settings)) = self.overlay.as_mut() {
+ settings.installing_integrations = false;
+ }
}
outcome.repaint = true;
}
@@ -296,7 +307,7 @@ impl ClientShellState {
"endpoint returned an unexpected integration list result".into(),
);
}
- Err(error) => self.endpoint_error = Some(error.message),
+ Err(_) => {}
}
}
(true, Vec::new())