feat(ssh): discover hosts and explicitly launch SSH workspaces - #198
Open
denis-berezutskiy wants to merge 2 commits into
Open
denis-berezutskiy wants to merge 2 commits into
denis-berezutskiy wants to merge 2 commits into
Conversation
bvolpato
requested changes
Sep 25, 2026
bvolpato
left a comment
Collaborator
There was a problem hiding this comment.
The SSH picker can offer a different destination from the one in ~/.ssh/config. config_words treats every unquoted # as a comment, but OpenSSH accepts Host foo#bar as a literal alias. With HostName example.invalid, ssh -G foo#bar resolves to example.invalid, while ssh -G foo resolves to foo. This parser shows foo, so selecting it can connect to the wrong machine. Please recognize comments only at token boundaries, then either support this alias or skip it rather than synthesizing foo.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Connect via SSH… to the sidebar. Users can choose a literal alias from
~/.ssh/configor enter[user@]hostand an optional port, then explicitlylaunch an interactive OpenSSH connection in a new workspace.
This is slice 1 of the SSH proposal in #135, following the maintainer's requested
split. Discovery only reads config text; OpenSSH resolves the selected alias on
connect. Input validation and argument quoting prevent options or shell syntax
from being injected through the dialog. The terminal uses
xterm-256colorsoremote Ghostty terminfo is unnecessary. The command buffer remains owned until
the surface is freed: the embedded Ghostty revision borrows that buffer during
startup, so releasing it after surface creation could corrupt the command.
The launch command is transient. Ordinary layout/title persistence remains, but
restoring a workspace or creating another tab/split does not automatically
connect. No tmux setup, reconnect, transfer, notification provisioning, or helper
installation is included. The picker does not enumerate
Includefiles; theiraliases work when entered manually. Host-book editing remains deferred.
Validation:
./scripts/check.sh: formatting, workspace clippy with warnings denied,workspace tests, and packaging/shell regressions passed.
destinations and ports, alias-preserving argv, and IPv6.
LIMUX_SMOKE_PROFILE=debug ./scripts/xvfb-smoke-test.sh: passed, including alive SSH launch fixture checking argv, PTY, TERM, and non-persistence.