Skip to content

Fix remote server release assets#50

Open
ossaraivas wants to merge 9 commits intoGlass-HQ:mainfrom
ossaraivas:fix/remote-ssh-server-binary
Open

Fix remote server release assets#50
ossaraivas wants to merge 9 commits intoGlass-HQ:mainfrom
ossaraivas:fix/remote-ssh-server-binary

Conversation

@ossaraivas
Copy link
Copy Markdown

@ossaraivas ossaraivas commented Apr 12, 2026

Summary

Fixes #38 by publishing the remote server assets Glass needs for SSH remoting and by resolving those assets from Glass-owned releases instead of Zed's release service.

What Changed

  • Added the full remote-server asset matrix to release_glass.yml:
    • zed-remote-server-macos-aarch64.gz
    • zed-remote-server-macos-x86_64.gz
    • zed-remote-server-linux-aarch64.gz
    • zed-remote-server-linux-x86_64.gz
    • zed-remote-server-windows-aarch64.zip
    • zed-remote-server-windows-x86_64.zip
  • Kept the Glass app release Mac-only for now while still publishing cross-platform remote-server assets for SSH remoting.
  • Added a release validation job so future releases fail if any expected remote-server asset is missing.
  • Updated auto_update.rs so remote server downloads use deterministic Glass GitHub release URLs for versioned builds. This fixes both remote-server download paths instead of only the direct URL branch.
  • Set ZED_APP_VERSION from the release tag in every release build job and used the derived version in the macOS Info.plist, so released binaries request the matching remote-server assets.

Why

Glass currently builds remote_server during releases but only publishes the Mac app DMG and symbols. Remote SSH then fails when Glass tries to fetch assets like zed-remote-server-linux-x86_64.gz that were never released.

The previous PR version only packaged a macOS asset and only changed one code path. That would not fix the original Linux remote-target failure or the local-download fallback path. It also would have left future releases vulnerable to version/tag mismatches.

Verification

  • cargo test -p auto_update --lib test_glass_remote_server_release_asset_
  • ruby -e 'require "yaml"; YAML.load_file(".github/workflows/release_glass.yml"); puts "yaml ok"'
  • git diff --check

Notes:

  • The new release-URL tests passed.
  • A full cargo test -p auto_update --lib run reached the updated tests successfully, but an existing async test (test_auto_update_downloads) exceeded 60 seconds locally, so I did not treat that as a blocker for this change.

Follow-up Manual Testing

  1. Run release_glass.yml with a temporary release version to validate the workflow matrix.
  2. Verify the release contains the eight expected assets: the Mac DMG, symbols zip, and six remote-server assets.
  3. On the next real versioned release, verify runtime downloads against that matching release tag.
  4. On macOS, SSH into a Linux x86_64 VM and confirm Glass downloads the Linux remote server and opens the project.
  5. On macOS, SSH into a macOS target and confirm the macOS remote server path works.
  6. On Windows, SSH into a Linux VM and confirm the Linux remote server download path works.
  7. On Windows, SSH into a Windows SSH target and confirm the Windows remote server download path works.

Release Notes:

  • Fixed missing remote-server release assets that broke Remote SSH for Glass releases.

@ossaraivas ossaraivas requested a review from naaiyy as a code owner April 12, 2026 06:26
@github-actions github-actions bot added the first contribution Opened by a first-time contributor label Apr 12, 2026
@naaiyy
Copy link
Copy Markdown

naaiyy commented Apr 12, 2026

Thank you so much for opening that PR, I want to check it correctly, I'll do it today or tomorrow maximum 🙏

@naaiyy naaiyy changed the title fix: resolve Remote SSH crash (missing server binary) Fix remote server release assets Apr 13, 2026
acsaraiva-wp-gh and others added 3 commits April 13, 2026 02:54
…eleases

The Remote SSH feature crashes with "zed-remote-server-linux-x86_64.gz not found
in 0.0.1" because:

1. The remote_server binary is compiled during CI but never uploaded as a release
   asset — only the DMG and symbols zip are published.
2. The download logic in auto_update.rs queries the upstream Zed cloud API, which
   has no knowledge of Glass releases.

This commit fixes both issues:

- CI: Package the remote_server binary as a gzipped release asset
  (zed-remote-server-macos-{arch}.gz) and upload it alongside the DMG.
- Rust: Add get_github_release_remote_server_url() that fetches the binary
  directly from Glass's GitHub Releases API, falling back to the cloud API
  for compatibility.

Fixes Glass-HQ#38
Publish the full remote server asset matrix in Glass releases and resolve remote server downloads from Glass-owned release assets. This keeps SSH remoting working across macOS, Linux, and Windows targets while app releases remain Mac-only for now.
Set ZED_APP_VERSION from the release tag in every remote-server build job and use the derived app version in the macOS Info.plist so released binaries look up the matching Glass remote-server assets.
@naaiyy naaiyy force-pushed the fix/remote-ssh-server-binary branch from e3a5a03 to fba0067 Compare April 13, 2026 00:54
naaiyy added 6 commits April 13, 2026 03:02
Use the platform-specific remote server archive extension for local cache paths and prune both .gz and .zip cached archives. This keeps Windows remote-server releases aligned with the published asset format and avoids stale zip archives accumulating in the cache.
Allow the run_tests workflow to execute for Glass-HQ repositories instead of skipping the orchestrate, check_style, and tests_pass jobs due to upstream-only repository owner guards.
Run the x86_64 macOS bundle jobs on explicit Intel macOS runners instead of arm64 mac runners. This avoids the broken x86_64 cross-build path observed in the remote server release validation workflow and keeps Apple Silicon builds unchanged.
Update Glass to the gpui commit that fixes objc BOOL constants in gpui_metal for Intel macOS so the x86_64 mac remote server bundle can compile on the Intel runner path.
Replace the upstream hardcoded Developer ID identity with Glass's Apple-issued Developer ID Application identity and matching team ID for macOS bundle signing.
Use the same base64-decoding behavior as the working release_glass workflow when writing APPLE_NOTARIZATION_KEY for notarytool so Intel mac bundle notarization consumes the secret in the correct format.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

first contribution Opened by a first-time contributor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remote SSH

3 participants