feat: add SSH remote workspace support by bobleer · Pull Request #206 · GCWing/BitFun

and others added 5 commits

March 21, 2026 00:14
- SSH connection management with saved connections, key/agent/password auth
- Remote file system access via SFTP (read, write, edit, delete, rename)
- Remote terminal sessions over SSH PTY
- Multi-workspace registry: path-keyed HashMap replaces single global state,
  allowing multiple concurrent remote workspaces without path conflicts
- Per-workspace connection status indicator (green/yellow/red dot) in sidebar
- Auto-reconnect on startup: retries up to 5 times with 10s intervals,
  keeps workspace in sidebar with error state if reconnection fails
- Session list re-initialized after SSH reconnect to fix timing race where
  sessions loaded before workspace was registered in state manager
- Snapshot/rollback skipped for remote workspaces (no local .bitfun dir);
  rollback commands return empty success instead of "directory not found" error
- Agentic tools (file read/write/edit, bash, glob, grep) routed through SSH
  when workspace path matches a registered remote workspace

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
russh-keys uses the openssl crate which requires a system OpenSSL
installation. On Windows runners there is none, so the build fails.
Adding openssl with the vendored feature compiles OpenSSL from source
(same approach already used by git2 via vendored-openssl).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ows build

- Make HandlerError carry actual error message (was unit struct, discarding all info)
- Implement disconnected() callback to capture real SSH disconnect reason
- Add DH_G14_SHA1/DH_G1_SHA1 KEX and SSH_RSA host key for legacy server compatibility
- Improve error message when server closes connection before sending SSH banner
- Fix win32job missing from bitfun-core Windows target dependencies
- Fix type annotation needed for MutexGuard in process_manager.rs
- Fix RemoteFileBrowser cancel button using missing i18n key (common.cancel → actions.cancel)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…howing error

Password-auth workspaces cannot auto-reconnect (BitFun does not persist passwords).
Any workspace that fails reconnection (password, key, or agent) is now silently
removed from the sidebar instead of being shown with a permanent red error state.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…on startup

Before initializing FlowChatManager, check that a remote workspace's SSH
connection is actually live. If not (e.g. password-auth workspace that cannot
auto-reconnect), log a warning and skip initialization instead of showing an
error notification to the user.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>