From 149bbb780dedbf5a72e995ded8103ec8a4864a3e Mon Sep 17 00:00:00 2001 From: Ziinc Date: Thu, 16 Jul 2026 01:37:03 +0800 Subject: [PATCH 1/3] chore: enable windows and linux builds --- .github/workflows/ci.yml | 24 ++++++++++++++++++++---- .github/workflows/release.yml | 18 ++++++++++++++---- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ba64d7833..08fb442ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,17 +1,27 @@ name: CI +defaults: + run: + shell: bash + on: push: branches: [main] paths: - "src/**" - "src-tauri/**" + - "crates/**" + - "package.json" + - "package-lock.json" - ".github/workflows/ci.yml" pull_request: branches: [main] paths: - "src/**" - "src-tauri/**" + - "crates/**" + - "package.json" + - "package-lock.json" - ".github/workflows/ci.yml" jobs: @@ -33,6 +43,12 @@ jobs: - platform: macos-latest kind: rust task: test + - platform: windows-latest + kind: js + task: test + - platform: windows-latest + kind: rust + task: test name: ${{ matrix.kind }} / ${{ matrix.task }} / ${{ matrix.platform }} runs-on: ${{ matrix.platform }} @@ -56,21 +72,21 @@ jobs: uses: cargo-bins/cargo-binstall@main - name: install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. + if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y git sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - name: Install git and jj CLI (macOS) - if: matrix.platform == 'macos-latest' + if: runner.os == 'macOS' run: | brew update brew install git jj echo "$(brew --prefix)/bin" >> $GITHUB_PATH - - name: Install jj CLI (ubuntu) - if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. + - name: Install jj CLI (non-macOS) + if: runner.os != 'macOS' run: | cargo binstall --strategies crate-meta-data jj-cli echo "$HOME/.cargo/bin" >> $GITHUB_PATH diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c448e3e03..ca20ec937 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,5 +1,9 @@ name: Release +defaults: + run: + shell: bash + on: workflow_dispatch: @@ -64,10 +68,10 @@ jobs: args: "--target x86_64-apple-darwin" # - platform: "macos-latest" # args: "--target universal-apple-darwin" - # - platform: 'ubuntu-22.04' - # args: '' - # - platform: 'windows-latest' - # args: '' + - platform: 'ubuntu-22.04' + args: '' + - platform: 'windows-latest' + args: '' runs-on: ${{ matrix.platform }} environment: prod steps: @@ -84,6 +88,12 @@ jobs: with: targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + - name: install dependencies (ubuntu only) + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true From 485d4c6b60f4df594aab7b2b16e9b10d92fb04ba Mon Sep 17 00:00:00 2001 From: Ziinc Date: Mon, 24 Aug 2026 04:01:21 +0800 Subject: [PATCH 2/3] chore: enable windows and linux builds ### Motivation - Expand CI and release coverage to Linux and Windows and include NAPI/crate/package changes in triggers. ### Description - Add `defaults` shell and include `crates/**`, `package.json`, `package-lock.json` in CI triggers. - Add Windows JS and Rust jobs and Ubuntu/Windows release matrix entries. - Use `runner.os` checks and install `jj` via `cargo binstall` on non-macOS. - Install Linux Tauri dependencies in CI and release workflows. ### Testing - Validated YAML parsing with `ruby -e` (passed). - Ran `npm run check:format` (passed). - Ran `npm run check` which failed due to unrelated `ast-grep` snapshot test failures. --- .github/workflows/release.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ca20ec937..97264eece 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,15 +63,20 @@ jobs: matrix: include: - platform: "macos-latest" # for Arm based macs (M1 and above). + target: "aarch64-apple-darwin" args: "--target aarch64-apple-darwin" - platform: "macos-latest" # for Intel based macs. + target: "x86_64-apple-darwin" args: "--target x86_64-apple-darwin" # - platform: "macos-latest" + # target: "universal-apple-darwin" # args: "--target universal-apple-darwin" - - platform: 'ubuntu-22.04' - args: '' - - platform: 'windows-latest' - args: '' + - platform: "ubuntu-22.04" + target: "x86_64-unknown-linux-gnu" + args: "--target x86_64-unknown-linux-gnu" + - platform: "windows-latest" + target: "x86_64-pc-windows-msvc" + args: "--target x86_64-pc-windows-msvc" runs-on: ${{ matrix.platform }} environment: prod steps: @@ -86,7 +91,7 @@ jobs: - name: install Rust stable uses: dtolnay/rust-toolchain@stable with: - targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + targets: ${{ matrix.target }} - name: install dependencies (ubuntu only) if: runner.os == 'Linux' From 82a4be39f34785debd510cecae07b71b7afdacc3 Mon Sep 17 00:00:00 2001 From: Ziinc Date: Mon, 24 Aug 2026 04:01:27 +0800 Subject: [PATCH 3/3] chore: enable cross-platform builds --- web/docs/getting-started/installation.mdx | 11 +++++++++-- web/docs/intro.md | 2 +- web/docs/reference/contributing.md | 2 +- web/e2e/navigation.spec.ts | 13 +++++++++++++ web/src/pages/index.tsx | 8 +++++++- web/static/llms.txt | 4 ++-- 6 files changed, 33 insertions(+), 7 deletions(-) diff --git a/web/docs/getting-started/installation.mdx b/web/docs/getting-started/installation.mdx index 062442a8e..0998de66f 100644 --- a/web/docs/getting-started/installation.mdx +++ b/web/docs/getting-started/installation.mdx @@ -6,7 +6,14 @@ sidebar_position: 1 _How to install and set up Treq on your machine._ -Download the latest version for macOS from the GitHub Releases page. +Download the latest version for your platform from the GitHub Releases page. + +| Platform | Release target | +|---|---| +| macOS on Apple silicon | `aarch64-apple-darwin` | +| macOS on Intel | `x86_64-apple-darwin` | +| Windows | `x86_64-pc-windows-msvc` | +| Linux | `x86_64-unknown-linux-gnu` | [View Releases](https://github.com/Ziinc/treq/releases) @@ -24,7 +31,7 @@ Click **Select Repository** or the folder icon, and navigate to a Git repository ## Creating Your First Workspace -1. Click **New Workspace** (or press `Cmd+N`) to open the creation dialog. +1. Click **New Workspace**. You can also press `Cmd+N` on macOS or `Ctrl+N` on Windows and Linux. 2. Fill in a plan title describing what you're working on. 3. Adjust the branch name if needed. 4. Click **Create Workspace** to save. diff --git a/web/docs/intro.md b/web/docs/intro.md index 2c46f6085..ed75901a7 100644 --- a/web/docs/intro.md +++ b/web/docs/intro.md @@ -5,7 +5,7 @@ slug: / # Treq -_Technical overview of Treq's workspace model, runtime behavior, and macOS-specific assumptions._ +_Technical overview of Treq's workspace model and runtime behavior on macOS, Windows, and Linux._ Treq is a local review and workspace manager for Git repositories. You open a Git repo, create workspaces for parallel work, and push through normal Git remotes. You do not need to know [Jujutsu](https://jj-vcs.github.io/jj/latest/) to use Treq. diff --git a/web/docs/reference/contributing.md b/web/docs/reference/contributing.md index d0faee51f..6841a071e 100644 --- a/web/docs/reference/contributing.md +++ b/web/docs/reference/contributing.md @@ -76,7 +76,7 @@ Do not mix unrelated cleanup into feature work. Treq has several layers with dif Docs follow the local style guide in `web/STYLE_GUIDE.md`. Write direct technical prose. Avoid marketing language. Use tables for dense reference data. -Public docs should describe supported macOS behavior unless another platform is explicitly documented. Avoid exposing implementation details that users cannot act on. +Public docs should describe supported macOS, Windows, and Linux behavior. Call out platform-specific behavior when it differs. Avoid exposing implementation details that users cannot act on. ## Learn More diff --git a/web/e2e/navigation.spec.ts b/web/e2e/navigation.spec.ts index 2b957072c..945c8b8bb 100644 --- a/web/e2e/navigation.spec.ts +++ b/web/e2e/navigation.spec.ts @@ -5,6 +5,13 @@ const sidebar = (page: Page) => page.getByRole('navigation', { name: 'Docs sideb const footer = (page: Page) => page.getByRole('contentinfo'); test.describe('Navbar navigation', () => { + test('shows desktop platform availability', async ({ page }) => { + await page.goto('/'); + await expect(page.getByLabel('macOS')).toBeVisible(); + await expect(page.getByLabel('Windows')).toBeVisible(); + await expect(page.getByLabel('Linux')).toBeVisible(); + }); + test('Learn link navigates to learn section', async ({ page }) => { await page.goto('/'); await nav(page).getByRole('link', { name: 'Learn' }).click(); @@ -23,6 +30,12 @@ test.describe('Navbar navigation', () => { await expect(page.getByRole('heading', { name: 'Installation and Quickstart', level: 1 })).toBeVisible(); }); + test('installation lists each release target', async ({ page }) => { + await page.goto('/docs/getting-started/installation'); + await expect(page.getByRole('cell', { name: 'x86_64-pc-windows-msvc' })).toBeVisible(); + await expect(page.getByRole('cell', { name: 'x86_64-unknown-linux-gnu' })).toBeVisible(); + }); + test('logo navigates home from a docs page', async ({ page }) => { await page.goto('/'); await nav(page).getByRole('link', { name: 'Learn' }).click(); diff --git a/web/src/pages/index.tsx b/web/src/pages/index.tsx index 26f9dda91..77c96faca 100644 --- a/web/src/pages/index.tsx +++ b/web/src/pages/index.tsx @@ -63,6 +63,12 @@ function HomepageHeader() { + + + + + + @@ -322,7 +328,7 @@ const SOFTWARE_APP_SCHEMA = { 'AI Workspace Manager for busy developers. The Open Source Graphite Alternative.', url: 'https://treq.dev', applicationCategory: 'DeveloperApplication', - operatingSystem: 'macOS', + operatingSystem: ['macOS', 'Windows', 'Linux'], offers: { '@type': 'Offer', price: '0', diff --git a/web/static/llms.txt b/web/static/llms.txt index 4a5ea5ac6..1b37f2455 100644 --- a/web/static/llms.txt +++ b/web/static/llms.txt @@ -1,10 +1,10 @@ # Treq -> Treq is an open-source macOS app for managing parallel AI development: create isolated Git workspaces per branch, run coding agents inside them, then review, commit, and merge changes without leaving the app. +> Treq is an open-source desktop app for macOS, Windows, and Linux. Create isolated Git workspaces per branch, run coding agents inside them, then review, commit, and merge changes without leaving the app. ## Getting Started -- [Installation and Quickstart](https://treq.dev/docs/getting-started/installation.md): Download Treq for macOS, open a repository, create a workspace, launch an agent, and commit and push changes. +- [Installation and Quickstart](https://treq.dev/docs/getting-started/installation.md): Download Treq for macOS, Windows, or Linux, open a repository, create a workspace, launch an agent, and commit and push changes. ## Concepts