├── .github ├── dependabot.yml ├── renovate.json ├── settings.yml └── workflows │ ├── latest.yml │ └── nightly.yml ├── .gitignore ├── README.md └── zed-update.ps1 /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "github>geerteltink/.github:renovate-config" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.github/settings.yml: -------------------------------------------------------------------------------- 1 | _extends: ".github" 2 | -------------------------------------------------------------------------------- /.github/workflows/latest.yml: -------------------------------------------------------------------------------- 1 | name: Build latest release 2 | 3 | permissions: 4 | contents: write 5 | actions: write 6 | 7 | on: 8 | workflow_dispatch: 9 | schedule: 10 | - cron: "0 5 * * *" 11 | 12 | env: 13 | CARGO_TERM_COLOR: always 14 | CARGO_INCREMENTAL: 0 15 | RUST_BACKTRACE: 1 16 | 17 | jobs: 18 | prepare: 19 | runs-on: ubuntu-latest 20 | outputs: 21 | tag: ${{ steps.vars.outputs.tag }} 22 | notes: ${{ steps.vars.outputs.notes }} 23 | tag_exists: ${{ steps.tag_exists.outputs.tag_exists }} 24 | steps: 25 | - name: Checkout repository 26 | uses: actions/checkout@v4 27 | 28 | - name: Fetch tags 29 | run: | 30 | git fetch --prune --unshallow --tags 31 | echo exit code $? 32 | 33 | - name: Get latest tag from remote 34 | id: vars 35 | env: 36 | GH_TOKEN: ${{ github.token }} 37 | run: | 38 | UPSTREAM_RELEASE=$(gh api repos/zed-industries/zed/releases/latest --jq '{tag_name, body}') 39 | UPSTREAM_TAG=$(echo "$UPSTREAM_RELEASE" | jq -r '.tag_name') 40 | echo "Upstream tag: $UPSTREAM_TAG" 41 | echo "tag=${UPSTREAM_TAG}" >> "$GITHUB_OUTPUT" 42 | UPSTREAM_NOTES=$(echo "$UPSTREAM_RELEASE" | jq -r '.body') 43 | echo "notes<> $GITHUB_OUTPUT 44 | echo "$UPSTREAM_NOTES" >> $GITHUB_OUTPUT 45 | echo "EOF" >> $GITHUB_OUTPUT 46 | 47 | - name: Check if latest tag exists 48 | id: tag_exists 49 | env: 50 | GH_TOKEN: ${{ github.token }} 51 | run: | 52 | TAG_EXISTS=$(git tag -l "${{ steps.vars.outputs.tag }}") 53 | if [ -n "$TAG_EXISTS" ]; then 54 | echo "Tag exists." 55 | echo "tag_exists=true" >> "$GITHUB_OUTPUT" 56 | else 57 | echo "Tag does not exist." 58 | echo "tag_exists=false" >> "$GITHUB_OUTPUT" 59 | fi 60 | 61 | build: 62 | runs-on: windows-latest 63 | needs: prepare 64 | if: needs.prepare.outputs.tag_exists == 'false' 65 | steps: 66 | - run: echo "Building ${{needs.prepare.outputs.tag}}" 67 | 68 | - name: Enable long paths in Git 69 | run: git config --system core.longpaths true 70 | 71 | - name: Enable long paths in Windows 72 | shell: pwsh 73 | run: | 74 | New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force 75 | 76 | - name: Switch to branch 77 | uses: actions/checkout@v4 78 | 79 | - name: Checkout Zed 80 | uses: actions/checkout@v4 81 | with: 82 | repository: zed-industries/zed 83 | ref: ${{needs.prepare.outputs.tag}} 84 | path: zed 85 | 86 | - name: Install Rust 87 | uses: dtolnay/rust-toolchain@stable 88 | with: 89 | components: rustfmt, clippy 90 | # toolchain: nightly 91 | # target: wasm32-wasip1 92 | 93 | - name: Rust Cache 94 | uses: Swatinem/rust-cache@v2 95 | with: 96 | workspaces: "zed -> target" 97 | 98 | - name: Build project 99 | working-directory: zed 100 | shell: pwsh 101 | env: 102 | CARGO_PROFILE_RELEASE_DEBUG: "false" 103 | RUSTFLAGS: "-C symbol-mangling-version=v0 --cfg tokio_unstable --cfg windows_slim_errors -C target-feature=+crt-static" 104 | RELEASE_VERSION: ${{needs.prepare.outputs.tag}} 105 | ZED_UPDATE_EXPLANATION: "Auto-updater disabled (vhanla/zed-windows)" 106 | run: cargo build --release 107 | 108 | - name: Get vars 109 | id: vars 110 | run: | 111 | $HASH = (git rev-parse HEAD).Substring(0,9) 112 | echo "HASH: ${HASH}" 113 | Write-Output "hash=${HASH}" >> $Env:GITHUB_OUTPUT 114 | 115 | - name: Create latest release 116 | continue-on-error: true 117 | env: 118 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 119 | run: gh release create "${{needs.prepare.outputs.tag}}" --title "${{needs.prepare.outputs.tag}}.${{ steps.vars.outputs.hash }}" --notes "Latest ${{needs.prepare.outputs.tag}}.${{ steps.vars.outputs.hash }}\n\n${{ steps.vars.outputs.notes }}" --repo geerteltink/zed-windows --latest zed\target\release\zed.exe 120 | -------------------------------------------------------------------------------- /.github/workflows/nightly.yml: -------------------------------------------------------------------------------- 1 | name: Build nightly release 2 | 3 | permissions: 4 | contents: write 5 | 6 | on: 7 | workflow_dispatch: 8 | schedule: 9 | - cron: "0 5 * * *" 10 | push: 11 | tags: 12 | - "nightly" 13 | 14 | env: 15 | CARGO_TERM_COLOR: always 16 | CARGO_INCREMENTAL: 0 17 | RUST_BACKTRACE: 1 18 | 19 | jobs: 20 | build: 21 | runs-on: windows-latest 22 | steps: 23 | - name: Checkout repo 24 | uses: actions/checkout@v4 25 | with: 26 | clean: false 27 | repository: zed-industries/zed 28 | 29 | - name: Setup build tools 30 | run: | 31 | rustc --version 32 | cargo --version 33 | rustup target add wasm32-wasi 34 | 35 | - name: Rust Cache 36 | uses: Swatinem/rust-cache@v2 37 | 38 | - name: Build nightly 39 | run: cargo build --release --locked --package zed 40 | 41 | - name: Install cargo get package 42 | run: cargo install cargo-get 43 | 44 | - name: Get vars 45 | id: vars 46 | run: | 47 | $NOW = (Get-Date -format yyyyMMdd) 48 | echo "NOW: ${NOW}" 49 | Write-Output "now=${NOW}" >> $Env:GITHUB_OUTPUT 50 | $HASH = (git rev-parse HEAD).Substring(0,9) 51 | echo "HASH: ${HASH}" 52 | Write-Output "hash=${HASH}" >> $Env:GITHUB_OUTPUT 53 | $VERSION = (cargo get package.version --entry="./crates/zed") 54 | echo "VERSION: ${VERSION}" 55 | Write-Output "version=${VERSION}" >> $Env:GITHUB_OUTPUT 56 | 57 | - name: Create nightly release 58 | continue-on-error: true 59 | env: 60 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 61 | run: gh release create "${{ steps.vars.outputs.version }}-dev.${{ steps.vars.outputs.now }}" --title "${{ steps.vars.outputs.version }}-dev.${{ steps.vars.outputs.now }}" --notes "Nightly v${{ steps.vars.outputs.version }}-dev.${{ steps.vars.outputs.now }} / ${{ steps.vars.outputs.hash }}" --repo geerteltink/zed-windows --prerelease target\release\zed.exe 62 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | zed.exe 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Zed IDE preview windows builds 2 | 3 | Here you can find the latest Zed IDE builds for windows. The binary is compiled directly 4 | from the original source code at https://github.com/zed-industries/zed/. None of the original 5 | code is modified. The build script is publically available 6 | [in this repo](https://github.com/geerteltink/zed-windows/blob/main/.github/workflows/nightly.yml). 7 | Everytime a new non-preview tag is pushed to the original repository, a new release is created. 8 | 9 | If you are having any issues with the editor or find any bugs, please report them 10 | [here](https://github.com/zed-industries/zed/issues). 11 | 12 | Issues or questions related to the windows builds can be reported or asked 13 | [here](https://github.com/geerteltink/zed-windows/issues). 14 | 15 | ## Requirements 16 | 17 | These builds require *Microsoft Visual C++ 2015-2022 Redistributable (x64)* which can be installed 18 | with winget: 19 | 20 | ```powershell 21 | winget install Microsoft.VCRedist+.x64 22 | ``` 23 | 24 | ## Keeping up with the latest release 25 | 26 | I have added a [zed-update.ps1](.\zed-update.ps1) script to download the latest version. Zed IDE 27 | will be downloaded to the same location as the script. 28 | 29 | ## Reporting issues 30 | 31 | - Build issues can be reported here: https://github.com/geerteltink/zed-windows/pulls 32 | - IDE issues please report here: https://github.com/zed-industries/zed/issues 33 | - Nightly release are created here: https://github.com/geerteltink/zed-windows/releases 34 | -------------------------------------------------------------------------------- /zed-update.ps1: -------------------------------------------------------------------------------- 1 | # Define the repo owner and name 2 | $repoOwner = "geerteltink" 3 | $repoName = "zed-windows" 4 | 5 | # Build the URL to get the latest release 6 | $releasesUrl = "https://api.github.com/repos/$repoOwner/$repoName/releases/latest" 7 | 8 | # Download the JSON data for the latest release 9 | $releaseData = Invoke-WebRequest -Uri $releasesUrl 10 | 11 | # Check for successful download 12 | if ($releaseData.StatusCode -eq 200) { 13 | # Convert JSON data to object 14 | $release = ConvertFrom-Json $releaseData.Content 15 | 16 | # Extract download URL for the first asset (assuming it's the desired file) 17 | $source = $release.assets[0].browser_download_url 18 | $version = $release.tag_name 19 | 20 | # Define the download path and filename (modify as needed) 21 | $downloadPath = "$PSScriptRoot" 22 | $fileName = $release.assets[0].name 23 | $destination = "$downloadPath\$fileName" 24 | 25 | Write-Host "Downloading $fileName ($version)" 26 | Write-Host "Source: $source" 27 | Write-Host "Download location: $downloadPath\$fileName" 28 | 29 | # Download the file 30 | Import-Module BitsTransfer 31 | Start-BitsTransfer -Source $source -Destination $destination 32 | 33 | Write-Host "Downloaded file: $fileName" 34 | } else { 35 | Write-Error "Failed to download release data. Status code: $($releaseData.StatusCode)" 36 | } 37 | --------------------------------------------------------------------------------