- Deployment: reject `..` and `/` in remote names and sync paths, keep
excluded paths root-relative, never delete a mapping's remote root,
apply excludes to Sync steps
- SSH: connect per configuration so an unreachable host doesn't block
others; `--` before the host in ssh arguments; read timeout on askpass
- Run targets: export the environment for shell command lines; map the
project folder only as a whole path
- Remote development: use the server's resolved project root; give
streaming channels connection-wide ids; per-install `.part` files;
probe output between markers; require the server's SHA-256; unique
download staging folders; stop runs, terminals and language servers
when the server exits
- JSON-RPC: deliver a response after the notifications sent before it
- Release: build the aarch64 musl server with musl-gcc
SSH (new crate ide-ssh)
- Shared SSH configurations (Settings › Tools › SSH Configurations) used by
data source tunnels, deployment servers, run targets and terminals.
- Sessions with password, key pair or OpenSSH config + agent authentication,
ProxyJump, known-hosts checks with trust prompts, saved secrets.
- Askpass: credential prompts of `ssh` / `git` child processes shown in the IDE.
- Tools › Start SSH Session opens a terminal tab for a configuration.
- The database SSH tunnel moves here and can use a shared configuration.
Deployment (new crate ide-remote)
- Settings › Build › Deployment: SFTP servers, path mappings, excludes,
automatic upload on save.
- Upload / download / delete / sync with the server, Tools › Deployment
menu, Remote Host tool window for browsing and editing remote files.
Run targets
- Settings › Build › Run Targets: run configurations can run on an SSH host
("Run on"), with project sync before the run and remote interpreters.
Remote development
- New crate ide-host: the backend (projects, documents, LSP, VCS, search,
terminals, runs, debugger, tools, settings) shared by the desktop shell and
`openidea-server`, a headless server speaking JSON-RPC over stdio.
- File › Remote Development… connects to an SSH host, installs the server
(per-build folder, streamed gzip upload; the release build is downloaded
when there is none locally) and opens a remote folder in the window.
- The window routes the commands the server answers to it; streaming
channels and events are forwarded. The server takes the login shell's PATH.