fix(deployment): filter servers by selected path coverage (#544)

The server choosers listed every configured server without checking mapping coverage or exclusions, so choosing the wrong one silently skipped the files.

- Add a shared eligibility check, available through desktop IPC and host RPC, that never contacts a server.
- Filter Upload to, Download from, Compare and Delete choosers by it. A selection lists a server if it covers at least one path, and the rest are reported as skipped.
- Explain why the default server cannot take a selection, by file name, instead of doing nothing. Apply the same exclusion rules when a transfer runs.

Fixes #538
Цей коміт міститься в:
l0ng-ai authored and GitHub committed 2026-10-31 14:53:48 +08:00
1 джерело 999eb86408
коміт ee2585e7e9
14 files changed
+333 -38

No files matched your search

+11 -1
Переглянути файл
@@ -1,9 +1,19 @@
use crate::state::AppState;
use ide_core::{IdeResult, IpcPath, RequestId};
use ide_remote::{DeployedPath, SyncEntry, SyncStep, TransferReport};
use ide_remote::{DeployedPath, DeploymentCoverage, SyncEntry, SyncStep, TransferReport};
use ide_ssh::{FsConnection, RemoteEntry};
use tauri::{State, Window};
#[tauri::command]
#[specta::specta]
pub async fn deploy_coverage(
window: Window,
state: State<'_, AppState>,
paths: Vec<IpcPath>,
) -> IdeResult<Vec<DeploymentCoverage>> {
ide_host::ops::deploy::deploy_coverage(window.label(), &state.host, paths).await
}
#[tauri::command]
#[specta::specta]
pub async fn deploy_upload(
+1
Переглянути файл
@@ -451,6 +451,7 @@ pub fn builder() -> tauri_specta::Builder<tauri::Wry> {
ssh::git_credentials,
ssh::git_credential_forget,
ssh::ssh_terminal_command,
deploy::deploy_coverage,
deploy::deploy_upload,
deploy::deploy_download,
deploy::deploy_delete_remote,