feat: Add Zed remote SSH support (Vibe Kanban) (#1666)

* Done. Added Zed remote SSH support using the `zed://ssh/` protocol URL format.

**Generated URL format**: `zed://ssh/{user}@{host}{path}`

Examples:
- `zed://ssh/192.168.1.10/home/user/.vimrc`
- `zed://ssh/brit@scepcy/home/brit/projects/scepsy/`

* Restored the comment.

* Done. Added Zed to the frontend condition so the remote SSH host/user fields now appear when Zed is selected as the editor.

* add antigravity as an option in settings

* use early return for zed case to remove extra match statement
This commit is contained in:
Britannio Jarrett
2026-01-15 12:22:03 +00:00
committed by GitHub
parent 7b465cbae6
commit 9106c8223a
2 changed files with 17 additions and 10 deletions

View File

@@ -140,23 +140,28 @@ impl EditorConfig {
fn remote_url(&self, path: &Path) -> Option<String> {
let remote_host = self.remote_ssh_host.as_ref()?;
let scheme = match self.editor_type {
EditorType::VsCode => "vscode",
EditorType::Cursor => "cursor",
EditorType::Windsurf => "windsurf",
EditorType::GoogleAntigravity => "antigravity",
_ => return None,
};
let user_part = self
.remote_ssh_user
.as_ref()
.map(|u| format!("{u}@"))
.unwrap_or_default();
let path_str = path.to_string_lossy();
let scheme = match self.editor_type {
EditorType::VsCode => "vscode",
EditorType::Cursor => "cursor",
EditorType::Windsurf => "windsurf",
EditorType::GoogleAntigravity => "antigravity",
EditorType::Zed => {
return Some(format!("zed://ssh/{user_part}{remote_host}{path_str}"));
}
_ => return None,
};
// files must contain a line and column number
let line_col = if path.is_file() { ":1:1" } else { "" };
let path = path.to_string_lossy();
Some(format!(
"{scheme}://vscode-remote/ssh-remote+{user_part}{remote_host}{path}{line_col}"
"{scheme}://vscode-remote/ssh-remote+{user_part}{remote_host}{path_str}{line_col}"
))
}

View File

@@ -356,7 +356,9 @@ export function GeneralSettings() {
{(draft?.editor.editor_type === EditorType.VS_CODE ||
draft?.editor.editor_type === EditorType.CURSOR ||
draft?.editor.editor_type === EditorType.WINDSURF) && (
draft?.editor.editor_type === EditorType.WINDSURF ||
draft?.editor.editor_type === EditorType.GOOGLE_ANTIGRAVITY ||
draft?.editor.editor_type === EditorType.ZED) && (
<>
<div className="space-y-2">
<Label htmlFor="remote-ssh-host">