Skip to content

feat(remote): support native WSL workspaces and hide dialog scrollbars - #2812

Merged
bobleer merged 4 commits into
GCWing:1.0.0-explorefrom
bobleer:bob/windows-wsl-workspaces
Sep 5, 2026
Merged

bobleer merged 4 commits into
GCWing:1.0.0-explorefrom
bobleer:bob/windows-wsl-workspaces

Conversation

@bobleer

@bobleer bobleer commented Sep 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Add a Windows WSL workspace target to the connection dialog. It discovers distributions and starts native wsl.exe sessions 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_v1 capability 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:web
  • pnpm --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:audit
  • pnpm run capabilities:check and pnpm run capabilities:test — all 15 capability contract tests passed.
  • cargo check -p openbitfun-desktop
  • cargo 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:rs and git diff --check.
  • pnpm run check:repo-hygiene and pnpm run check:github-config — the latter passed 20 local tests, with one PowerShell-only test skipped on macOS.
  • A core.autocrlf=true checkout 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_DISTRO on 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

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

@bobleer
bobleer merged commit a518eed into GCWing:1.0.0-explore Sep 5, 2026
11 of 12 checks passed
@bobleer
bobleer deleted the bob/windows-wsl-workspaces branch September 24, 2026 08:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant