Skip to content

Commit a0ec1de

Browse files
authored
feat: migrate from Wails v2 to v3 (#44)
* deps: add @wailsio/runtime to omniviewdev-runtime package * build: replace Makefile and wails.json with Taskfile build system * feat: add v3 menu system with context menu stubs and keybindings * feat: add WindowManager with main window hide-on-close recycling * deps: add wails v3 dependency alongside v2 for migration * feat: add wails v3 vite plugin, update vite to v8 * refactor: migrate EventEmitter interface and all call sites to wails v3 API * feat: add typed event registration for v3 TypeScript binding generation * feat: migrate main.go entry point, app service, and asset handler to wails v3 * feat: migrate resource controller to v3 service, delete client wrapper * feat: migrate all remaining controllers to v3 services, remove all wails v2 imports - Migrate exec, logs, metric, networker, settings, data, ui, utils, devserver, diagnostics - Delete 7 client wrapper files - Convert dialog calls in installer.go to v3 builder pattern - Update main.go service registration with interface wrappers - Zero wails/v2 imports remaining in Go codebase * feat: migrate runtime package to re-export @wailsio/runtime v3 APIs * feat: migrate all frontend event listeners to @wailsio/runtime Events API - Update 22 source files and 4 test files - EventsOn → Events.On with event.data unwrapping - EventsOff → Events.Off - BrowserOpenURL → Browser.OpenURL - Update imports from wailsjs/runtime to @wailsio/runtime or @omniviewdev/runtime/runtime * deps: remove wails v2 dependency — go mod tidy confirms zero v2 usage * build: delete legacy wails.json and Makefile — replaced by Taskfile * feat: complete frontend migration to v3 bindings - Generate v3 bindings to packages/omniviewdev-runtime/src/bindings/ - Update all hook imports from wailsjs/go/ to v3 binding paths - Remove all namespace patterns (types.Connection -> Connection) - Update WatchState enum to v3 member names - Delete old wailsjs/ directory - Update Taskfile binding generation to output to correct location - Update api.ts and models.ts to re-export v3 bindings * ci: migrate PR checks from make to task, install wails3 + go-task * fix: update remaining v2 Window API calls to v3 Window object methods * fix: migrate remaining UI files from v2 namespace patterns to v3 direct imports * fix: complete UI model import migration to v3 direct imports * fix: use export type for EmitFunc re-export (isolatedModules) * fix: resolve multi-arg event payloads and restore CreateTerminal binding - Wrap multi-arg Emit calls in struct payloads (UpdatePayload, UpdateErrorPayload, DevServerErrorPayload) - Add typed event registration for update events - Restore CreateTerminal method on exec controller (wraps CreateSession with TTY) - Fix frontend tuple destructuring to use struct payload fields - Regenerate v3 bindings (222 methods, 28 enums, 118 models) * fix: eliminate binding warnings with proper service wrappers - Replace PluginManagerService interface embedding with explicit method delegation (excludes SetDevServerChecker, SetPluginLogManager, HandlePluginCrash) - Create PluginLogService wrapper exposing only frontend-safe methods (excludes OnEmit/EmitFunc, Stream, Close, LogDir) - Create DevServerService wrapper to prevent service/model type shadowing - Update api.ts and models.ts for new binding file names - Binding warnings reduced from 7 to 3 (remaining are transitive SDK types) * fix: replace interface embedding with explicit method delegation for all service wrappers All controller service wrappers now use explicit method delegation instead of interface embedding. This ensures the binding generator only discovers frontend-safe methods and eliminates all 7 binding warnings: - PluginManagerService: 22 frontend methods, excludes SetDevServerChecker/etc - ResourceControllerService: 45 methods, excludes OnPlugin*/Run/SetCrashCallback - ExecControllerService: 14 methods, excludes plugin lifecycle - LogsControllerService: 9 methods - MetricControllerService: 8 methods - NetworkerControllerService: 9 methods - SettingsControllerService: 8 methods - DataControllerService: 4 methods - SettingsProviderService: 19 methods, excludes Initialize/RegisterChangeHandler - PluginLogService: 5 methods, excludes OnEmit/Stream/Close - DevServerService: 12 methods, separates service from model type Binding generation: 0 warnings, 16 services, 174 methods, 28 enums, 110 models * feat: type all events properly for v3 typed event system - Replace map[string]interface{} with ConnectionStatusPayload for connection/status - Register connection/status, watch/STATE, plugin/process/log, menu events via RegisterEvent[T] - Add event constants for all menu events - Import eventcreate.ts and reference eventdata.d.ts in runtime.ts for type augmentation - 32 fully typed events in CustomEvents interface (was 23) - Update test assertions to use typed payloads * fix: resolve all TypeScript type errors in runtime hooks - Remove unnecessary `as` casts where CustomEvents provides proper types - Add null guards for v3 binding return types (T | null) - Fix CancellablePromise/TanStack Query type mismatch in useResourceMetrics - Handle optional map values in useWatchState and useConnectionStatus - Runtime package typecheck: 0 errors * fix: rewrite all Taskfiles to match canonical wails3 scaffold - Root Taskfile: dev task just calls wails3 dev (no manual build/run) - darwin Taskfile: proper build:native with DEV flag, correct run task with APP_NAME in paths - linux/windows Taskfiles: simplified to match scaffold pattern - build/Taskfile.yml: proper deps chain (install:frontend:deps, generate:bindings, build:frontend) - config.yml dev_mode.executes drives the dev lifecycle automatically * fix: add build:dev script matching wails3 scaffold pattern build:dev does a non-minified development vite build, needed because the Go binary embeds dist/ even in dev mode while Vite dev server provides hot reload on the side. * fix: remove -q flag from pnpm build command (unsupported by vite 8) * fix: set vite dev server port to 9245 to match wails3 config * fix: reorder service registration so controllers initialize before plugin loading Controllers must receive ctx from ServiceStartup BEFORE the bootstrap service calls pluginManager.Initialize(), which triggers OnPluginStart on all controllers. Without ctx, gRPC stream creation panics with nil pointer dereference. Follows Wails v3 documented pattern: 'The context will be valid as long as the application is running, and will be cancelled right before shutdown.' * fix: update vite config for plugin-react v6 and Vite 8 - Replace babel config with @rolldown/plugin-babel + reactCompilerPreset - Update @vitejs/plugin-react to v6 - Install @rolldown/plugin-babel - Eliminates esbuild/optimizeDeps deprecation warnings * fix: final migration sweep — delete legacy v2 runtime, add dist/.gitkeep - Delete packages/omniviewdev-providers/internal/runtime/ (legacy v2 wailsjs wrapper) - Update providers index.ts to re-export from @wailsio/runtime directly - Update portforward hooks to use Browser.OpenURL instead of BrowserOpenURL - Add dist/.gitkeep for go:embed directive on fresh clones - Add @wailsio/runtime dependency to providers package * fix: add per-card error boundaries to prevent plugin crashes from taking down the IDE - HomepageCard: wrap plugin component in ErrorBoundary with InlineErrorFallback so a single card crash shows an inline error with retry, not a full-page crash - LinkedResourceDrawer: wrap sidebar component in ErrorBoundary so plugin sidebar crashes don't block the entire drawer Both use resetKeys tied to the specific plugin/resource so retries are scoped. * fix: improve card error fallback with centered layout and truncated error message * fix: configure Vite HMR to connect directly to dev server Wails v3's asset server proxy doesn't support WebSocket upgrades, so HMR module updates can't flow through it. Configure the HMR client to connect directly to localhost:9245 via ws:// protocol, bypassing the Wails proxy while keeping module fetches proxied. * fix: remove custom server config to match wails3 scaffold — fixes HMR The scaffold has zero server config. wails3 dev handles port assignment via CLI flags and WAILS_VITE_PORT env var. Our custom server block with host/port/strictPort/hmr was overriding Vite's defaults and breaking the HMR connection through the Wails webview proxy. * fix: restore HMR config with localhost/ws protocol per wailsapp/wails#3064 The Wails webview loads from wails.localhost which can't resolve WebSocket connections. The confirmed fix from the community is to set server.hmr.host='localhost' and server.hmr.protocol='ws' so the HMR client connects directly to the Vite dev server bypassing wails.localhost. * fix: add explicit clientPort to HMR config for Wails webview compatibility * fix: use dedicated HMR port to bypass Wails WebSocket blocking The Wails v3 asset server returns 501 for WebSocket upgrade requests, preventing Vite HMR from connecting through the proxy. Use a separate port (9246) for the HMR WebSocket so the webview connects directly to Vite, bypassing the asset server entirely. * fix: use application.AssetFileServerFS instead of http.FileServerFS http.FileServerFS always serves from embedded dist/ assets, completely bypassing the Wails dev server proxy. application.AssetFileServerFS checks FRONTEND_DEVSERVER_URL and proxies to the Vite dev server in dev mode, serving live content with HMR support. This is why: - import.meta.env.DEV was false (serving production build) - HMR client was never injected - Dev mode indicator was missing from footer * cleanup: remove unnecessary HMR port workaround The separate HMR port (9246) was a workaround for when the webview was loading from embedded dist/ assets. Now that AssetFileServerFS proxies to Vite in dev mode, HMR works natively through the proxy. Only keep hmr.host=localhost and hmr.protocol=ws per wailsapp/wails#3064. * feat: add server mode for Playwright E2E testing - Add Server options (localhost:34115) to application.Options for headless HTTP server mode (built with -tags server) - Add build:server and run:server tasks to Taskfile - Update Playwright config to use run:server with /health endpoint - Server mode serves the same app without native GUI dependencies, suitable for CI/CD testing * feat: configure Playwright E2E for Wails v3 server mode - Add ServerOptions (port 34115) to application.Options - Playwright config targets server mode at localhost:34115 - Server mode tasks commented out — blocked by Wails v3 alpha.74 macOS build tag conflict (darwin files don't exclude server tag) - E2E tests can run in CI on Linux where server mode works - TODO: uncomment server tasks when Wails fixes upstream * chore: gitignore omniview binary * ci: migrate all workflows from Wails v2 to v3 - pr.yml: task + wails3 for builds and E2E (server mode on Linux) - nightly.yaml: task + wails3 for all 3 platform builds, Go 1.24→1.26 - release.yaml: task + wails3 for all 3 platform builds - All: output paths updated from build/bin/ to bin/ - All: wails build replaced with task common:build:frontend + go build * fix: add dist/.gitkeep so go:embed works before frontend build * ci: install correct Wails v3 Linux deps with cached apt action Match Wails v3 CI (build-and-test-v3.yml): libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config. Use awalsh128/cache-apt-pkgs-action for caching across runs. * ci: update Node.js to v24, install correct Wails v3 Linux deps * chore: update toolchain — Node 24, Go 1.26, pnpm 10, @types/node latest * ci: disable E2E (server mode broken in alpha.74), fix setup-task rate limit - E2E job disabled with if:false until Wails v3 fixes BrowserWindow.AttachModal - Add repo-token to all arduino/setup-task calls to prevent GitHub API rate limiting * ci: create proper macOS .app bundles in all build workflows - Add .app bundle creation step (Contents/MacOS + Resources + Info.plist) - Sign and notarize the .app bundle, not the bare binary - DMG references Omniview.app instead of bare Omniview - Add CGO/MACOSX_DEPLOYMENT_TARGET env vars for macOS builds - PR artifacts zip the .app bundle * fix: render Info.plist from config.yml — fixes corrupt macOS .app bundle Info.plist had Go template placeholders ({{.Name}}, {{.Info.ProductVersion}}) from the v2 era. Ran wails3 update:build-assets to render actual values. Also removed stale CFBundleURLTypes with unrendered template vars. * fix: address code review findings Critical: - UI ServiceWrapper: replace struct embedding with explicit delegation, excluding OnPluginInit/Start/Stop/Shutdown/Destroy from frontend Important: - PluginAssetHandler: replace panic with 500 response on UserHomeDir failure - PluginAssetHandler: compile regex once at package level, not per request - Main window: add UseApplicationMenu: true for Windows/Linux menu support - Wire SetupKeyBindings and SetupContextMenus (were defined but never called) * fix: add dist/.gitkeep for go:embed (force-add past .gitignore)
1 parent 8582397 commit a0ec1de

272 files changed

Lines changed: 14923 additions & 7788 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/nightly.yaml

Lines changed: 74 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ concurrency:
1414

1515
env:
1616
NODE_OPTIONS: "--max-old-space-size=4096"
17-
GO_VERSION: "1.24"
18-
NODE_VERSION: "20"
17+
GO_VERSION: "1.26"
18+
NODE_VERSION: "24"
1919
PNPM_VERSION: "10"
2020

2121
jobs:
@@ -89,27 +89,46 @@ jobs:
8989
cache: true
9090
cache-dependency-path: "go.sum"
9191

92-
- name: Install Wails
92+
- name: Install Task
93+
uses: arduino/setup-task@v2
94+
with:
95+
version: 3.x
96+
repo-token: ${{ secrets.GITHUB_TOKEN }}
97+
98+
- name: Install Wails v3
9399
shell: bash
94-
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest
100+
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest
95101

96-
- name: Build runtime package
102+
- name: Build frontend
97103
shell: bash
98-
run: pnpm run build
99-
working-directory: packages/omniviewdev-runtime
104+
run: task common:build:frontend
100105

101106
- name: Build Omniview
102107
shell: bash
108+
env:
109+
CGO_ENABLED: "1"
110+
CGO_CFLAGS: "-mmacosx-version-min=10.15"
111+
CGO_LDFLAGS: "-mmacosx-version-min=10.15"
112+
MACOSX_DEPLOYMENT_TARGET: "10.15"
103113
run: |
104-
wails build -platform darwin/universal \
105-
-webview2 download \
106-
-ldflags "\
114+
go build -tags production -trimpath -buildvcs=false \
115+
-ldflags "-w -s \
107116
-X github.com/omniviewdev/omniview/internal/version.Version=${{ needs.check-changes.outputs.nightly_version }} \
108117
-X github.com/omniviewdev/omniview/internal/version.GitCommit=${{ github.sha }} \
109118
-X github.com/omniviewdev/omniview/internal/version.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
110119
-X github.com/omniviewdev/omniview/internal/version.Development=true \
111120
-X github.com/omniviewdev/omniview/internal/telemetry.buildOTLPEndpoint=${{ secrets.TELEMETRY_OTLP_ENDPOINT }} \
112-
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}"
121+
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}" \
122+
-o bin/Omniview .
123+
124+
- name: Create macOS .app bundle
125+
run: |
126+
task common:generate:icons
127+
mkdir -p bin/Omniview.app/Contents/MacOS
128+
mkdir -p bin/Omniview.app/Contents/Resources
129+
cp build/darwin/icons.icns bin/Omniview.app/Contents/Resources/
130+
cp bin/Omniview bin/Omniview.app/Contents/MacOS/
131+
cp build/darwin/Info.plist bin/Omniview.app/Contents/
113132
114133
- name: Import Code-Signing Certificates
115134
uses: Apple-Actions/import-codesign-certs@v3
@@ -129,17 +148,17 @@ jobs:
129148
--options runtime \
130149
--entitlements build/darwin/entitlements.plist \
131150
--sign "$APPLE_SIGN_ID" \
132-
build/bin/Omniview.app
151+
bin/Omniview.app
133152
134-
ditto -c -k --keepParent --rsrc build/bin/Omniview.app archive.zip
153+
ditto -c -k --keepParent --rsrc bin/Omniview.app archive.zip
135154
136155
xcrun notarytool submit archive.zip \
137156
--apple-id "$NOTARY_USER" \
138157
--password "$NOTARY_PWD" \
139158
--team-id "$TEAM_ID" \
140159
--wait
141160
142-
xcrun stapler staple build/bin/Omniview.app
161+
xcrun stapler staple bin/Omniview.app
143162
144163
- name: Checkout create-dmg
145164
uses: actions/checkout@v4
@@ -153,25 +172,24 @@ jobs:
153172
working-directory: ./build
154173
run: |
155174
VERSION="${{ needs.check-changes.outputs.nightly_version }}"
156-
./create-dmg/create-dmg \
175+
../build/create-dmg/create-dmg \
157176
--no-internet-enable \
158177
--volname "Omniview Nightly" \
159-
--volicon "bin/Omniview.app/Contents/Resources/iconfile.icns" \
160178
--text-size 12 \
161179
--window-pos 400 400 \
162180
--window-size 660 450 \
163181
--icon-size 80 \
164182
--icon "Omniview.app" 180 180 \
165183
--hide-extension "Omniview.app" \
166184
--app-drop-link 480 180 \
167-
"bin/Omniview_${VERSION}_darwin_universal.dmg" \
168-
"bin"
185+
"../bin/Omniview_${VERSION}_darwin_universal.dmg" \
186+
"../bin"
169187
170188
- name: Upload artifact
171189
uses: actions/upload-artifact@v4
172190
with:
173191
name: nightly-macos-dmg
174-
path: build/bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_darwin_universal.dmg
192+
path: bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_darwin_universal.dmg
175193
if-no-files-found: error
176194
retention-days: 1
177195

@@ -188,10 +206,11 @@ jobs:
188206
with:
189207
submodules: recursive
190208

191-
- name: Install system dependencies
192-
run: |
193-
sudo apt-get update
194-
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev
209+
- name: Install Linux dependencies
210+
uses: awalsh128/cache-apt-pkgs-action@latest
211+
with:
212+
packages: libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config
213+
version: 1.0
195214

196215
- name: Setup Node
197216
uses: actions/setup-node@v4
@@ -213,35 +232,39 @@ jobs:
213232
cache: true
214233
cache-dependency-path: "go.sum"
215234

216-
- name: Install Wails
217-
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest
235+
- name: Install Task
236+
uses: arduino/setup-task@v2
237+
with:
238+
version: 3.x
239+
repo-token: ${{ secrets.GITHUB_TOKEN }}
240+
241+
- name: Install Wails v3
242+
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest
218243

219-
- name: Build runtime package
220-
run: pnpm run build
221-
working-directory: packages/omniviewdev-runtime
244+
- name: Build frontend
245+
run: task common:build:frontend
222246

223247
- name: Build Omniview
224248
run: |
225-
wails build -platform linux/amd64 \
226-
-tags webkit2_41 \
227-
-webview2 download \
228-
-ldflags "\
249+
go build -tags "production,webkit2_41" -trimpath -buildvcs=false \
250+
-ldflags "-w -s \
229251
-X github.com/omniviewdev/omniview/internal/version.Version=${{ needs.check-changes.outputs.nightly_version }} \
230252
-X github.com/omniviewdev/omniview/internal/version.GitCommit=${{ github.sha }} \
231253
-X github.com/omniviewdev/omniview/internal/version.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
232254
-X github.com/omniviewdev/omniview/internal/version.Development=true \
233255
-X github.com/omniviewdev/omniview/internal/telemetry.buildOTLPEndpoint=${{ secrets.TELEMETRY_OTLP_ENDPOINT }} \
234-
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}"
256+
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}" \
257+
-o bin/Omniview .
235258
236259
- name: Rename executable
237-
working-directory: ./build/bin
260+
working-directory: ./bin
238261
run: mv Omniview "Omniview_${{ needs.check-changes.outputs.nightly_version }}_linux_amd64"
239262

240263
- name: Upload artifact
241264
uses: actions/upload-artifact@v4
242265
with:
243266
name: nightly-linux-binary
244-
path: build/bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_linux_amd64
267+
path: bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_linux_amd64
245268
if-no-files-found: error
246269
retention-days: 1
247270

@@ -278,37 +301,42 @@ jobs:
278301
cache: true
279302
cache-dependency-path: "go.sum"
280303

281-
- name: Install Wails
304+
- name: Install Task
305+
uses: arduino/setup-task@v2
306+
with:
307+
version: 3.x
308+
repo-token: ${{ secrets.GITHUB_TOKEN }}
309+
310+
- name: Install Wails v3
282311
shell: bash
283-
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest
312+
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest
284313

285-
- name: Build runtime package
314+
- name: Build frontend
286315
shell: bash
287-
run: pnpm run build
288-
working-directory: packages/omniviewdev-runtime
316+
run: task common:build:frontend
289317

290318
- name: Build Omniview
291319
shell: bash
292320
run: |
293-
wails build -platform windows/amd64 \
294-
-webview2 download \
295-
-ldflags "\
321+
go build -tags production -trimpath -buildvcs=false \
322+
-ldflags "-w -s -H windowsgui \
296323
-X github.com/omniviewdev/omniview/internal/version.Version=${{ needs.check-changes.outputs.nightly_version }} \
297324
-X github.com/omniviewdev/omniview/internal/version.GitCommit=${{ github.sha }} \
298325
-X github.com/omniviewdev/omniview/internal/version.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
299326
-X github.com/omniviewdev/omniview/internal/version.Development=true \
300327
-X github.com/omniviewdev/omniview/internal/telemetry.buildOTLPEndpoint=${{ secrets.TELEMETRY_OTLP_ENDPOINT }} \
301-
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}"
328+
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}" \
329+
-o bin/Omniview.exe .
302330
303331
- name: Rename executable
304-
working-directory: ./build/bin
332+
working-directory: ./bin
305333
run: Rename-Item -Path "Omniview.exe" -NewName "Omniview_${{ needs.check-changes.outputs.nightly_version }}_windows_amd64.exe"
306334

307335
- name: Upload artifact
308336
uses: actions/upload-artifact@v4
309337
with:
310338
name: nightly-windows-binary
311-
path: build/bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_windows_amd64.exe
339+
path: bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_windows_amd64.exe
312340
if-no-files-found: error
313341
retention-days: 1
314342

.github/workflows/pr-checks.yml

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ concurrency:
1010

1111
env:
1212
GO_VERSION: "1.26"
13-
NODE_VERSION: "20.18.1"
14-
PNPM_VERSION: "9.15.0"
13+
NODE_VERSION: "24"
14+
PNPM_VERSION: "10"
1515

1616
jobs:
1717
go-checks:
@@ -20,22 +20,34 @@ jobs:
2020
steps:
2121
- uses: actions/checkout@v4
2222

23+
- name: Install Linux dependencies
24+
uses: awalsh128/cache-apt-pkgs-action@latest
25+
with:
26+
packages: libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config
27+
version: 1.0
28+
2329
- uses: actions/setup-go@v5
2430
with:
2531
go-version: ${{ env.GO_VERSION }}
2632
cache: true
2733

34+
- name: Install Task
35+
uses: arduino/setup-task@v2
36+
with:
37+
version: 3.x
38+
repo-token: ${{ secrets.GITHUB_TOKEN }}
39+
2840
- name: Build
29-
run: make go-build
41+
run: task check:go-build
3042

3143
- name: Vet
32-
run: make go-vet
44+
run: task check:go-vet
3345

3446
- name: Test
35-
run: make go-test
47+
run: task check:go-test
3648

3749
- name: Format check
38-
run: make fmt-check
50+
run: task check:fmt-check
3951
continue-on-error: true
4052

4153
- name: Lint
@@ -53,16 +65,28 @@ jobs:
5365
steps:
5466
- uses: actions/checkout@v4
5567

68+
- name: Install Linux dependencies
69+
uses: awalsh128/cache-apt-pkgs-action@latest
70+
with:
71+
packages: libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config
72+
version: 1.0
73+
5674
- uses: actions/setup-go@v5
5775
with:
5876
go-version: ${{ env.GO_VERSION }}
5977
cache: true
6078

61-
- name: Install wails
62-
run: go install github.com/wailsapp/wails/v2/cmd/wails@v2.11.0
79+
- name: Install Task
80+
uses: arduino/setup-task@v2
81+
with:
82+
version: 3.x
83+
repo-token: ${{ secrets.GITHUB_TOKEN }}
84+
85+
- name: Install wails3
86+
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest
6387

6488
- name: Check bindings are up to date
65-
run: make bindings-check
89+
run: task check:bindings-check
6690

6791
ui-checks:
6892
name: UI checks
@@ -78,6 +102,12 @@ jobs:
78102
with:
79103
version: ${{ env.PNPM_VERSION }}
80104

105+
- name: Install Task
106+
uses: arduino/setup-task@v2
107+
with:
108+
version: 3.x
109+
repo-token: ${{ secrets.GITHUB_TOKEN }}
110+
81111
- name: Get pnpm store directory
82112
id: pnpm-cache
83113
shell: bash
@@ -90,15 +120,15 @@ jobs:
90120
restore-keys: ${{ runner.os }}-pnpm-store-
91121

92122
- name: Install dependencies
93-
run: make ui-install
123+
run: task check:ui-install
94124

95125
- name: Build
96-
run: make ui-build
126+
run: task check:ui-build
97127

98128
- name: Lint
99-
run: make ui-lint
129+
run: task check:ui-lint
100130
continue-on-error: true
101131

102132
- name: Typecheck
103-
run: make ui-typecheck
133+
run: task check:ui-typecheck
104134
continue-on-error: true

0 commit comments

Comments
 (0)