feat(remote): support native WSL workspaces and hide dialog scrollbars - #2812
Merged
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
Add a Windows WSL workspace target to the connection dialog. It discovers distributions and starts native
wsl.exesessions with an optional Linux user, including saved reconnect, filesystem operations, binary process streams, and terminals. Hide scrollbars in the dialog and connection lists while preserving scrolling.Keep the generated operation registry byte-stable on Windows checkouts, and stop the multi-command product contract CI step on its first failed test.
Type and Areas
Feature / UI fix — Web UI, desktop/Tauri, remote workspace services, Peer Device transport, product operation registry, Windows CI validation, locales, and documentation.
Motivation / Impact
Users can select WSL directly without configuring an SSH server inside their distribution. In Peer Device Mode, discovery and execution belong to the selected Windows host. The new
wsl_workspaces_v1capability prevents older peers from misinterpreting the target. Existing SSH and Docker profiles remain compatible; WSL metadata is additive and saved profiles survive missing credentials or unavailable hosts.Verification
Full CI passed all 13 jobs for
861abba79d, including Windows registry validation (confirmed in the test log). After syncing the target branch, the only overlapping edit was the services verification guide; the 102 focused frontend tests, core boundary check, capability consistency check, and whitespace check passed again.Passed:
pnpm run check:webpnpm --dir src/web-ui run test:run src/features/ssh-remote/SSHConnectionDialog.test.tsx src/features/ssh-remote/SSHRemoteProvider.test.tsx src/infrastructure/api/adapters/peer-device-adapter.test.ts src/infrastructure/peer-device/PeerConnectionManager.test.ts— 102 tests, rerun after rebasing onto the latest target branch.pnpm run i18n:auditpnpm run capabilities:checkandpnpm run capabilities:test— all 15 capability contract tests passed.cargo check -p openbitfun-desktopcargo test -p openbitfun-desktop --lib remote_workspace_policy— 9 tests.cargo test -p openbitfun-product-domains --no-default-features remote_surface— 19 tests.cargo test -p openbitfun-services-integrations --no-default-features --features remote-ssh-concrete --lib remote_ssh::manager::tests::workspace_— 21 tests, including SSH loopback supervision and binary streams.cargo test -p openbitfun-services-integrations --no-default-features --features remote-ssh --test remote_ssh_contracts remote_ssh_contracts::— 15 tests, including legacy profile round trips.cargo test -p openbitfun-services-integrations --no-default-features --features remote-ssh-concrete --lib remote_ssh::wsl::tests::— 6 passed; Windows integration test ignored on macOS.pnpm run check:core-boundaries— passed in a clean detached checkout of the implementation commit. The original working directory contains an unrelated ignored temporary crate that makes the same check fail there; it was left untouched.pnpm run fmt:rsandgit diff --check.pnpm run check:repo-hygieneandpnpm run check:github-config— the latter passed 20 local tests, with one PowerShell-only test skipped on macOS.core.autocrlf=truecheckout preserved the generated operation registry byte-for-byte as LF. Executing the actual CI contract step with a failing Cargo stub stopped at the first command and preserved its nonzero exit code.Manual browser checks used the actual dialog with fixture-backed discovery: scrollbars remain hidden while lists scroll; WSL selection, distribution switching, and the Linux user field render correctly.
Reviewer Notes
AI-assisted; testing level: lightly tested overall because a real Windows WSL host was unavailable. Native Windows WSL execution and PTY behavior have not been exercised. The Windows desktop test harness also encounters the existing upstream Tauri issue #13419 before its Rust tests run; the existing narrowly scoped CI allowance is unchanged. An opt-in integration test is documented for
OPENBITFUN_TEST_WSL_DISTROon Windows.Remote coverage: actual SSH loopback tests and mocked Peer Device negotiation/routing tests. Mobile/bot control and Detached Dispatch were not exercised. Native WSL forwarding, CLI Peer setup, and Detached Dispatch provisioning are explicitly unsupported. Non-Windows hosts and older peers return explicit unsupported states without falling back to the controller filesystem.
Checklist