fix(remote-ssh): restore target selection and container stdin - #2179
Merged
Conversation
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.
Summary
Fixes #2175
Type and Areas
Type:
Regression fix / bug fix / UI/UX / test
Areas:
Web UI, Rust remote SSH/container services, desktop/Tauri integration
Motivation / Impact
The connection target menu was rendered into the shared overlay host at z-index 360 while the SSH dialog overlay used z-index 20000, so the menu opened invisibly behind the modal.
A functional review also found that the shared local/remote Docker supervisor lost stdin because POSIX non-interactive shells attach
/dev/nullto asynchronous fd 0. Duplicating stdin before backgrounding restores interactive container commands.Users can now select all four connection targets, and supervised Docker commands retain stdin.
Verification
pnpm --dir src/web-ui run test:run src/features/ssh-remote/SSHConnectionDialog.test.tsx src/features/ssh-remote/SSHRemoteProvider.test.tsx— 18 passedpnpm run type-check:webpnpm run build:webpnpm run prepare:mobile-webcargo test -p bitfun-services-integrations --features remote-ssh,remote-ssh-concrete,workspace-search remote_ssh— 141 passed, 1 ignoredcargo test -p bitfun-services-integrations --features remote-ssh --test remote_ssh_contracts— 9 passedcargo test -p bitfun-desktop local_docker_profiles_do_not_require_a_legacy_password_vault_entry -- --nocapture— passedalpine:3.22Docker round trip via ignoredlocal_docker_workspace_round_trip— passed stdin/stdout/stderr, exit status, cancellation, file operations, and atomic writespnpm run check:build-prereqspnpm run check:repo-hygienegit diff --checkReviewer Notes
AI-assisted, fully tested. The real local Docker transport was exercised against Docker Engine 29.2.1. Remote SSH and remote Docker configuration/transport paths are covered by the focused contract and unit suites; no external SSH host or credentials are required.
Checklist