Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ jobs:
steps:
- uses: actions/checkout@v7

- uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache-dependency-path: go.sum

- uses: pnpm/action-setup@v6
with:
version: 11.17.0
Expand Down Expand Up @@ -110,3 +115,11 @@ jobs:
- name: Build
working-directory: frontend
run: pnpm run build

- name: Install browser
working-directory: frontend
run: pnpm exec playwright install --with-deps chromium

- name: Wails E2E
working-directory: frontend
run: pnpm run test:e2e
2 changes: 1 addition & 1 deletion Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ vars:
# cross-compile (only windows supports cross-compilation, see build/*/Taskfile.yml).
GOOS: '{{.GOOS | default OS}}'
WAILS_MODULE: github.com/wailsapp/wails/v3
WAILS_VERSION: v3.0.0-beta.3
WAILS_VERSION: v3.0.0-beta.4
# Pinned Wails CLI (see build/tool-versions.env); never rely on a global wails3.
WAILS3: go run {{.WAILS_MODULE}}/cmd/wails3@{{.WAILS_VERSION}}

Expand Down
6 changes: 3 additions & 3 deletions build/tool-versions.env
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# and binding-diff checks have been rerun on all four supported targets.
GO_VERSION=1.26
NODE_VERSION=22
WAILS_VERSION=v3.0.0-beta.3
WAILS_CLI_VERSION=v3.0.0-beta.3
WAILS_RUNTIME_VERSION=3.0.0-alpha2.117
WAILS_VERSION=v3.0.0-beta.4
WAILS_CLI_VERSION=v3.0.0-beta.4
WAILS_RUNTIME_VERSION=3.0.0-beta.1
TASK_VERSION=v3.40.1-patched3
12 changes: 6 additions & 6 deletions docs/decisions/ADR-007-wails-v3-go-migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
## Context

The migration plan called for a Wails v3 desktop shell, a transport-independent
Go core, and a separate headless CLI. Wails v3 is still Alpha, so the shipped
channel remains an unsigned technical preview.
Go core, and a separate headless CLI. Wails v3 is still pre-release, so the
shipped channel remains an unsigned technical preview.

## Decision

1. The migration line uses Go 1.26+ and pins Wails v3 to
`v3.0.0-beta.3` for the initial native spike. The matching CLI uses the
same module version. The browser runtime candidate is pinned separately to
`3.0.0-alpha2.117`, the version shipped by that Wails module and present in
the frontend lockfile used by the production bundle.
`v3.0.0-beta.4` for the initial native spike. The matching CLI uses the
same module version. The browser runtime is pinned separately to
`3.0.0-beta.1`, the version embedded in that Wails module and present in the
frontend lockfile used by the production bundle.
2. `agents.lock.json` remains the only hand-edited Agent catalog source. The
root Go package embeds that file once, and `internal/catalog` parses the
embedded bytes for both the CLI and desktop shell.
Expand Down
2 changes: 1 addition & 1 deletion docs/superpowers/plans/2026-08-06-ota-updater.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

**Architecture:** Wails' `pkg/updater` owns release comparison, GitHub asset selection, checksum verification, archive extraction, staging, swapping, and relaunch. A narrow `internal/binding.UpdateService` adapts that concrete updater to three cancellable Wails methods. A frontend-only `AppUpdater` checks once at startup, uses `@wailsio/runtime`'s native `Dialogs.Question` for consent, and drives the existing task-center state and progress event pipeline.

**Tech Stack:** Go 1.26, Wails v3.0.0-beta.3 `pkg/updater`, GitHub Releases API, React 19, TypeScript, Vitest, pnpm, GitHub Actions.
**Tech Stack:** Go 1.26, Wails v3.0.0-beta.4 `pkg/updater`, GitHub Releases API, React 19, TypeScript, Vitest, pnpm, GitHub Actions.

---

Expand Down
3 changes: 3 additions & 0 deletions frontend/e2e/wails-server.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ const child = spawn("go", ["run", "-tags", "wails,server,e2e", "./cmd/oneagent-d
cwd: root,
env: {
...process.env,
// Server-mode tests do not use a native WebView; keep Linux CI independent
// of GTK/WebKitGTK development packages.
CGO_ENABLED: "0",
ONEAGENT_HOME: home,
},
stdio: "inherit",
Expand Down
12 changes: 6 additions & 6 deletions frontend/e2e/wails.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ test("every sidebar control at the bottom is actually clickable", async ({ page

test("a machine with no OneAgent state opens onboarding from the landing route", async ({ page }) => {
await page.goto("/#/");
await expect(page.getByRole("heading", { name: "选择命令行 Agent" })).toBeVisible();
await expect(page.getByRole("heading", { name: "选择 Agent", level: 1 })).toBeVisible();
});

test("onboarding installs one Agent end to end and writes its Profile", async ({ page }) => {
Expand All @@ -88,10 +88,10 @@ test("onboarding installs one Agent end to end and writes its Profile", async ({
await expect(page.getByTestId("provider-ppio")).toContainText("已保存 Key");

await page.goto("/#/overview");
await expect(page.getByText("尚未安装任何 Agent")).toBeVisible();
await page.getByRole("button", { name: "安装 Agent" }).click();
await expect(page.getByText("尚未安装任何命令行 Agent")).toBeVisible();
await page.getByRole("button", { name: "安装命令行 Agent" }).click();

await expect(page.getByRole("heading", { name: "选择命令行 Agent" })).toBeVisible();
await expect(page.getByRole("heading", { name: "选择 Agent", level: 1 })).toBeVisible();
await page.getByLabel("选择 Codex").check();
await page.getByRole("button", { name: "继续" }).click();

Expand Down Expand Up @@ -119,8 +119,8 @@ test("onboarding installs one Agent end to end and writes its Profile", async ({

// The Profile the install wrote is editable from the Agent row, without any
// credential or endpoint fields on the edit page.
await page.getByRole("link", { name: "编辑配置" }).click();
await expect(page.getByText("团队默认")).toBeVisible();
await page.getByRole("link", { name: "配置", exact: true }).click();
await expect(page.getByRole("heading", { name: "选择配置模板" })).toBeVisible();
await expect(page.getByLabel("API Key")).toHaveCount(0);
await expect(page.getByText("Base URL")).toHaveCount(0);
expect(bindingMethodIDs.size).toBeGreaterThanOrEqual(3);
Expand Down
22 changes: 11 additions & 11 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,25 @@
"test:e2e": "playwright test"
},
"dependencies": {
"@wailsio/runtime": "3.0.0-alpha2.117",
"lucide-react": "1.25.0",
"@wailsio/runtime": "3.0.0-beta.1",
"lucide-react": "1.28.0",
"react": "19.2.8",
"react-dom": "19.2.8",
"react-router-dom": "7.18.1"
"react-router-dom": "7.18.2"
},
"devDependencies": {
"@playwright/test": "1.61.1",
"@playwright/test": "1.62.1",
"@testing-library/jest-dom": "7.0.0",
"@testing-library/react": "16.3.2",
"@testing-library/user-event": "14.6.1",
"@types/node": "26.1.1",
"@types/react": "19.2.17",
"@types/react-dom": "19.2.3",
"@vitejs/plugin-react": "6.0.3",
"@testing-library/user-event": "14.6.3",
"@types/node": "26.1.2",
"@types/react": "19.2.18",
"@types/react-dom": "19.2.4",
"@vitejs/plugin-react": "6.0.5",
"@vitest/coverage-v8": "4.1.10",
"jsdom": "29.1.1",
"jsdom": "30.0.1",
"typescript": "7.0.2",
"vite": "8.1.5",
"vite": "8.2.0",
"vitest": "4.1.10"
}
}
Loading
Loading