diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-09-02 02:45:20 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-02 02:45:20 +0300 |
| commit | cc88b3b8e5bb9f7d9f23ed6ae85a52fd7b5b9ed6 (patch) | |
| tree | 4d37c760099070f1a1488b61c7b7271875aafef8 /src/client/shell/settings.rs | |
| parent | 18e69891dca486d669a584facd80644bb51f54a2 (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.rs | 23 |
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()) |
